blob: 46f3c621a170dbcbf6ed9e470053295e586e26f3 [file] [log] [blame]
/* 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 <config.h>
#include <Defn.h>
#include <R_ext/GraphicsEngine.h>
/* PAUL MURRELL
This type def taken from sys-defines.h
*/
typedef int bool;
#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 */
bool obliquing; /* whether to apply obliquing */
bool iso8859_1; /* whether font encoding is iso8859-1 */
bool 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
*/