/* * Copyright 2001 Computing Research Labs, New Mexico State University * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef _h_bdfP #define _h_bdfP /* * $Id$ */ #include "bdf.h" #ifdef __cplusplus extern "C" { #endif /* * A macro for prototypes. */ #undef __ #ifdef __STDC__ #define __(x) x #else #define __(x) () #endif #ifndef MYABS #define MYABS(xx) ((xx) < 0 ? -(xx) : (xx)) #endif /* * Macros and structures used for undo operations in the font. */ #define _UNDO_REPLACE_GLYPHS 1 #define _UNDO_INSERT_GLYPHS 2 #define _UNDO_MERGE_GLYPHS 3 /* * This structure is for undo operations of replacing and merging glyphs * in the font. */ typedef struct { bdf_bbx_t b; bdf_glyphlist_t g; } _bdf_undo1_t; /* * This structure is for undo operations of inserting glyphs. */ typedef struct { bdf_bbx_t b; long start; long end; } _bdf_undo2_t; /* * This is the final undo structure used to store undo information with the * font. */ typedef struct _bdf_undo_struct { int type; union { _bdf_undo1_t one; _bdf_undo2_t two; } field; } bdf_undo_struct_t; /* * Tables for rotation and shearing. */ extern double _bdf_cos_tbl[]; extern double _bdf_sin_tbl[]; extern double _bdf_tan_tbl[]; /* * Arrays of masks for test with different bits per pixel. */ extern unsigned char onebpp[]; extern unsigned char twobpp[]; extern unsigned char fourbpp[]; /* * Simple routine for determining the ceiling. */ extern short _bdf_ceiling __((double v)); extern unsigned char *_bdf_strdup __((unsigned char *s, unsigned long len)); extern void _bdf_memmove __((char *dest, char *src, unsigned long bytes)); extern short _bdf_atos __((char *s, char **end, int base)); extern long _bdf_atol __((char *s, char **end, int base)); extern unsigned long _bdf_atoul __((char *s, char **end, int base)); /* * Macros to test/set the modified status of a glyph. */ #define _bdf_glyph_modified(map, e) ((map)[(e) >> 5] & (1 << ((e) & 31))) #define _bdf_set_glyph_modified(map, e) (map)[(e) >> 5] |= (1 << ((e) & 31)) #define _bdf_clear_glyph_modified(map, e) (map)[(e) >> 5] &= ~(1 << ((e) & 31)) /* * Function to add a message to the font. */ extern void _bdf_add_acmsg __((bdf_font_t *font, char *msg, unsigned long len)); /* * Function to add a comment to the font. */ extern void _bdf_add_comment __((bdf_font_t *font, char *comment, unsigned long len)); /* * Function to do glyph name table cleanup when exiting. */ extern void _bdf_glyph_name_cleanup __((void)); #undef __ #ifdef __cplusplus } #endif #endif /* _h_bdfP */