summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2005-06-06 21:43:56 +0200
committerTor Andersson <tor@ghostscript.com>2005-06-06 21:43:56 +0200
commit8d6fea0e1cdf319714c5bb8be1af0f78b8cab877 (patch)
tree1c491aac029d8176dd28ce21f661523c54c31cdf
parentcb6f8bb32bc36b46e41eada10ed0ce72af1c8cac (diff)
downloadmupdf-8d6fea0e1cdf319714c5bb8be1af0f78b8cab877.tar.xz
update TODO file
-rw-r--r--TODO109
1 files changed, 89 insertions, 20 deletions
diff --git a/TODO b/TODO
index ed3adff6..0449c1d5 100644
--- a/TODO
+++ b/TODO
@@ -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)