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 int h, v, w, x, y, z; // in dvi units
31 class DviPainter : public AbstractDviPainter
34 virtual void set_char (int ch); // typeset ch, move w
35 virtual void put_char (int ch); // typeset ch, don't move
36 virtual void set_rule (int height,
37 int width); // rule, move (height, width)
38 virtual void put_rule (int height,
39 int width); // rule, don't move
40 virtual void push (void); // push current context
41 virtual void pop (void); // pop ccontext
42 virtual void right (int len); // move right len
43 virtual void w (int len); // move right len, set w = len
44 virtual void w_rep (); // move right w
45 virtual void x (int len); // move right len, set x = len
46 virtual void x_rep (); // move right x
47 virtual void down (int len); // move down len
48 virtual void y (int len); // move down len, set y = len
49 virtual void y_rep (); // move down y
50 virtual void z (int len); // move down len, set z = len
51 virtual void z_rep (); // move down z
52 virtual void push_fontmap (std::map<int, DviLib::DviFontdefinition *> fontmap);
53 virtual void font_num (int font_num); // current_font = fd
54 virtual void special (string spc); // do something special
55 virtual void paint_bitmap (const unsigned char *data,
63 DviLib::DviFile *dvi_file;
65 AbstractFontFactory *font_factory;
68 DviLib::AbstractFont *current_font;
69 DviFrame *current_frame; // stack of DVI frames
71 double scale; // convert dvi units to pixels
72 int dvi_to_pixels (int du)
74 // We add base_dpi horizontally and vertically. This
75 // has the effect of adding an inch horizontally and
76 // vertically. This is just how .dvi files work ...
77 return (int)floor (0.5 + scale * du) + base_dpi;
79 int dvi_to_pixels_no_offset (int du)
81 return (int)floor (0.5 + scale * du);
83 int tfm_to_dvi (uint tfm, int at_size);
86 DviPainter (GdkPixmap *pixmap_arg,
88 DviLib::DviFile *dvi_file_arg,
90 AbstractFontFactory *font_factory_arg);
91 virtual ~DviPainter ();