diff options
author | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
commit | ad547a6b5986815fda458221149728d9d9ab1d87 (patch) | |
tree | 16296910eb3eca724371474ea9aea3994dc69614 /Build/source/texk/dvipsk/ptexmac.h | |
parent | 947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff) |
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipsk/ptexmac.h')
-rw-r--r-- | Build/source/texk/dvipsk/ptexmac.h | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/Build/source/texk/dvipsk/ptexmac.h b/Build/source/texk/dvipsk/ptexmac.h new file mode 100644 index 00000000000..fc76a316231 --- /dev/null +++ b/Build/source/texk/dvipsk/ptexmac.h @@ -0,0 +1,189 @@ +/* +Copyright (c) 1996-2012 Han The Thanh, <thanh@pdftex.org> + +This file is part of pdfTeX. + +pdfTeX 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. + +pdfTeX 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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with pdfTeX; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +$Id: //depot/Build/source.development/TeX/texk/web2c/pdftexdir/ptexmac.h#18 $ +*/ + +#ifndef PDFTEXMAC +#define PDFTEXMAC + +#ifdef WIN32 +// Why relying on gmalloc() ??? +#define gmalloc(n) xmalloc(n) +#define gfree(p) free(p) +#define inline __inline +#define srandom(n) srand(n) +#define random() rand() +#endif + +/* Pascal WEB macros */ +#define maxinteger 0x7FFFFFFF +#define maxdimen 0x3FFFFFFF + +#define objinfo(n) objtab[n].int0 + +#define pdfroom(n) do { \ + if (pdfbufsize < n) \ + pdftex_fail("PDF output buffer overflowed"); \ + if (pdfptr + n > pdfbufsize) \ + pdfflush(); \ +} while (0) + +#define pdfout(c) do { \ + if (pdfptr > pdfbufsize) \ + pdfflush(); \ + pdfbuf[pdfptr++] = c; \ +} while (0) + +#define pdfoffset() (pdfgone + pdfptr) +#define pdfinitfont(f) {tmpf = f; pdfcreatefontobj();} + +#define MAX_CHAR_CODE 255 + +#define PRINTF_BUF_SIZE 1024 +#define MAX_CSTRING_LEN 1024 +#define MAX_PSTRING_LEN 1024 +#define SMALL_BUF_SIZE 256 +#define SMALL_ARRAY_SIZE 256 +#define FONTNAME_BUF_SIZE 128 /* a PDF name can be maximum 127 chars long */ + +#define check_buf(size, buf_size) \ + if ((size) > (buf_size)) \ + pdftex_fail("buffer overflow", (buf_size)) + +#define append_char_to_buf(c, p, buf, buf_size) do { \ + if (c == 9) \ + c = 32; \ + if (c == 13 || c == EOF) \ + c = 10; \ + if (c != ' ' || (p > buf && p[-1] != 32)) { \ + check_buf(p - buf + 1, (buf_size)); \ + *p++ = c; \ + } \ +} while (0) + +#define append_eol(p, buf, buf_size) do { \ + check_buf(p - buf + 2, (buf_size)); \ + if (p - buf > 1 && p[-1] != 10) \ + *p++ = 10; \ + if (p - buf > 2 && p[-2] == 32) { \ + p[-2] = 10; \ + p--; \ + } \ + *p = 0; \ +} while (0) + +#define remove_eol(p, buf) do { \ + p = strend(buf) - 1; \ + if (*p == 10) \ + *p = 0; \ +} while (0) + +#define skip(p, c) if (*p == c) p++ + +#define alloc_array(T, n, s) do { \ + if (T##_array == NULL) { \ + T##_limit = (s); \ + if ((n) > T##_limit) \ + T##_limit = (n); \ + T##_array = xtalloc(T##_limit, T##_entry); \ + T##_ptr = T##_array; \ + } \ + else if (T##_ptr - T##_array + (n) > T##_limit) { \ + last_ptr_index = T##_ptr - T##_array; \ + T##_limit *= 2; \ + if (T##_ptr - T##_array + (n) > T##_limit) \ + T##_limit = T##_ptr - T##_array + (n); \ + xretalloc(T##_array, T##_limit, T##_entry); \ + T##_ptr = T##_array + last_ptr_index; \ + } \ +} while (0) + +#define is_cfg_comment(c) \ + (c == 10 || c == '*' || c == '#' || c == ';' || c == '%') + +#define define_array(T) \ +T##_entry *T##_ptr, *T##_array = NULL; \ +size_t T##_limit + +#define xfree(p) do { if (p != NULL) free(p); p = NULL; } while (0) +#define strend(s) strchr(s, 0) +#define xtalloc XTALLOC +#define xretalloc XRETALLOC + +#define ASCENT_CODE 0 +#define CAPHEIGHT_CODE 1 +#define DESCENT_CODE 2 +#define FONTNAME_CODE 3 +#define ITALIC_ANGLE_CODE 4 +#define STEMV_CODE 5 +#define XHEIGHT_CODE 6 +#define FONTBBOX1_CODE 7 +#define FONTBBOX2_CODE 8 +#define FONTBBOX3_CODE 9 +#define FONTBBOX4_CODE 10 +#define MAX_KEY_CODE (FONTBBOX1_CODE + 1) +#define FONT_KEYS_NUM (FONTBBOX4_CODE + 1) + +#define F_INCLUDED 0x01 +#define F_SUBSETTED 0x02 +#define F_TRUETYPE 0x04 +#define F_BASEFONT 0x08 + +#define set_included(fm) ((fm)->type |= F_INCLUDED) +#define set_subsetted(fm) ((fm)->type |= F_SUBSETTED) +#define set_truetype(fm) ((fm)->type |= F_TRUETYPE) +#define set_basefont(fm) ((fm)->type |= F_BASEFONT) + +#define unset_included(fm) ((fm)->type &= ~F_INCLUDED) +#define unset_subsetted(fm) ((fm)->type &= ~F_SUBSETTED) +#define unset_truetype(fm) ((fm)->type &= ~F_TRUETYPE) +#define unset_basefont(fm) ((fm)->type &= ~F_BASEFONT) + +#define unset_fontfile(fm) xfree((fm)->ff_name) + +#define is_included(fm) ((fm)->type & F_INCLUDED) +#define is_subsetted(fm) ((fm)->type & F_SUBSETTED) +#define is_truetype(fm) ((fm)->type & F_TRUETYPE) +#define is_basefont(fm) ((fm)->type & F_BASEFONT) +#define no_font_desc(fm) (is_basefont(fm) && !is_included(fm)) + +#define fm_slant(fm) (fm)->slant +#define fm_extend(fm) (fm)->extend +#define fm_fontfile(fm) (fm)->ff_name + +#define is_reencoded(fm) ((fm)->encoding != NULL) +#define is_fontfile(fm) (fm_fontfile(fm) != NULL) +#define is_t1fontfile(fm) (is_fontfile(fm) && !is_truetype(fm)) + +#define LINK_TFM 0x01 +#define LINK_PS 0x02 +#define set_tfmlink(fm) ((fm)->links |= LINK_TFM) +#define set_pslink(fm) ((fm)->links |= LINK_PS) +#define unset_tfmlink(fm) ((fm)->links &= ~LINK_TFM) +#define unset_pslink(fm) ((fm)->links &= ~LINK_PS) +#define has_tfmlink(fm) ((fm)->links & LINK_TFM) +#define has_pslink(fm) ((fm)->links & LINK_PS) + + +#define set_cur_file_name(s) \ + cur_file_name = s; \ + packfilename(maketexstring(cur_file_name), getnullstr(), getnullstr()) + +#endif /* PDFTEXMAC */ |