Esempio n. 1
0
fz_device *
fz_new_text_device(fz_context *ctx, fz_text_sheet *sheet, fz_text_page *page)
{
	fz_device *dev;

	fz_text_device *tdev = fz_malloc_struct(ctx, fz_text_device);
	tdev->sheet = sheet;
	tdev->page = page;
	tdev->point.x = -1;
	tdev->point.y = -1;
	tdev->lastchar = ' ';

	init_line(ctx, &tdev->cur_line);
	init_span(ctx, &tdev->cur_span, NULL);

	dev = fz_new_device(ctx, tdev);
	dev->hints = FZ_IGNORE_IMAGE | FZ_IGNORE_SHADE;
	dev->free_user = fz_text_free_user;
	dev->fill_text = fz_text_fill_text;
	dev->stroke_text = fz_text_stroke_text;
	dev->clip_text = fz_text_clip_text;
	dev->clip_stroke_text = fz_text_clip_stroke_text;
	dev->ignore_text = fz_text_ignore_text;
	return dev;
}
Esempio n. 2
0
static void
fz_flush_text_line(fz_context *ctx, fz_text_device *dev, fz_text_style *style)
{
	append_span(ctx, &dev->cur_line, &dev->cur_span);
	insert_line(ctx, dev->page, &dev->cur_line);
	init_span(ctx, &dev->cur_span, style);
	init_line(ctx, &dev->cur_line);
}
Esempio n. 3
0
 //--------------------------------------------------------------------
 void blend_solid_vspan(int x, int y,
                        unsigned len, 
                        const color_type& c,
                        const cover_type* covers)
 {
     init_span(len, covers);
     m_mask->combine_vspan(x, y, &m_span[0], len);
     m_pixf->blend_solid_vspan(x, y, len, c, &m_span[0]);
 }
Esempio n. 4
0
static void
fz_add_text_char_imp(fz_context *ctx, fz_text_device *dev, fz_text_style *style, int c, fz_rect bbox)
{
	if (!dev->cur_span.style)
		dev->cur_span.style = style;
	if (style != dev->cur_span.style)
	{
		append_span(ctx, &dev->cur_line, &dev->cur_span);
		init_span(ctx, &dev->cur_span, style);
	}
	append_char(ctx, &dev->cur_span, c, bbox);
}
Esempio n. 5
0
 //--------------------------------------------------------------------
 void blend_color_vspan(int x, int y,
                        unsigned len, 
                        const color_type* colors,
                        const cover_type* covers,
                        cover_type cover = cover_full)
 {
     if(covers) 
     {
         init_span(len, covers);
         m_mask->combine_vspan(x, y, &m_span[0], len);
     }
     else
     {
         realloc_span(len);
         m_mask->fill_vspan(x, y, &m_span[0], len);
     }
     m_pixf->blend_color_vspan(x, y, len, colors, &m_span[0], cover);
 }