[cairo] Re[2]: Cairographics on win32

Carl Worth cworth at cworth.org
Thu Apr 7 13:11:36 PDT 2005


On Thu, 31 Mar 2005 15:44:28 +1200, Oleg Smolsky wrote:
> > Actually, I think the right thing to do in this case might be to just
> > add a block something like the following:
> > typedef signed char ....[snip]
> Ok, there are three issues here:
> - actual type definitions. They should be as follows for VC++:

I just committed Jason's patch from elsewhere in the thread. Please
let me know if anything in that needs to be changed.

> Here is a patch against CVS/HEAD that fixes all of these things to my
> linking :) Please have a look.

I've just committed all the changes to existing files, (ie. the
changes to some of the #include directives).

As for the rest of it, there are some problems. In the proposed
packaging/msvc/cairo-features.h, you have:

	//#define @PS_SURFACE_FEATURE@
	//#define @PDF_SURFACE_FEATURE@
	//#define @PNG_SURFACE_FEATURE@
	//#define @XLIB_SURFACE_FEATURE@
	//#define @QUARTZ_SURFACE_FEATURE@
	//#define @XCB_SURFACE_FEATURE@

	#define WIN32_SURFACE_FEATURE

	//#define @GLITZ_SURFACE_FEATURE@
	//#define @FT_FONT_FEATURE@

First, there's a style problem as I don't like //-style in C code,
(regardless of what C99 might say about it).

Second, the feature name macros are being defined improperly. They
should be:

	#define CAIRO_HAS_NO_PS_SURFACE
	#define CAIRO_HAS_NO_PDF_SURFACE
	#define CAIRO_HAS_NO_XLIB_SURFACE
	...
	#define CAIRO_HAS_WIN32_SURFACE
	...

(though I've been planning on proposing a change for this anyway ---
stay tuned).

But, third, and most important, I really don't like the idea of
putting a build structure into the main cairo source tree that
hard-codes away backends with no reason. The PS, PDF, and XLIB
backends are all quite portable and should work just fine on the win32
platform.

I'd really prefer to advertise build systems that by default compile
all backends possible, and optionally allow the user to selectively
inhibit the compilation of some backends.

> P.S. on the portability note: cairo-png.c line 233 and 234:
>      static const int PNG_SIG_SIZE = 8;
>      unsigned char png_sig[PNG_SIG_SIZE];

This is now fixed in CVS.

> P.P.S. where did PNG surface go?

We eliminated PNG support as a separate surface type. This was really
just providing a different way to create an image surface, and it had
the downside of only providing PNG output from an image surface.

Now, instead, we have a new cairo_surface_write_png. So if you first
create an image surface you can get all the old functionality. And if
you create any other kind of surface, you can easily get PNG output
from it as well, (which means I now have an easy way to go fix up the
test suite to test more backends than just the image backend --
hurrah!).

-Carl
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20050407/b2143e0e/attachment.pgp


More information about the cairo mailing list