fz_device * fz_new_draw_device(fz_context *ctx, fz_glyph_cache *cache, fz_pixmap *dest) { fz_device *dev; fz_draw_device *ddev = fz_malloc(ctx, sizeof(fz_draw_device)); ddev->cache = cache; ddev->gel = fz_new_gel(ctx); ddev->dest = dest; ddev->shape = NULL; ddev->top = 0; ddev->blendmode = 0; ddev->flags = 0; ddev->stack = &ddev->init_stack[0]; ddev->stack_max = STACK_SIZE; ddev->ctx = ctx; ddev->scissor.x0 = dest->x; ddev->scissor.y0 = dest->y; ddev->scissor.x1 = dest->x + dest->w; ddev->scissor.y1 = dest->y + dest->h; dev = fz_new_device(ctx, ddev); dev->free_user = fz_draw_free_user; dev->fill_path = fz_draw_fill_path; dev->stroke_path = fz_draw_stroke_path; dev->clip_path = fz_draw_clip_path; dev->clip_stroke_path = fz_draw_clip_stroke_path; dev->fill_text = fz_draw_fill_text; dev->stroke_text = fz_draw_stroke_text; dev->clip_text = fz_draw_clip_text; dev->clip_stroke_text = fz_draw_clip_stroke_text; dev->ignore_text = fz_draw_ignore_text; dev->fill_image_mask = fz_draw_fill_image_mask; dev->clip_image_mask = fz_draw_clip_image_mask; dev->fill_image = fz_draw_fill_image; dev->fill_shade = fz_draw_fill_shade; dev->pop_clip = fz_draw_pop_clip; dev->begin_mask = fz_draw_begin_mask; dev->end_mask = fz_draw_end_mask; dev->begin_group = fz_draw_begin_group; dev->end_group = fz_draw_end_group; dev->begin_tile = fz_draw_begin_tile; dev->end_tile = fz_draw_end_tile; return dev; }
fz_device * fz_new_draw_device(fz_glyph_cache *cache, fz_pixmap *dest) { fz_device *dev; fz_draw_device *ddev = fz_malloc(sizeof(fz_draw_device)); ddev->cache = cache; ddev->gel = fz_new_gel(); ddev->dest = dest; ddev->top = 0; ddev->scissor.x0 = dest->x; ddev->scissor.y0 = dest->y; ddev->scissor.x1 = dest->x + dest->w; ddev->scissor.y1 = dest->y + dest->h; dev = fz_new_device(ddev); dev->free_user = fz_draw_free_user; dev->fill_path = fz_draw_fill_path; dev->stroke_path = fz_draw_stroke_path; dev->clip_path = fz_draw_clip_path; dev->clip_stroke_path = fz_draw_clip_stroke_path; dev->fill_text = fz_draw_fill_text; dev->stroke_text = fz_draw_stroke_text; dev->clip_text = fz_draw_clip_text; dev->clip_stroke_text = fz_draw_clip_stroke_text; dev->ignore_text = fz_draw_ignore_text; dev->fill_image_mask = fz_draw_fill_image_mask; dev->clip_image_mask = fz_draw_clip_image_mask; dev->fill_image = fz_draw_fill_image; dev->fill_shade = fz_draw_fill_shade; dev->pop_clip = fz_draw_pop_clip; dev->begin_mask = fz_draw_begin_mask; dev->end_mask = fz_draw_end_mask; dev->begin_group = fz_draw_begin_group; dev->end_group = fz_draw_end_group; dev->begin_tile = fz_draw_begin_tile; dev->end_tile = fz_draw_end_tile; return dev; }
fz_rasterizer *fz_new_rasterizer(fz_context *ctx, const fz_aa_context *aa) { fz_rasterizer *r; int bits; #ifdef AA_BITS bits = AA_BITS; #else if (aa == NULL) aa = ctx->aa; bits = aa->bits; #endif if (bits == 10) r = fz_new_edgebuffer(ctx, FZ_EDGEBUFFER_ANY_PART_OF_PIXEL); else if (bits == 9) r = fz_new_edgebuffer(ctx, FZ_EDGEBUFFER_CENTER_OF_PIXEL); else r = fz_new_gel(ctx); #ifndef AA_BITS r->aa = *aa; #endif return r; }
fz_device * fz_new_draw_device(fz_context *ctx, fz_pixmap *dest) { fz_device *dev = NULL; fz_draw_device *ddev = fz_malloc_struct(ctx, fz_draw_device); fz_var(dev); fz_try(ctx) { ddev->gel = fz_new_gel(ctx); ddev->flags = 0; ddev->ctx = ctx; ddev->top = 0; ddev->stack = &ddev->init_stack[0]; ddev->stack_max = STACK_SIZE; ddev->stack[0].dest = dest; ddev->stack[0].shape = NULL; ddev->stack[0].mask = NULL; ddev->stack[0].blendmode = 0; ddev->stack[0].scissor.x0 = dest->x; ddev->stack[0].scissor.y0 = dest->y; ddev->stack[0].scissor.x1 = dest->x + dest->w; ddev->stack[0].scissor.y1 = dest->y + dest->h; dev = fz_new_device(ctx, ddev); } fz_catch(ctx) { fz_free_gel(ddev->gel); fz_free(ctx, ddev); fz_rethrow(ctx); } dev->free_user = fz_draw_free_user; dev->fill_path = fz_draw_fill_path; dev->stroke_path = fz_draw_stroke_path; dev->clip_path = fz_draw_clip_path; dev->clip_stroke_path = fz_draw_clip_stroke_path; dev->fill_text = fz_draw_fill_text; dev->stroke_text = fz_draw_stroke_text; dev->clip_text = fz_draw_clip_text; dev->clip_stroke_text = fz_draw_clip_stroke_text; dev->ignore_text = fz_draw_ignore_text; dev->fill_image_mask = fz_draw_fill_image_mask; dev->clip_image_mask = fz_draw_clip_image_mask; dev->fill_image = fz_draw_fill_image; dev->fill_shade = fz_draw_fill_shade; dev->pop_clip = fz_draw_pop_clip; dev->begin_mask = fz_draw_begin_mask; dev->end_mask = fz_draw_end_mask; dev->begin_group = fz_draw_begin_group; dev->end_group = fz_draw_end_group; dev->begin_tile = fz_draw_begin_tile; dev->end_tile = fz_draw_end_tile; return dev; }