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/dvipdfm-x/cmap_p.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/dvipdfm-x/cmap_p.h')
-rw-r--r-- | Build/source/texk/dvipdfm-x/cmap_p.h | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Build/source/texk/dvipdfm-x/cmap_p.h b/Build/source/texk/dvipdfm-x/cmap_p.h new file mode 100644 index 00000000000..6bd082ebf90 --- /dev/null +++ b/Build/source/texk/dvipdfm-x/cmap_p.h @@ -0,0 +1,101 @@ +/* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks. + + Copyright (C) 2002-2020 by Jin-Hwan Cho and Shunsaku Hirata, + the dvipdfmx project team. + + This program 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. + + This program 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 this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. +*/ + +#ifndef _CMAP_P_H_ +#define _CMAP_P_H_ + +#include "cid.h" + +/* Mapping types, MAP_IS_NAME is not supported. */ +#define MAP_IS_CID (1 << 0) +#define MAP_IS_NAME (1 << 1) +#define MAP_IS_CODE (1 << 2) +#define MAP_IS_NOTDEF (1 << 3) + +#define MAP_IS_UNDEF 0 +#define MAP_TYPE_MASK 0x00f + +#define MAP_DEFINED(e) (((e) & MAP_TYPE_MASK) != MAP_IS_UNDEF ? 1 : 0) +#define MAP_TYPE(e) ((e) & MAP_TYPE_MASK) + +/* Lookup flags */ +#define MAP_LOOKUP_END 0 +#define MAP_LOOKUP_CONTINUE (1 << 4) +#define LOOKUP_CONTINUE(f) ((f) & MAP_LOOKUP_CONTINUE) +#define LOOKUP_END(f) (!LOOKUP_CONTINUE((f))) + +/* DEBUG */ +#define CMAP_DEBUG_STR "CMap" +#define CMAP_DEBUG 3 + +/* Codespacerange */ +typedef struct rangeDef { + int dim; /* Dimension of this codespacerange */ + unsigned char *codeLo; /* Lower bounds of valid input code */ + unsigned char *codeHi; /* Upper bounds of valid input code */ +} rangeDef; + +typedef struct mapDef { + int flag; + int len; /* 2 for CID, variable for Code.. */ + unsigned char *code; /* CID (as 16-bit BE), Code ... */ + struct mapDef *next; /* Next Subtbl for LOOKUP_CONTINUE */ +} mapDef; + +#define MEM_ALLOC_SIZE 4096 +typedef struct mapData { + unsigned char *data; /* CID, Code... MEM_ALLOC_SIZE bytes */ + struct mapData *prev; /* Previous mapData data segment */ + int pos; /* Position of next free data segment */ +} mapData; + +struct CMap { + char *name; + int type; /* CMapType: 1 for usual CMaps, + * 2 for ToUnicode CMaps, + * 0 for IDENTITY is also defined for convenience. + */ + int wmode; /* WMode: 0 for Horizontal, 1 for Vertical. */ + CIDSysInfo *CSI; /* CIDSystemInfo */ + + struct CMap *useCMap; + + struct { + int num; + int max; + rangeDef *ranges; + } codespace; + + mapDef *mapTbl; /* First 256 segment of mapping table */ + mapData *mapData; /* Storage for actual CMap data */ + + /* Additional data used by cmap.c, etc. */ + + int flags; /* Decoder flags Not used yet. */ + + struct { + int minBytesIn; + int maxBytesIn; + int minBytesOut; + int maxBytesOut; + } profile; +}; + +#endif /* _CMAP_P_H_ */ |