示例#1
0
static void
fz_drop_id_context(fz_context *ctx)
{
	if (!ctx)
		return;
	if (fz_drop_imp(ctx, ctx->id, &ctx->id->refs))
		fz_free(ctx, ctx->id);
}
示例#2
0
static void fz_drop_tuning_context(fz_context *ctx)
{
	if (!ctx)
		return;
	if (fz_drop_imp(ctx, ctx->tuning, &ctx->tuning->refs))
	{
		fz_free(ctx, ctx->tuning);
	}
}
示例#3
0
static void
fz_drop_image_key(fz_context *ctx, void *key_)
{
    fz_image_key *key = (fz_image_key *)key_;
    if (fz_drop_imp(ctx, key, &key->refs))
    {
        fz_drop_image(ctx, key->image);
        fz_free(ctx, key);
    }
}
示例#4
0
void fz_drop_colorspace_context(fz_context *ctx)
{
	if (!ctx)
		return;
	if (fz_drop_imp(ctx, ctx->colorspace, &ctx->colorspace->ctx_refs))
	{
		fz_free(ctx, ctx->colorspace);
		ctx->colorspace = NULL;
	}
}
示例#5
0
static void fz_drop_style_context(fz_context *ctx)
{
	if (!ctx)
		return;
	if (fz_drop_imp(ctx, ctx->style, &ctx->style->refs))
	{
		fz_free(ctx, ctx->style->user_css);
		fz_free(ctx, ctx->style);
	}
}
示例#6
0
void
fz_drop_stream(fz_context *ctx, fz_stream *stm)
{
	if (fz_drop_imp(ctx, stm, &stm->refs))
	{
		if (stm->drop)
			stm->drop(ctx, stm->state);
		fz_free(ctx, stm);
	}
}
示例#7
0
文件: output.c 项目: HCLAC/mupdf
void
fz_drop_output_context(fz_context *ctx)
{
	if (!ctx || !ctx->output)
		return;

	if (fz_drop_imp(ctx, ctx->output, &ctx->output->refs))
	{
		/* FIXME: should we flush here? closing the streams seems wrong */
		fz_free(ctx, ctx->output);
		ctx->output = NULL;
	}
}
示例#8
0
文件: outline.c 项目: JorjMcKie/mupdf
void
fz_drop_outline(fz_context *ctx, fz_outline *outline)
{
	while (fz_drop_imp(ctx, outline, &outline->refs))
	{
		fz_outline *next = outline->next;
		fz_drop_outline(ctx, outline->down);
		fz_free(ctx, outline->title);
		fz_free(ctx, outline->uri);
		fz_free(ctx, outline);
		outline = next;
	}
}
示例#9
0
void
fz_drop_device(fz_context *ctx, fz_device *dev)
{
	if (fz_drop_imp(ctx, dev, &dev->refs))
	{
		if (dev->close_device)
			fz_warn(ctx, "dropping unclosed device");
		if (dev->drop_device)
			dev->drop_device(ctx, dev);
		fz_free(ctx, dev->container);
		fz_free(ctx, dev);
	}
}
示例#10
0
文件: text.c 项目: songtzu/mupdf-4
void
fz_drop_text(fz_context *ctx, fz_text *text)
{
	if (fz_drop_imp(ctx, text, &text->refs))
	{
		fz_text_span *span = text->head;
		while (span)
		{
			fz_text_span *next = span->next;
			fz_drop_font(ctx, span->font);
			fz_free(ctx, span->items);
			fz_free(ctx, span);
			span = next;
		}
		fz_free(ctx, text);
	}
}
示例#11
0
文件: text.c 项目: mandeep57/mupdf
void
fz_drop_text(fz_context *ctx, const fz_text *textc)
{
	fz_text *text = (fz_text *)textc; /* Explicit cast away of const */

	if (fz_drop_imp(ctx, text, &text->refs))
	{
		fz_text_span *span = text->head;
		while (span)
		{
			fz_text_span *next = span->next;
			fz_drop_font(ctx, span->font);
			fz_free(ctx, span->items);
			fz_free(ctx, span);
			span = next;
		}
		fz_free(ctx, text);
	}
}
示例#12
0
文件: output.c 项目: JorjMcKie/mupdf
void
fz_drop_output_context(fz_context *ctx)
{
	if (!ctx)
		return;

	if (fz_drop_imp(ctx, ctx->output, &ctx->output->refs))
	{
		fz_try(ctx)
			fz_flush_output(ctx, ctx->output->out);
		fz_catch(ctx)
			fz_warn(ctx, "cannot flush stdout");
		fz_drop_output(ctx, ctx->output->out);

		fz_try(ctx)
			fz_flush_output(ctx, ctx->output->err);
		fz_catch(ctx)
			fz_warn(ctx, "cannot flush stderr");
		fz_drop_output(ctx, ctx->output->err);

		fz_free(ctx, ctx->output);
		ctx->output = NULL;
	}
}
示例#13
0
文件: cmapdump.c 项目: HCLAC/mupdf
void fz_drop_storable(fz_context *ctx, const fz_storable *sc)
{
	fz_storable *s = (fz_storable *)sc;
	if (fz_drop_imp(ctx, s, &s->refs))
		s->drop(ctx, s);
}