home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
os2
/
hpgl312.zip
/
CHARDRAW.H
< prev
next >
Wrap
C/C++ Source or Header
|
1993-04-18
|
5KB
|
145 lines
/*
Copyright (c) 1991 - 1993 Heinz W. Werntges. All rights reserved.
Distributed by Free Software Foundation, Inc.
This file is part of HP2xx.
HP2xx is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY. No author or distributor accepts responsibility
to anyone for the consequences of using it or for whether it serves any
particular purpose or works at all, unless he says so in writing. Refer
to the GNU General Public License, Version 2 or later, for full details.
Everyone is granted permission to copy, modify and redistribute
HP2xx, but only under the conditions described in the GNU General Public
License. A copy of this license is supposed to have been
given to you along with HP2xx so you can know your rights and
responsibilities. It should be in a file named COPYING. Among other
things, the copyright notice and this notice must be preserved on all
copies.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
/** 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
**
** 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; /* Font number: Currently, only 0 */
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