mirror of
https://github.com/darlinghq/darling-coregraphics.git
synced 2024-11-23 12:19:49 +00:00
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:
parent
1648bb9a2f
commit
4c4c7c17b4
4
README
4
README
@ -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
67
TODO
@ -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:
|
||||||
============================
|
============================
|
||||||
|
Loading…
Reference in New Issue
Block a user