diff options
author | Tor Andersson <tor@ghostscript.com> | 2004-09-27 02:15:04 +0200 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2004-09-27 02:15:04 +0200 |
commit | 6ddde92a3a45e970b05770633dc6a337d5d013c5 (patch) | |
tree | 1dec4612d7469839478e72d16d30a0da5755243c /include/fitz/tree.h | |
download | mupdf-6ddde92a3a45e970b05770633dc6a337d5d013c5.tar.xz |
Initial import
Diffstat (limited to 'include/fitz/tree.h')
-rw-r--r-- | include/fitz/tree.h | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/include/fitz/tree.h b/include/fitz/tree.h new file mode 100644 index 00000000..080e55bf --- /dev/null +++ b/include/fitz/tree.h @@ -0,0 +1,156 @@ +typedef struct fz_tree_s fz_tree; +typedef struct fz_node_s fz_node; + +typedef enum fz_nodekind_e fz_nodekind; +typedef enum fz_blendkind_e fz_blendkind; + +typedef struct fz_transform_s fz_transform; +typedef struct fz_over_s fz_over; +typedef struct fz_mask_s fz_mask; +typedef struct fz_blend_s fz_blend; +typedef struct fz_path_s fz_path; +typedef struct fz_text_s fz_text; +typedef struct fz_solid_s fz_solid; +typedef struct fz_image_s fz_image; +typedef struct fz_shade_s fz_shade; +typedef struct fz_form_s fz_form; +typedef struct fz_meta_s fz_meta; +typedef struct fz_halftone_s fz_halftone; + +enum fz_nodekind_e +{ + FZ_NTRANSFORM, + FZ_NOVER, + FZ_NMASK, + FZ_NBLEND, + FZ_NPATH, + FZ_NTEXT, + FZ_NSOLID, + FZ_NIMAGE, + FZ_NSHADE, + FZ_NFORM, + FZ_NMETA, + FZ_NHALFTONE +}; + +enum fz_blendkind_e +{ + /* PDF 1.4 -- standard separable */ + FZ_BNORMAL, + FZ_BMULTIPLY, + FZ_BSCREEN, + FZ_BOVERLAY, + FZ_BDARKEN, + FZ_BLIGHTEN, + FZ_BCOLORDODGE, + FZ_BCOLORBURN, + FZ_BHARDLIGHT, + FZ_BSOFTLIGHT, + FZ_BDIFFERENCE, + FZ_BEXCLUSION, + + /* PDF 1.4 -- standard non-separable */ + FZ_BHUE, + FZ_BSATURATION, + FZ_BCOLOR, + FZ_BLUMINOSITY, + + FZ_BOVERPRINT, +}; + +struct fz_tree_s +{ + fz_node *root; + fz_node *head; +}; + +struct fz_node_s +{ + fz_nodekind kind; + fz_node *parent; + fz_node *next; +}; + +struct fz_meta_s +{ + fz_node super; + fz_node *child; + fz_obj *info; +}; + +struct fz_over_s +{ + fz_node super; + fz_node *child; +}; + +struct fz_mask_s +{ + fz_node super; + fz_node *child; +}; + +struct fz_blend_s +{ + fz_node super; + fz_node *child; + fz_blendkind mode; + int isolated; + int knockout; +}; + +struct fz_transform_s +{ + fz_node super; + fz_node *child; + fz_matrix m; +}; + +struct fz_form_s +{ + fz_node super; + fz_tree *tree; +}; + +struct fz_solid_s +{ + fz_node super; + float r, g, b; +}; + +/* tree operations */ +fz_error *fz_newtree(fz_tree **treep); +void fz_freetree(fz_tree *tree); +fz_rect fz_boundtree(fz_tree *tree, fz_matrix ctm); + +void fz_debugtree(fz_tree *tree); +void fz_insertnode(fz_node *node, fz_node *child); + +/* common to all nodes */ +void fz_initnode(fz_node *node, fz_nodekind kind); +fz_rect fz_boundnode(fz_node *node, fz_matrix ctm); +void fz_freenode(fz_node *node); + +/* branch nodes */ +fz_error *fz_newmeta(fz_node **nodep, fz_obj *info); +fz_error *fz_newover(fz_node **nodep); +fz_error *fz_newmask(fz_node **nodep); +fz_error *fz_newblend(fz_node **nodep, fz_blendkind b, int k, int i); +fz_error *fz_newtransform(fz_node **nodep, fz_matrix m); + +int fz_ismeta(fz_node *node); +int fz_isover(fz_node *node); +int fz_ismask(fz_node *node); +int fz_isblend(fz_node *node); +int fz_istransform(fz_node *node); + +/* leaf nodes */ +fz_error *fz_newform(fz_node **nodep, fz_tree *subtree); +fz_error *fz_newsolid(fz_node **nodep, float r, float g, float b); + +int fz_isform(fz_node *node); +int fz_issolid(fz_node *node); +int fz_ispath(fz_node *node); +int fz_istext(fz_node *node); +int fz_isimage(fz_node *node); + |