fz_error fz_clonetextnode(fz_textnode **textp, fz_textnode *oldtext) { fz_textnode *text; text = *textp = fz_malloc(sizeof(fz_textnode)); if (!text) return fz_rethrow(-1, "out of memory"); fz_initnode((fz_node*)text, FZ_NTEXT); text->font = fz_keepfont(oldtext->font); text->trm = oldtext->trm; text->len = oldtext->len; text->cap = oldtext->len; text->els = nil; text->els = fz_malloc(sizeof(fz_textel) * text->len); if (!text->els) { fz_dropfont(text->font); fz_free(text); return fz_rethrow(-1, "out of memory"); } memcpy(text->els, oldtext->els, sizeof(fz_textel) * text->len); *textp = text; return fz_okay; }
fz_error * fz_clonepathnode(fz_pathnode **pathp, fz_pathnode *oldpath) { fz_pathnode *path; path = *pathp = fz_malloc(sizeof(fz_pathnode)); if (!path) return fz_outofmem; fz_initnode((fz_node*)path, FZ_NPATH); path->paint = FZ_FILL; path->linecap = 0; path->linejoin = 0; path->linewidth = 1.0; path->miterlimit = 10.0; path->dash = nil; path->len = oldpath->len; path->cap = oldpath->len; path->els = fz_malloc(sizeof (fz_pathel) * path->len); if (!path->els) { fz_free(path); return fz_outofmem; } memcpy(path->els, oldpath->els, sizeof(fz_pathel) * path->len); return nil; }
fz_error fz_newovernode(fz_node **nodep) { fz_node *node; node = *nodep = fz_malloc(sizeof (fz_overnode)); if (!node) return fz_rethrow(-1, "out of memory"); fz_initnode(node, FZ_NOVER); return fz_okay; }
fz_error * fz_newovernode(fz_node **nodep) { fz_node *node; node = *nodep = fz_malloc(sizeof (fz_overnode)); if (!node) return fz_outofmem; fz_initnode(node, FZ_NOVER); return fz_okay; }
fz_error fz_newshadenode(fz_node **nodep, fz_shade *shade) { fz_shadenode *node; node = fz_malloc(sizeof (fz_shadenode)); if (!node) return fz_rethrow(-1, "out of memory"); *nodep = (fz_node*)node; fz_initnode((fz_node*)node, FZ_NSHADE); node->shade = fz_keepshade(shade); return fz_okay; }
fz_error fz_newimagenode(fz_node **nodep, fz_image *image) { fz_imagenode *node; node = fz_malloc(sizeof (fz_imagenode)); if (!node) return fz_rethrow(-1, "out of memory"); *nodep = (fz_node*)node; fz_initnode((fz_node*)node, FZ_NIMAGE); node->image = fz_keepimage(image); return fz_okay; }
fz_error fz_newlinknode(fz_node **nodep, fz_tree *subtree) { fz_linknode *node; node = fz_malloc(sizeof (fz_linknode)); if (!node) return fz_rethrow(-1, "out of memory"); *nodep = (fz_node*)node; fz_initnode((fz_node*)node, FZ_NLINK); node->tree = fz_keeptree(subtree); return fz_okay; }
fz_error * fz_newtransformnode(fz_node **nodep, fz_matrix m) { fz_transformnode *node; node = fz_malloc(sizeof (fz_transformnode)); if (!node) return fz_outofmem; *nodep = (fz_node*)node; fz_initnode((fz_node*)node, FZ_NTRANSFORM); node->m = m; return fz_okay; }
fz_error fz_newtransformnode(fz_node **nodep, fz_matrix m) { fz_transformnode *node; node = fz_malloc(sizeof (fz_transformnode)); if (!node) return fz_rethrow(-1, "out of memory"); *nodep = (fz_node*)node; fz_initnode((fz_node*)node, FZ_NTRANSFORM); node->m = m; node->container = 0; /* cf. http://bugs.ghostscript.com/show_bug.cgi?id=690643 */ return fz_okay; }
fz_error fz_newblendnode(fz_node **nodep, fz_blendkind b, int i, int k) { fz_blendnode *node; node = fz_malloc(sizeof (fz_blendnode)); if (!node) return fz_rethrow(-1, "out of memory"); *nodep = (fz_node*)node; fz_initnode((fz_node*)node, FZ_NBLEND); node->mode = b; node->isolated = i; node->knockout = k; return fz_okay; }
fz_error * fz_newblendnode(fz_node **nodep, fz_blendkind b, int k, int i) { fz_blendnode *node; node = fz_malloc(sizeof (fz_blendnode)); if (!node) return fz_outofmem; *nodep = (fz_node*)node; fz_initnode((fz_node*)node, FZ_NBLEND); node->mode = b; node->knockout = k; node->isolated = i; return fz_okay; }
fz_error fz_newsolidnode(fz_node **nodep, float a, fz_colorspace *cs, int n, float *v) { fz_solidnode *node; int i; node = fz_malloc(sizeof(fz_solidnode) + sizeof(float) * n); if (!node) return fz_rethrow(-1, "out of memory"); *nodep = (fz_node*)node; fz_initnode((fz_node*)node, FZ_NCOLOR); node->a = a; node->cs = fz_keepcolorspace(cs); node->n = n; for (i = 0; i < n; i++) node->samples[i] = v[i]; return fz_okay; }
fz_error fz_newtextnode(fz_textnode **textp, fz_font *font) { fz_textnode *text; text = fz_malloc(sizeof(fz_textnode)); if (!text) return fz_rethrow(-1, "out of memory"); fz_initnode((fz_node*)text, FZ_NTEXT); text->font = fz_keepfont(font); text->trm = fz_identity(); text->len = 0; text->cap = 0; text->els = nil; *textp = text; return fz_okay; }
fz_error * fz_newpathnode(fz_pathnode **pathp) { fz_pathnode *path; path = *pathp = fz_malloc(sizeof(fz_pathnode)); if (!path) return fz_outofmem; fz_initnode((fz_node*)path, FZ_NPATH); path->paint = FZ_FILL; path->linecap = 0; path->linejoin = 0; path->linewidth = 1.0; path->miterlimit = 10.0; path->dash = nil; path->len = 0; path->cap = 0; path->els = nil; return nil; }