diff options
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/pdf/pdfpage.h')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/pdf/pdfpage.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdfpage.h b/Build/source/texk/web2c/luatexdir/pdf/pdfpage.h new file mode 100644 index 00000000000..5cae6a0f601 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/pdf/pdfpage.h @@ -0,0 +1,85 @@ +/* pdfpage.h + + Copyright 2009 Taco Hoekwater <taco@luatex.org> + + This file is part of LuaTeX. + + LuaTeX is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your + option) any later version. + + LuaTeX is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU General Public License along + with LuaTeX; if not, see <http://www.gnu.org/licenses/>. */ + +/* $Id: pdfpage.h 2267 2009-04-12 18:23:21Z oneiros $ */ + +#ifndef PDFPAGE_H +# define PDFPAGE_H +/**********************************************************************/ + +typedef struct { + long m; /* mantissa (significand) */ + int e; /* exponent * -1 */ +} pdffloat; + +typedef struct { + pdffloat h; + pdffloat v; +} pdfpos; + +typedef enum { PMODE_NONE, PMODE_PAGE, PMODE_TEXT, PMODE_CHARARRAY, + PMODE_CHAR +} pos_mode; + +typedef enum { WMODE_H, WMODE_V } writing_mode; /* []TJ runs horizontal or vertical */ + +# define is_pagemode(p) ((p)->mode == PMODE_PAGE) +# define is_textmode(p) ((p)->mode == PMODE_TEXT) +# define is_chararraymode(p) ((p)->mode == PMODE_CHARARRAY) +# define is_charmode(p) ((p)->mode == PMODE_CHAR) + +# define setpdffloat(a,b,c) {(a).m = (b); (a).e = (c);} + +typedef struct { + pdfpos pdf; /* pos. on page (PDF page raster) */ + pdfpos pdf_bt_pos; /* pos. at begin of BT-ET group (PDF page raster) */ + pdfpos pdf_tj_pos; /* pos. at begin of TJ array (PDF page raster) */ + pdffloat cw; /* pos. within [(..)..]TJ array (glyph raster); + cw.e = fractional digits in /Widths array */ + pdffloat tj_delta; /* rel. movement in [(..)..]TJ array (glyph raster) */ + pdffloat fs; /* font size in PDF units */ + pdffloat hz; /* HZ expansion factor */ + pdffloat ext; /* ExtendFont factor */ + pdffloat cm[6]; /* cm array */ + pdffloat tm[6]; /* Tm array */ + double k1; /* conv. factor from TeX sp to PDF page raster */ + double k2; /* conv. factor from PDF page raster to TJ array raster */ + internal_font_number f_cur; /* TeX font number */ + internal_font_number f_pdf; /* /F* font number, of unexpanded base font! */ + writing_mode wmode; /* PDF writing mode WMode (horizontal/vertical) */ + pos_mode mode; /* current positioning mode */ +} pdfstructure; + +/**********************************************************************/ + +boolean calc_pdfpos(pdfstructure * p, scaledpos * pos); +void pdf_end_string_nl(); +void pdf_goto_pagemode(); +void pdf_page_init(); +void pdf_place_form(scaled h, scaled v, integer i); +void pdf_place_glyph(internal_font_number f, integer c); +void pdf_place_rule(scaled h, scaled v, scaled wd, scaled ht); +void pdf_print_charwidth(internal_font_number f, int i); +void pdf_print_cm(pdffloat * cm); +void pdf_set_pos(scaled h, scaled v); +void pos_finish(pdfstructure * p); +void print_pdffloat(pdffloat * f); + +/**********************************************************************/ +#endif |