mirror of
https://github.com/reactos/reactos.git
synced 2024-11-04 13:52:30 +00:00
178 lines
3.8 KiB
Text
178 lines
3.8 KiB
Text
|
heh. bug in pdfselect on compressed object streams. gc takes forever, no objects remain...
|
||
|
|
||
|
lazy nametree
|
||
|
lazy pagetree
|
||
|
|
||
|
builtin standard cmap files (?)
|
||
|
put unicode strings in text object, not font (a la metro)
|
||
|
|
||
|
xml parser
|
||
|
unicode normaliser
|
||
|
|
||
|
path stroke/dash/flatten work on real path struct
|
||
|
turn into gel as second step after stroke/flatten
|
||
|
add intersector for metro union/xor/difference stuff
|
||
|
|
||
|
image rescale to exact size instead of by integer quantas
|
||
|
|
||
|
public / private api
|
||
|
|
||
|
fix the shading code:
|
||
|
3 levels of detail patch mesh (quad, patch, tensor)
|
||
|
subdivide to triangles on the fly
|
||
|
draw tris as before
|
||
|
reuse more code in the parsing
|
||
|
error cleanup
|
||
|
|
||
|
--- 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_fakefont # substitute fonts
|
||
|
fz_t3font # sub-trees define glyphs
|
||
|
fz_psfont # cff postscript font
|
||
|
fz_ttfont # truetype font
|
||
|
|
||
|
|
||
|
--- OLD ---
|
||
|
|
||
|
immediate plan:
|
||
|
|
||
|
* clean up and 'freeze' public api
|
||
|
|
||
|
* get font bbox from fontdescriptor if available
|
||
|
* refactor image loading
|
||
|
* refactor xref loading/repair
|
||
|
* restructure build.c and interpret.c (ftb vs csi)
|
||
|
* fix the colorspace/pattern/shading material mess
|
||
|
* font loading:
|
||
|
- configuration... where to find system files (asian font archive?)
|
||
|
- system fontfile + cmap store
|
||
|
- embedded fontfile store
|
||
|
- split type3 and ftfont malloc (dont waste t3 charprocs on ft fonts)
|
||
|
- make ftfontfile separate struct w/ refcounting
|
||
|
- refactor font loading more. simple/cid/type3 have too much in common.
|
||
|
|
||
|
* structure low/high level stuff
|
||
|
- rewrite outline parser
|
||
|
- implement comments
|
||
|
|
||
|
* clean high-level api
|
||
|
|
||
|
- go through spec and check all features!
|
||
|
- altivec optimize
|
||
|
|
||
|
transparency (v2)
|
||
|
- everything!
|
||
|
|
||
|
colorspace conversions (v2)
|
||
|
- fast color cubes
|
||
|
- proper colorspace conversions
|
||
|
- gamut compression
|
||
|
- extended render intents
|
||
|
|
||
|
image rendering (v2)
|
||
|
- tiles
|
||
|
- dct case
|
||
|
- better filter than box
|
||
|
- lazy decoding
|
||
|
|
||
|
rendering
|
||
|
- fix glyphcache evictlast
|
||
|
- bbox culling per glyph
|
||
|
- render cache (link-nodes and scaled images and colorspaced shades)
|
||
|
|
||
|
fz_optimizetree()
|
||
|
- error & memory
|
||
|
- concatenate chained transforms
|
||
|
- remove identity transforms
|
||
|
|
||
|
for filters:
|
||
|
validate ahxd pushback
|
||
|
go through eof responsibility
|
||
|
be more defensive of api user errors
|
||
|
jbig2 rewrite
|
||
|
dctencode params
|
||
|
dctdecode app marker
|
||
|
jpxd rewrite (or do special trick to load into image directly)
|
||
|
|