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 There is a homepage (which may not be updated too frequently) at
<http://goliat.eik.bme.hu/~balaton/gnustep/opal> <http://goliat.eik.bme.hu/~balaton/gnustep/opal>
The sources are available from the Étoile project repository at The sources are available from the GNUstep repository at
<http://gna.org/projects/etoile/> <svn://svn.gna.org/svn/gnustep/libs/opal/trunk>
*** Warning! *** This version is not yet suitable for general use. *** Warning! *** This version is not yet suitable for general use.
It may be interesting for developers only, contributions are much welcome! 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 CGContext:
- Port to other platforms (Windows anyone?) - Have a CGColorSpaceRef attached to the context (currently assumed to be
- Try different Cairo surfaces (ps, pdf, png, OpenGL, etc.) 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) PostScript/PDF parsing classes are unimplemented.
- 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?)
- 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: Design principles to follow:
============================ ============================