summaryrefslogtreecommitdiff
path: root/include/fitz/tree.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/fitz/tree.h')
-rw-r--r--include/fitz/tree.h134
1 files changed, 71 insertions, 63 deletions
diff --git a/include/fitz/tree.h b/include/fitz/tree.h
index 080e55bf..4d6eb952 100644
--- a/include/fitz/tree.h
+++ b/include/fitz/tree.h
@@ -1,21 +1,38 @@
typedef struct fz_tree_s fz_tree;
typedef struct fz_node_s fz_node;
+struct fz_tree_s
+{
+ int refcount;
+ fz_node *root;
+ fz_node *head;
+};
+
+/* tree operations */
+fz_error *fz_newtree(fz_tree **treep);
+fz_tree *fz_keeptree(fz_tree *tree);
+void fz_droptree(fz_tree *tree);
+
+fz_rect fz_boundtree(fz_tree *tree, fz_matrix ctm);
+void fz_debugtree(fz_tree *tree);
+void fz_insertnode(fz_node *parent, fz_node *child);
+
+/* node types */
+
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;
+typedef struct fz_transformnode_s fz_transformnode;
+typedef struct fz_overnode_s fz_overnode;
+typedef struct fz_masknode_s fz_masknode;
+typedef struct fz_blendnode_s fz_blendnode;
+typedef struct fz_pathnode_s fz_pathnode;
+typedef struct fz_textnode_s fz_textnode;
+typedef struct fz_colornode_s fz_colornode;
+typedef struct fz_imagenode_s fz_imagenode;
+typedef struct fz_shadenode_s fz_shadenode;
+typedef struct fz_linknode_s fz_linknode;
+typedef struct fz_metanode_s fz_metanode;
enum fz_nodekind_e
{
@@ -25,12 +42,11 @@ enum fz_nodekind_e
FZ_NBLEND,
FZ_NPATH,
FZ_NTEXT,
- FZ_NSOLID,
+ FZ_NCOLOR,
FZ_NIMAGE,
FZ_NSHADE,
- FZ_NFORM,
- FZ_NMETA,
- FZ_NHALFTONE
+ FZ_NLINK,
+ FZ_NMETA
};
enum fz_blendkind_e
@@ -56,75 +72,65 @@ enum fz_blendkind_e
FZ_BLUMINOSITY,
FZ_BOVERPRINT,
-};
-
-struct fz_tree_s
-{
- fz_node *root;
- fz_node *head;
+ FZ_BRASTEROP,
};
struct fz_node_s
{
fz_nodekind kind;
fz_node *parent;
+ fz_node *child;
fz_node *next;
};
-struct fz_meta_s
+struct fz_transformnode_s
{
fz_node super;
- fz_node *child;
- fz_obj *info;
+ fz_matrix m;
};
-struct fz_over_s
+struct fz_overnode_s
{
fz_node super;
- fz_node *child;
};
-struct fz_mask_s
+struct fz_masknode_s
{
fz_node super;
- fz_node *child;
};
-struct fz_blend_s
+struct fz_blendnode_s
{
fz_node super;
- fz_node *child;
fz_blendkind mode;
int isolated;
int knockout;
};
-struct fz_transform_s
+struct fz_colornode_s
{
fz_node super;
- fz_node *child;
- fz_matrix m;
+ float r, g, b;
};
-struct fz_form_s
+struct fz_linknode_s
{
fz_node super;
fz_tree *tree;
};
-struct fz_solid_s
+struct fz_metanode_s
{
fz_node super;
- float r, g, b;
+ fz_obj *info;
};
-/* 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);
+struct fz_imagenode_s
+{
+ fz_node super;
+ int w, h, n, a;
+ // XXX fz_image *image;
+};
/* common to all nodes */
void fz_initnode(fz_node *node, fz_nodekind kind);
@@ -132,25 +138,27 @@ 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);
+fz_error *fz_newmetanode(fz_node **nodep, fz_obj *info);
+fz_error *fz_newovernode(fz_node **nodep);
+fz_error *fz_newmasknode(fz_node **nodep);
+fz_error *fz_newblendnode(fz_node **nodep, fz_blendkind b, int k, int i);
+fz_error *fz_newtransformnode(fz_node **nodep, fz_matrix m);
+
+int fz_istransformnode(fz_node *node);
+int fz_isovernode(fz_node *node);
+int fz_ismasknode(fz_node *node);
+int fz_isblendnode(fz_node *node);
+int fz_ismetanode(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);
+fz_error *fz_newlinknode(fz_node **nodep, fz_tree *subtree);
+fz_error *fz_newcolornode(fz_node **nodep, float r, float g, float b);
+fz_error *fz_newimagenode(fz_node **nodep, int w, int h, int n, int a);
+
+int fz_islinknode(fz_node *node);
+int fz_iscolornode(fz_node *node);
+int fz_ispathnode(fz_node *node);
+int fz_istextnode(fz_node *node);
+int fz_isimagenode(fz_node *node);
+int fz_isshadenode(fz_node *node);