4 #include "dl-dvi-program.hh"
8 #include "dl-dvi-fontdefinition.hh"
9 #include "dl-loader.hh"
13 const uint N_PAGE_COUNTERS = 10; // \count0 ... \count9
15 class DviPageHeader : public RefCounted
18 int count[N_PAGE_COUNTERS];
19 uint address; // address of this page, not the preceding
22 class DviPage : public AbstractDviProgram
26 int count[N_PAGE_COUNTERS]; // \count0 ... \count9
28 DviPage (DviProgram& p, int c[N_PAGE_COUNTERS], DviFontMap *fontmap) :
31 this->fontmap = fontmap;
33 for (uint i = 0; i < N_PAGE_COUNTERS; ++i)
36 virtual void execute (DviRuntime& runtime)
39 runtime.fontmap (fontmap);
40 cout << "page " << (int)fontmap << endl;
41 program.execute (runtime);
44 int get_page_count (int i) { return count[i]; }
49 NORMAL_DVI = 2, // FIXME: this should be 2
50 TEX_XET_DVI = 2 // FIXME: is this correct?
53 class DviFilePreamble : public RefCounted
64 class DviFilePostamble : public RefCounted
73 uint last_page_address;
81 class DviFile : public RefCounted
83 AbstractLoader &loader;
85 DviFilePreamble *preamble;
86 DviFilePostamble *postamble;
89 map <uint, DviPageHeader *> page_headers;
90 map <uint, DviPage *> pages;
93 DviFile (AbstractLoader& l);
94 DviPage *get_page (uint n); /* unref it when done */
96 uint get_n_pages () { return n_pages; }
97 DviFontdefinition *get_fontdefinition (uint n)
99 return postamble->fontmap->get_fontdefinition (n);
101 uint get_numerator () { return postamble->numerator; }
102 uint get_denominator () { return postamble->denominator; }
103 uint get_magnification () { return postamble->magnification; }
107 #endif // DL_DVI_FILE_HH