diff options
author | Tor Andersson <tor@ghostscript.com> | 2005-06-06 21:43:56 +0200 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2005-06-06 21:43:56 +0200 |
commit | 8d6fea0e1cdf319714c5bb8be1af0f78b8cab877 (patch) | |
tree | 1c491aac029d8176dd28ce21f661523c54c31cdf | |
parent | cb6f8bb32bc36b46e41eada10ed0ce72af1c8cac (diff) | |
download | mupdf-8d6fea0e1cdf319714c5bb8be1af0f78b8cab877.tar.xz |
update TODO file
-rw-r--r-- | TODO | 109 |
1 files changed, 89 insertions, 20 deletions
@@ -3,7 +3,6 @@ heh. bug in pdfselect on compressed object streams. gc takes forever, no objects lazy nametree lazy pagetree -cmap one-to-many mapping builtin standard cmap files (?) put unicode strings in text object, not font (a la metro) @@ -18,8 +17,6 @@ image rescale to exact size instead of by integer quantas public / private api -top-level "driver" architecture (metro/pdf/whatever input) - fix the shading code: 3 levels of detail patch mesh (quad, patch, tensor) subdivide to triangles on the fly @@ -27,14 +24,95 @@ fix the shading code: reuse more code in the parsing error cleanup -think about rewriting file stream api (as the ultimate STDIO replacement): - use function pointers? - dont use pipeline filter? - memoryfile - diskfile - filterfile -> (filters data from another file) +--- WORLD --- + +the fitz world is: + the set of resources: + trees, fonts, images, shades, colorspaces + the list of pages: + references to tree resources + opaque / transparent / invisible ? + +input device drivers create a fitz world from a document + readps -- use ghostscript + readpdf -- use mupdf + readmetro -- use samus + + the mapping from file -> pages and resources + internal to the driver, nothing fitz cares or knows about + should be lazy -- loaded on an as-needed basis + should be reference counted -- can free and reload resources + + minimal api (that works for *all* input drivers) + open(file) + close() + nextpage() + + extended api (that may or may not work optimally) + countpages() + loadpage(number) + +output drivers take a fitz world and produce whatever + raster + writeps + writepdf + writemetro + +--- WORLD API --- + +Fitz World APIs + +Trees: + fz_tree + + fz_node with subclasses + + leafs: + fz_solidnode + fz_imagenode + fz_shadenode + fz_pathnode + fz_textnode + + branches: + fz_transformnode + fz_overnode + fz_masknode + fz_blendnode # for pdf 1.4 and pcl rops + fz_linknode + fz_metanode ---- + construction api + navigation api + +Colorspaces: + fz_colorspace + fz_devicecolor (gray, rgb, cmyk) + fz_iccprofile (icc profile colorspace) + fz_separation (how do we do alternate tint functions?) + +Images: + fz_image + fz_jpegimage # jpeg-compressed + fz_tileimage # 1,8,16 bit image chopped into tiles + + ...or... + fz_monoimage # 1-bit image + fz_byteimage # 8-bit image + fz_wordimage # 16-bit image + +Shades: + fz_shade + mesh of quads, patches, tensors + +Fonts: + fz_font + fz_t3font # sub-trees define glyphs + fz_psfont # cff postscript font + fz_ttfont # truetype font + + +--- OLD --- immediate plan: @@ -62,10 +140,6 @@ immediate plan: - go through spec and check all features! - altivec optimize ---- - -std rsrc fmt (v3) - transparency (v2) - everything! @@ -84,7 +158,6 @@ image rendering (v2) rendering - fix glyphcache evictlast - bbox culling per glyph - - font focus - render cache (link-nodes and scaled images and colorspaced shades) fz_optimizetree() @@ -92,16 +165,12 @@ fz_optimizetree() - concatenate chained transforms - remove identity transforms ---- - for filters: - validate ahxd pushback go through eof responsibility be more defensive of api user errors - flate needin/needout - jbig2 rewrite dctencode params dctdecode app marker + jpxd rewrite (or do special trick to load into image directly) |