summaryrefslogtreecommitdiff
path: root/TODO
blob: ed3adff662a6af31ba135b9d4e140da994de32c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
heh. bug in pdfselect on compressed object streams. gc takes forever, no objects remain...

lazy nametree
lazy pagetree

cmap one-to-many mapping
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

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
	draw tris as before
	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)

---

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

---

std rsrc fmt (v3)

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
	- font focus
	- 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
	flate needin/needout

	jbig2 rewrite
	dctencode params
	dctdecode app marker