Source file: /~heha/hs/dos/hp2xx_hs.zip/chardraw.h

/* Copyright (c) 1991 - 1994 Heinz W. Werntges.  All rights reserved. */

/** chardraw.h
 **
 ** 92/02/19  V 1.01  HWW  Derived from sprite.h (V 2.01)
 ** 92/05/28  V 1.02  HWW  plot_symbol_char() added
 ** 99/02/01  V 1.03  MK   charsets 5 and 7 added
 **
 ** Structure definition as used by pplib for character drawing
 **/


#define JOFF    4

#define	_BS	'\010'		/* Backspace		*/
#define	_HT	'\011'		/* Horizontal Tab	*/
#define	_LF	'\012'		/* Line Feed		*/
#define	_VT	'\013'		/* Vertical Tab		*/
#define	_CR	'\015'		/* Carriage Return	*/
#define	_SO	'\016'		/* Shift Out		*/
#define	_SI	'\017'		/* Shift In		*/

/**
 ** Description of struct TextPar (used for internal font drawing):
 **
 ** A character size is defined by its WIDTH and HEIGHT.
 ** The distance from char. to char. is given by SPACE, from
 ** text line to text line by LINE.
 ** WIDTH, SPACE are fractions of the P1,P2 window width,
 ** SPACE, LINE  are fractions of the P1,P2 window height.
 ** The writing direction is DIR, which is the angle [0,2*M_PI]
 ** between text line & x direction.
 ** Set SLANT to an angle != 0 if characters are to appear e.g. italics-like.
 ** Stroked fonts selectable by setting FONT to > 0
 **      (not yet supported).
 **
 ** NOTE: struct TextPar was inherited from former project "plib" (a plot
 **       library which also featured character drawing). It was not
 **       designed from scratch for the purpose of HP-GL font management.
 **       However, for charset 0 it does a fair job here, mainly because
 **       plib itself had been inspired by HP-GL.
 **/

typedef struct
{
  float width;	/* Width of a char (x dirc.)		*/
  float height;	/* Height of a char (y dirc.)		*/
  float space;	/* Distance between characters		*/
  float line;	/* Distance betw. char. lines		*/
  float espace;	/* Extra char space rel. to 'space'	*/
  float eline;	/* Extra line space rel. to 'line'	*/
  float dir;	/* Direction to x axis (rad)		*/
  float slant;	/* Character slant (tan angle)		*/
  int  font;	/* Active Font number                   */
  int  stdfont; /* Designated tandard font number       */
  int  altfont; /* Designated alternate font number     */
  int  orig;	/* Label origin code			*/


/**
 ** Internally needed for character resizing and positioning
 **
 ** T = matrix, mapping (relative) sprite coordinates into norm coord.,
 ** chardiff & linediff are used to advance the graphical text cursor,
 ** pref is a pointer to the current text reference point (origin):
 **/

  double	Txx,Txy,Tyx,Tyy;	/* Transformation matrix	*/
  HPGL_Pt	chardiff,	/* Horiz. distance between characters	*/
		linediff,	/* Vertical distance between characters	*/
		refpoint,	/* Current reference point	*/
		CR_point,	/* Returns point after a <CR>	*/
		offset;	/* Needed for HP-GL command ``LO;''	*/
}
  TEXTPAR, *TextPar;




typedef	enum {LB_direct, LB_buffered, LB_buffered_in_use}
	LB_Mode;		/* LB and PB work differently !	*/


/**
 ** Remnant of former BGI font support by project plib,
 ** currently inactive. Leave it here in case of a future revival
 **/

#ifdef STROKED_FONTS
typedef struct {
  unsigned int    buff[16000];	/* Buffer for font data		*/
  unsigned int    vector_off;	/* Offset of start of plot data	*/
  unsigned int    size_off;	/* Offset of size tab		*/
  unsigned int    first;	/* ASCII code of first character*/
  unsigned int    num;		/* Number of defined  character	*/
  unsigned int    height;
  unsigned int    depth;
  char           *name;
}
  FONT, *Font;
#endif


/**
 ** Prototypes:
 **/

#ifdef	__cplusplus
extern	"C" {
#endif

/* void	code_to_ucoord	(char, HPGL_Pt *); */

int	init_font	(int);
void	init_text_par	(void);
void	adjust_text_par	(void);
/* void	ASCII_to_char	(int);*/
void	plot_string	(char *, LB_Mode);
void	plot_symbol_char(char);

#ifdef	__cplusplus
}
#endif



Detected encoding: ASCII (7 bit)2