/usr/include/cgm/cgm_implem.h is in libxgks-dev 2.6.1+dfsg.2-4+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 | /*
* This file contains implementation-specific definitions and declarations
* for the Computer Graphics Metatafile (CGM) implementaion of an XGKS
* Metafile.
*
* $Id: cgm_implem.h,v 2.5.4.1 1993/03/10 19:44:25 steve Exp $
*/
#ifndef CGM_IMPLEM_H_SEEN
#define CGM_IMPLEM_H_SEEN
/*
* A CGM direct color:
*/
typedef struct cgm_direct_color {
int red; /* Less than 0 implies RGB value not set */
int green;
int blue;
} cgm_direct_color;
/*
* A CGM color (either direct or indexed, depending on color selection mode):
*/
typedef union cgm_color {
int index;
cgm_direct_color direct;
} cgm_color;
/*
* Output CGM modes:
*/
typedef enum cgmo_mode {
CGMO_UNSET = 0,
CGMO_IN_METAFILE, /* BEGIN PICTURE not yet seen */
CGMO_IN_PICTURE, /* BEGIN PICTURE seen */
CGMO_IN_BODY, /* BEGIN PICTURE BODY seen */
CGMO_NOT_EMPTY /* Graphic written to view surface */
} cgmo_mode;
#define IS_UNSET(cgmo) (cgmo->mode == CGMO_UNSET)
#define IS_IN_METAFILE(cgmo) (cgmo->mode == CGMO_IN_METAFILE)
#define IS_IN_PICTURE(cgmo) (cgmo->mode == CGMO_IN_PICTURE)
#define IS_IN_BODY(cgmo) (cgmo->mode == CGMO_IN_BODY || \
cgmo->mode == CGMO_NOT_EMPTY)
#define IS_NOT_EMPTY(cgmo) (cgmo->mode == CGMO_NOT_EMPTY)
/*
* Workstation information specific to output Computer Graphics Metafiles
* (CGMOs):
*/
typedef struct mf_cgmo {
MF_COMMON
struct ws_struct
*ws; /* Associated workstation structure */
cgmo_mode mode; /* Output CGM mode */
int picture_number; /* Origin-1 picture number */
unsigned long
setmask;
# define CGM_MASK_BACKCOLR (unsigned long)(1 << 0)
# define CGM_MASK_LINEINDEX (unsigned long)(1 << 1)
# define CGM_MASK_LINETYPE (unsigned long)(1 << 2)
# define CGM_MASK_LINEWIDTH (unsigned long)(1 << 3)
# define CGM_MASK_LINECOLR (unsigned long)(1 << 4)
# define CGM_MASK_MARKERINDEX (unsigned long)(1 << 5)
# define CGM_MASK_MARKERTYPE (unsigned long)(1 << 6)
# define CGM_MASK_MARKERSIZE (unsigned long)(1 << 7)
# define CGM_MASK_MARKERCOLR (unsigned long)(1 << 8)
# define CGM_MASK_TEXTINDEX (unsigned long)(1 << 9)
# define CGM_MASK_TEXTFONTINDEX (unsigned long)(1 << 10)
# define CGM_MASK_TEXTPREC (unsigned long)(1 << 11)
# define CGM_MASK_CHAREXPAN (unsigned long)(1 << 12)
# define CGM_MASK_CHARSPACE (unsigned long)(1 << 13)
# define CGM_MASK_TEXTCOLR (unsigned long)(1 << 14)
# define CGM_MASK_CHARHEIGHT (unsigned long)(1 << 15)
# define CGM_MASK_CHARORI (unsigned long)(1 << 16)
# define CGM_MASK_TEXTPATH (unsigned long)(1 << 17)
# define CGM_MASK_TEXTALIGN (unsigned long)(1 << 18)
# define CGM_MASK_FILLINDEX (unsigned long)(1 << 19)
# define CGM_MASK_INTSTYLE (unsigned long)(1 << 20)
# define CGM_MASK_FILLCOLR (unsigned long)(1 << 21)
# define CGM_MASK_HATCHINDEX (unsigned long)(1 << 22)
# define CGM_MASK_PATINDEX (unsigned long)(1 << 23)
# define CGM_MASK_PATSIZE (unsigned long)(1 << 24)
# define CGM_MASK_COLRTABLE (unsigned long)(1 << 25)
Gcobundl backcolr; /* Background color */
int lineindex; /* Line bundle index */
int linetype; /* Line type */
float linewidth; /* Line width */
cgm_color linecolr; /* Line color */
int markerindex; /* Marker bundle index */
int markertype; /* Marker type */
float markersize; /* Marker size */
cgm_color markercolr; /* Marker color */
int textindex; /* Text bundle index */
Gtxfp txfp; /* Text font index and precision */
float charexpan; /* Character expansion factor */
float charspace; /* Inter-character spacing */
cgm_color textcolr; /* Text color index */
float charheight; /* Character height */
float charori[4]; /* Character orientation */
Gtxpath textpath; /* Text path */
Gtxalign textalign; /* Text alignment */
int fillindex; /* Fill bundle index */
Gflinter intstyle; /* Interior fill style */
cgm_color fillcolr; /* Fill color */
int hatchindex; /* Hatch index */
int patindex; /* Pattern index */
} mf_cgmo;
/*
* Workstation information specific to input Computer Graphics Metafiles
* (CGMIs):
*/
typedef struct mf_cgmi {
MF_COMMON
long total_length; /* Total amount of data (excludes
* padding) */
long total_left; /* Total amount of data left (excludes
* padding) */
int partition_length; /* Amount of data in current partition
* (excludes padding) */
int partition_left; /* Amount left in current partition
* (excludes padding) */
long start_this_element; /* File-offset to current element */
long start_next_element; /* File-offset to next element */
int mode; /* CGMI mode */
# define NORMAL_MODE 0
# define READING_COLOR_TABLE 1
int class; /* Command class of current element */
int id; /* Element ID of current element */
int hash_id; /* Element class and id combination */
Glimit clip_rect; /* Clipping rectangle */
Gtxfp txfp; /* Text font and precision */
Gpoint char_up; /* Character up vector */
Gpoint char_base; /* Character base vector */
Gfloat char_height; /* Character height */
int color_index; /* Color table index */
} mf_cgmi;
/*
* CGM version:
*/
#define MFVERSION 1
#undef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define ABS(x) ((x) < 0 ? -(x) : (x))
#define SIGN(a,b) ((a) < 0 ? -ABS(b) : ABS(b))
/*
* Convert between a floating-point representation in the range from
* zero through one (or minus one through one) and an integral representation.
*/
#define NORM_TO_INT(mod, fval) SIGN(fval, ((long)(ABS(fval)*((mod)-1) + .5)))
#define UNORM_TO_INT(mod, fval) MIN((mod)-1, (unsigned long)((fval)*(mod)))
#define INT_TO_NORM(mod, ival) ((double)(ival)/((mod)-1))
#define UINT_TO_NORM(mod, ival) (.5/(mod) + (double)(ival)/(mod))
#define UNORM_TO_INT8(fval) UNORM_TO_INT(256, fval)
#define NORM_TO_INT16(fval) NORM_TO_INT((unsigned)(1<<15), fval)
#define UNORM_TO_INT16(fval) UNORM_TO_INT((unsigned long)(1<<16), fval)
#define UINT8_TO_NORM(ival) UINT_TO_NORM(256, ival)
#define UINT16_TO_NORM(ival) UINT_TO_NORM((unsigned long)(1<<16), ival)
/*
* Convert between host and network byte orders for 16-bit quantities.
*/
#define NTOH16(n) (((n)[0] << 8) | (n)[1])
#define HTON16(h, n) GKS_STMT((n)[0] = MS_8(h); (n)[1] = LS_8(h);)
/*
* Miscellaneous utility macros:
*/
#define ABS(x) ((x) < 0 ? -(x) : (x))
#define HYPOT(x,y) sqrt((double)((x)*(x) + (y)*(y)))
#define NUM_ELEMENTS(a) (sizeof(a) / sizeof(a[0]))
#define MSB_16 ((unsigned)1 << 15)
/* 16-bit most significant bit */
#define MASK_16 (unsigned)0177777
/* 16-bit mask */
#define LS_8(val) ((val) & 0377) /* least significant 8 bits */
#define MS_8(val) LS_8((val) >> 8)/* most significant 8 bits */
#define ROUNDUP(x, y) (((x + y - 1)/y)*y)
#define JUST_AFTER(ptr, type, align) \
(align *)((char*)ptr + \
ROUNDUP(sizeof(type), sizeof(align)))
/*
* Macros for converting between the host and two's-complement forms of a
* 16-bit integer:
*/
#define HTOTS(s_shrt) (MASK_16 & (unsigned short)(s_shrt))
#define TTOHS(u_shrt) ((unsigned)(u_shrt) & MSB_16 \
? (long)0-(unsigned short) \
(MASK_16 & (~(unsigned)(u_shrt) + 1)) \
: (long)(u_shrt))
/*
* Miscellaneous, CGM-specific macros:
*/
#define MAX_SHORT_CMD_LENGTH 30 /* Max bytes in a short command */
#define LONG_CMD_LENGTH 31 /* Long command "length"-value */
#define MAX_SHORT_STR_LENGTH 254 /* Max bytes in a short string */
#define LONG_STR_LENGTH 255 /* Long string "length"-value */
#define MORE_DATA_BIT (1 << 15)
#define BYTES_LEFT(mi) (mi->total_left)
#define HASH_ID(class, id) (((unsigned)(class) << 7) | (unsigned)(id))
#define PACKED_LIST 1 /* Cell representation mode. */
#define CGM_CONTINUOUS_HORIZONTAL_ALIGNMENT \
4
#define CGM_CONTINUOUS_VERTICAL_ALIGNMENT \
6
/*
* Defaults:
*/
#define DEFAULT_COLRPREC 8 /* Color precision */
#define DEFAULT_CELL_REP_MODE PACKED_LIST
#define DEFAULT_VDCINTEGERPREC 16 /* VDC integer precision */
#define DEFAULT_COLRMODE 0 /* Indexed */
/*
* Command class values:
*/
#define DELIMITER_CL 0
#define MF_DESCRIPTOR_CL 1
#define PIC_DESCRIPTOR_CL 2
#define CONTROL_CL 3
#define PRIMITIVE_CL 4
#define ATTRIBUTE_CL 5
#define ESCAPE_CL 6
#define EXTERN_CL 7
/*
* Element-ID values. Together with the command-class, these uniquely
* identify an individual command. The names are taken from the CLEAR
* TEXT encoding (with "_ID" appended).
*/
/* Delimiter Elements: */
#define BEGMF_ID 1
#define ENDMF_ID 2
#define BEGPIC_ID 3
#define BEGPICBODY_ID 4
#define ENDPIC_ID 5
/* Metafile Descriptor Elements: */
#define MFVERSION_ID 1
#define MFDESC_ID 2
#define MFELEMLIST_ID 11
/* Picture Descriptor Elements: */
#define COLRMODE_ID 2
#define VDCEXT_ID 6
#define BACKCOLR_ID 7
/* Control Elements: */
#define VDCINTEGERPREC_ID 1
#define CLIPRECT_ID 5
#define CLIP_ID 6
/* Graphical Primitive Elements: */
#define LINE_ID 1
#define MARKER_ID 3
#define TEXT_ID 4
#define POLYGON_ID 7
#define CELLARRAY_ID 9
/* Primitive Attribute Elements: */
#define LINEINDEX_ID 1
#define LINETYPE_ID 2
#define LINEWIDTH_ID 3
#define LINECOLR_ID 4
#define MARKERINDEX_ID 5
#define MARKERTYPE_ID 6
#define MARKERSIZE_ID 7
#define MARKERCOLR_ID 8
#define TEXTINDEX_ID 9
#define TEXTFONTINDEX_ID 10
#define TEXTPREC_ID 11
#define CHAREXPAN_ID 12
#define CHARSPACE_ID 13
#define TEXTCOLR_ID 14
#define CHARHEIGHT_ID 15
#define CHARORI_ID 16
#define TEXTPATH_ID 17
#define TEXTALIGN_ID 18
#define CHARSETINDEX_ID 19
#define ALTCHARSETINDEX_ID 20
#define FILLINDEX_ID 21
#define INTSTYLE_ID 22
#define FILLCOLR_ID 23
#define HATCHINDEX_ID 24
#define PATINDEX_ID 25
#define FILLREFPT_ID 31
#define PATTABLE_ID 32
#define PATSIZE_ID 33
#define COLRTABLE_ID 34
#define ASF_ID 35
/* Escape Elements: */
#define ESCAPE_ID 1
/* External Elements: */
#define MESSAGE_ID 1
/*
* CGM element decoding mode:
*/
typedef enum decode_mode {
RETURN_INFO,
DECODE_VALUES
} decode_mode;
/*
* I/O buffer:
*/
extern unsigned char cgm_buf[];
/*
* CGM implementation-functions implemented as macros:
*/
#define size_point(cgm) (2*size_vdc(cgm))
#define size_vdc(cgm) size_int16()
#define size_int16() (size_t)2
#define size_direct_color() (size_t)3
#define size_cell() (size_t)(DEFAULT_COLRPREC/8)
#endif /* CGM_IMPLEM_H_SEEN not defined above */
|