caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Matt Gushee <matt@gushee.net>
To: caml-list@pauillac.inria.fr
Subject: Re: [Caml-list] Graphics frustration
Date: Fri, 25 Jul 2003 22:21:46 -0600	[thread overview]
Message-ID: <20030726042146.GC26321@swordfish> (raw)
In-Reply-To: <003d01c35318$f84b70c0$fe00a8c0@hama> <003d01c35318$f84b70c0$fe00a8c0@hama> <003001c35316$75f8a040$fe00a8c0@hama> <003001c35316$75f8a040$fe00a8c0@hama> <EEEA4F65-BDD1-11D7-9C27-000393DBC266@epfl.ch> <20030724120301.GA13914@redhat.com> <16159.42299.161064.832649@akasha.ijm.jussieu.fr>

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


  reply	other threads:[~2003-07-26  4:21 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-24  4:20 Matt Gushee
2003-07-24 12:03 ` Richard Jones
2003-07-26  1:37 ` SooHyoung Oh
2003-07-26  1:55   ` SooHyoung Oh
2003-07-26  4:21     ` Matt Gushee [this message]
2003-07-26  4:30       ` Alexander V. Voinov
2003-07-26  8:46   ` [Caml-list] Re: Graphic frustration Nicolas Janin
2003-07-26  8:59   ` [Caml-list] Nicolas Janin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030726042146.GC26321@swordfish \
    --to=matt@gushee.net \
    --cc=caml-list@pauillac.inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).