예제 #1
0
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;
}
예제 #2
0
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;
}
예제 #3
0
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;
}
예제 #4
0
파일: node_misc2.c 프로젝트: iroot/sopdf
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;
}
예제 #5
0
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;
}
예제 #6
0
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;
}
예제 #7
0
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;
}
예제 #8
0
파일: node_misc2.c 프로젝트: iroot/sopdf
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;
}
예제 #9
0
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;
}
예제 #10
0
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;
}
예제 #11
0
파일: node_misc2.c 프로젝트: iroot/sopdf
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;
}
예제 #12
0
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;
}
예제 #13
0
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;
}
예제 #14
0
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;
}