/* PAUL MURRELL This is from the GNU plotutils libplot-2.3 distribution Lots has been taken out, to leave just the hershey font stuff Renamed g_extern.h from extern.h so that I can easily recognise it as part of the stuff I took from GNU plotutils to put into R */ /* This is the chief include file for GNU libplot/libplotter. It supplements the include files ../include/sys-defines.h, ../include/plot.h and ../include/plotter.h. plot.h is libplot-specific, but plotter.h is included both in libplot and libplotter. plotter.h defines what a Plotter object is (a struct for libplot, but a class for libplotter). */ /* This file contains many #defines and declarations of data structures. More importantly, it contains declarations of all the Plotter methods. They are declared differently, depending on whether we are compiling libplot (signalled if NOT_LIBPLOTTER is #defined) or libplotter. In libplot, the plotter operations are implemented as global functions that are members of the Plotter struct. They are set up differently for the different types of Plotter; for example, the `openpl' slot in the struct contains the method _g_openpl for generic [i.e. base] Plotters, the method _m_openpl for MetaPlotters, etc. The files ?_defplot.c contain the initializations that are used for the different types of Plotter. In this file, if NOT_LIBPLOTTER is defined then each of these many methods is declared as a global function. In libplotter, the different types of Plotter are implemented as distinct classes, which are derived from the generic [i.e. base] Plotter class. This file contains a great many #defines that are appropriate to that situation. For example, _m_openpl is #defined to be MetaPlotter::openpl if NOT_LIBPLOTTER is not defined. The MetaPlotter class, like all other Plotter classes, is defined in plotter.h. */ /* PAUL MURRELL Removed all include files stuff */ /* PAUL MURRELL Added the following (to allow R declarations and definitions) */ #include #include #include /* PAUL MURRELL This type def taken from sys-defines.h */ typedef int bool0; #define false_ 0 #define true_ 1 /*************************************************************************/ /* DEFINITIONS RELATED TO OUR FONT DATABASE (g_fontdb.c and g_fontd2.c) */ /*************************************************************************/ /* HERSHEY FONTS */ /* our information about each of the 22 Hershey vector fonts in g_fontdb.c, and the typefaces they belong to */ struct plHersheyFontInfoStruct { const char *name; /* font name */ const char *othername; /* an alias (for backward compatibility) */ const char *orig_name; /* Allen Hershey's original name for it */ short chars[256]; /* array of vector glyphs */ int typeface_index; /* default typeface for the font */ int font_index; /* which font within typeface this is */ bool0 obliquing; /* whether to apply obliquing */ bool0 iso8859_1; /* whether font encoding is iso8859-1 */ bool0 visible; /* whether font is visible, i.e. not internal*/ }; extern const struct plHersheyFontInfoStruct _hershey_font_info[]; /* This numbering should agree with the numbering of Hershey fonts in the _hershey_font_info[] array in g_fontdb.c. */ #define HERSHEY_SERIF 0 #define HERSHEY_SERIF_ITALIC 1 #define HERSHEY_SERIF_BOLD 2 #define HERSHEY_CYRILLIC 4 #define HERSHEY_HIRAGANA 6 /* hidden font */ #define HERSHEY_KATAKANA 7 /* hidden font */ #define HERSHEY_EUC 8 #define HERSHEY_GOTHIC_GERMAN 16 #define HERSHEY_SERIF_SYMBOL 18 /* accented character information (used in constructing Hershey ISO-Latin-1 accented characters, see table in g_fontdb.c) */ struct plHersheyAccentedCharInfoStruct { unsigned char composite, character, accent; }; extern const struct plHersheyAccentedCharInfoStruct _hershey_accented_char_info[]; /* types of accent, for a composite character in a Hershey font */ #define ACC0 (16384 + 0) /* superimpose on character */ #define ACC1 (16384 + 1) /* elevate by 7 Hershey units */ #define ACC2 (16384 + 2) /* same, also shift right by 2 units */ /* a flag in a Hershey glyph number indicating a `small Kana' */ #define KS 8192 /* i.e. 0x200 */ /* HERSHEY VECTOR GLYPHS */ /* arrays of Hershey vector glyphs in g_her_glyph.c */ extern const char * const _occidental_hershey_glyphs[]; extern const char * const _oriental_hershey_glyphs[]; /* position of `undefined character' symbol (a bundle of horizontal lines) in the Hershey _occidental_hershey_glyphs[] array */ #define UNDE 4023 /* TYPEFACES */ /* typeface information, applicable to all four sorts of font in our font database (Hershey, PS, PCL, Stick) */ #define FONTS_PER_TYPEFACE 10 /* maximum */ struct plTypefaceInfoStruct { int numfonts; int fonts[FONTS_PER_TYPEFACE]; }; extern const struct plTypefaceInfoStruct _hershey_typeface_info[]; /* PAUL MURRELL Modified this declaration */ extern unsigned short * _controlify (pGEDevDesc, const unsigned char *, int, int); /* PAUL MURRELL Removed heaps below here */