On Fri, 28 Apr 2006, Quentin Mathé wrote:
Le 23 avr. 06 à 00:31, BALATON Zoltan a écrit :
- Implement the CoreGraphics API on top of Cairo (this brings a common
base for the Cairo backend, PDFKit and viewer tasks above)
I don't have a sufficient knowledge of Cairo and CoreGraphics to know whether
this is possible easily or not.
I started to experiment with it and it turned out that a large part of it
is not only possible but also fairly simple. I now have a preliminary
version which supports most of vector drawing operations and basic
ShowText operations. Currently implemented are:
- CGAffineTransform, CGGeometry: reused from base/gui with some
optimisations
- CGContext: CTM, Save/Restore GState, set line parameters, path
constructing and drawing, filling and clipping and basic text works
- CGColorSpace, CGColor: RGB and Gray color spaces supported without color
management (I have further ideas on how to improve it)
- CGFont: Enough to get fonts from Fontconfig for CGContextSelectFont
- creating contexts for X Window windows
Still missing:
- CGImage (would need this at least before a release)
- CGPath: paths independent of the current path in a graphics context
(Cairo does not have an API for this currently or the one which it has
is insufficient)
- CGPattern and CGShading maybe possible with Cairo although the APIs
differ somewhat
- CGBitmapContext, CGPDFContext: Cairo has output backends for these
(plus postscript and SVG) so it should be possible easily
Some screenshots and sample source code can be found at:
http://goliat.eik.bme.hu/~balaton/gnustep/opal/
There is no release of the library yet because I'm waiting for the
copyright assignment (in case you would like to accept it as part of
GNUstep) and also want to implement some more things (like basic image
drawing) before I consider it to be usable enough to worth releasing. But
I ran out of time for a few weeks, so I don't know when can I get around
to do it.
- Bring together and consolidate code from gui/base and GWorkspace into a
library similar to LaunchServices
(http://www.cocoadev.com/index.pl?LaunchServices)
LaunchServices isn't really that terrific imo.
The API itself may not be (which we don't have to follow), but the
functionality IMO is useful to encapsulate code common for GWorkspace,
Dock, Fiend, etc. and provide a barrier between libraries and desktop
environments. (The original idea years ago was something similar as far as
I can recall, i.e. not to have a workspace app as part of GNUstep but
provide a library on top of which such can be built. This was mentioned
somewhere in a document but I can't find it any more. LaunchServices is
exatly this library.)
Regards,
BALATON Zoltan
_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/gnustep-dev