<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7638.1">
<TITLE>Cairo in an embedded environment: removing fontconfig, 16-bit RGB,porting issues</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>I'm investigating using Cairo to provide rich 2D vector graphics<BR>
capabilities for our embedded OS for small devices.&nbsp; It does what we<BR>
need and so far seems to be fantastically easy to use.<BR>
<BR>
However, we have to modify it in several ways to get it to work<BR>
in our environment.&nbsp; Presumably some of these changes aren't of<BR>
interest to the general community, but others may be potentially<BR>
useful patches to roll back into the distro.<BR>
<BR>
So I have a lot of questions related to this, and was wondering<BR>
what people thought:<BR>
<BR>
<BR>
1. We already use FreeType, but we don't use fontconfig, and we don't<BR>
&nbsp;&nbsp; have the kind of complex file-based font system for which it would<BR>
&nbsp;&nbsp; be appropriate; nor do we want the extra code footprint associated<BR>
&nbsp;&nbsp; with fontconfig.&nbsp; Therefore, we're going to have to strip down the<BR>
&nbsp;&nbsp; FreeType font backend to take out those dependencies.<BR>
<BR>
&nbsp;&nbsp; Ned Konz of Squeak seems to have discussed something similar on the<BR>
&nbsp;&nbsp; mailing list a couple of years ago.&nbsp; I'm at a very early stage<BR>
&nbsp;&nbsp; messing with this, but my initial feelings about this are similar<BR>
&nbsp;&nbsp; to his: we already have our own mechanisms for font selection, so<BR>
&nbsp;&nbsp; we probably don't need fontconfig's.&nbsp; The only place where the<BR>
&nbsp;&nbsp; Cairo backend actually seems to *use* fontconfig's functionality is<BR>
&nbsp;&nbsp; under the toy text API, which is not necessarily of use to us.<BR>
<BR>
&nbsp;&nbsp; Might it be a good idea to try to disentangle the fontconfig-based<BR>
&nbsp;&nbsp; font selection/presentation stuff from the rest of the FreeType<BR>
&nbsp;&nbsp; backend?&nbsp; Are there known pitfalls associated with this approach?<BR>
<BR>
<BR>
2. We're using cairo-image-surface.c for a surface backend.&nbsp; While we<BR>
&nbsp;&nbsp; use several image formats internally, the native screen pixel<BR>
&nbsp;&nbsp; format on our platform tends to be 16-bit r5g6r5.<BR>
<BR>
&nbsp;&nbsp; Since pixman supports it, exposing it in Cairo is easy.&nbsp; I'm<BR>
&nbsp;&nbsp; guessing that other people working in an embedded space may be<BR>
&nbsp;&nbsp; interested in this, since it is a common color format on small<BR>
&nbsp;&nbsp; devices.<BR>
<BR>
&nbsp;&nbsp; It does bring up a naming question.&nbsp; Calling the format<BR>
&nbsp;&nbsp; CAIRO_FORMAT_RGB16 would work for now, but it's far from the only<BR>
&nbsp;&nbsp; 16-bit format in use out there; x1r5g5b5 is also common, for<BR>
&nbsp;&nbsp; instance, and we may well need to support it in the future.&nbsp; I'm<BR>
&nbsp;&nbsp; tentatively calling our format CAIRO_FORMAT_RGB565.&nbsp; Should Cairo<BR>
&nbsp;&nbsp; go to some more expansive naming convention for color formats?<BR>
<BR>
<BR>
3. Our OS is not POSIX-compliant, though it has some similarities.&nbsp; We<BR>
&nbsp;&nbsp; also have a different build system that won't easily incorporate<BR>
&nbsp;&nbsp; the existing Cairo build process.&nbsp; This means many small changes to<BR>
&nbsp;&nbsp; header includes and #defines throughout Cairo and pixman, which may<BR>
&nbsp;&nbsp; be difficult and/or undesirable to roll back into the distribution.<BR>
&nbsp;&nbsp; So I'm assuming the Cairo project proper doesn't want this stuff.<BR>
<BR>
&nbsp;&nbsp; However, there are some changes that might make ports like this one<BR>
&nbsp;&nbsp; easier to do in the future (and make it easier for us to integrate<BR>
&nbsp;&nbsp; new Cairo versions), such as centralizing the POSIX header includes<BR>
&nbsp;&nbsp; under cairoint.h.&nbsp; That seems to be mostly already done in Cairo<BR>
&nbsp;&nbsp; proper (not so much in pixman) but there are exceptions, such as<BR>
&nbsp;&nbsp; several Cairo source files that directly include stdlib.h.&nbsp; Is<BR>
&nbsp;&nbsp; there a reason for this?&nbsp; Would changes to such things be<BR>
&nbsp;&nbsp; appreciated, or are there cross-platform build issues that make it<BR>
&nbsp;&nbsp; inadvisable?<BR>
<BR>
&nbsp;&nbsp; (How about pixman--is that a separate active project or is it under<BR>
&nbsp;&nbsp; the aegis of Cairo now?)<BR>
<BR>
<BR>
Any thoughts would be appreciated...<BR>
<BR>
Matt McIrvin<BR>
SavaJe Technologies<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>