Opal: update TODO and README

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/opal/trunk@31143 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
ericwa 2010-08-14 07:24:56 +00:00
parent 1648bb9a2f
commit 4c4c7c17b4
2 changed files with 58 additions and 13 deletions

4
README
View File

@ -16,8 +16,8 @@ in the quartz group of minerals.
There is a homepage (which may not be updated too frequently) at
<http://goliat.eik.bme.hu/~balaton/gnustep/opal>
The sources are available from the Étoile project repository at
<http://gna.org/projects/etoile/>
The sources are available from the GNUstep repository at
<svn://svn.gna.org/svn/gnustep/libs/opal/trunk>
*** Warning! *** This version is not yet suitable for general use.
It may be interesting for developers only, contributions are much welcome!

67
TODO
View File

@ -1,18 +1,63 @@
There's a lot to do, really.
TODO:
=====
- Add proper build system
- Port to other platforms (Windows anyone?)
- Try different Cairo surfaces (ps, pdf, png, OpenGL, etc.)
CGContext:
- Have a CGColorSpaceRef attached to the context (currently assumed to be
sRGB). This will enable things like:
- Creating a CGBitmapContext in a given color space, then drawing in it
to convert colors to that color space
- For people with wide-gamut monitors, we would want to set the appropriate
color space on the window CGContext.
- Shadow support is not finished.
- Image masks are not supported.
- Need to write a OPGState class that encapsulates the graphics state,
like CairoGState in -back.
- Could follow the example of GNUstep back, and factor
out Cairo specific code in CGContext to a OPCairoContext subclass.
- Implement TextMatrix in CGContext (may need to use internal Cairo APIs)
- Implement missing glyph drawing functions and finish ShowText
- Implement Image drawing
- Implement Patterns and Shading
- Implement Path handling functions
- Implement color management (could use lcms?)
PostScript/PDF parsing classes are unimplemented.
- Fix device transform in Cairo and get rid of CTM patching hacks
CGPattern and CGShading unimplemented
Image framework:
- Need to add TIFF writing
- The decoders/encoders could be polished:
- They should read colorspace info, now that Opal can take advantage of it
- They use the decoding libs to convert to RGBA32, but should pass though
higher bit-depth images in to Opal and let Opal convert.
- Could add a plugin which uses ImageMagick for more format support
Build system:
- Set up so that image plugins, and LCMS classes are only compiled if the
libraries are available.
CGFont:
- Need to refactor to share implementation with OpalText
CGGradient:
- Should clip the gradient to match Quartz output
Color space and image conversion:
- Add a placeholder color space conversion class which does non-color managed
conversions so that LCMS isn't a necessary dependency
OpalText:
- Still in very early stages. Here is a sketch of what needs to be done:
- Finish CTFont/CTFontDescriptor/CTFontCollection/CTFontManager with
both Fontconfig/Freetype and Windows GDI backends.
(The basics of CTFontDescriptor currently with Fontconfig)
- Implement CTTypesetter, the core part, which requies:
- Identifying permissible places to break a string with the Unicode
linebreaking algorithm
- Run GNU fribidi on the string if needed
- Deciding what font to use for each range in the string, doing fallback
where necessary
- Itemizing the attributed string using
-attributesAtIndex:longestEffectiveRange:inRange
to get the character runs
- Calling harfbuzz to do OpenType layout, yielding glyph runs and advances
(+ other simpler layout routines for non-OpenType fonts?)
- Finish CTFramesetter
Design principles to follow:
============================