From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id GAA16761; Sat, 26 Jul 2003 06:21:52 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id GAA23276 for ; Sat, 26 Jul 2003 06:21:49 +0200 (MET DST) Received: from mz1.forethought.net (mzpi3.forethought.net [216.241.36.12]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id h6Q4Lmf19193 for ; Sat, 26 Jul 2003 06:21:49 +0200 (MET DST) Received: from [216.241.35.41] (helo=swordfish) by mz1.forethought.net with esmtp (Exim 4.14) id 19gGZ0-0000pL-T7 for caml-list@pauillac.inria.fr; Fri, 25 Jul 2003 22:21:47 -0600 Received: from matt by swordfish with local (Exim 3.35 #1 (Debian)) id 19gGZ1-0007Vh-00 for ; Fri, 25 Jul 2003 22:21:47 -0600 Date: Fri, 25 Jul 2003 22:21:46 -0600 From: Matt Gushee To: caml-list@pauillac.inria.fr Subject: Re: [Caml-list] Graphics frustration Message-ID: <20030726042146.GC26321@swordfish> Reply-To: Matt Gushee Mail-Followup-To: caml-list@pauillac.inria.fr References: <20030724042004.GH441@swordfish> <003001c35316$75f8a040$fe00a8c0@hama> <20030724042004.GH441@swordfish> <003001c35316$75f8a040$fe00a8c0@hama> <20030724042004.GH441@swordfish> <20030724042004.GH441@swordfish> <20030724120301.GA13914@redhat.com> <20030724042004.GH441@swordfish> <16159.42299.161064.832649@akasha.ijm.jussieu.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <003d01c35318$f84b70c0$fe00a8c0@hama> <003d01c35318$f84b70c0$fe00a8c0@hama> <003001c35316$75f8a040$fe00a8c0@hama> <003001c35316$75f8a040$fe00a8c0@hama> <20030724120301.GA13914@redhat.com> <16159.42299.161064.832649@akasha.ijm.jussieu.fr> User-Agent: Mutt/1.3.27i X-Loop: caml-list@inria.fr X-Spam: no; 0.00; gushee:01 caml-list:01 andrieu:01 libplot:01 camlimages:01 eon:99 piped:01 shove:01 freetype:01 lablgl:01 0900,:01 gif:99 scalable:01 englewood:01 manure:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk First of all, thanks to all who responded. And I have a few responses for the respondents. First, though, one general remark: although I am certainly interested in practical solutions to my current problem, in this instance I was trying to draw attention to what I see as a weak point in the selection of available libraries. Graphics are a common need, and I think better graphics libraries would help the popularity of OCaml. On Thu, Jul 24, 2003 at 11:22:03AM +0200, Olivier Andrieu wrote: > Matt Gushee [Wednesday 23 July 2003] : > > So that's a quick summary of my situation. Do others agree with me that > > this is a significant problem? Are there any good solutions in the > > works? > > I agree with you that libplot isn't fully satisfactory. I haven't much > to suggest, though. GD seems to have all the features you need I agree. However ... > (but I > don't know the state of the ocaml wrapper). That's the problem. It's far from being a complete GD interface. And I've contacted its author, and he doesn't expect to continue developing it. I may see if I can hack in the remaining functionality myself, but with my minimal C knowledge I'm not optimistic about that. > One solution I've been > thinking about is using libart together with Camlimages. Libart is a > library for rendering vector graphics (e.g. bezier paths) in > anti-aliased pixel buffers. It's written by the Ghostscipt maintainer > I think. It seems very good but it doesn't handle text rendering nor > saving pixel buffers to file. But I think it should be possible to > interface it with Camlimages : libart would do the primitives > rendering and camlimages the text rendering and saving. Interesting idea. I'd like to know if you do that. By the way, what in particular do you like about libart? > Writing a C wrapper seems the easiest and quicker way to do what you > want though ... I agree, and I actually would like to learn C. But there is so much to learn, and so little time to learn it ... On Thu, Jul 24, 2003 at 01:03:01PM +0100, Richard Jones wrote: > I did something like this in C++ an eon ago. The program generated > Postscript directly and piped it into Ghostscript to render it into > the appropriate format. Postscript is a very powerful language for > this sort of thing once you get used to it. Well, I'm reasonably comfortable with PS, and that's pretty much the approach I'm taking already: as I explained, draw with MLgraph, convert with Camlimages (which uses Ghostscript to load PS). But the problem I'm having there is that the antialiasing in the output is unsatisfactory. If I use Camlimages out-of-the-box, there is no antialiasing, and curves come out looking horribly jagged. On the other hand, if I hack the Camlimages source such that Ghostscript is called with -dGraphicsAlphaBits=4, curves look fine, but vertical and horizontal lines look blurred and semi-transparent. I've also tried converting the Postscript with ImageMagick, with results very similar to the latter. So I'm afraid the root cause may be a limitation of Ghostscript, though I haven't thoroughly investigated yet. On Thu, Jul 24, 2003 at 02:25:38PM +0200, Daniel Bünzli wrote: > Dear Matt, > > Did you consider using OpenGL ? What an appalling thought! :-) Seriously, though, I might end up doing this--when push comes to shove I care more about making things work than about doing them 'correctly.' Still, as a general solution to the problem of generating 2D raster graphics, OpenGL strikes me as being an ugly (and perhaps inefficient?) approach. But I don't understand OpenGL very well, and perhaps I'd change my mind if I did. > But it seems that the FreeType library can give you antialiased pixmaps > of given fonts and that CamlImages provides an inteface to the FreeType > library (never used that however). So maybe you can make both of them > interact smoothly. So I suggest you (though I'm completly misinformed) > CamlImages+lablGL. May be worth trying. How mature and stable is lablGL? I would have to learn OpenGL, and since I don't have much interest in OpenGL per se, before I take the time to learn it, I'd like to have some assurance that it is in fact a reliable means for producing high-quality 2D bitmaps. On Sat, Jul 26, 2003 at 10:37:20AM +0900, SooHyoung Oh wrote: > > What do you think about SVG (Selective Vector Graphics)? I'm very interested in SVG, but it's not an appropriate solution in this case. This is a front-end Web application, and I specifically intend it to render graphics in a form that is viewable with any mainstream browser--i.e., PNG, JPEG, and/or GIF. I think it will be several years before we can reasonably expect clients to have built-in SVG support. > It uses only text for graphics as postscript so it's not difficult to use > OCaml for SVG. > If you interested about that, I'll send you a few examples. If you mean examples of SVG images, I probably have enough already. But if you have written code for generating or processing SVG, I would be interested in seeing what you've done. On Sat, Jul 26, 2003 at 10:55:19AM +0900, SooHyoung Oh wrote: > > SVG (Scalable Vector Graphics) > > sorry... No worries. There are so many acronyms floating around these days, I would be a little scared of someone who could remember them all correctly. -- Matt Gushee When a nation follows the Way, Englewood, Colorado, USA Horses bear manure through mgushee@havenrock.com its fields; http://www.havenrock.com/ When a nation ignores the Way, Horses bear soldiers through its streets. --Lao Tzu (Peter Merel, trans.) ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners