gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: google summer of code


From: BALATON Zoltan
Subject: Re: google summer of code
Date: Mon, 15 May 2006 04:06:19 +0200 (CEST)

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]