269 lines
13 KiB
C
269 lines
13 KiB
C
/***********************************************************************/
|
|
/* MAIN CONSTANTS */
|
|
/***********************************************************************/
|
|
|
|
#ifndef LK_CODE_INCLUDED
|
|
#define LK_CODE_INCLUDED
|
|
|
|
#include "ams_mg.h"
|
|
#include "xr_names.h"
|
|
|
|
/***********************************************************************/
|
|
/* GLOBAL VARIABLES */
|
|
/***********************************************************************/
|
|
|
|
#if PG_DEBUG
|
|
extern _SHORT mpr; /* printing mask */
|
|
extern char *code_name[], /* deciphering of codes` names */
|
|
*dist_name[]; /* position deciphering */
|
|
#endif
|
|
|
|
/***********************************************************************/
|
|
/* IMPORTANT CONSTANTS */
|
|
/***********************************************************************/
|
|
#define ICOS -79L /* % limit of cros. angle for stick */
|
|
#define OCOS -1L /* 65 for circle */
|
|
#define GCOS 70L /* angle of gammas` curve opening */
|
|
#ifdef FORMULA
|
|
#define DUGCOS 35L
|
|
#define O_LITTLE 50 /* % coeff. for defin. of small circles */
|
|
#else
|
|
#define DUGCOS 50L
|
|
#define O_LITTLE 50 /* % coeff. for defin. of small circles */
|
|
#endif /*FORMULA*/
|
|
#define Z_LITTLE 25 /* % coeff. for defin. of small breaks */
|
|
#define LEN_CROSS 75 /* % coeff. of min crossing`s length */
|
|
|
|
#define DHEIGHT_BIG_DARCS 6 /* Height difference of the ends of the */
|
|
/* vertical arc for it to be consi- */
|
|
/* dered as big one (usually bracket). */
|
|
#define DHEIGHT_SMALL_DARCS 3 /* Height difference of the ends of the */
|
|
/* vertical arc for it to be consi- */
|
|
/* dered as small one (usually arc at */
|
|
/* "p" */
|
|
|
|
/***********************************************************************/
|
|
/* CODES OF MAIN CONSTANTS */
|
|
/***********************************************************************/
|
|
#define _NO_CODE 0x00 /* no code */
|
|
#define _ZZ_ 0x01 /* break */
|
|
#define _UU_ 0x02 /* arc. up */
|
|
#define _IU_ 0x03 /* I up - max black */
|
|
#define _GU_ 0x04 /* gamma up */
|
|
#define _O_ 0x05 /* O element */
|
|
#define _GD_ 0x06 /* gamma down */
|
|
#define _ID_ 0x07 /* I-down - min black */
|
|
#define _UD_ 0x08 /* arc down */
|
|
#define _UUL_ 0x09 /*arc up with min to the left*/
|
|
#define _UUR_ 0x0a /*arc up with min to the right*/
|
|
#define _UDL_ 0x0b /*arc down with min to the left*/
|
|
#define _UDR_ 0x0c /*arc down with min to the right*/
|
|
#define _XT_ 0x0d /* stroke */
|
|
#define _ANl 0x0e /* direction changing */
|
|
#define _DF_ 0x0f /* shelf */
|
|
#define _ST_ 0x10 /* point */
|
|
#define _ANr 0x11 /* direction changing */
|
|
#define _ZZZ_ 0x12 /* break */
|
|
#define _Z_ 0x13 /* next elem - to the left */
|
|
#define _FF_ 0x14 /* large break */
|
|
#define _DUR_ 0x15 /* Double move upper with right end */
|
|
#define _CUR_ 0x16 /* Circle upper with right end */
|
|
#define _CUL_ 0x17 /* Circle upper with left end */
|
|
#define _DUL_ 0x18 /* Double move down with left end */
|
|
#define _DDR_ 0x19 /* Double move down with right end */
|
|
#define _CDR_ 0x1a /* Circle down with right end */
|
|
#define _CDL_ 0x1b /* Circle down with left end */
|
|
#define _DDL_ 0x1c /* Double move down with left end */
|
|
#define _GUs_ 0x1d /* Small gamma up */
|
|
#define _GDs_ 0x1e /* Small gamma down */
|
|
#define _Gl_ 0x1f /* Gamma left */
|
|
#define _Gr_ 0x20 /* Gamma right */
|
|
#define _UUC_ 0x21 /* circle arc up */
|
|
#define _UDC_ 0x22 /* circle arc down */
|
|
|
|
/*CHE*/
|
|
#define _TS_ 0x23 /* S-like arc */
|
|
#define _TZ_ 0x24 /* Z-like arc */
|
|
#define _BR_ 0x25 /* Right D-arc */
|
|
#define _BL_ 0x26 /* Left D-arc */
|
|
|
|
#if defined (FOR_GERMAN) || defined (FOR_FRENCH) || USE_BSS_ANYWAY
|
|
#define _BSS_ 0x27 /* Special SHELF */
|
|
#endif /* FOR_GERMAN */
|
|
|
|
#define _AN_UR 0x28 /* Angle-like upper-right corner. */
|
|
#define _AN_UL 0x29 /* Angle-like upper-left corner. */
|
|
|
|
#ifdef FORMULA
|
|
|
|
#error Recode these elems for FORMULA project!!!!
|
|
#define _ERU_ 0x14 /* End right-up */
|
|
#define _ELU_ 0x15 /* End left-up */
|
|
#define _ERD_ 0x16 /* End right-down */
|
|
#define _ELD_ 0x17 /* End left-down */
|
|
|
|
#define _SRU_ 0x18 /* Start from right-up */
|
|
#define _SLU_ 0x19 /* Start from left-up */
|
|
#define _SRD_ 0x20 /* Start from right-down */
|
|
#define _SLD_ 0x21 /* Start from left-down */
|
|
|
|
#endif /*FORMULA*/
|
|
|
|
/***********************************************************************/
|
|
/* POSITION OF ELEMENTS AND THEIR SIGNS */
|
|
/***********************************************************************/
|
|
|
|
#define _f_ ((_UCHAR)0x10) /* arc moves clockwise */
|
|
#define _b_ ((_UCHAR)0x20) /* arc moves counter clockwise */
|
|
|
|
|
|
#define _fUS1_ (_f_|_US1_) /* h clockwise */
|
|
#define _fUS2_ (_f_|_US2_)
|
|
#define _fUE1_ (_f_|_UE1_) /* e clockwise */
|
|
#define _fUE2_ (_f_|_UE2_)
|
|
#define _fUI1_ (_f_|_UI1_) /* i clockwise */
|
|
#define _fUI2_ (_f_|_UI2_)
|
|
#define _fMD_ (_f_|_MD_) /* g clockwise */
|
|
#define _fDI1_ (_f_|_DI1_)
|
|
#define _fDI2_ (_f_|_DI2_) /* h clockwise */
|
|
#define _fDE1_ (_f_|_DE1_)
|
|
#define _fDE2_ (_f_|_DE2_) /* t clockwise */
|
|
#define _fDS1_ (_f_|_DS1_)
|
|
#define _fDS2_ (_f_|_DS2_) /* */
|
|
|
|
#define _bUS1_ (_b_|_US1_) /* h counter clockwise */
|
|
#define _bUS2_ (_b_|_US2_)
|
|
#define _bUE1_ (_b_|_UE1_) /* e counter clockwise */
|
|
#define _bUE2_ (_b_|_UE2_)
|
|
#define _bUI1_ (_b_|_UI1_) /* i counter clockwise */
|
|
#define _bUI2_ (_b_|_UI2_)
|
|
#define _bMD_ (_b_|_MD_) /* g counter clockwise */
|
|
#define _bDI1_ (_b_|_DI1_)
|
|
#define _bDI2_ (_b_|_DI2_) /* h counter clockwise */
|
|
#define _bDE1_ (_b_|_DE1_)
|
|
#define _bDE2_ (_b_|_DE2_) /* t counter clockwise */
|
|
#define _bDS1_ (_b_|_DS1_)
|
|
#define _bDS2_ (_b_|_DS2_) /* counter clockwise */
|
|
|
|
#define _OVR_ ((_UCHAR)0x40) /* veto on wordcutting after element */
|
|
#define _fb_ ((_UCHAR)0x30) /* code for marking out round direction*/
|
|
/***********************************************************************/
|
|
/* Code for storing in byte specl->other */
|
|
/***********************************************************************/
|
|
|
|
/* directions of angles and information concerning use of them -
|
|
files ANGLE.C, LK_BEGIN.C, CROSS_G.C, LK_NEXT.C */
|
|
#define _ANGLE_UP_ 0x10 /* angle up */
|
|
#define _ANGLE_DOWN_ 0x20 /* angle down */
|
|
#define _ANGLE_LEFT_ 0x40 /* angle to the left */
|
|
#define _ANGLE_RIGHT_ 0x80 /* angle to the right */
|
|
|
|
#define _ANGLE_DIRECT_ 0xf0 /* code for marking angle direction */
|
|
|
|
#define NOT_RESTORED 0x01 /* for not restored angles */
|
|
#define WAS_DELETED_BY_CROSS 0x02 /* deleted by CROSS at first */
|
|
#define WAS_DELETED_BY_STICK 0x04 /* deleted by STICK at first */
|
|
#define INNER_ANGLE 0x08 /* angle inside crossing like B */
|
|
|
|
/* mark field other for elements inside and outside the circle -
|
|
module CROSS_G.C, LK_NEXT.C */
|
|
#define INSIDE_CIRCLE 0x40
|
|
#define OUTSIDE_CIRCLE 0x80
|
|
|
|
/* Mark SHELF as belongs to small 'h' - module PICT.C */
|
|
#if defined (FOR_GERMAN) || defined (FOR_FRENCH) || USE_BSS_ANYWAY
|
|
#define LETTER_H_STEP 0x01
|
|
#define ZERO_PENALTY 0x02
|
|
#define REGULAR_PENALTY 0x04
|
|
#define LARGE_PENALTY 0x08
|
|
#endif
|
|
|
|
/* mark field other for CROSS elements - module CIRCLE.C */
|
|
#define CIRCLE_FIRST 0x63
|
|
#define CIRCLE_NEXT 0x64
|
|
|
|
/* Mark O as converted from GU - module CROSS_G.C, LK_NEXT.C */
|
|
#define WAS_CONVERTED_FROM_GU 0x01
|
|
/* Mark O as too narrow - module CROSS_G.C, LK_NEXT.C */
|
|
#define TOO_NARROW 0x02
|
|
/* Mark Gsmall as converted from Gamma - module CROSS_G.C, LK_NEXT.C */
|
|
#define WAS_CONVERTED_FROM_GAMMA 0x04
|
|
/* mark field other for Gamma-elements,
|
|
which appears in the narrow places - module CROSS_G.C, LK_NEXT.C */
|
|
#define NO_ARC 0x08
|
|
|
|
/* Mark IU or ID, if they were STICK or CROSS - module CROSS_G.C, LK_NEXT.C */
|
|
#define WAS_STICK_OR_CROSS 0x01
|
|
/* Mark IU or ID, if they were in STICK, but it was too little
|
|
and was thrown away - module CROSS_G.C, LK_NEXT.C */
|
|
#define WAS_INSIDE_STICK 0x02
|
|
/* Mark IU, ID or any arc with tail as "non-deleted" - module LK_NEXT.C */
|
|
#define DONT_DELETE 0x04
|
|
/* Mark IU, ID as near artificial break - module LK_BEGIN.C, BREAKS.C */
|
|
#define MIN_MAX_CUTTED 0x08
|
|
/* Mark IU, ID as glued with another one - module LK_NEXT.C */
|
|
#define WAS_GLUED 0x10
|
|
/* Mark IU or ID, if there are in redirected stick - module BREAKS.C */
|
|
#define WAS_REDIRECTED 0x20
|
|
|
|
/* Mark STROKEs and DOTs as:
|
|
- processed or not-processed - module BREAKS.C
|
|
STROKE as:
|
|
- cutted - modules PICT.C,BREAKS.C,CONVERT.C
|
|
- with crossing - module BREAKS.C,CONVERT.C
|
|
- fake - module BREAKS.C
|
|
- reanimated - modules SKETCH.C,BREAKS.C,CONVERT.C (FOR_FRENCH)
|
|
DOT as:
|
|
- artificial made to convert it to UMLAUT - module BREAKS.C (FOR_GERMAN and FOR_FRENCH)
|
|
- apostrof - module el_aps.C
|
|
- clitics - modules BREAKS.C,CONVERT.C
|
|
- cedilla - modules SKETCH.C,BREAKS.C,CONVERT.C (FOR_FRENCH)
|
|
- cedilla in the end - modules SKETCH.C,BREAKS.C,CONVERT.C (FOR_FRENCH)
|
|
- artificial made to convert it to ANGSTREM - module BREAKS.C (FOR_SWED)
|
|
*/
|
|
#define NOT_PROCESSED 0x00
|
|
#define PROCESSED 0x01
|
|
|
|
#define CUTTED 0x02
|
|
#define WITH_CROSSING 0x04
|
|
#define FAKE 0x08
|
|
#if defined(FOR_FRENCH) || defined (FOR_INTERNATIONAL)
|
|
#define REANIMATED 0x10
|
|
#endif /* FOR_FRENCH */
|
|
#define RIGHT_KREST 0x20
|
|
|
|
#if defined (FOR_GERMAN) || defined (FOR_FRENCH) || defined (FOR_SWED) || defined (FOR_INTERNATIONAL)
|
|
#define ST_UMLAUT 0x02
|
|
#endif /* FOR_GERMAN... */
|
|
#define ST_APOSTR 0x04
|
|
#define ST_QUOTE 0x08
|
|
#if defined(FOR_FRENCH) || defined (FOR_INTERNATIONAL)
|
|
#define ST_CEDILLA 0x10
|
|
#define CEDILLA_END 0x20
|
|
#endif /* FOR_FRENCH */
|
|
|
|
#if defined (FOR_SWED) || defined (FOR_INTERNATIONAL)
|
|
#define ST_ANGSTREM 0x40
|
|
#endif /* FOR_SWED */
|
|
/* Mark Breaks as:
|
|
- FF_PUNCT to treat them as punctuation separators - module BREAKS.C
|
|
- NO_PENALTY to treat them as apostrof separators - modules EL_APS.C,BREAKS.C
|
|
- SPECIAL_ZZ to distinguish them from the original (with crossing) ZZ - module BREAKS.C, CONVERT.C
|
|
- FF_CUTTED (artificially made) - module LK_BEGIN.C, BREAKS.C, CONVERT.C
|
|
- Z_UP_DOWN (2-nd stroke higher 1-st) to distinguish them from the original (with crossing) Z - module BREAKS.C, CONVERT.C
|
|
*/
|
|
#define FF_PUNCT 0x01
|
|
#define NO_PENALTY 0x02
|
|
#define SPECIAL_ZZ 0x04
|
|
#define FF_CUTTED 0x08
|
|
#define Z_UP_DOWN 0x10
|
|
|
|
/***********************************************************************/
|
|
/* Function's prototypes */
|
|
/***********************************************************************/
|
|
|
|
_VOID Restore_AN(p_low_type low_data,p_SPECL pCross,
|
|
_UCHAR RestoreMask,_SHORT NumCr);
|
|
|
|
#endif /* LK_CODE_INCLUDED */
|