4 #include "dl-dvi-program.hh"
5 #include "dl-dvi-file.hh"
6 #include <gdk-pixbuf/gdk-pixbuf.h>
12 class AbstractDviPainter : public DviLib::DviRuntime
15 virtual void paint_bitmap (const unsigned char *data,
20 virtual ~AbstractDviPainter () {}
23 class DviFrame : public DviLib::RefCounted
26 DviLib::DviFontMap *fontmap;
27 int h, v, w, x, y, z; // in dvi units
30 DviLib::AbstractFont *font;
34 class DviPainter : public AbstractDviPainter
37 virtual void set_char (int ch); // typeset ch, move w
38 virtual void put_char (int ch); // typeset ch, don't move
39 virtual void set_rule (int height,
40 int width); // rule, move (height, width)
41 virtual void put_rule (int height,
42 int width); // rule, don't move
43 virtual void push (void); // push current context
44 virtual void pop (void); // pop ccontext
45 virtual void right (int len); // move right len
46 virtual void w (int len); // move right len, set w = len
47 virtual void w_rep (); // move right w
48 virtual void x (int len); // move right len, set x = len
49 virtual void x_rep (); // move right x
50 virtual void down (int len); // move down len
51 virtual void y (int len); // move down len, set y = len
52 virtual void y_rep (); // move down y
53 virtual void z (int len); // move down len, set z = len
54 virtual void z_rep (); // move down z
55 virtual void fontmap (DviLib::DviFontMap *fontmap); // set fontmap
56 virtual void font_num (int font_num); // current_font = fd
57 virtual void special (string spc); // do something special
58 virtual void paint_bitmap (const unsigned char *data,
66 DviLib::DviFile *dvi_file;
68 AbstractFontFactory *font_factory;
71 DviFrame *current_frame; // stack of DVI frames
73 double scale; // convert dvi units to pixels
74 int dvi_to_pixels (int du)
76 // We add base_dpi horizontally and vertically. This
77 // has the effect of adding an inch horizontally and
78 // vertically. This is just how .dvi files work ...
79 return (int)floor (0.5 + scale * du) + base_dpi;
81 int dvi_to_pixels_no_offset (int du)
83 return (int)floor (0.5 + scale * du);
85 int tfm_to_dvi (uint tfm, int at_size);
88 DviPainter (GdkPixmap *pixmap_arg,
90 DviLib::DviFile *dvi_file_arg,
92 AbstractFontFactory *font_factory_arg);
93 virtual ~DviPainter ();