diff --git a/harbour/ChangeLog b/harbour/ChangeLog index e4889656c4..f81747c4c8 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,42 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-12-17 21:21 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/include/hbapigt.h + * harbour/include/hbgtcore.h + * harbour/source/rtl/gtapi.c + * harbour/source/rtl/hbgtcore.c + * harbour/source/rtl/gt_tpl/gt_tpl.c + * harbour/source/rtl/gtdos/gtdos.c + * harbour/source/rtl/gtwin/gtwin.c + * harbour/source/rtl/gtxwc/gtxwc.c + * harbour/source/rtl/gtos2/gtos2.c + * harbour/source/rtl/gtcrs/gtcrs.c + * harbour/source/rtl/gtsln/gtsln.c + * harbour/source/rtl/gttrm/gttrm.c + * harbour/source/rtl/gtpca/gtpca.c + * harbour/source/rtl/gtgui/gtgui.c + * harbour/source/rtl/gtwvt/gtwvt.c + * harbour/source/rtl/gtcgi/gtcgi.c + * harbour/source/rtl/gtstd/gtstd.c + * harbour/contrib/hbct/ctwin.c + * harbour/contrib/hbgtwvg/gtwvg.c + * harbour/source/rtl/gtalleg/gtalleg.c + * harbour/source/rtl/gtalleg/ssf.h + * harbour/source/rtl/gtalleg/fixedth.sfc + * added missing const to few declarations + * formatting and minor code cleanup + + * harbour/source/rtl/hbgtcore.c + ! fixed GTNUL registration + + * harbour/source/rtl/gtcgi/gtcgi.c + * harbour/source/rtl/gtstd/gtstd.c + * moved static variables to dynamic GT area + + * harbour/contrib/hbct/files.c + ! fixed DOS version + 2007-12-17 13:41 UTC+0100 Miguel Angel Marchuet Frutos * common.mak + Added some missing files (suggested by Juan Gálvez) diff --git a/harbour/contrib/hbct/ctwin.c b/harbour/contrib/hbct/ctwin.c index f875fdd627..3f9c3abd56 100644 --- a/harbour/contrib/hbct/ctwin.c +++ b/harbour/contrib/hbct/ctwin.c @@ -1858,12 +1858,12 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; -HB_GT_ANNOUNCE( HB_GT_NAME ); +HB_GT_ANNOUNCE( HB_GT_NAME ) HB_CALL_ON_STARTUP_BEGIN( _hb_startup_gt_Init_ ) hb_gtRegister( >Init ); diff --git a/harbour/contrib/hbct/files.c b/harbour/contrib/hbct/files.c index 60fe81bf53..5fc476fafb 100644 --- a/harbour/contrib/hbct/files.c +++ b/harbour/contrib/hbct/files.c @@ -198,7 +198,7 @@ HB_FUNC( SETFATTR ) #if defined( __DJGPP__ ) || defined( __BORLANDC__ ) iReturn = _chmod( szFile, 1, iFlags ); #else - iReturn = _dos_setfileattr( pszDirName, iFlags ); + iReturn = _dos_setfileattr( szFile, iFlags ); #endif } hb_retni( iReturn ); diff --git a/harbour/contrib/hbgtwvg/gtwvg.c b/harbour/contrib/hbgtwvg/gtwvg.c index 5e5b0cb8dc..502899067b 100644 --- a/harbour/contrib/hbgtwvg/gtwvg.c +++ b/harbour/contrib/hbgtwvg/gtwvg.c @@ -2768,10 +2768,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/include/hbapigt.h b/harbour/include/hbapigt.h index 0ca79593ca..ef1d6b48a7 100644 --- a/harbour/include/hbapigt.h +++ b/harbour/include/hbapigt.h @@ -222,10 +222,24 @@ extern HB_EXPORT BOOL hb_mouseButtonPressed( int iButton, int * piRow, int * extern HB_EXPORT BOOL hb_mouseButtonReleased( int iButton, int * piRow, int * piCol ); extern HB_EXPORT int hb_mouseReadKey( int iEventMask ); +typedef struct +{ + int iTop; + int iLeft; + int iBottom; + int iRight; +} HB_GT_RECT; +typedef HB_GT_RECT * PHB_GT_RECT; + +typedef struct +{ + int iRow; + int iCol; +} HB_GT_CORD; +typedef HB_GT_CORD * PHB_GT_CORD; /* Undocumented CA-Clipper 5.x GT API calls */ -#define HB_GT_RECT void #define HB_GT_WND void #define HB_GT_RGB void #define HB_GT_SLR void diff --git a/harbour/include/hbgtcore.h b/harbour/include/hbgtcore.h index 3ef00c4d54..6849647108 100644 --- a/harbour/include/hbgtcore.h +++ b/harbour/include/hbgtcore.h @@ -286,23 +286,6 @@ typedef union } HB_SCREENCELL; typedef HB_SCREENCELL * PHB_SCREENCELL; -/* -typedef struct -{ - int iTop; - int iLeft; - int iBottom; - int iRight; -} HB_GT_RECT; -typedef HB_GT_RECT * PHB_GT_RECT; - -typedef struct -{ - int iRow; - int iCol; -} HB_GT_CORD; -typedef HB_GT_CORD * PHB_GT_CORD; -*/ typedef struct _HB_GT_BASE { @@ -599,7 +582,7 @@ extern PHB_GT hb_gt_Base( void ); #define HB_GTSUPER_WHOCARES(g,p) (HB_GTSUPER)->WhoCares(g,p) extern HB_EXPORT void hb_gtSetDefault( const char * szGtName ); -extern HB_EXPORT BOOL hb_gtRegister( PHB_GT_INIT gtInit ); +extern HB_EXPORT BOOL hb_gtRegister( const HB_GT_INIT * gtInit ); extern HB_EXPORT BOOL hb_gtLoad( const char * szGtName, PHB_GT_FUNCS pFuncTable ); extern HB_EXPORT BOOL hb_gtUnLoad( void ); extern HB_EXPORT void hb_gtStartupInit( void ); diff --git a/harbour/source/rtl/gt_tpl/gt_tpl.c b/harbour/source/rtl/gt_tpl/gt_tpl.c index e5f8b26a57..4f122b60de 100644 --- a/harbour/source/rtl/gt_tpl/gt_tpl.c +++ b/harbour/source/rtl/gt_tpl/gt_tpl.c @@ -166,10 +166,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtalleg/fixedth.sfc b/harbour/source/rtl/gtalleg/fixedth.sfc index a25bdad028..3927be788e 100644 --- a/harbour/source/rtl/gtalleg/fixedth.sfc +++ b/harbour/source/rtl/gtalleg/fixedth.sfc @@ -15,1352 +15,1352 @@ * */ -static ssfGlyph g000 = { - 0, - {{SSF_NONE, 0, 0, 0, 0, 0, 0}} +static const ssfGlyph g000 = { + 0, + {{SSF_NONE, 0, 0, 0, 0, 0, 0}} }; -static ssfGlyph g016 = { - 1, - {{SSF_TRIANGLE, 0, 12288, 24575, 28671, 0, 45055}} +static const ssfGlyph g016 = { + 1, + {{SSF_TRIANGLE, 0, 12288, 24575, 28671, 0, 45055}} }; -static ssfGlyph g017 = { - 1, - {{SSF_TRIANGLE, 24575, 12288, 0, 28671, 24575, 45055}} +static const ssfGlyph g017 = { + 1, + {{SSF_TRIANGLE, 24575, 12288, 0, 28671, 24575, 45055}} }; -static ssfGlyph g030 = { - 1, - {{SSF_TRIANGLE, 0, 45055, 12287, 12288, 24575, 45055}} +static const ssfGlyph g030 = { + 1, + {{SSF_TRIANGLE, 0, 45055, 12287, 12288, 24575, 45055}} }; -static ssfGlyph g031 = { - 1, - {{SSF_TRIANGLE, 0, 12288, 12287, 45055, 24575, 12288}} +static const ssfGlyph g031 = { + 1, + {{SSF_TRIANGLE, 0, 12288, 12287, 45055, 24575, 12288}} }; -static ssfGlyph g032 = { - 1, - {{SSF_NONE, 0, 0, 32767, 65535, 0, 0}} +static const ssfGlyph g032 = { + 1, + {{SSF_NONE, 0, 0, 32767, 65535, 0, 0}} }; -static ssfGlyph g033 = { - 4, - {{SSF_BOX, 8192, 12288, 12287, 28671, 0, 0}, - {SSF_BOX, 12288, 8192, 16383, 36863, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 28671, 0, 0}, - {SSF_BOX, 12288, 45056, 16383, 49151, 0, 0}} +static const ssfGlyph g033 = { + 4, + {{SSF_BOX, 8192, 12288, 12287, 28671, 0, 0}, + {SSF_BOX, 12288, 8192, 16383, 36863, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 28671, 0, 0}, + {SSF_BOX, 12288, 45056, 16383, 49151, 0, 0}} }; -static ssfGlyph g034 = { - 4, - {{SSF_BOX, 0, 4096, 8191, 12287, 0, 0}, - {SSF_BOX, 4096, 12288, 8191, 16383, 0, 0}, - {SSF_BOX, 16384, 4096, 24575, 12287, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}} +static const ssfGlyph g034 = { + 4, + {{SSF_BOX, 0, 4096, 8191, 12287, 0, 0}, + {SSF_BOX, 4096, 12288, 8191, 16383, 0, 0}, + {SSF_BOX, 16384, 4096, 24575, 12287, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}} }; -static ssfGlyph g035 = { - 4, - {{SSF_BOX, 0, 20480, 24575, 24575, 0, 0}, - {SSF_BOX, 0, 32768, 24575, 36863, 0, 0}, - {SSF_BOX, 4096, 8192, 8191, 49151, 0, 0}, - {SSF_BOX, 16384, 8192, 20479, 49151, 0, 0}} +static const ssfGlyph g035 = { + 4, + {{SSF_BOX, 0, 20480, 24575, 24575, 0, 0}, + {SSF_BOX, 0, 32768, 24575, 36863, 0, 0}, + {SSF_BOX, 4096, 8192, 8191, 49151, 0, 0}, + {SSF_BOX, 16384, 8192, 20479, 49151, 0, 0}} }; -static ssfGlyph g036 = { - 8, - {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 0, 40960, 4096, 45055, 0, 0}, - {SSF_BOX, 12288, 4096, 16383, 53247, 0, 0}} +static const ssfGlyph g036 = { + 8, + {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 0, 40960, 4096, 45055, 0, 0}, + {SSF_BOX, 12288, 4096, 16383, 53247, 0, 0}} }; -static ssfGlyph g037 = { - 9, - {{SSF_BOX, 0, 12288, 4095, 20479, 0, 0}, - {SSF_BOX, 4096, 8192, 12287, 12287, 0, 0}, - {SSF_BOX, 12288, 12288, 16384, 20479, 0, 0}, - {SSF_BOX, 4096, 20480, 12287, 24575, 0, 0}, - {SSF_LINE, 0, 49151, 20479, 8192, 7168, THICK_RIGHT}, - {SSF_BOX, 12288, 36864, 16383, 45055, 0, 0}, - {SSF_BOX, 16384, 32768, 24575, 36863, 0, 0}, - {SSF_BOX, 24576, 36864, 28671, 45055, 0, 0}, - {SSF_BOX, 16384, 45056, 24575, 49151, 0, 0}} +static const ssfGlyph g037 = { + 9, + {{SSF_BOX, 0, 12288, 4095, 20479, 0, 0}, + {SSF_BOX, 4096, 8192, 12287, 12287, 0, 0}, + {SSF_BOX, 12288, 12288, 16384, 20479, 0, 0}, + {SSF_BOX, 4096, 20480, 12287, 24575, 0, 0}, + {SSF_LINE, 0, 49151, 20479, 8192, 7168, THICK_RIGHT}, + {SSF_BOX, 12288, 36864, 16383, 45055, 0, 0}, + {SSF_BOX, 16384, 32768, 24575, 36863, 0, 0}, + {SSF_BOX, 24576, 36864, 28671, 45055, 0, 0}, + {SSF_BOX, 16384, 45056, 24575, 49151, 0, 0}} }; -static ssfGlyph g038 = { - 8, - {{SSF_BOX, 4096, 8192, 12287, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 20479, 0, 0}, - {SSF_BOX, 12288, 12288, 16383, 20479, 0, 0}, - {SSF_LINE, 0, 16384, 24575, 40959, 7168, THICK_DOWN}, - {SSF_LINE, 16383, 16384, 0, 32767, 7168, THICK_DOWN}, - {SSF_BOX, 0, 32768, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 12287, 49151, 0, 0}, - {SSF_LINE, 12288, 49151, 24575, 32768, 7168, THICK_UP}} +static const ssfGlyph g038 = { + 8, + {{SSF_BOX, 4096, 8192, 12287, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 20479, 0, 0}, + {SSF_BOX, 12288, 12288, 16383, 20479, 0, 0}, + {SSF_LINE, 0, 16384, 24575, 40959, 7168, THICK_DOWN}, + {SSF_LINE, 16383, 16384, 0, 32767, 7168, THICK_DOWN}, + {SSF_BOX, 0, 32768, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 12287, 49151, 0, 0}, + {SSF_LINE, 12288, 49151, 24575, 32768, 7168, THICK_UP}} }; -static ssfGlyph g039 = { - 1, - {{SSF_LINE, 16383, 4096, 8192, 16383, 7168, THICK_RIGHT}} +static const ssfGlyph g039 = { + 1, + {{SSF_LINE, 16383, 4096, 8192, 16383, 7168, THICK_RIGHT}} }; -static ssfGlyph g040 = { - 2, - {{SSF_SPLINE1, 16384, 4096, 0, 24575, 0, THICK_LEFT}, - {SSF_SPLINE2, 0, 32768, 16384, 53247, 7168, THICK_RIGHT}} +static const ssfGlyph g040 = { + 2, + {{SSF_SPLINE1, 16384, 4096, 0, 24575, 0, THICK_LEFT}, + {SSF_SPLINE2, 0, 32768, 16384, 53247, 7168, THICK_RIGHT}} }; -static ssfGlyph g041 = { - 2, - {{SSF_SPLINE1, 4096, 4096, 20480, 24575, 0, THICK_LEFT}, - {SSF_SPLINE2, 20480, 32768, 4096, 53247, 7168, THICK_RIGHT}} +static const ssfGlyph g041 = { + 2, + {{SSF_SPLINE1, 4096, 4096, 20480, 24575, 0, THICK_LEFT}, + {SSF_SPLINE2, 20480, 32768, 4096, 53247, 7168, THICK_RIGHT}} }; -static ssfGlyph g042 = { - 3, - {{SSF_LINE, 0, 12288, 16384, 49151, 7168, THICK_RIGHT}, - {SSF_LINE, 16384, 12288, 0, 49151, 7168, THICK_RIGHT}, - {SSF_BOX, 0, 28672, 24575, 32767, 0, 0}} +static const ssfGlyph g042 = { + 3, + {{SSF_LINE, 0, 12288, 16384, 49151, 7168, THICK_RIGHT}, + {SSF_LINE, 16384, 12288, 0, 49151, 7168, THICK_RIGHT}, + {SSF_BOX, 0, 28672, 24575, 32767, 0, 0}} }; -static ssfGlyph g043 = { - 2, - {{SSF_BOX, 8192, 12288, 12287, 40959, 0, 0}, - {SSF_BOX, 0, 24576, 20479, 28671, 0, 0}} +static const ssfGlyph g043 = { + 2, + {{SSF_BOX, 8192, 12288, 12287, 40959, 0, 0}, + {SSF_BOX, 0, 24576, 20479, 28671, 0, 0}} }; -static ssfGlyph g044 = { - 2, - {{SSF_BOX, 8192, 40960, 16383, 49151, 0, 0}, - {SSF_BOX, 4096, 49152, 12287, 53247, 0, 0}} -}; - -static ssfGlyph g045 = { - 1, - {{SSF_BOX, 0, 24576, 20479, 28671, 0, 0}} -}; - -static ssfGlyph g046 = { - 1, - {{SSF_BOX, 4096, 40960, 12287, 49151, 0, 0}} -}; - -static ssfGlyph g047 = { - 1, - {{SSF_LINE, 0, 53247, 20479, 4096, 4096, THICK_RIGHT}} -}; - -static ssfGlyph g048 = { - 5, - {{SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 20480, 12288, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_LINE, 4096, 45055, 20479, 16383, 4096, THICK_UP}} -}; - -static ssfGlyph g049 = { - 3, - {{SSF_BOX, 4096, 12288, 8191, 16383, 0, 0}, - {SSF_BOX, 8192, 8192, 12287, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} -}; - -static ssfGlyph g050 = { - 9, - {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}, - {SSF_BOX, 20480, 16384, 24575, 28671, 0, 0}, - {SSF_BOX, 16384, 28672, 20479, 32767, 0, 0}, - {SSF_BOX, 12288, 32768, 16383, 36863, 0, 0}, - {SSF_BOX, 8192, 36864, 12287, 40959, 0, 0}, - {SSF_BOX, 4096, 40960, 8191, 45055, 0, 0}, - {SSF_BOX, 0, 45056, 24575, 49151, 0, 0}} +static const ssfGlyph g044 = { + 2, + {{SSF_BOX, 8192, 40960, 16383, 49151, 0, 0}, + {SSF_BOX, 4096, 49152, 12287, 53247, 0, 0}} +}; + +static const ssfGlyph g045 = { + 1, + {{SSF_BOX, 0, 24576, 20479, 28671, 0, 0}} +}; + +static const ssfGlyph g046 = { + 1, + {{SSF_BOX, 4096, 40960, 12287, 49151, 0, 0}} +}; + +static const ssfGlyph g047 = { + 1, + {{SSF_LINE, 0, 53247, 20479, 4096, 4096, THICK_RIGHT}} +}; + +static const ssfGlyph g048 = { + 5, + {{SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 20480, 12288, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_LINE, 4096, 45055, 20479, 16383, 4096, THICK_UP}} +}; + +static const ssfGlyph g049 = { + 3, + {{SSF_BOX, 4096, 12288, 8191, 16383, 0, 0}, + {SSF_BOX, 8192, 8192, 12287, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} +}; + +static const ssfGlyph g050 = { + 9, + {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}, + {SSF_BOX, 20480, 16384, 24575, 28671, 0, 0}, + {SSF_BOX, 16384, 28672, 20479, 32767, 0, 0}, + {SSF_BOX, 12288, 32768, 16383, 36863, 0, 0}, + {SSF_BOX, 8192, 36864, 12287, 40959, 0, 0}, + {SSF_BOX, 4096, 40960, 8191, 45055, 0, 0}, + {SSF_BOX, 0, 45056, 24575, 49151, 0, 0}} }; -static ssfGlyph g051 = { - 7, - {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, - {SSF_BOX, 8192, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} +static const ssfGlyph g051 = { + 7, + {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, + {SSF_BOX, 8192, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} }; -static ssfGlyph g052 = { - 3, - {{SSF_BOX, 0, 28762, 24575, 32767, 0, 0}, - {SSF_LINE, 0, 32767, 16383, 16383, 7168, THICK_UP}, - {SSF_BOX, 16384, 8192, 20479, 49151, 0, 0}} +static const ssfGlyph g052 = { + 3, + {{SSF_BOX, 0, 28762, 24575, 32767, 0, 0}, + {SSF_LINE, 0, 32767, 16383, 16383, 7168, THICK_UP}, + {SSF_BOX, 16384, 8192, 20479, 49151, 0, 0}} }; -static ssfGlyph g053 = { - 6, - {{SSF_BOX, 0, 8192, 24575, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 28761, 0, 0}, - {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} +static const ssfGlyph g053 = { + 6, + {{SSF_BOX, 0, 8192, 24575, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 28761, 0, 0}, + {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} }; -static ssfGlyph g054 = { - 7, - {{SSF_BOX, 20479, 12288, 24575, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} -}; - -static ssfGlyph g055 = { - 3, - {{SSF_BOX, 0, 8192, 24575, 12287, 0, 0}, - {SSF_LINE, 24575, 8192, 4096, 40959, 7168, THICK_DOWN}, - {SSF_BOX, 4096, 40960, 8191, 49151, 0, 0}} -}; - -static ssfGlyph g056 = { - 9, - {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 24575, 0, 0}, - {SSF_BOX, 0, 28672, 4095, 45055, 0, 0}} -}; - -static ssfGlyph g057 = { - 9, - {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 24575, 0, 0}, - {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} -}; - -static ssfGlyph g058 = { - 2, - {{SSF_BOX, 8192, 16384, 16383, 24575, 0, 0}, - {SSF_BOX, 8192, 32768, 16383, 40959, 0, 0}} -}; - -static ssfGlyph g059 = { - 3, - {{SSF_BOX, 8192, 24576, 16383, 32767, 0, 0}, - {SSF_BOX, 8192, 40960, 16383, 49151, 0, 0}, - {SSF_BOX, 4096, 49152, 12287, 53247, 0, 0}} -}; - -static ssfGlyph g060 = { - 2, - {{SSF_LINE, 0, 28671, 16384, 12288, 7168, THICK_RIGHT}, - {SSF_LINE, 0, 28672, 16384, 45055, 7168, THICK_RIGHT}} -}; - -static ssfGlyph g061 = { - 2, - {{SSF_BOX, 4096, 20480, 24575, 24575, 0, 0}, - {SSF_BOX, 4096, 32768, 24575, 36863, 0, 0}} -}; - -static ssfGlyph g062 = { - 2, - {{SSF_LINE, 0, 12288, 16384, 28671, 7168, THICK_RIGHT}, - {SSF_LINE, 0, 45055, 16384, 28672, 7168, THICK_RIGHT}} -}; - -static ssfGlyph g063 = { - 8, - {{SSF_BOX, 8192, 45056, 12287, 49151, 0, 0}, - {SSF_BOX, 8192, 32768, 12287, 36863, 0, 0}, - {SSF_BOX, 12288, 28672, 16383, 32767, 0, 0}, - {SSF_BOX, 16384, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 16384, 24575, 24575, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 16383, 0, 0}} -}; - -static ssfGlyph g064 = { - 8, - {{SSF_BOX, 12288, 20480, 24575, 24575, 0, 0}, - {SSF_BOX, 8192, 24576, 12287, 32767, 0, 0}, - {SSF_BOX, 12288, 32768, 20479, 36863, 0, 0}, - {SSF_BOX, 20480, 12288, 24575, 32767, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}} -}; - -static ssfGlyph g065 = { - 5, - {{SSF_BOX, 0, 49151, 4095, 20480, 0, 0}, - {SSF_LINE, 12287, 8192, 0, 20479, 7168, THICK_DOWN}, - {SSF_LINE, 12288, 8192, 24575, 20479, 7168, THICK_DOWN}, - {SSF_BOX, 20480, 20480, 24575, 49151, 0, 0}, - {SSF_BOX, 4096, 28672, 20476, 32767, 0, 0}} -}; - -static ssfGlyph g066 = { - 6, - {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} -}; - -static ssfGlyph g067 = { - 5, - {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}} -}; - -static ssfGlyph g068 = { - 6, - {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, - {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}, - {SSF_BOX, 20480, 16384, 24575, 40959, 0, 0}, - {SSF_BOX, 16384, 40960, 20479, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} -}; - -static ssfGlyph g069 = { - 6, - {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 24151, 12287, 0, 0}, - {SSF_BOX, 0, 8192, 4095, 45055, 0, 0}, - {SSF_BOX, 0, 45056, 24575, 49151, 0, 0}, - {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 24576, 16383, 28671, 0, 0}} -}; - -static ssfGlyph g070 = { - 4, - {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 24151, 12287, 0, 0}, - {SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, - {SSF_BOX, 4096, 24576, 16383, 28671, 0, 0}} -}; - -static ssfGlyph g071 = { - 6, - {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 24575, 49151, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 12288, 28672, 20479, 32767, 0, 0}} -}; - -static ssfGlyph g072 = { - 3, - {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, - {SSF_BOX, 20480, 8192, 24575, 49151, 0, 0}, - {SSF_BOX, 4096, 28672, 20479, 32767, 0, 0}} -}; - -static ssfGlyph g073 = { - 3, - {{SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, - {SSF_BOX, 8192, 12288, 12287, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} -}; - -static ssfGlyph g074 = { - 4, - {{SSF_BOX, 12288, 8192, 24575, 12287, 0, 0}, - {SSF_BOX, 16384, 12288, 20475, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, - {SSF_BOX, 0, 36864, 4095, 45055, 0, 0}} -}; - -static ssfGlyph g075 = { - 7, - {{SSF_BOX, 0, 8192, 8191, 12287, 0, 0}, - {SSF_BOX, 4096, 12288, 8191, 45055, 0, 0}, - {SSF_BOX, 0, 45056, 8191, 49151, 0, 0}, - {SSF_LINE, 16384, 8192, 8192, 28671, 7168, THICK_RIGHT}, - {SSF_LINE, 8192, 28672, 16384, 49151, 7168, THICK_RIGHT}, - {SSF_BOX, 20480, 8192, 24575, 12287, 0, 0}, - {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}} -}; - -static ssfGlyph g076 = { - 4, - {{SSF_BOX, 0, 8192, 12287, 12287, 0, 0}, - {SSF_BOX, 4096, 12288, 8191, 45055, 0, 0}, - {SSF_BOX, 0, 45056, 24575, 49151, 0, 0}, - {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}} -}; - -static ssfGlyph g077 = { - 4, - {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, - {SSF_LINE, 4096, 8192, 12287, 32767, 7168, THICK_DOWN}, - {SSF_LINE, 12288, 32767, 20479, 8192, 7168, THICK_DOWN}, - {SSF_BOX, 20480, 8192, 24575, 49151, 0, 0}} -}; - -static ssfGlyph g078 = { - 3, - {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, - {SSF_LINE, 0, 12288, 20575, 45055, 4096, THICK_RIGHT}, - {SSF_BOX, 20480, 8192, 24575, 49151, 0, 0}} -}; - -static ssfGlyph g079 = { - 4, - {{SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 20480, 12288, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} -}; +static const ssfGlyph g054 = { + 7, + {{SSF_BOX, 20479, 12288, 24575, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} +}; + +static const ssfGlyph g055 = { + 3, + {{SSF_BOX, 0, 8192, 24575, 12287, 0, 0}, + {SSF_LINE, 24575, 8192, 4096, 40959, 7168, THICK_DOWN}, + {SSF_BOX, 4096, 40960, 8191, 49151, 0, 0}} +}; + +static const ssfGlyph g056 = { + 9, + {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 24575, 0, 0}, + {SSF_BOX, 0, 28672, 4095, 45055, 0, 0}} +}; + +static const ssfGlyph g057 = { + 9, + {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 24575, 0, 0}, + {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} +}; + +static const ssfGlyph g058 = { + 2, + {{SSF_BOX, 8192, 16384, 16383, 24575, 0, 0}, + {SSF_BOX, 8192, 32768, 16383, 40959, 0, 0}} +}; + +static const ssfGlyph g059 = { + 3, + {{SSF_BOX, 8192, 24576, 16383, 32767, 0, 0}, + {SSF_BOX, 8192, 40960, 16383, 49151, 0, 0}, + {SSF_BOX, 4096, 49152, 12287, 53247, 0, 0}} +}; + +static const ssfGlyph g060 = { + 2, + {{SSF_LINE, 0, 28671, 16384, 12288, 7168, THICK_RIGHT}, + {SSF_LINE, 0, 28672, 16384, 45055, 7168, THICK_RIGHT}} +}; + +static const ssfGlyph g061 = { + 2, + {{SSF_BOX, 4096, 20480, 24575, 24575, 0, 0}, + {SSF_BOX, 4096, 32768, 24575, 36863, 0, 0}} +}; + +static const ssfGlyph g062 = { + 2, + {{SSF_LINE, 0, 12288, 16384, 28671, 7168, THICK_RIGHT}, + {SSF_LINE, 0, 45055, 16384, 28672, 7168, THICK_RIGHT}} +}; + +static const ssfGlyph g063 = { + 8, + {{SSF_BOX, 8192, 45056, 12287, 49151, 0, 0}, + {SSF_BOX, 8192, 32768, 12287, 36863, 0, 0}, + {SSF_BOX, 12288, 28672, 16383, 32767, 0, 0}, + {SSF_BOX, 16384, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 16384, 24575, 24575, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 16383, 0, 0}} +}; + +static const ssfGlyph g064 = { + 8, + {{SSF_BOX, 12288, 20480, 24575, 24575, 0, 0}, + {SSF_BOX, 8192, 24576, 12287, 32767, 0, 0}, + {SSF_BOX, 12288, 32768, 20479, 36863, 0, 0}, + {SSF_BOX, 20480, 12288, 24575, 32767, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}} +}; + +static const ssfGlyph g065 = { + 5, + {{SSF_BOX, 0, 49151, 4095, 20480, 0, 0}, + {SSF_LINE, 12287, 8192, 0, 20479, 7168, THICK_DOWN}, + {SSF_LINE, 12288, 8192, 24575, 20479, 7168, THICK_DOWN}, + {SSF_BOX, 20480, 20480, 24575, 49151, 0, 0}, + {SSF_BOX, 4096, 28672, 20476, 32767, 0, 0}} +}; + +static const ssfGlyph g066 = { + 6, + {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} +}; + +static const ssfGlyph g067 = { + 5, + {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}} +}; + +static const ssfGlyph g068 = { + 6, + {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, + {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}, + {SSF_BOX, 20480, 16384, 24575, 40959, 0, 0}, + {SSF_BOX, 16384, 40960, 20479, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} +}; + +static const ssfGlyph g069 = { + 6, + {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 24151, 12287, 0, 0}, + {SSF_BOX, 0, 8192, 4095, 45055, 0, 0}, + {SSF_BOX, 0, 45056, 24575, 49151, 0, 0}, + {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 24576, 16383, 28671, 0, 0}} +}; + +static const ssfGlyph g070 = { + 4, + {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 24151, 12287, 0, 0}, + {SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, + {SSF_BOX, 4096, 24576, 16383, 28671, 0, 0}} +}; + +static const ssfGlyph g071 = { + 6, + {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 24575, 49151, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 12288, 28672, 20479, 32767, 0, 0}} +}; + +static const ssfGlyph g072 = { + 3, + {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, + {SSF_BOX, 20480, 8192, 24575, 49151, 0, 0}, + {SSF_BOX, 4096, 28672, 20479, 32767, 0, 0}} +}; + +static const ssfGlyph g073 = { + 3, + {{SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, + {SSF_BOX, 8192, 12288, 12287, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} +}; + +static const ssfGlyph g074 = { + 4, + {{SSF_BOX, 12288, 8192, 24575, 12287, 0, 0}, + {SSF_BOX, 16384, 12288, 20475, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, + {SSF_BOX, 0, 36864, 4095, 45055, 0, 0}} +}; + +static const ssfGlyph g075 = { + 7, + {{SSF_BOX, 0, 8192, 8191, 12287, 0, 0}, + {SSF_BOX, 4096, 12288, 8191, 45055, 0, 0}, + {SSF_BOX, 0, 45056, 8191, 49151, 0, 0}, + {SSF_LINE, 16384, 8192, 8192, 28671, 7168, THICK_RIGHT}, + {SSF_LINE, 8192, 28672, 16384, 49151, 7168, THICK_RIGHT}, + {SSF_BOX, 20480, 8192, 24575, 12287, 0, 0}, + {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}} +}; + +static const ssfGlyph g076 = { + 4, + {{SSF_BOX, 0, 8192, 12287, 12287, 0, 0}, + {SSF_BOX, 4096, 12288, 8191, 45055, 0, 0}, + {SSF_BOX, 0, 45056, 24575, 49151, 0, 0}, + {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}} +}; + +static const ssfGlyph g077 = { + 4, + {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, + {SSF_LINE, 4096, 8192, 12287, 32767, 7168, THICK_DOWN}, + {SSF_LINE, 12288, 32767, 20479, 8192, 7168, THICK_DOWN}, + {SSF_BOX, 20480, 8192, 24575, 49151, 0, 0}} +}; + +static const ssfGlyph g078 = { + 3, + {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, + {SSF_LINE, 0, 12288, 20575, 45055, 4096, THICK_RIGHT}, + {SSF_BOX, 20480, 8192, 24575, 49151, 0, 0}} +}; + +static const ssfGlyph g079 = { + 4, + {{SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 20480, 12288, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} +}; -static ssfGlyph g080 = { - 4, - {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}} +static const ssfGlyph g080 = { + 4, + {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}} }; -static ssfGlyph g081 = { - 5, - {{SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, - {SSF_LINE, 12288, 36864, 24575, 53247, 7168, THICK_LEFT}} +static const ssfGlyph g081 = { + 5, + {{SSF_BOX, 0, 12288, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, + {SSF_LINE, 12288, 36864, 24575, 53247, 7168, THICK_LEFT}} }; -static ssfGlyph g082 = { - 5, - {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, - {SSF_LINE, 4096, 28672, 20479, 49151, 7168, THICK_RIGHT}} +static const ssfGlyph g082 = { + 5, + {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 20480, 12288, 24575, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, + {SSF_LINE, 4096, 28672, 20479, 49151, 7168, THICK_RIGHT}} }; -static ssfGlyph g083 = { - 7, - {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 4095, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} +static const ssfGlyph g083 = { + 7, + {{SSF_BOX, 20480, 12288, 24575, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 4095, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}} }; -static ssfGlyph g084 = { - 5, - {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, - {SSF_BOX, 0, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}, - {SSF_BOX, 8192, 12288, 12287, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} +static const ssfGlyph g084 = { + 5, + {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, + {SSF_BOX, 0, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 16383, 0, 0}, + {SSF_BOX, 8192, 12288, 12287, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} }; -static ssfGlyph g085 = { - 3, - {{SSF_BOX, 0, 8192, 4095, 45055, 0, 0}, - {SSF_BOX, 20480, 8192, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} +static const ssfGlyph g085 = { + 3, + {{SSF_BOX, 0, 8192, 4095, 45055, 0, 0}, + {SSF_BOX, 20480, 8192, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} }; -static ssfGlyph g086 = { - 4, - {{SSF_BOX, 0, 8192, 4095, 36863, 0, 0}, - {SSF_LINE, 12287, 49151, 0, 36864, 7168, THICK_UP}, - {SSF_LINE, 12288, 49151, 24575, 36864, 7168, THICK_UP}, - {SSF_BOX, 20480, 8192, 24575, 36863, 0, 0}} +static const ssfGlyph g086 = { + 4, + {{SSF_BOX, 0, 8192, 4095, 36863, 0, 0}, + {SSF_LINE, 12287, 49151, 0, 36864, 7168, THICK_UP}, + {SSF_LINE, 12288, 49151, 24575, 36864, 7168, THICK_UP}, + {SSF_BOX, 20480, 8192, 24575, 36863, 0, 0}} }; -static ssfGlyph g087 = { - 4, - {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, - {SSF_LINE, 4096, 49151, 12287, 32768, 7168, THICK_UP}, - {SSF_LINE, 12288, 32768, 20479, 49151, 7168, THICK_UP}, - {SSF_BOX, 20480, 8192, 24575, 49151, 0, 0}} +static const ssfGlyph g087 = { + 4, + {{SSF_BOX, 0, 8192, 4095, 49151, 0, 0}, + {SSF_LINE, 4096, 49151, 12287, 32768, 7168, THICK_UP}, + {SSF_LINE, 12288, 32768, 20479, 49151, 7168, THICK_UP}, + {SSF_BOX, 20480, 8192, 24575, 49151, 0, 0}} }; -static ssfGlyph g088 = { - 2, - {{SSF_LINE, 0, 8192, 16384, 49151, 7168, THICK_RIGHT}, - {SSF_LINE, 16384, 8192, 0, 49151, 7168, THICK_RIGHT}} +static const ssfGlyph g088 = { + 2, + {{SSF_LINE, 0, 8192, 16384, 49151, 7168, THICK_RIGHT}, + {SSF_LINE, 16384, 8192, 0, 49151, 7168, THICK_RIGHT}} }; -static ssfGlyph g089 = { - 2, - {{SSF_LINE, 0, 8192, 8192, 28671, 7168, THICK_RIGHT}, - {SSF_LINE, 16384, 8192, 0, 49151, 7168, THICK_RIGHT}} +static const ssfGlyph g089 = { + 2, + {{SSF_LINE, 0, 8192, 8192, 28671, 7168, THICK_RIGHT}, + {SSF_LINE, 16384, 8192, 0, 49151, 7168, THICK_RIGHT}} }; -static ssfGlyph g090 = { - 3, - {{SSF_BOX, 0, 8192, 23551, 12287, 0, 0}, - {SSF_LINE, 16384, 12288, 0, 45055, 7168, THICK_RIGHT}, - {SSF_BOX, 0, 45056, 23551, 49151, 0, 0}} +static const ssfGlyph g090 = { + 3, + {{SSF_BOX, 0, 8192, 23551, 12287, 0, 0}, + {SSF_LINE, 16384, 12288, 0, 45055, 7168, THICK_RIGHT}, + {SSF_BOX, 0, 45056, 23551, 49151, 0, 0}} }; -static ssfGlyph g091 = { - 3, - {{SSF_BOX, 4096, 4096, 16383, 8191, 0, 0}, - {SSF_BOX, 4096, 8192, 8191, 49151, 0, 0}, - {SSF_BOX, 4096, 49152, 16383, 53247, 0, 0}} +static const ssfGlyph g091 = { + 3, + {{SSF_BOX, 4096, 4096, 16383, 8191, 0, 0}, + {SSF_BOX, 4096, 8192, 8191, 49151, 0, 0}, + {SSF_BOX, 4096, 49152, 16383, 53247, 0, 0}} }; -static ssfGlyph g092 = { - 1, - {{SSF_LINE, 0, 4096, 20476, 53247, 4096, THICK_RIGHT}} +static const ssfGlyph g092 = { + 1, + {{SSF_LINE, 0, 4096, 20476, 53247, 4096, THICK_RIGHT}} }; -static ssfGlyph g093 = { - 3, - {{SSF_BOX, 4096, 4096, 16383, 8191, 0, 0}, - {SSF_BOX, 12288, 8192, 16383, 49151, 0, 0}, - {SSF_BOX, 4096, 49152, 16383, 53247, 0, 0}} +static const ssfGlyph g093 = { + 3, + {{SSF_BOX, 4096, 4096, 16383, 8191, 0, 0}, + {SSF_BOX, 12288, 8192, 16383, 49151, 0, 0}, + {SSF_BOX, 4096, 49152, 16383, 53247, 0, 0}} }; -static ssfGlyph g094 = { - 2, - {{SSF_LINE, 4096, 28671, 12287, 12288, 7168, THICK_UP}, - {SSF_LINE, 12288, 12288, 20479, 28671, 7168, THICK_UP}} +static const ssfGlyph g094 = { + 2, + {{SSF_LINE, 4096, 28671, 12287, 12288, 7168, THICK_UP}, + {SSF_LINE, 12288, 12288, 20479, 28671, 7168, THICK_UP}} }; -static ssfGlyph g095 = { - 1, - {{SSF_BOX, 0, 45060, 24575, 49151, 0, 0}} +static const ssfGlyph g095 = { + 1, + {{SSF_BOX, 0, 45060, 24575, 49151, 0, 0}} }; -static ssfGlyph g096 = { - 1, - {{SSF_LINE, 8192, 4096, 16383, 16383, 7168, THICK_RIGHT}} +static const ssfGlyph g096 = { + 1, + {{SSF_LINE, 8192, 4096, 16383, 16383, 7168, THICK_RIGHT}} }; -static ssfGlyph g097 = { - 6, - {{SSF_BOX, 4096, 20480, 16383, 24575, 0, 0}, - {SSF_BOX, 16384, 24576, 20479, 45055, 0, 0}, - {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, - {SSF_BOX, 0, 36864, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 32768, 16383, 36863, 0, 0}} +static const ssfGlyph g097 = { + 6, + {{SSF_BOX, 4096, 20480, 16383, 24575, 0, 0}, + {SSF_BOX, 16384, 24576, 20479, 45055, 0, 0}, + {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, + {SSF_BOX, 0, 36864, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 32768, 16383, 36863, 0, 0}} }; -static ssfGlyph g098 = { - 6, - {{SSF_BOX, 0, 8192, 8191, 12287, 0, 0}, - {SSF_BOX, 4096, 12288, 8191, 45055, 0, 0}, - {SSF_BOX, 0, 45056, 4095, 49151, 0, 0}, - {SSF_BOX, 8192, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, - {SSF_BOX, 8192, 24576, 20479, 28671, 0, 0}} +static const ssfGlyph g098 = { + 6, + {{SSF_BOX, 0, 8192, 8191, 12287, 0, 0}, + {SSF_BOX, 4096, 12288, 8191, 45055, 0, 0}, + {SSF_BOX, 0, 45056, 4095, 49151, 0, 0}, + {SSF_BOX, 8192, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 45055, 0, 0}, + {SSF_BOX, 8192, 24576, 20479, 28671, 0, 0}} }; -static ssfGlyph g099 = { - 5, - {{SSF_BOX, 20480, 24576, 24575, 28671, 0, 0}, - {SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}} +static const ssfGlyph g099 = { + 5, + {{SSF_BOX, 20480, 24576, 24575, 28671, 0, 0}, + {SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}} }; -static ssfGlyph g100 = { - 6, - {{SSF_BOX, 16384, 8192, 24575, 12287, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 45055, 0, 0}, - {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, - {SSF_BOX, 0, 28672, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 24576, 16383, 28671, 0, 0}} +static const ssfGlyph g100 = { + 6, + {{SSF_BOX, 16384, 8192, 24575, 12287, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 45055, 0, 0}, + {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, + {SSF_BOX, 0, 28672, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 24576, 16383, 28671, 0, 0}} }; -static ssfGlyph g101 = { - 5, - {{SSF_BOX, 4096, 32768, 20479, 36863, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 32767, 0, 0}, - {SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} +static const ssfGlyph g101 = { + 5, + {{SSF_BOX, 4096, 32768, 20479, 36863, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 32767, 0, 0}, + {SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} }; -static ssfGlyph g102 = { - 3, - {{SSF_BOX, 12288, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 8192, 12288, 12287, 49151, 0, 0}, - {SSF_BOX, 4096, 28672, 16383, 32767, 0, 0}} -}; +static const ssfGlyph g102 = { + 3, + {{SSF_BOX, 12288, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 8192, 12288, 12287, 49151, 0, 0}, + {SSF_BOX, 4096, 28672, 16383, 32767, 0, 0}} +}; -static ssfGlyph g103 = { - 6, - {{SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 0, 24576, 4095, 40959, 0, 0}, - {SSF_BOX, 4096, 40960, 20479, 45055, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 57343, 0, 0}, - {SSF_BOX, 4096, 57344, 20479, 61439, 0, 0}, - {SSF_BOX, 0, 53248, 4095, 57343, 0, 0}} +static const ssfGlyph g103 = { + 6, + {{SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 0, 24576, 4095, 40959, 0, 0}, + {SSF_BOX, 4096, 40960, 20479, 45055, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 57343, 0, 0}, + {SSF_BOX, 4096, 57344, 20479, 61439, 0, 0}, + {SSF_BOX, 0, 53248, 4095, 57343, 0, 0}} }; - -static ssfGlyph g104 = { - 4, - {{SSF_BOX, 0, 8192, 8191, 12287, 0, 0}, - {SSF_BOX, 4096, 12288, 8191, 49151, 0, 0}, - {SSF_BOX, 8192, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 20480, 28672, 24575, 49151, 0, 0}} -}; - -static ssfGlyph g105 = { - 4, - {{SSF_BOX, 12288, 8192, 16383, 12287, 0, 0}, - {SSF_BOX, 8192, 20480, 16383, 24575, 0, 0}, - {SSF_BOX, 12288, 24576, 16383, 45055, 0, 0}, - {SSF_BOX, 8192, 45056, 20479, 49151, 0, 0}} -}; - -static ssfGlyph g106 = { - 5, - {{SSF_BOX, 16384, 16384, 20479, 20479, 0, 0}, - {SSF_BOX, 12288, 28672, 20479, 32767, 0, 0}, - {SSF_BOX, 16384, 32768, 20479, 57343, 0, 0}, - {SSF_BOX, 4096, 57344, 16383, 61439, 0, 0}, - {SSF_BOX, 0, 53248, 4095, 57343, 0, 0}} -}; - -static ssfGlyph g107 = { - 7, - {{SSF_BOX, 0, 8192, 8191, 12287, 0, 0}, - {SSF_BOX, 4096, 12288, 8191, 45055, 0, 0}, - {SSF_BOX, 0, 45056, 8191, 49151, 0, 0}, - {SSF_LINE, 16384, 20480, 8192, 32767, 7168, THICK_RIGHT}, - {SSF_LINE, 8192, 32768, 16384, 49151, 7168, THICK_RIGHT}, - {SSF_BOX, 20480, 20480, 24575, 24575, 0, 0}, - {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}} -}; - -static ssfGlyph g108 = { - 3, - {{SSF_BOX, 4096, 8192, 12287, 12287, 0, 0}, - {SSF_BOX, 8192, 12288, 12287, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} -}; - -static ssfGlyph g109 = { - 5, - {{SSF_BOX, 0, 20480, 4095, 49151, 0, 0}, - {SSF_BOX, 4096, 20480, 12287, 24575, 0, 0}, - {SSF_BOX, 12288, 24576, 16383, 49151, 0, 0}, - {SSF_BOX, 16384, 20480, 24575, 24575, 0, 0}, - {SSF_BOX, 24576, 24576, 28671, 49151, 0, 0}} -}; - -static ssfGlyph g110 = { - 6, - {{SSF_BOX, 0, 20480, 4095, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 8191, 49151, 0, 0}, - {SSF_BOX, 0, 45056, 4095, 49151, 0, 0}, - {SSF_BOX, 8192, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 49151, 0, 0}, - {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}} -}; - -static ssfGlyph g111 = { - 4, - {{SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 45055, 0, 0}} -}; - -static ssfGlyph g112 = { - 6, - {{SSF_BOX, 0, 57344, 8191, 61439, 0, 0}, - {SSF_BOX, 4096, 24576, 8191, 57343, 0, 0}, - {SSF_BOX, 0, 20480, 4095, 24575, 0, 0}, - {SSF_BOX, 8192, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 40959, 0, 0}, - {SSF_BOX, 8192, 40960, 20479, 45055, 0, 0}} -}; - -static ssfGlyph g113 = { - 6, - {{SSF_BOX, 16384, 57344, 24575, 61439, 0, 0}, - {SSF_BOX, 16384, 24576, 20479, 57343, 0, 0}, - {SSF_BOX, 20480, 20480, 24575, 24575, 0, 0}, - {SSF_BOX, 4096, 20480, 16383, 24575, 0, 0}, - {SSF_BOX, 0, 24576, 4095, 40959, 0, 0}, - {SSF_BOX, 4096, 40960, 16383, 45055, 0, 0}} -}; - -static ssfGlyph g114 = { - 4, - {{SSF_BOX, 0, 20480, 4095, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 8191, 45055, 0, 0}, - {SSF_BOX, 0, 45056, 8191, 49151, 0, 0}, - {SSF_BOX, 8192, 20480, 20479, 24575, 0, 0}} -}; - -static ssfGlyph g115 = { - 5, - {{SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 0, 24576, 4095, 32767, 0, 0}, - {SSF_BOX, 4096, 32768, 20479, 36863, 0, 0}, - {SSF_BOX, 20480, 36864, 24575, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} -}; - -static ssfGlyph g116 = { - 3, - {{SSF_BOX, 4094, 16384, 24575, 20479, 0, 0}, - {SSF_BOX, 12288, 8192, 16383, 45055, 0, 0}, - {SSF_BOX, 16384, 45056, 24575, 49151, 0, 0}} -}; - -static ssfGlyph g117 = { - 6, - {{SSF_BOX, 0, 20480, 8191, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 8191, 45055, 0, 0}, - {SSF_BOX, 8192, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 20480, 20480, 28671, 24575, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 45055, 0, 0}, - {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}} -}; - -static ssfGlyph g118 = { - 4, - {{SSF_BOX, 0, 20480, 4095, 36863, 0, 0}, - {SSF_LINE, 12287, 49151, 0, 36864, 7168, THICK_UP}, - {SSF_LINE, 12288, 49151, 24575, 36864, 7168, THICK_UP}, - {SSF_BOX, 20480, 20480, 24575, 36863, 0, 0}} -}; - -static ssfGlyph g119 = { - 4, - {{SSF_BOX, 0, 20480, 4095, 49151, 0, 0}, - {SSF_LINE, 4096, 49151, 12287, 32768, 7168, THICK_UP}, - {SSF_LINE, 12288, 32768, 20479, 49151, 7168, THICK_UP}, - {SSF_BOX, 20480, 20480, 24575, 49151, 0, 0}} -}; - -static ssfGlyph g120 = { - 2, - {{SSF_LINE, 0, 20480, 16384, 49151, 7168, THICK_RIGHT}, - {SSF_LINE, 16384, 20480, 0, 49151, 7168, THICK_RIGHT}} -}; - -static ssfGlyph g121 = { - 2, - {{SSF_LINE, 0, 61439, 16384, 20480, 7168, THICK_RIGHT}, - {SSF_LINE, 0, 20480, 8191, 40959, 7168, THICK_RIGHT}} -}; - -static ssfGlyph g122 = { - 3, - {{SSF_BOX, 0, 20480, 24575, 24575, 0, 0}, - {SSF_LINE, 16384, 24576, 0, 45055, 7168, THICK_RIGHT}, - {SSF_BOX, 0, 45056, 24575, 49151, 0, 0}} -}; - -static ssfGlyph g123 = { - 5, - {{SSF_BOX, 12288, 4096, 20479, 8191, 0, 0}, - {SSF_BOX, 8192, 8192, 12287, 28761, 0, 0}, - {SSF_BOX, 0, 28672, 8191, 32767, 0, 0}, - {SSF_BOX, 8192, 32768, 12287, 49151, 0, 0}, - {SSF_BOX, 12288, 49152, 20479, 53247, 0, 0}} -}; - -static ssfGlyph g124 = { - 2, - {{SSF_BOX, 12288, 4096, 16383, 24575, 0, 0}, - {SSF_BOX, 12288, 32768, 16383, 53247, 0, 0}} -}; - -static ssfGlyph g125 = { - 5, - {{SSF_BOX, 4096, 4096, 12287, 8191, 0, 0}, - {SSF_BOX, 12288, 8192, 16383, 28671, 0, 0}, - {SSF_BOX, 16384, 28672, 24575, 32767, 0, 0}, - {SSF_BOX, 12288, 32768, 16383, 49151, 0, 0}, - {SSF_BOX, 4096, 49152, 12287, 53247, 0, 0}} -}; - -static ssfGlyph g126 = { - 4, - {{SSF_BOX, 0, 28672, 4095, 32767, 0, 0}, - {SSF_BOX, 4096, 24576, 12287, 28761, 0, 0}, - {SSF_BOX, 12288, 28672, 20479, 32767, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 28671, 0, 0}} -}; - -static ssfGlyph g130 = { - 6, - {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, - {SSF_BOX, 4096, 32768, 20479, 36863, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 32767, 0, 0}, - {SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} -}; - -static ssfGlyph g160 = { - 7, - {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, - {SSF_BOX, 4096, 20480, 16383, 24575, 0, 0}, - {SSF_BOX, 16384, 24576, 20479, 45055, 0, 0}, - {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, - {SSF_BOX, 0, 36864, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 32768, 16383, 36863, 0, 0}} -}; - -static ssfGlyph g161 = { - 4, - {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, - {SSF_BOX, 4096, 20480, 12287, 24575, 0, 0}, - {SSF_BOX, 8192, 24576, 12287, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} -}; - -static ssfGlyph g162 = { - 5, - {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, - {SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, - {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 45055, 0, 0}} -}; - -static ssfGlyph g163 = { - 7, - {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, - {SSF_BOX, 0, 20480, 8191, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 8191, 45055, 0, 0}, - {SSF_BOX, 8192, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 20480, 20480, 28671, 24575, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 45055, 0, 0}, - {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}} -}; - -static ssfGlyph g164 = { - 10, - {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, - {SSF_BOX, 4096, 8192, 12287, 12287, 0, 0}, - {SSF_BOX, 12288, 12288, 20479, 16383, 0, 0}, - {SSF_BOX, 20480, 8192, 24575, 12287, 0, 0}, - {SSF_BOX, 0, 20480, 4095, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 8191, 49151, 0, 0}, - {SSF_BOX, 0, 45056, 4095, 49151, 0, 0}, - {SSF_BOX, 8192, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 49151, 0, 0}, - {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}} -}; - -static ssfGlyph g165 = { - 7, - {{SSF_BOX, 0, 12288, 4095, 49151, 0, 0}, - {SSF_LINE, 0, 12288, 20575, 45055, 4096, THICK_RIGHT}, - {SSF_BOX, 20480, 12288, 24575, 49151, 0, 0}, - {SSF_BOX, 0, 4096, 4095, 8191, 0, 0}, - {SSF_BOX, 4096, 0, 12287, 4095, 0, 0}, - {SSF_BOX, 12288, 4096, 20479, 8191, 0, 0}, - {SSF_BOX, 20480, 0, 24575, 4095, 0, 0}} -}; - -static ssfGlyph g166 = { - 6, - {{SSF_BOX, 4096, 20480, 8191, 24575, 0, 0}, - {SSF_BOX, 8192, 8192, 16383, 12287, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 24575, 0, 0}, - {SSF_BOX, 8192, 16384, 16383, 20479, 0, 0}, - {SSF_BOX, 4096, 28672, 20480, 32767, 0, 0}, - {SSF_BOX, 8192, 24576, 16383, 28671, 0, 0}} -}; - -static ssfGlyph g168 = { - 8, - {{SSF_BOX, 12288, 16384, 16383, 20479, 0, 0}, - {SSF_BOX, 12288, 28672, 16383, 32767, 0, 0}, - {SSF_BOX, 8192, 32768, 12287, 36863, 0, 0}, - {SSF_BOX, 4096, 36864, 8191, 40959, 0, 0}, - {SSF_BOX, 0, 40960, 4095, 49151, 0, 0}, - {SSF_BOX, 4096, 49152, 8191, 53247, 0, 0}, - {SSF_BOX, 8192, 53248, 20479, 57343, 0, 0}, - {SSF_BOX, 20480, 49152, 24575, 53247, 0, 0}} -}; - -static ssfGlyph g173 = { - 4, - {{SSF_BOX, 12288, 16384, 16383, 20479, 0, 0}, - {SSF_BOX, 8192, 36864, 12287, 53247, 0, 0}, - {SSF_BOX, 12288, 28672, 16383, 57343, 0, 0}, - {SSF_BOX, 16384, 36864, 20479, 53247, 0, 0}} -}; - -static ssfGlyph g167 = { - 5, - {{SSF_BOX, 4096, 12288, 8191, 20479, 0, 0}, - {SSF_BOX, 8192, 8192, 16383, 12287, 0, 0}, - {SSF_BOX, 16384, 12288, 20479, 20479, 0, 0}, - {SSF_BOX, 8192, 20480, 16383, 24575, 0, 0}, - {SSF_BOX, 4096, 28672, 20480, 32767, 0, 0}} -}; - -static ssfGlyph g176 = { - 32, - {{SSF_BOX, 0, 0, 4095, 4095, 0, 0}, - {SSF_BOX, 16384, 0, 20479, 4095, 0, 0}, - {SSF_BOX, 8192, 4096, 12287, 8191, 0, 0}, - {SSF_BOX, 24576, 4096, 28671, 8191, 0, 0}, - {SSF_BOX, 0, 8192, 4095, 12287, 0, 0}, - {SSF_BOX, 16384, 8192, 20479, 12287, 0, 0}, - {SSF_BOX, 8192, 12288, 12287, 16383, 0, 0}, - {SSF_BOX, 24576, 12288, 28671, 16383, 0, 0}, - {SSF_BOX, 0, 16384, 4095, 20479, 0, 0}, - {SSF_BOX, 16384, 16384, 20479, 20479, 0, 0}, - {SSF_BOX, 8192, 20480, 12287, 24575, 0, 0}, - {SSF_BOX, 24576, 20480, 28671, 24575, 0, 0}, - {SSF_BOX, 0, 24576, 4095, 28671, 0, 0}, - {SSF_BOX, 16384, 24576, 20479, 28671, 0, 0}, - {SSF_BOX, 8192, 28672, 12287, 32767, 0, 0}, - {SSF_BOX, 24576, 28672, 28671, 32767, 0, 0}, - {SSF_BOX, 0, 32768, 4095, 36863, 0, 0}, - {SSF_BOX, 16384, 32768, 20479, 36863, 0, 0}, - {SSF_BOX, 8192, 36864, 12287, 40959, 0, 0}, - {SSF_BOX, 24576, 36864, 28671, 40959, 0, 0}, - {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}, - {SSF_BOX, 16384, 40960, 20479, 45055, 0, 0}, - {SSF_BOX, 8192, 45056, 12287, 49151, 0, 0}, - {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}, - {SSF_BOX, 0, 49152, 4095, 53247, 0, 0}, - {SSF_BOX, 16384, 49152, 20479, 53247, 0, 0}, - {SSF_BOX, 8192, 53248, 12287, 57343, 0, 0}, - {SSF_BOX, 24576, 53248, 28671, 57343, 0, 0}, - {SSF_BOX, 0, 57344, 4095, 61439, 0, 0}, - {SSF_BOX, 16384, 57344, 20479, 61439, 0, 0}, - {SSF_BOX, 8192, 61440, 12287, 65535, 0, 0}, - {SSF_BOX, 24576, 61440, 28671, 65535, 0, 0}} -}; - -static ssfGlyph g177 = { - 16, - {{SSF_BOX, 0, 0, 8191, 8191, 0, 0}, - {SSF_BOX, 16384, 0, 24575, 8191, 0, 0}, - {SSF_BOX, 8192, 8192, 16383, 16383, 0, 0}, - {SSF_BOX, 24576, 8192, 32767, 16383, 0, 0}, - {SSF_BOX, 0, 16384, 8191, 24575, 0, 0}, - {SSF_BOX, 16384, 16384, 24575, 24575, 0, 0}, - {SSF_BOX, 8192, 24576, 16383, 32767, 0, 0}, - {SSF_BOX, 24576, 24576, 32767, 32767, 0, 0}, - {SSF_BOX, 0, 32768, 8191, 40959, 0, 0}, - {SSF_BOX, 16384, 32768, 24575, 40959, 0, 0}, - {SSF_BOX, 8192, 40960, 16383, 49151, 0, 0}, - {SSF_BOX, 24576, 40960, 32767, 49151, 0, 0}, - {SSF_BOX, 0, 49152, 8191, 57343, 0, 0}, - {SSF_BOX, 16384, 49152, 24575, 57343, 0, 0}, - {SSF_BOX, 8192, 57344, 16383, 65535, 0, 0}, - {SSF_BOX, 24576, 57344, 32767, 65535, 0, 0}} -}; - -static ssfGlyph g178 = { - 32, - {{SSF_BOX, 4096, 0, 16383, 4095, 0, 0}, - {SSF_BOX, 20480, 0, 24575, 4095, 0, 0}, - {SSF_BOX, 0, 4096, 8191, 8191, 0, 0}, - {SSF_BOX, 12288, 4096, 20479, 8191, 0, 0}, - {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, - {SSF_BOX, 20480, 8192, 24575, 12287, 0, 0}, - {SSF_BOX, 0, 12288, 8191, 16383, 0, 0}, - {SSF_BOX, 12288, 12288, 20479, 16383, 0, 0}, - {SSF_BOX, 4096, 16384, 16383, 20479, 0, 0}, - {SSF_BOX, 20480, 16384, 24575, 20479, 0, 0}, - {SSF_BOX, 0, 20480, 8191, 24575, 0, 0}, - {SSF_BOX, 12288, 20480, 20479, 24575, 0, 0}, - {SSF_BOX, 4096, 24576, 16383, 28671, 0, 0}, - {SSF_BOX, 20480, 24576, 24575, 28671, 0, 0}, - {SSF_BOX, 0, 28672, 8191, 32767, 0, 0}, - {SSF_BOX, 12288, 28672, 20479, 32767, 0, 0}, - {SSF_BOX, 4096, 32768, 16383, 36863, 0, 0}, - {SSF_BOX, 20480, 32768, 24575, 36863, 0, 0}, - {SSF_BOX, 0, 36864, 8191, 40959, 0, 0}, - {SSF_BOX, 12288, 36864, 20479, 40959, 0, 0}, - {SSF_BOX, 4096, 40960, 16383, 45055, 0, 0}, - {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}, - {SSF_BOX, 0, 45056, 8191, 49151, 0, 0}, - {SSF_BOX, 12288, 45056, 20479, 49151, 0, 0}, - {SSF_BOX, 4096, 49152, 16383, 53247, 0, 0}, - {SSF_BOX, 20480, 49152, 24575, 53247, 0, 0}, - {SSF_BOX, 0, 53248, 8191, 57343, 0, 0}, - {SSF_BOX, 12288, 53248, 20479, 57343, 0, 0}, - {SSF_BOX, 4096, 57344, 16383, 61439, 0, 0}, - {SSF_BOX, 20480, 57344, 24575, 61439, 0, 0}, - {SSF_BOX, 0, 61440, 8191, 65535, 0, 0}, - {SSF_BOX, 12288, 61440, 20479, 65535, 0, 0}} -}; - -static ssfGlyph g179 = { - 1, - {{SSF_BOX, 12288, 0, 20479, 65535, 0, 0}} -}; - -static ssfGlyph g180 = { - 2, - {{SSF_BOX, 12288, 0, 20479, 65535, 0, 0}, - {SSF_BOX, 0, 24576, 12287, 32767, 0, 0}} -}; - -static ssfGlyph g191 = { - 2, - {{SSF_BOX, 0, 24576, 20479, 32767, 0, 0}, - {SSF_BOX, 12288, 32768, 20479, 65535, 0, 0}} -}; - -static ssfGlyph g192 = { - 2, - {{SSF_BOX, 12288, 0, 20479, 32767, 0, 0}, - {SSF_BOX, 20480, 24576, 32767, 32767, 0, 0}} -}; - -static ssfGlyph g193 = { - 2, - {{SSF_BOX, 0, 24576, 32767, 32767, 0, 0}, - {SSF_BOX, 12288, 0, 20479, 24575, 0, 0}} -}; - -static ssfGlyph g194 = { - 2, - {{SSF_BOX, 0, 24576, 32767, 32767, 0, 0}, - {SSF_BOX, 12288, 32768, 20479, 65535, 0, 0}} -}; - -static ssfGlyph g195 = { - 2, - {{SSF_BOX, 12288, 0, 20479, 65535, 0, 0}, - {SSF_BOX, 20480, 24576, 32767, 32767, 0, 0}} -}; - -static ssfGlyph g196 = { - 1, - {{SSF_BOX, 0, 24576, 32767, 32767, 0, 0}} -}; - -static ssfGlyph g197 = { - 2, - {{SSF_BOX, 12288, 0, 20479, 65535, 0, 0}, - {SSF_BOX, 0, 24576, 32767, 32767, 0, 0}} -}; - -static ssfGlyph g217 = { - 2, - {{SSF_BOX, 0, 24576, 20479, 32767, 0, 0}, - {SSF_BOX, 12288, 0, 20479, 24575, 0, 0}} -}; - -static ssfGlyph g218 = { - 2, - {{SSF_BOX, 12288, 24576, 20479, 65535, 0, 0}, - {SSF_BOX, 20480, 24576, 32767, 32767, 0, 0}} -}; - -static ssfGlyph g219 = { - 1, - {{SSF_BOX, 0, 0, 32767, 65535, 0, 0}} -}; - -static ssfGlyph g220 = { - 1, - {{SSF_BOX, 0, 32768, 32767, 65535, 0, 0}} -}; - -static ssfGlyph g223 = { - 1, - {{SSF_BOX, 0, 0, 32767, 32767, 0, 0}} -}; - -static ssfGlyph *s_ssfFixedThinChars[] = { - &g000, - &g000, /* 1 */ - &g000, /* 2 */ - &g000, /* 3 */ - &g000, /* 4 */ - &g000, /* 5 */ - &g000, /* 6 */ - &g000, /* 7 */ - &g000, /* 8 */ - &g000, /* 9 */ - &g000, /* 10 */ - &g000, /* 11 */ - &g000, /* 12 */ - &g000, /* 13 */ - &g000, /* 14 */ - &g000, /* 15 */ - &g016, - &g017, - &g000, /* 18 */ - &g000, /* 19 */ - &g000, /* 20 */ - &g000, /* 21 */ - &g000, /* 22 */ - &g000, /* 23 */ - &g000, /* 24 */ - &g000, /* 25 */ - &g000, /* 26 */ - &g000, /* 27 */ - &g000, /* 28 */ - &g000, /* 29 */ - &g030, - &g031, - &g032, - &g033, - &g034, - &g035, - &g036, - &g037, - &g038, - &g039, - &g040, - &g041, - &g042, - &g043, - &g044, - &g045, - &g046, - &g047, - &g048, - &g049, - &g050, - &g051, - &g052, - &g053, - &g054, - &g055, - &g056, - &g057, - &g058, - &g059, - &g060, - &g061, - &g062, - &g063, - &g064, - &g065, - &g066, - &g067, - &g068, - &g069, - &g070, - &g071, - &g072, - &g073, - &g074, - &g075, - &g076, - &g077, - &g078, - &g079, - &g080, - &g081, - &g082, - &g083, - &g084, - &g085, - &g086, - &g087, - &g088, - &g089, - &g090, - &g091, - &g092, - &g093, - &g094, - &g095, - &g096, - &g097, - &g098, - &g099, - &g100, - &g101, - &g102, - &g103, - &g104, - &g105, - &g106, - &g107, - &g108, - &g109, - &g110, - &g111, - &g112, - &g113, - &g114, - &g115, - &g116, - &g117, - &g118, - &g119, - &g120, - &g121, - &g122, - &g123, - &g124, - &g125, - &g126, - &g000, /* 127 */ - &g000, /* 128 */ - &g000, /* 129 */ - &g130, - &g000, /* 131 */ - &g000, /* 132 */ - &g000, /* 133 */ - &g000, /* 134 */ - &g000, /* 135 */ - &g000, /* 136 */ - &g000, /* 137 */ - &g000, /* 138 */ - &g000, /* 139 */ - &g000, /* 140 */ - &g000, /* 141 */ - &g000, /* 142 */ - &g000, /* 143 */ - &g000, /* 144 */ - &g000, /* 145 */ - &g000, /* 146 */ - &g000, /* 147 */ - &g000, /* 148 */ - &g000, /* 149 */ - &g000, /* 150 */ - &g000, /* 151 */ - &g000, /* 152 */ - &g000, /* 153 */ - &g000, /* 154 */ - &g000, /* 155 */ - &g000, /* 156 */ - &g000, /* 157 */ - &g000, /* 158 */ - &g000, /* 159 */ - &g160, - &g161, - &g162, - &g163, - &g164, - &g165, - &g166, - &g167, - &g168, - &g000, /* 169 */ - &g000, /* 170 */ - &g000, /* 171 */ - &g000, /* 172 */ - &g173, - &g000, /* 174 */ - &g000, /* 175 */ - &g176, - &g177, - &g178, - &g179, - &g180, - &g000, /* 181 */ - &g000, /* 182 */ - &g000, /* 183 */ - &g000, /* 184 */ - &g180, /* 185 */ - &g179, /* 186 */ - &g191, /* 187 */ - &g217, /* 188 */ - &g000, /* 189 */ - &g000, /* 190 */ - &g191, - &g192, - &g193, - &g194, - &g195, - &g196, - &g197, - &g000, /* 198 */ - &g000, /* 199 */ - &g192, /* 200 */ - &g218, /* 201 */ - &g193, /* 202 */ - &g194, /* 203 */ - &g195, /* 204 */ - &g196, /* 205 */ - &g197, /* 206 */ - &g000, /* 207 */ - &g000, /* 208 */ - &g000, /* 209 */ - &g000, /* 210 */ - &g000, /* 211 */ - &g000, /* 212 */ - &g000, /* 213 */ - &g000, /* 214 */ - &g000, /* 215 */ - &g000, /* 216 */ - &g217, - &g218, - &g219, - &g220, - &g000, /* 221 */ - &g000, /* 222 */ - &g223, - &g000, /* 224 */ - &g000, /* 225 */ - &g000, /* 226 */ - &g000, /* 227 */ - &g000, /* 228 */ - &g000, /* 229 */ - &g000, /* 230 */ - &g000, /* 231 */ - &g000, /* 232 */ - &g000, /* 233 */ - &g000, /* 234 */ - &g000, /* 235 */ - &g000, /* 236 */ - &g000, /* 237 */ - &g000, /* 238 */ - &g000, /* 239 */ - &g000, /* 240 */ - &g000, /* 241 */ - &g000, /* 242 */ - &g000, /* 243 */ - &g000, /* 244 */ - &g000, /* 245 */ - &g000, /* 246 */ - &g000, /* 247 */ - &g000, /* 248 */ - &g000, /* 249 */ - &g000, /* 250 */ - &g000, /* 251 */ - &g000, /* 252 */ - &g000, /* 253 */ - &g000, /* 254 */ - &g000, /* 255 */ + +static const ssfGlyph g104 = { + 4, + {{SSF_BOX, 0, 8192, 8191, 12287, 0, 0}, + {SSF_BOX, 4096, 12288, 8191, 49151, 0, 0}, + {SSF_BOX, 8192, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 20480, 28672, 24575, 49151, 0, 0}} +}; + +static const ssfGlyph g105 = { + 4, + {{SSF_BOX, 12288, 8192, 16383, 12287, 0, 0}, + {SSF_BOX, 8192, 20480, 16383, 24575, 0, 0}, + {SSF_BOX, 12288, 24576, 16383, 45055, 0, 0}, + {SSF_BOX, 8192, 45056, 20479, 49151, 0, 0}} +}; + +static const ssfGlyph g106 = { + 5, + {{SSF_BOX, 16384, 16384, 20479, 20479, 0, 0}, + {SSF_BOX, 12288, 28672, 20479, 32767, 0, 0}, + {SSF_BOX, 16384, 32768, 20479, 57343, 0, 0}, + {SSF_BOX, 4096, 57344, 16383, 61439, 0, 0}, + {SSF_BOX, 0, 53248, 4095, 57343, 0, 0}} +}; + +static const ssfGlyph g107 = { + 7, + {{SSF_BOX, 0, 8192, 8191, 12287, 0, 0}, + {SSF_BOX, 4096, 12288, 8191, 45055, 0, 0}, + {SSF_BOX, 0, 45056, 8191, 49151, 0, 0}, + {SSF_LINE, 16384, 20480, 8192, 32767, 7168, THICK_RIGHT}, + {SSF_LINE, 8192, 32768, 16384, 49151, 7168, THICK_RIGHT}, + {SSF_BOX, 20480, 20480, 24575, 24575, 0, 0}, + {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}} +}; + +static const ssfGlyph g108 = { + 3, + {{SSF_BOX, 4096, 8192, 12287, 12287, 0, 0}, + {SSF_BOX, 8192, 12288, 12287, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} +}; + +static const ssfGlyph g109 = { + 5, + {{SSF_BOX, 0, 20480, 4095, 49151, 0, 0}, + {SSF_BOX, 4096, 20480, 12287, 24575, 0, 0}, + {SSF_BOX, 12288, 24576, 16383, 49151, 0, 0}, + {SSF_BOX, 16384, 20480, 24575, 24575, 0, 0}, + {SSF_BOX, 24576, 24576, 28671, 49151, 0, 0}} +}; + +static const ssfGlyph g110 = { + 6, + {{SSF_BOX, 0, 20480, 4095, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 8191, 49151, 0, 0}, + {SSF_BOX, 0, 45056, 4095, 49151, 0, 0}, + {SSF_BOX, 8192, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 49151, 0, 0}, + {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}} +}; + +static const ssfGlyph g111 = { + 4, + {{SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 45055, 0, 0}} +}; + +static const ssfGlyph g112 = { + 6, + {{SSF_BOX, 0, 57344, 8191, 61439, 0, 0}, + {SSF_BOX, 4096, 24576, 8191, 57343, 0, 0}, + {SSF_BOX, 0, 20480, 4095, 24575, 0, 0}, + {SSF_BOX, 8192, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 40959, 0, 0}, + {SSF_BOX, 8192, 40960, 20479, 45055, 0, 0}} +}; + +static const ssfGlyph g113 = { + 6, + {{SSF_BOX, 16384, 57344, 24575, 61439, 0, 0}, + {SSF_BOX, 16384, 24576, 20479, 57343, 0, 0}, + {SSF_BOX, 20480, 20480, 24575, 24575, 0, 0}, + {SSF_BOX, 4096, 20480, 16383, 24575, 0, 0}, + {SSF_BOX, 0, 24576, 4095, 40959, 0, 0}, + {SSF_BOX, 4096, 40960, 16383, 45055, 0, 0}} +}; + +static const ssfGlyph g114 = { + 4, + {{SSF_BOX, 0, 20480, 4095, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 8191, 45055, 0, 0}, + {SSF_BOX, 0, 45056, 8191, 49151, 0, 0}, + {SSF_BOX, 8192, 20480, 20479, 24575, 0, 0}} +}; + +static const ssfGlyph g115 = { + 5, + {{SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 0, 24576, 4095, 32767, 0, 0}, + {SSF_BOX, 4096, 32768, 20479, 36863, 0, 0}, + {SSF_BOX, 20480, 36864, 24575, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} +}; + +static const ssfGlyph g116 = { + 3, + {{SSF_BOX, 4094, 16384, 24575, 20479, 0, 0}, + {SSF_BOX, 12288, 8192, 16383, 45055, 0, 0}, + {SSF_BOX, 16384, 45056, 24575, 49151, 0, 0}} +}; + +static const ssfGlyph g117 = { + 6, + {{SSF_BOX, 0, 20480, 8191, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 8191, 45055, 0, 0}, + {SSF_BOX, 8192, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 20480, 20480, 28671, 24575, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 45055, 0, 0}, + {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}} +}; + +static const ssfGlyph g118 = { + 4, + {{SSF_BOX, 0, 20480, 4095, 36863, 0, 0}, + {SSF_LINE, 12287, 49151, 0, 36864, 7168, THICK_UP}, + {SSF_LINE, 12288, 49151, 24575, 36864, 7168, THICK_UP}, + {SSF_BOX, 20480, 20480, 24575, 36863, 0, 0}} +}; + +static const ssfGlyph g119 = { + 4, + {{SSF_BOX, 0, 20480, 4095, 49151, 0, 0}, + {SSF_LINE, 4096, 49151, 12287, 32768, 7168, THICK_UP}, + {SSF_LINE, 12288, 32768, 20479, 49151, 7168, THICK_UP}, + {SSF_BOX, 20480, 20480, 24575, 49151, 0, 0}} +}; + +static const ssfGlyph g120 = { + 2, + {{SSF_LINE, 0, 20480, 16384, 49151, 7168, THICK_RIGHT}, + {SSF_LINE, 16384, 20480, 0, 49151, 7168, THICK_RIGHT}} +}; + +static const ssfGlyph g121 = { + 2, + {{SSF_LINE, 0, 61439, 16384, 20480, 7168, THICK_RIGHT}, + {SSF_LINE, 0, 20480, 8191, 40959, 7168, THICK_RIGHT}} +}; + +static const ssfGlyph g122 = { + 3, + {{SSF_BOX, 0, 20480, 24575, 24575, 0, 0}, + {SSF_LINE, 16384, 24576, 0, 45055, 7168, THICK_RIGHT}, + {SSF_BOX, 0, 45056, 24575, 49151, 0, 0}} +}; + +static const ssfGlyph g123 = { + 5, + {{SSF_BOX, 12288, 4096, 20479, 8191, 0, 0}, + {SSF_BOX, 8192, 8192, 12287, 28761, 0, 0}, + {SSF_BOX, 0, 28672, 8191, 32767, 0, 0}, + {SSF_BOX, 8192, 32768, 12287, 49151, 0, 0}, + {SSF_BOX, 12288, 49152, 20479, 53247, 0, 0}} +}; + +static const ssfGlyph g124 = { + 2, + {{SSF_BOX, 12288, 4096, 16383, 24575, 0, 0}, + {SSF_BOX, 12288, 32768, 16383, 53247, 0, 0}} +}; + +static const ssfGlyph g125 = { + 5, + {{SSF_BOX, 4096, 4096, 12287, 8191, 0, 0}, + {SSF_BOX, 12288, 8192, 16383, 28671, 0, 0}, + {SSF_BOX, 16384, 28672, 24575, 32767, 0, 0}, + {SSF_BOX, 12288, 32768, 16383, 49151, 0, 0}, + {SSF_BOX, 4096, 49152, 12287, 53247, 0, 0}} +}; + +static const ssfGlyph g126 = { + 4, + {{SSF_BOX, 0, 28672, 4095, 32767, 0, 0}, + {SSF_BOX, 4096, 24576, 12287, 28761, 0, 0}, + {SSF_BOX, 12288, 28672, 20479, 32767, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 28671, 0, 0}} +}; + +static const ssfGlyph g130 = { + 6, + {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, + {SSF_BOX, 4096, 32768, 20479, 36863, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 32767, 0, 0}, + {SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}} +}; + +static const ssfGlyph g160 = { + 7, + {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, + {SSF_BOX, 4096, 20480, 16383, 24575, 0, 0}, + {SSF_BOX, 16384, 24576, 20479, 45055, 0, 0}, + {SSF_BOX, 20480, 45056, 24575, 49151, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}, + {SSF_BOX, 0, 36864, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 32768, 16383, 36863, 0, 0}} +}; + +static const ssfGlyph g161 = { + 4, + {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, + {SSF_BOX, 4096, 20480, 12287, 24575, 0, 0}, + {SSF_BOX, 8192, 24576, 12287, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 16383, 49151, 0, 0}} +}; + +static const ssfGlyph g162 = { + 5, + {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, + {SSF_BOX, 4096, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 0, 24576, 4095, 45055, 0, 0}, + {SSF_BOX, 4096, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 45055, 0, 0}} +}; + +static const ssfGlyph g163 = { + 7, + {{SSF_LINE, 8192, 16383, 16384, 8192, 7168, THICK_RIGHT}, + {SSF_BOX, 0, 20480, 8191, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 8191, 45055, 0, 0}, + {SSF_BOX, 8192, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 20480, 20480, 28671, 24575, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 45055, 0, 0}, + {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}} +}; + +static const ssfGlyph g164 = { + 10, + {{SSF_BOX, 0, 12288, 4095, 16383, 0, 0}, + {SSF_BOX, 4096, 8192, 12287, 12287, 0, 0}, + {SSF_BOX, 12288, 12288, 20479, 16383, 0, 0}, + {SSF_BOX, 20480, 8192, 24575, 12287, 0, 0}, + {SSF_BOX, 0, 20480, 4095, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 8191, 49151, 0, 0}, + {SSF_BOX, 0, 45056, 4095, 49151, 0, 0}, + {SSF_BOX, 8192, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 49151, 0, 0}, + {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}} +}; + +static const ssfGlyph g165 = { + 7, + {{SSF_BOX, 0, 12288, 4095, 49151, 0, 0}, + {SSF_LINE, 0, 12288, 20575, 45055, 4096, THICK_RIGHT}, + {SSF_BOX, 20480, 12288, 24575, 49151, 0, 0}, + {SSF_BOX, 0, 4096, 4095, 8191, 0, 0}, + {SSF_BOX, 4096, 0, 12287, 4095, 0, 0}, + {SSF_BOX, 12288, 4096, 20479, 8191, 0, 0}, + {SSF_BOX, 20480, 0, 24575, 4095, 0, 0}} +}; + +static const ssfGlyph g166 = { + 6, + {{SSF_BOX, 4096, 20480, 8191, 24575, 0, 0}, + {SSF_BOX, 8192, 8192, 16383, 12287, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 24575, 0, 0}, + {SSF_BOX, 8192, 16384, 16383, 20479, 0, 0}, + {SSF_BOX, 4096, 28672, 20480, 32767, 0, 0}, + {SSF_BOX, 8192, 24576, 16383, 28671, 0, 0}} +}; + +static const ssfGlyph g168 = { + 8, + {{SSF_BOX, 12288, 16384, 16383, 20479, 0, 0}, + {SSF_BOX, 12288, 28672, 16383, 32767, 0, 0}, + {SSF_BOX, 8192, 32768, 12287, 36863, 0, 0}, + {SSF_BOX, 4096, 36864, 8191, 40959, 0, 0}, + {SSF_BOX, 0, 40960, 4095, 49151, 0, 0}, + {SSF_BOX, 4096, 49152, 8191, 53247, 0, 0}, + {SSF_BOX, 8192, 53248, 20479, 57343, 0, 0}, + {SSF_BOX, 20480, 49152, 24575, 53247, 0, 0}} +}; + +static const ssfGlyph g173 = { + 4, + {{SSF_BOX, 12288, 16384, 16383, 20479, 0, 0}, + {SSF_BOX, 8192, 36864, 12287, 53247, 0, 0}, + {SSF_BOX, 12288, 28672, 16383, 57343, 0, 0}, + {SSF_BOX, 16384, 36864, 20479, 53247, 0, 0}} +}; + +static const ssfGlyph g167 = { + 5, + {{SSF_BOX, 4096, 12288, 8191, 20479, 0, 0}, + {SSF_BOX, 8192, 8192, 16383, 12287, 0, 0}, + {SSF_BOX, 16384, 12288, 20479, 20479, 0, 0}, + {SSF_BOX, 8192, 20480, 16383, 24575, 0, 0}, + {SSF_BOX, 4096, 28672, 20480, 32767, 0, 0}} +}; + +static const ssfGlyph g176 = { + 32, + {{SSF_BOX, 0, 0, 4095, 4095, 0, 0}, + {SSF_BOX, 16384, 0, 20479, 4095, 0, 0}, + {SSF_BOX, 8192, 4096, 12287, 8191, 0, 0}, + {SSF_BOX, 24576, 4096, 28671, 8191, 0, 0}, + {SSF_BOX, 0, 8192, 4095, 12287, 0, 0}, + {SSF_BOX, 16384, 8192, 20479, 12287, 0, 0}, + {SSF_BOX, 8192, 12288, 12287, 16383, 0, 0}, + {SSF_BOX, 24576, 12288, 28671, 16383, 0, 0}, + {SSF_BOX, 0, 16384, 4095, 20479, 0, 0}, + {SSF_BOX, 16384, 16384, 20479, 20479, 0, 0}, + {SSF_BOX, 8192, 20480, 12287, 24575, 0, 0}, + {SSF_BOX, 24576, 20480, 28671, 24575, 0, 0}, + {SSF_BOX, 0, 24576, 4095, 28671, 0, 0}, + {SSF_BOX, 16384, 24576, 20479, 28671, 0, 0}, + {SSF_BOX, 8192, 28672, 12287, 32767, 0, 0}, + {SSF_BOX, 24576, 28672, 28671, 32767, 0, 0}, + {SSF_BOX, 0, 32768, 4095, 36863, 0, 0}, + {SSF_BOX, 16384, 32768, 20479, 36863, 0, 0}, + {SSF_BOX, 8192, 36864, 12287, 40959, 0, 0}, + {SSF_BOX, 24576, 36864, 28671, 40959, 0, 0}, + {SSF_BOX, 0, 40960, 4095, 45055, 0, 0}, + {SSF_BOX, 16384, 40960, 20479, 45055, 0, 0}, + {SSF_BOX, 8192, 45056, 12287, 49151, 0, 0}, + {SSF_BOX, 24576, 45056, 28671, 49151, 0, 0}, + {SSF_BOX, 0, 49152, 4095, 53247, 0, 0}, + {SSF_BOX, 16384, 49152, 20479, 53247, 0, 0}, + {SSF_BOX, 8192, 53248, 12287, 57343, 0, 0}, + {SSF_BOX, 24576, 53248, 28671, 57343, 0, 0}, + {SSF_BOX, 0, 57344, 4095, 61439, 0, 0}, + {SSF_BOX, 16384, 57344, 20479, 61439, 0, 0}, + {SSF_BOX, 8192, 61440, 12287, 65535, 0, 0}, + {SSF_BOX, 24576, 61440, 28671, 65535, 0, 0}} +}; + +static const ssfGlyph g177 = { + 16, + {{SSF_BOX, 0, 0, 8191, 8191, 0, 0}, + {SSF_BOX, 16384, 0, 24575, 8191, 0, 0}, + {SSF_BOX, 8192, 8192, 16383, 16383, 0, 0}, + {SSF_BOX, 24576, 8192, 32767, 16383, 0, 0}, + {SSF_BOX, 0, 16384, 8191, 24575, 0, 0}, + {SSF_BOX, 16384, 16384, 24575, 24575, 0, 0}, + {SSF_BOX, 8192, 24576, 16383, 32767, 0, 0}, + {SSF_BOX, 24576, 24576, 32767, 32767, 0, 0}, + {SSF_BOX, 0, 32768, 8191, 40959, 0, 0}, + {SSF_BOX, 16384, 32768, 24575, 40959, 0, 0}, + {SSF_BOX, 8192, 40960, 16383, 49151, 0, 0}, + {SSF_BOX, 24576, 40960, 32767, 49151, 0, 0}, + {SSF_BOX, 0, 49152, 8191, 57343, 0, 0}, + {SSF_BOX, 16384, 49152, 24575, 57343, 0, 0}, + {SSF_BOX, 8192, 57344, 16383, 65535, 0, 0}, + {SSF_BOX, 24576, 57344, 32767, 65535, 0, 0}} +}; + +static const ssfGlyph g178 = { + 32, + {{SSF_BOX, 4096, 0, 16383, 4095, 0, 0}, + {SSF_BOX, 20480, 0, 24575, 4095, 0, 0}, + {SSF_BOX, 0, 4096, 8191, 8191, 0, 0}, + {SSF_BOX, 12288, 4096, 20479, 8191, 0, 0}, + {SSF_BOX, 4096, 8192, 16383, 12287, 0, 0}, + {SSF_BOX, 20480, 8192, 24575, 12287, 0, 0}, + {SSF_BOX, 0, 12288, 8191, 16383, 0, 0}, + {SSF_BOX, 12288, 12288, 20479, 16383, 0, 0}, + {SSF_BOX, 4096, 16384, 16383, 20479, 0, 0}, + {SSF_BOX, 20480, 16384, 24575, 20479, 0, 0}, + {SSF_BOX, 0, 20480, 8191, 24575, 0, 0}, + {SSF_BOX, 12288, 20480, 20479, 24575, 0, 0}, + {SSF_BOX, 4096, 24576, 16383, 28671, 0, 0}, + {SSF_BOX, 20480, 24576, 24575, 28671, 0, 0}, + {SSF_BOX, 0, 28672, 8191, 32767, 0, 0}, + {SSF_BOX, 12288, 28672, 20479, 32767, 0, 0}, + {SSF_BOX, 4096, 32768, 16383, 36863, 0, 0}, + {SSF_BOX, 20480, 32768, 24575, 36863, 0, 0}, + {SSF_BOX, 0, 36864, 8191, 40959, 0, 0}, + {SSF_BOX, 12288, 36864, 20479, 40959, 0, 0}, + {SSF_BOX, 4096, 40960, 16383, 45055, 0, 0}, + {SSF_BOX, 20480, 40960, 24575, 45055, 0, 0}, + {SSF_BOX, 0, 45056, 8191, 49151, 0, 0}, + {SSF_BOX, 12288, 45056, 20479, 49151, 0, 0}, + {SSF_BOX, 4096, 49152, 16383, 53247, 0, 0}, + {SSF_BOX, 20480, 49152, 24575, 53247, 0, 0}, + {SSF_BOX, 0, 53248, 8191, 57343, 0, 0}, + {SSF_BOX, 12288, 53248, 20479, 57343, 0, 0}, + {SSF_BOX, 4096, 57344, 16383, 61439, 0, 0}, + {SSF_BOX, 20480, 57344, 24575, 61439, 0, 0}, + {SSF_BOX, 0, 61440, 8191, 65535, 0, 0}, + {SSF_BOX, 12288, 61440, 20479, 65535, 0, 0}} +}; + +static const ssfGlyph g179 = { + 1, + {{SSF_BOX, 12288, 0, 20479, 65535, 0, 0}} +}; + +static const ssfGlyph g180 = { + 2, + {{SSF_BOX, 12288, 0, 20479, 65535, 0, 0}, + {SSF_BOX, 0, 24576, 12287, 32767, 0, 0}} +}; + +static const ssfGlyph g191 = { + 2, + {{SSF_BOX, 0, 24576, 20479, 32767, 0, 0}, + {SSF_BOX, 12288, 32768, 20479, 65535, 0, 0}} +}; + +static const ssfGlyph g192 = { + 2, + {{SSF_BOX, 12288, 0, 20479, 32767, 0, 0}, + {SSF_BOX, 20480, 24576, 32767, 32767, 0, 0}} +}; + +static const ssfGlyph g193 = { + 2, + {{SSF_BOX, 0, 24576, 32767, 32767, 0, 0}, + {SSF_BOX, 12288, 0, 20479, 24575, 0, 0}} +}; + +static const ssfGlyph g194 = { + 2, + {{SSF_BOX, 0, 24576, 32767, 32767, 0, 0}, + {SSF_BOX, 12288, 32768, 20479, 65535, 0, 0}} +}; + +static const ssfGlyph g195 = { + 2, + {{SSF_BOX, 12288, 0, 20479, 65535, 0, 0}, + {SSF_BOX, 20480, 24576, 32767, 32767, 0, 0}} +}; + +static const ssfGlyph g196 = { + 1, + {{SSF_BOX, 0, 24576, 32767, 32767, 0, 0}} +}; + +static const ssfGlyph g197 = { + 2, + {{SSF_BOX, 12288, 0, 20479, 65535, 0, 0}, + {SSF_BOX, 0, 24576, 32767, 32767, 0, 0}} +}; + +static const ssfGlyph g217 = { + 2, + {{SSF_BOX, 0, 24576, 20479, 32767, 0, 0}, + {SSF_BOX, 12288, 0, 20479, 24575, 0, 0}} +}; + +static const ssfGlyph g218 = { + 2, + {{SSF_BOX, 12288, 24576, 20479, 65535, 0, 0}, + {SSF_BOX, 20480, 24576, 32767, 32767, 0, 0}} +}; + +static const ssfGlyph g219 = { + 1, + {{SSF_BOX, 0, 0, 32767, 65535, 0, 0}} +}; + +static const ssfGlyph g220 = { + 1, + {{SSF_BOX, 0, 32768, 32767, 65535, 0, 0}} +}; + +static const ssfGlyph g223 = { + 1, + {{SSF_BOX, 0, 0, 32767, 32767, 0, 0}} +}; + +static const ssfGlyph *s_ssfFixedThinChars[] = { + &g000, + &g000, /* 1 */ + &g000, /* 2 */ + &g000, /* 3 */ + &g000, /* 4 */ + &g000, /* 5 */ + &g000, /* 6 */ + &g000, /* 7 */ + &g000, /* 8 */ + &g000, /* 9 */ + &g000, /* 10 */ + &g000, /* 11 */ + &g000, /* 12 */ + &g000, /* 13 */ + &g000, /* 14 */ + &g000, /* 15 */ + &g016, + &g017, + &g000, /* 18 */ + &g000, /* 19 */ + &g000, /* 20 */ + &g000, /* 21 */ + &g000, /* 22 */ + &g000, /* 23 */ + &g000, /* 24 */ + &g000, /* 25 */ + &g000, /* 26 */ + &g000, /* 27 */ + &g000, /* 28 */ + &g000, /* 29 */ + &g030, + &g031, + &g032, + &g033, + &g034, + &g035, + &g036, + &g037, + &g038, + &g039, + &g040, + &g041, + &g042, + &g043, + &g044, + &g045, + &g046, + &g047, + &g048, + &g049, + &g050, + &g051, + &g052, + &g053, + &g054, + &g055, + &g056, + &g057, + &g058, + &g059, + &g060, + &g061, + &g062, + &g063, + &g064, + &g065, + &g066, + &g067, + &g068, + &g069, + &g070, + &g071, + &g072, + &g073, + &g074, + &g075, + &g076, + &g077, + &g078, + &g079, + &g080, + &g081, + &g082, + &g083, + &g084, + &g085, + &g086, + &g087, + &g088, + &g089, + &g090, + &g091, + &g092, + &g093, + &g094, + &g095, + &g096, + &g097, + &g098, + &g099, + &g100, + &g101, + &g102, + &g103, + &g104, + &g105, + &g106, + &g107, + &g108, + &g109, + &g110, + &g111, + &g112, + &g113, + &g114, + &g115, + &g116, + &g117, + &g118, + &g119, + &g120, + &g121, + &g122, + &g123, + &g124, + &g125, + &g126, + &g000, /* 127 */ + &g000, /* 128 */ + &g000, /* 129 */ + &g130, + &g000, /* 131 */ + &g000, /* 132 */ + &g000, /* 133 */ + &g000, /* 134 */ + &g000, /* 135 */ + &g000, /* 136 */ + &g000, /* 137 */ + &g000, /* 138 */ + &g000, /* 139 */ + &g000, /* 140 */ + &g000, /* 141 */ + &g000, /* 142 */ + &g000, /* 143 */ + &g000, /* 144 */ + &g000, /* 145 */ + &g000, /* 146 */ + &g000, /* 147 */ + &g000, /* 148 */ + &g000, /* 149 */ + &g000, /* 150 */ + &g000, /* 151 */ + &g000, /* 152 */ + &g000, /* 153 */ + &g000, /* 154 */ + &g000, /* 155 */ + &g000, /* 156 */ + &g000, /* 157 */ + &g000, /* 158 */ + &g000, /* 159 */ + &g160, + &g161, + &g162, + &g163, + &g164, + &g165, + &g166, + &g167, + &g168, + &g000, /* 169 */ + &g000, /* 170 */ + &g000, /* 171 */ + &g000, /* 172 */ + &g173, + &g000, /* 174 */ + &g000, /* 175 */ + &g176, + &g177, + &g178, + &g179, + &g180, + &g000, /* 181 */ + &g000, /* 182 */ + &g000, /* 183 */ + &g000, /* 184 */ + &g180, /* 185 */ + &g179, /* 186 */ + &g191, /* 187 */ + &g217, /* 188 */ + &g000, /* 189 */ + &g000, /* 190 */ + &g191, + &g192, + &g193, + &g194, + &g195, + &g196, + &g197, + &g000, /* 198 */ + &g000, /* 199 */ + &g192, /* 200 */ + &g218, /* 201 */ + &g193, /* 202 */ + &g194, /* 203 */ + &g195, /* 204 */ + &g196, /* 205 */ + &g197, /* 206 */ + &g000, /* 207 */ + &g000, /* 208 */ + &g000, /* 209 */ + &g000, /* 210 */ + &g000, /* 211 */ + &g000, /* 212 */ + &g000, /* 213 */ + &g000, /* 214 */ + &g000, /* 215 */ + &g000, /* 216 */ + &g217, + &g218, + &g219, + &g220, + &g000, /* 221 */ + &g000, /* 222 */ + &g223, + &g000, /* 224 */ + &g000, /* 225 */ + &g000, /* 226 */ + &g000, /* 227 */ + &g000, /* 228 */ + &g000, /* 229 */ + &g000, /* 230 */ + &g000, /* 231 */ + &g000, /* 232 */ + &g000, /* 233 */ + &g000, /* 234 */ + &g000, /* 235 */ + &g000, /* 236 */ + &g000, /* 237 */ + &g000, /* 238 */ + &g000, /* 239 */ + &g000, /* 240 */ + &g000, /* 241 */ + &g000, /* 242 */ + &g000, /* 243 */ + &g000, /* 244 */ + &g000, /* 245 */ + &g000, /* 246 */ + &g000, /* 247 */ + &g000, /* 248 */ + &g000, /* 249 */ + &g000, /* 250 */ + &g000, /* 251 */ + &g000, /* 252 */ + &g000, /* 253 */ + &g000, /* 254 */ + &g000, /* 255 */ }; diff --git a/harbour/source/rtl/gtalleg/gtalleg.c b/harbour/source/rtl/gtalleg/gtalleg.c index 7afb5a10a6..d0f3d586ab 100644 --- a/harbour/source/rtl/gtalleg/gtalleg.c +++ b/harbour/source/rtl/gtalleg/gtalleg.c @@ -71,24 +71,46 @@ static HB_GT_FUNCS SuperTable; #define HB_GTSUPER (&SuperTable) #define HB_GTID_PTR (&s_GtId) + static BOOL s_fInit; static BOOL s_fMakeInit; static BOOL s_fGtError; +/* font definition */ static ssfFont s_ssfDefaultFont; +static BYTE s_byFontSize = 16; +static int s_byFontWidth = 8; -static int s_iMsButtons, s_iMSBoundTop, s_iMSBoundLeft, s_iMSBoundBottom, s_iMSBoundRight; -static int s_iMSX, s_iMSY; -static BYTE s_byMSButtons; -static int s_iScrWidth = 80, s_iScrHeight = 25; -static int s_iGFXWidth = 0, s_iGFXHeight = 0; -static int s_iGFXUpdTop, s_iGFXUpdLeft, s_iGFXUpdBottom, s_iGFXUpdRight; -static int s_iCTop, s_iCLeft, s_iCBottom, s_iCRight; -static int s_iCurCol, s_iCurRow; +/* mouse parameters */ +static int s_iMsButtons; +static int s_mouseButtonsState; +static HB_GT_RECT s_mouseBound; +static HB_GT_CORD s_mousePos; + +/* screen size in characters */ +static int s_iScrWidth = 80; +static int s_iScrHeight = 25; +/* screen size in pixels */ +static int s_iGFXWidth = 0; +static int s_iGFXHeight = 0; + +/* update region in pixels */ +static HB_GT_RECT s_GFXUpd; + +/* current CLIP region in pixels (modified by GFX_SETCLIP) */ +static HB_GT_RECT s_CLIP; + +/* cursor position and style */ +static int s_iCurCol; +static int s_iCurRow; static int s_iCursorStyle; + +/* color indexes */ static int s_pClr[16]; -static BYTE s_byFontSize = 16, s_byFontWidth = 8; -static AL_BITMAP * bmp = NULL; + +/* screen buffer bitmap */ +static AL_BITMAP * s_bmp = NULL; + /* * I'm not sure of removing these (yet) @@ -100,6 +122,7 @@ static AL_BITMAP * bmp = NULL; #define s_iHBorder 0 #define s_iVBorder 0 + typedef struct { int al_key; int xhb_key; @@ -107,7 +130,7 @@ typedef struct { #define GT_KEY_TABLE_SIZE 49 -static const gtAllegKey sKeyTable[GT_KEY_TABLE_SIZE] = { +static const gtAllegKey s_KeyTable[GT_KEY_TABLE_SIZE] = { {AL_KEY_ESC, K_ESC}, {AL_KEY_INSERT, K_INS}, {AL_KEY_HOME, K_HOME}, @@ -161,7 +184,7 @@ static const gtAllegKey sKeyTable[GT_KEY_TABLE_SIZE] = { #define GT_CTRL_TABLE_SIZE 11 -static const gtAllegKey sCtrlTable[GT_CTRL_TABLE_SIZE] = { +static const gtAllegKey s_CtrlTable[GT_CTRL_TABLE_SIZE] = { {AL_KEY_LEFT, K_CTRL_LEFT}, {AL_KEY_RIGHT, K_CTRL_RIGHT}, {AL_KEY_UP, K_CTRL_UP}, @@ -175,10 +198,10 @@ static const gtAllegKey sCtrlTable[GT_CTRL_TABLE_SIZE] = { {AL_KEY_PGDN, K_CTRL_PGDN} }; -#define GT_UPD_GFXRECT(t,l,b,r) do { if( t < s_iGFXUpdTop ) s_iGFXUpdTop = t; \ - if( l < s_iGFXUpdLeft ) s_iGFXUpdLeft = l; \ - if( b > s_iGFXUpdBottom ) s_iGFXUpdBottom=b; \ - if( r > s_iGFXUpdRight ) s_iGFXUpdRight=r; \ +#define GT_UPD_GFXRECT(t,l,b,r) do { if( t < s_GFXUpd.iTop ) s_GFXUpd.iTop = t; \ + if( l < s_GFXUpd.iLeft ) s_GFXUpd.iLeft = l; \ + if( b > s_GFXUpd.iBottom ) s_GFXUpd.iBottom = b; \ + if( r > s_GFXUpd.iRight ) s_GFXUpd.iRight = r; \ } while(0) #define GT_SCREENINIT() do { if( !s_fInit ) \ hb_gt_alleg_InitializeScreen( pGT, s_iScrHeight, s_iScrWidth, TRUE ); \ @@ -239,7 +262,7 @@ static void hb_gt_alleg_DoCursor( int iRow, int iCol, int iStyle ) &iTop, &iLeft, &iBottom, &iRight ) ) { al_scare_mouse_area( iLeft, iTop, iRight, iBottom ); - al_blit( bmp, al_screen, iLeft, iTop, iLeft, iTop, iRight - iLeft + 1, iBottom - iTop + 1 ); + al_blit( s_bmp, al_screen, iLeft, iTop, iLeft, iTop, iRight - iLeft + 1, iBottom - iTop + 1 ); al_unscare_mouse(); } /* Show the new one */ @@ -266,7 +289,8 @@ static void hb_gt_alleg_ScreenUpdate( PHB_GT pGT ) HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_ScreenUpdate(%p)", pGT)); HB_GTSELF_GETSCRCURSOR( pGT, &iRow, &iCol, &iStyle ); - fPix = s_iGFXUpdTop <= s_iGFXUpdBottom && s_iGFXUpdLeft <= s_iGFXUpdRight; + fPix = s_GFXUpd.iTop <= s_GFXUpd.iBottom && + s_GFXUpd.iLeft <= s_GFXUpd.iRight; fCursor = s_iCurRow != iRow || s_iCurCol != iCol || s_iCursorStyle != iStyle; if( fPix || fCursor ) @@ -275,8 +299,12 @@ static void hb_gt_alleg_ScreenUpdate( PHB_GT pGT ) if( fPix ) { - al_scare_mouse_area( s_iGFXUpdLeft, s_iGFXUpdTop, s_iGFXUpdRight, s_iGFXUpdBottom ); - al_blit( bmp, al_screen, s_iGFXUpdLeft, s_iGFXUpdTop, s_iGFXUpdLeft, s_iGFXUpdTop, s_iGFXUpdRight - s_iGFXUpdLeft + 1, s_iGFXUpdBottom - s_iGFXUpdTop + 1 ); + al_scare_mouse_area( s_GFXUpd.iLeft, s_GFXUpd.iTop, + s_GFXUpd.iRight, s_GFXUpd.iBottom ); + al_blit( s_bmp, al_screen, s_GFXUpd.iLeft, s_GFXUpd.iTop, + s_GFXUpd.iLeft, s_GFXUpd.iTop, + s_GFXUpd.iRight - s_GFXUpd.iLeft + 1, + s_GFXUpd.iBottom - s_GFXUpd.iTop + 1 ); al_unscare_mouse(); } if( fCursor ) @@ -285,10 +313,10 @@ static void hb_gt_alleg_ScreenUpdate( PHB_GT pGT ) } al_release_screen(); - s_iGFXUpdTop = s_iScrHeight * s_byFontSize; - s_iGFXUpdLeft = s_iScrWidth * s_byFontWidth; - s_iGFXUpdBottom = 0; - s_iGFXUpdRight = 0; + s_GFXUpd.iTop = s_iScrHeight * s_byFontSize; + s_GFXUpd.iLeft = s_iScrWidth * s_byFontWidth; + s_GFXUpd.iBottom = 0; + s_GFXUpd.iRight = 0; } } @@ -308,8 +336,8 @@ static BOOL hb_gt_alleg_InitializeScreen( PHB_GT pGT, int iRows, int iCols, BOOL if( lPrev ) { - al_destroy_bitmap(bmp); - bmp = NULL; + al_destroy_bitmap(s_bmp); + s_bmp = NULL; } if( s_iGFXWidth != 0 && s_iGFXHeight != 0 ) @@ -414,11 +442,11 @@ static BOOL hb_gt_alleg_InitializeScreen( PHB_GT pGT, int iRows, int iCols, BOOL } s_fInit = TRUE; - s_iMSBoundLeft = 0; - s_iMSBoundTop = 0; - s_iMSBoundRight = AL_SCREEN_W - 1; - s_iMSBoundBottom = AL_SCREEN_H - 1; - s_byMSButtons = (BYTE) al_mouse_b; + s_mouseBound.iLeft = 0; + s_mouseBound.iTop = 0; + s_mouseBound.iRight = AL_SCREEN_W - 1; + s_mouseBound.iBottom = AL_SCREEN_H - 1; + s_mouseButtonsState = al_mouse_b; al_show_mouse(al_screen); s_iScrWidth = iCols; s_iScrHeight = iRows; @@ -456,16 +484,16 @@ static BOOL hb_gt_alleg_InitializeScreen( PHB_GT pGT, int iRows, int iCols, BOOL s_byFontWidth = s_byFontSize / 2; } - s_iMSX = al_mouse_x / s_byFontWidth; - s_iMSY = al_mouse_y / s_byFontSize; - s_iGFXUpdTop = s_iScrHeight; - s_iGFXUpdLeft = s_iScrWidth; - s_iGFXUpdBottom = 0; - s_iGFXUpdRight = 0; - s_iCTop = 0; - s_iCLeft = 0; - s_iCBottom = AL_SCREEN_H - 1; - s_iCRight = AL_SCREEN_W - 1; + s_mousePos.iCol = al_mouse_x / s_byFontWidth; + s_mousePos.iRow = al_mouse_y / s_byFontSize; + s_GFXUpd.iTop = s_iScrHeight; + s_GFXUpd.iLeft = s_iScrWidth; + s_GFXUpd.iBottom = 0; + s_GFXUpd.iRight = 0; + s_CLIP.iTop = 0; + s_CLIP.iLeft = 0; + s_CLIP.iBottom = AL_SCREEN_H - 1; + s_CLIP.iRight = AL_SCREEN_W - 1; s_iCurCol = 0; s_iCurRow = 0; s_iCursorStyle = SC_NONE; @@ -487,11 +515,11 @@ static BOOL hb_gt_alleg_InitializeScreen( PHB_GT pGT, int iRows, int iCols, BOOL s_pClr[14] = al_make_color(0xFF, 0xFF, 0x55); /* yellow */ s_pClr[15] = al_make_color(0xFF, 0xFF, 0xFF); /* bright white */ - bmp = al_create_system_bitmap(AL_SCREEN_W, AL_SCREEN_H); - if( bmp == NULL ) + s_bmp = al_create_system_bitmap(AL_SCREEN_W, AL_SCREEN_H); + if( s_bmp == NULL ) { - bmp = al_create_bitmap(AL_SCREEN_W, AL_SCREEN_H); - if( bmp == NULL ) + s_bmp = al_create_bitmap(AL_SCREEN_W, AL_SCREEN_H); + if( s_bmp == NULL ) { hb_gt_alleg_Error( "Could not allocate double buffer bitmap" ); } @@ -500,7 +528,7 @@ static BOOL hb_gt_alleg_InitializeScreen( PHB_GT pGT, int iRows, int iCols, BOOL if( !lClearInit ) { BYTE bColor = s_pClr[ ( HB_GTSELF_GETCLEARCOLOR( pGT ) >> 4 ) & 0x0f ]; - al_clear_to_color( bmp, bColor ); + al_clear_to_color( s_bmp, bColor ); al_clear_to_color( al_screen, bColor ); } @@ -548,10 +576,10 @@ static void hb_gt_alleg_Exit( PHB_GT pGT ) HB_GTSUPER_EXIT( pGT ); - if( bmp ) + if( s_bmp ) { - al_destroy_bitmap( bmp ); - bmp = NULL; + al_destroy_bitmap( s_bmp ); + s_bmp = NULL; } } @@ -577,10 +605,12 @@ static BOOL hb_gt_alleg_SetMode( PHB_GT pGT, int iRows, int iCols ) static int hb_gt_alleg_ReadKey( PHB_GT pGT, int iEventMask ) { int nKey = 0; - int i, iMSX, iMSY; + int i, iMseCol, iMseRow; HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_ReadKey(%p,%d)", pGT, iEventMask)); + HB_SYMBOL_UNUSED( iEventMask ); + GT_SCREENINIT(); if( al_mouse_needs_poll() ) @@ -588,73 +618,43 @@ static int hb_gt_alleg_ReadKey( PHB_GT pGT, int iEventMask ) al_poll_mouse(); } - iMSX = al_mouse_x / s_byFontWidth; - iMSY = al_mouse_y / s_byFontSize; - if( iMSX != s_iMSX || iMSY != s_iMSY ) + iMseCol = al_mouse_x / s_byFontWidth; + iMseRow = al_mouse_y / s_byFontSize; + if( iMseCol != s_mousePos.iCol || iMseRow != s_mousePos.iRow ) { - s_iMSX = iMSX; - s_iMSY = iMSY; - if( iEventMask & INKEY_MOVE ) - { - nKey = K_MOUSEMOVE; - } + s_mousePos.iCol = iMseCol; + s_mousePos.iRow = iMseRow; + nKey = K_MOUSEMOVE; } - if( nKey == 0 && ( BYTE ) al_mouse_b != s_byMSButtons ) + if( nKey == 0 && al_mouse_b != s_mouseButtonsState ) { - if( ( al_mouse_b & 1 ) != ( s_byMSButtons & 1 ) ) + if( ( al_mouse_b & 1 ) != ( s_mouseButtonsState & 1 ) ) { if( al_mouse_b & 1 ) - { - if( iEventMask & INKEY_LDOWN ) - { - nKey = K_LBUTTONDOWN; - } - } + nKey = K_LBUTTONDOWN; else - { - if( iEventMask & INKEY_LUP ) - { - nKey = K_LBUTTONUP; - } - } - } else if( ( al_mouse_b & 2 ) != ( s_byMSButtons & 2 ) ) + nKey = K_LBUTTONUP; + } + else if( ( al_mouse_b & 2 ) != ( s_mouseButtonsState & 2 ) ) { if( al_mouse_b & 2 ) - { - if( iEventMask & INKEY_RDOWN ) - { - nKey = K_RBUTTONDOWN; - } - } + nKey = K_RBUTTONDOWN; else - { - if( iEventMask & INKEY_RUP ) - { - nKey = K_RBUTTONUP; - } - } - } /* else if( ( al_mouse_b & 4 ) != ( s_byMSButtons & 4 ) ) + nKey = K_RBUTTONUP; + } + else if( ( al_mouse_b & 4 ) != ( s_mouseButtonsState & 4 ) ) { if( al_mouse_b & 4 ) - { - if( iEventMask & INKEY_MDOWN ) - { - nKey = K_MBUTTONDOWN; - } - } else - { - if( iEventMask & INKEY_MUP ) - { - nKey = K_MBUTTONUP; - } - } - } */ + nKey = K_MBUTTONDOWN; + else + nKey = K_MBUTTONUP; + } /* We need to define INKEY_M* & K_MBUTTON* in inkey.ch ! */ - s_byMSButtons = (BYTE) al_mouse_b; + s_mouseButtonsState = al_mouse_b; } - if( nKey == 0 && ( iEventMask & INKEY_KEYBOARD ) ) + if( nKey == 0 ) { if( al_keyboard_needs_poll() ) { @@ -678,9 +678,9 @@ static int hb_gt_alleg_ReadKey( PHB_GT pGT, int iEventMask ) { for( i = 0; i < GT_CTRL_TABLE_SIZE; i++ ) { - if( ( nKey >> 8 ) == sCtrlTable[i].al_key ) + if( ( nKey >> 8 ) == s_CtrlTable[i].al_key ) { - nKey = sCtrlTable[i].xhb_key; + nKey = s_CtrlTable[i].xhb_key; break; } } @@ -716,9 +716,9 @@ static int hb_gt_alleg_ReadKey( PHB_GT pGT, int iEventMask ) { for( i = 0; i < GT_KEY_TABLE_SIZE; i++ ) { - if( ( nKey >> 8 ) == sKeyTable[i].al_key ) + if( ( nKey >> 8 ) == s_KeyTable[i].al_key ) { - nKey = sKeyTable[i].xhb_key; + nKey = s_KeyTable[i].xhb_key; break; } } @@ -780,35 +780,36 @@ static void hb_gt_alleg_mouse_SetBounds( PHB_GT pGT, int iTop, int iLeft, int iB if( iTop > -1 && iTop * s_byFontSize < AL_SCREEN_H ) { - s_iMSBoundTop = iTop * s_byFontSize; + s_mouseBound.iTop = iTop * s_byFontSize; } if( iLeft > -1 && iLeft * s_byFontWidth < AL_SCREEN_W ) { - s_iMSBoundLeft = iLeft * s_byFontWidth; + s_mouseBound.iLeft = iLeft * s_byFontWidth; } if( iBottom >= iTop && iBottom * s_byFontSize < AL_SCREEN_H ) { - s_iMSBoundBottom = iBottom * s_byFontSize; + s_mouseBound.iBottom = iBottom * s_byFontSize; } if( iRight >= iLeft && iRight * s_byFontWidth < AL_SCREEN_W ) { - s_iMSBoundRight = iRight * s_byFontWidth; + s_mouseBound.iRight = iRight * s_byFontWidth; } - al_set_mouse_range( s_iMSBoundLeft, s_iMSBoundTop, s_iMSBoundRight, s_iMSBoundBottom ); + al_set_mouse_range( s_mouseBound.iLeft, s_mouseBound.iTop, + s_mouseBound.iRight, s_mouseBound.iBottom ); } static void hb_gt_alleg_mouse_GetBounds( PHB_GT pGT, int *piTop, int *piLeft, int *piBottom, int *piRight ) { GT_SCREENINIT(); - *piTop = s_iMSBoundTop; - *piLeft = s_iMSBoundLeft; - *piBottom = s_iMSBoundBottom; - *piRight = s_iMSBoundRight; + *piTop = s_mouseBound.iTop; + *piLeft = s_mouseBound.iLeft; + *piBottom = s_mouseBound.iBottom; + *piRight = s_mouseBound.iRight; } static BOOL hb_gt_alleg_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) @@ -940,11 +941,11 @@ static int hb_gt_alleg_gfx_Primitive( PHB_GT pGT, int iType, int iTop, int iLeft switch( iType ) { case GFX_ACQUIRESCREEN: - al_acquire_bitmap(bmp); + al_acquire_bitmap(s_bmp); break; case GFX_RELEASESCREEN: - al_release_bitmap(bmp); + al_release_bitmap(s_bmp); break; case GFX_MAKECOLOR: @@ -952,27 +953,27 @@ static int hb_gt_alleg_gfx_Primitive( PHB_GT pGT, int iType, int iTop, int iLeft break; case GFX_CLIPTOP: - iRet = s_iCTop; + iRet = s_CLIP.iTop; break; case GFX_CLIPLEFT: - iRet = s_iCLeft; + iRet = s_CLIP.iLeft; break; case GFX_CLIPBOTTOM: - iRet = s_iCBottom; + iRet = s_CLIP.iBottom; break; case GFX_CLIPRIGHT: - iRet = s_iCRight; + iRet = s_CLIP.iRight; break; case GFX_SETCLIP: - al_set_clip(bmp, iLeft, iTop, iRight, iBottom); - s_iCTop = iTop; - s_iCLeft = iLeft; - s_iCBottom = iBottom; - s_iCRight = iRight; + al_set_clip(s_bmp, iLeft, iTop, iRight, iBottom); + s_CLIP.iTop = iTop; + s_CLIP.iLeft = iLeft; + s_CLIP.iBottom = iBottom; + s_CLIP.iRight = iRight; break; case GFX_DRAWINGMODE: @@ -980,74 +981,74 @@ static int hb_gt_alleg_gfx_Primitive( PHB_GT pGT, int iType, int iTop, int iLeft break; case GFX_GETPIXEL: - iRet = al_get_pixel(bmp, iLeft, iTop); + iRet = al_get_pixel(s_bmp, iLeft, iTop); break; case GFX_PUTPIXEL: - al_acquire_bitmap(bmp); - al_put_pixel(bmp, iLeft, iTop, iBottom); - al_release_bitmap(bmp); + al_acquire_bitmap(s_bmp); + al_put_pixel(s_bmp, iLeft, iTop, iBottom); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT(iTop,iLeft,iTop,iLeft); break; case GFX_LINE: - al_acquire_bitmap(bmp); + al_acquire_bitmap(s_bmp); if( iLeft == iRight ) - al_draw_vline(bmp, iLeft, iTop, iBottom, iColor); + al_draw_vline(s_bmp, iLeft, iTop, iBottom, iColor); else if( iTop == iBottom ) - al_draw_hline(bmp, iLeft, iTop, iRight, iColor); + al_draw_hline(s_bmp, iLeft, iTop, iRight, iColor); else - al_draw_line(bmp, iLeft, iTop, iRight, iBottom, iColor); - al_release_bitmap(bmp); + al_draw_line(s_bmp, iLeft, iTop, iRight, iBottom, iColor); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT(iTop,iLeft,iBottom,iRight); break; case GFX_RECT: - al_acquire_bitmap(bmp); - al_draw_rect(bmp, iLeft, iTop, iRight, iBottom, iColor); - al_release_bitmap(bmp); + al_acquire_bitmap(s_bmp); + al_draw_rect(s_bmp, iLeft, iTop, iRight, iBottom, iColor); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT(iTop,iLeft,iBottom,iRight); break; case GFX_FILLEDRECT: - al_acquire_bitmap(bmp); - al_draw_rect_fill(bmp, iLeft, iTop, iRight, iBottom, iColor); - al_release_bitmap(bmp); + al_acquire_bitmap(s_bmp); + al_draw_rect_fill(s_bmp, iLeft, iTop, iRight, iBottom, iColor); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT(iTop,iLeft,iBottom,iRight); break; case GFX_CIRCLE: - al_acquire_bitmap(bmp); - al_draw_circle(bmp, iLeft, iTop, iBottom, iRight); - al_release_bitmap(bmp); + al_acquire_bitmap(s_bmp); + al_draw_circle(s_bmp, iLeft, iTop, iBottom, iRight); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT(iTop-iBottom,iLeft-iBottom,iTop+iBottom,iLeft+iBottom); break; case GFX_FILLEDCIRCLE: - al_acquire_bitmap(bmp); - al_draw_circle_fill(bmp, iLeft, iTop, iBottom, iRight); - al_release_bitmap(bmp); + al_acquire_bitmap(s_bmp); + al_draw_circle_fill(s_bmp, iLeft, iTop, iBottom, iRight); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT(iTop-iBottom,iLeft-iBottom,iTop+iBottom,iLeft+iBottom); break; case GFX_ELLIPSE: - al_acquire_bitmap(bmp); - al_draw_ellipse(bmp, iLeft, iTop, iRight, iBottom, iColor); - al_release_bitmap(bmp); + al_acquire_bitmap(s_bmp); + al_draw_ellipse(s_bmp, iLeft, iTop, iRight, iBottom, iColor); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT(iTop-iBottom,iLeft-iRight,iTop+iBottom,iLeft+iRight); break; case GFX_FILLEDELLIPSE: - al_acquire_bitmap(bmp); - al_draw_ellipse_fill(bmp, iLeft, iTop, iRight, iBottom, iColor); - al_release_bitmap(bmp); + al_acquire_bitmap(s_bmp); + al_draw_ellipse_fill(s_bmp, iLeft, iTop, iRight, iBottom, iColor); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT(iTop-iBottom,iLeft-iRight,iTop+iBottom,iLeft+iRight); break; case GFX_FLOODFILL: - al_acquire_bitmap(bmp); - al_floodfill(bmp, iLeft, iTop, iBottom); - al_release_bitmap(bmp); + al_acquire_bitmap(s_bmp); + al_floodfill(s_bmp, iLeft, iTop, iBottom); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT(0,0,s_iScrHeight*s_byFontSize,s_iScrWidth*s_byFontWidth); break; @@ -1082,9 +1083,9 @@ static void hb_gt_alleg_gfx_Text( PHB_GT pGT, int iTop, int iLeft, char * cBuf, iRight = iLeft + strlen(cBuf) * ( s_ssfDefaultFont.fsize / 2 ) - 1; iBottom = iTop + s_ssfDefaultFont.fsize - 1; - al_acquire_bitmap(bmp); - ssfDrawText( bmp, &s_ssfDefaultFont, cBuf, iLeft, iTop, iColor ); - al_release_bitmap(bmp); + al_acquire_bitmap(s_bmp); + ssfDrawText( s_bmp, &s_ssfDefaultFont, cBuf, iLeft, iTop, iColor ); + al_release_bitmap(s_bmp); GT_UPD_GFXRECT( iTop, iLeft, iBottom, iRight ); if( iSize ) @@ -1122,8 +1123,8 @@ static void hb_gt_alleg_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) { if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol++, &bColor, &bAttr, &usChar ) ) break; - al_draw_rect_fill( bmp, iPosX, iPosY, iPosX + s_byFontWidth - 1, iPosY + s_byFontSize - 1, s_pClr[bColor >> 4] ); - ssfDrawChar( bmp, &s_ssfDefaultFont, ( BYTE ) usChar, iPosX, iPosY, s_pClr[bColor & 0x0F] ); + al_draw_rect_fill( s_bmp, iPosX, iPosY, iPosX + s_byFontWidth - 1, iPosY + s_byFontSize - 1, s_pClr[bColor >> 4] ); + ssfDrawChar( s_bmp, &s_ssfDefaultFont, ( BYTE ) usChar, iPosX, iPosY, s_pClr[bColor & 0x0F] ); iPosX += s_byFontWidth; } } @@ -1153,9 +1154,9 @@ static void hb_gt_alleg_Refresh( PHB_GT pGT ) { if( s_fInit ) { - al_acquire_bitmap(bmp); + al_acquire_bitmap(s_bmp); HB_GTSUPER_REFRESH( pGT ); - al_release_bitmap(bmp); + al_release_bitmap(s_bmp); if( HB_GTSELF_DISPCOUNT( pGT ) == 0 ) { hb_gt_alleg_ScreenUpdate( pGT ); @@ -1205,10 +1206,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtalleg/ssf.h b/harbour/source/rtl/gtalleg/ssf.h index 56321379ff..c193a5532a 100644 --- a/harbour/source/rtl/gtalleg/ssf.h +++ b/harbour/source/rtl/gtalleg/ssf.h @@ -230,7 +230,7 @@ typedef struct _ssfGlyph { typedef struct _ssfFont { unsigned short fsize; - ssfGlyph **chars; + const ssfGlyph **chars; } ssfFont; extern void ssfCreateThinFont(ssfFont *sfont); diff --git a/harbour/source/rtl/gtapi.c b/harbour/source/rtl/gtapi.c index 885f4092fa..6d136c3af0 100644 --- a/harbour/source/rtl/gtapi.c +++ b/harbour/source/rtl/gtapi.c @@ -304,6 +304,7 @@ HB_EXPORT ERRCODE hb_gtGetColorStr( char * pszColorString ) HB_GTSELF_GETCOLORSTR( pGT, pszColorString ); return SUCCESS; } + pszColorString[0] = '\0'; return FAILURE; } @@ -329,6 +330,7 @@ HB_EXPORT ERRCODE hb_gtColorsToString( int * pColors, int iColorCount, char * ps HB_GTSELF_COLORSTOSTRING( pGT, pColors, iColorCount, pszColorString, iBufSize ); return SUCCESS; } + pszColorString[0] = '\0'; return FAILURE; } @@ -396,6 +398,7 @@ HB_EXPORT ERRCODE hb_gtGetPos( SHORT * piRow, SHORT * piCol ) *piCol = ( SHORT ) iCol; return SUCCESS; } + *piRow = *piCol = 0; return FAILURE; } @@ -454,6 +457,7 @@ HB_EXPORT ERRCODE hb_gtScrDim( USHORT * uipHeight, USHORT * uipWidth ) *uipWidth = ( USHORT ) iWidth; return SUCCESS; } + *uipHeight = *uipWidth = 0; return FAILURE; } @@ -484,6 +488,7 @@ HB_EXPORT ERRCODE hb_gtRectSize( int iTop, int iLeft, int iBottom, int iRight, U *pulBuffSize = HB_GTSELF_RECTSIZE( pGT, iTop, iLeft, iBottom, iRight ); return SUCCESS; } + *pulBuffSize = 0; return FAILURE; } @@ -611,6 +616,7 @@ HB_EXPORT ERRCODE hb_gtGetBlink( BOOL * bpBlink ) *bpBlink = HB_GTSELF_GETBLINK( pGT ); return SUCCESS; } + *bpBlink = 0; return FAILURE; } @@ -1029,6 +1035,7 @@ HB_EXPORT ERRCODE hb_gtGetPosEx( int * piRow, int * piCol ) HB_GTSELF_GETPOS( pGT, piRow, piCol ); return SUCCESS; } + *piRow = *piCol = 0; return FAILURE; } diff --git a/harbour/source/rtl/gtcgi/gtcgi.c b/harbour/source/rtl/gtcgi/gtcgi.c index f23f36ac36..f52e9c1def 100644 --- a/harbour/source/rtl/gtcgi/gtcgi.c +++ b/harbour/source/rtl/gtcgi/gtcgi.c @@ -81,47 +81,49 @@ static HB_GT_FUNCS SuperTable; #define HB_GTSUPER (&SuperTable) #define HB_GTID_PTR (&s_GtId) -static FHANDLE s_hFilenoStdin; -static FHANDLE s_hFilenoStdout; -static FHANDLE s_hFilenoStderr; -static int s_iRow; -static int s_iCol; -static int s_iLastCol; -static int s_iLineBufSize; -static BYTE * s_sLineBuf; -static BYTE * s_szCrLf; -static ULONG s_ulCrLf; -static BYTE s_szBell[] = { HB_CHAR_BEL, 0 }; -static BOOL s_fDispTrans; -static PHB_CODEPAGE s_cdpTerm; -static PHB_CODEPAGE s_cdpHost; +#define HB_GTCGI_GET(p) ( ( PHB_GTCGI ) HB_GTLOCAL( p ) ) -static void hb_gt_cgi_termOut( BYTE * pStr, ULONG ulLen ) +typedef struct _HB_GTCGI { - hb_fsWriteLarge( s_hFilenoStdout, pStr, ulLen ); + FHANDLE hStdout; + int iRow; + int iCol; + int iLastCol; + int iLineBufSize; + BYTE * sLineBuf; + char * szCrLf; + ULONG ulCrLf; + BOOL fDispTrans; + PHB_CODEPAGE cdpTerm; + PHB_CODEPAGE cdpHost; +} HB_GTCGI, * PHB_GTCGI; + +static void hb_gt_cgi_termOut( PHB_GTCGI pGTCGI, const BYTE * pStr, ULONG ulLen ) +{ + hb_fsWriteLarge( pGTCGI->hStdout, pStr, ulLen ); } -static void hb_gt_cgi_newLine( void ) +static void hb_gt_cgi_newLine( PHB_GTCGI pGTCGI ) { - hb_gt_cgi_termOut( s_szCrLf, s_ulCrLf ); + hb_gt_cgi_termOut( pGTCGI, ( BYTE * ) pGTCGI->szCrLf, pGTCGI->ulCrLf ); } static void hb_gt_cgi_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr ) { + PHB_GTCGI pGTCGI; + HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr ) ); - s_hFilenoStdin = hFilenoStdin; - s_hFilenoStdout = hFilenoStdout; - s_hFilenoStderr = hFilenoStderr; + pGTCGI = ( PHB_GTCGI ) hb_xgrab( sizeof( HB_GTCGI ) ); + memset( pGTCGI, 0, sizeof( HB_GTCGI ) ); + HB_GTLOCAL( pGT ) = pGTCGI; - s_iRow = s_iCol = s_iLastCol = s_iLineBufSize = 0; - s_cdpTerm = s_cdpHost = NULL; - s_fDispTrans = FALSE; + pGTCGI->hStdout = hFilenoStdout; - s_szCrLf = (BYTE *) hb_conNewLine(); - s_ulCrLf = strlen( (char *) s_szCrLf ); + pGTCGI->szCrLf = hb_strdup( hb_conNewLine() ); + pGTCGI->ulCrLf = strlen( pGTCGI->szCrLf ); - hb_fsSetDevMode( s_hFilenoStdout, FD_BINARY ); + hb_fsSetDevMode( pGTCGI->hStdout, FD_BINARY ); HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr ); HB_GTSELF_SETFLAG( pGT, GTI_STDOUTCON, TRUE ); @@ -129,20 +131,27 @@ static void hb_gt_cgi_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStd static void hb_gt_cgi_Exit( PHB_GT pGT ) { + PHB_GTCGI pGTCGI; + HB_TRACE(HB_TR_DEBUG, ("hb_gt_cgi_Exit(%p)", pGT)); HB_GTSELF_REFRESH( pGT ); - /* update cursor position on exit */ - if( s_iLastCol > 0 ) - hb_gt_cgi_newLine(); + pGTCGI = HB_GTCGI_GET( pGT ); HB_GTSUPER_EXIT( pGT ); - if( s_iLineBufSize > 0 ) + if( pGTCGI ) { - hb_xfree( s_sLineBuf ); - s_iLineBufSize = 0; + /* update cursor position on exit */ + if( pGTCGI->iLastCol > 0 ) + hb_gt_cgi_newLine( pGTCGI ); + + if( pGTCGI->iLineBufSize > 0 ) + hb_xfree( pGTCGI->sLineBuf ); + if( pGTCGI->szCrLf ) + hb_xfree( pGTCGI->szCrLf ); + hb_xfree( pGTCGI ); } } @@ -167,11 +176,14 @@ static BOOL hb_gt_cgi_IsColor( PHB_GT pGT ) static void hb_gt_cgi_Bell( PHB_GT pGT ) { + static const BYTE s_szBell[] = { HB_CHAR_BEL, 0 }; + PHB_GTCGI pGTCGI; + HB_TRACE(HB_TR_DEBUG, ("hb_gt_cgi_Bell(%p)", pGT)); - HB_SYMBOL_UNUSED( pGT ); + pGTCGI = HB_GTCGI_GET( pGT ); - hb_gt_cgi_termOut( s_szBell, 1 ); + hb_gt_cgi_termOut( pGTCGI, s_szBell, 1 ); } static char * hb_gt_cgi_Version( PHB_GT pGT, int iType ) @@ -199,13 +211,15 @@ static void hb_gt_cgi_Scroll( PHB_GT pGT, int iTop, int iLeft, int iBottom, int iTop == 0 && iLeft == 0 && iBottom >= iHeight - 1 && iRight >= iWidth - 1 ) { + PHB_GTCGI pGTCGI = HB_GTCGI_GET( pGT ); + /* scroll up the internal screen buffer */ HB_GTSELF_SCROLLUP( pGT, iRows, bColor, bChar ); /* update our internal row position */ - s_iRow -= iRows; - if( s_iRow < 0 ) - s_iRow = 0; - s_iLastCol = s_iCol = 0; + pGTCGI->iRow -= iRows; + if( pGTCGI->iRow < 0 ) + pGTCGI->iRow = 0; + pGTCGI->iLastCol = pGTCGI->iCol = 0; } else HB_GTSUPER_SCROLL( pGT, iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols ); @@ -225,9 +239,12 @@ static BOOL hb_gt_cgi_SetDispCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP, if( pszTermCDP && pszHostCDP ) { - s_cdpTerm = hb_cdpFind( pszTermCDP ); - s_cdpHost = hb_cdpFind( pszHostCDP ); - s_fDispTrans = s_cdpTerm && s_cdpHost && s_cdpTerm != s_cdpHost; + PHB_GTCGI pGTCGI = HB_GTCGI_GET( pGT ); + + pGTCGI->cdpTerm = hb_cdpFind( pszTermCDP ); + pGTCGI->cdpHost = hb_cdpFind( pszHostCDP ); + pGTCGI->fDispTrans = pGTCGI->cdpTerm && pGTCGI->cdpHost && + pGTCGI->cdpTerm != pGTCGI->cdpHost; return TRUE; } #endif @@ -240,18 +257,19 @@ static BOOL hb_gt_cgi_SetDispCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP, static void hb_gt_cgi_WriteCon( PHB_GT pGT, BYTE * pText, ULONG ulLength ) { BYTE * buffer = NULL; + PHB_GTCGI pGTCGI = HB_GTCGI_GET( pGT ); #ifndef HB_CDP_SUPPORT_OFF - if( s_fDispTrans ) + if( pGTCGI->fDispTrans ) { buffer = ( BYTE * ) hb_xgrab( ulLength ); memcpy( buffer, pText, ulLength ); - hb_cdpnTranslate( ( char * ) buffer, s_cdpHost, s_cdpTerm, ulLength ); + hb_cdpnTranslate( ( char * ) buffer, pGTCGI->cdpHost, pGTCGI->cdpTerm, ulLength ); pText = buffer; } #endif - hb_gt_cgi_termOut( pText, ulLength ); + hb_gt_cgi_termOut( pGTCGI, pText, ulLength ); while( ulLength-- ) { switch( *pText++ ) @@ -260,23 +278,23 @@ static void hb_gt_cgi_WriteCon( PHB_GT pGT, BYTE * pText, ULONG ulLength ) break; case HB_CHAR_BS: - if( s_iCol ) - s_iCol--; + if( pGTCGI->iCol ) + pGTCGI->iCol--; break; case HB_CHAR_LF: - s_iRow++; + pGTCGI->iRow++; break; case HB_CHAR_CR: - s_iCol = 0; + pGTCGI->iCol = 0; break; default: - ++s_iCol; + ++pGTCGI->iCol; } } - HB_GTSUPER_SETPOS( pGT, s_iRow, s_iCol ); + HB_GTSUPER_SETPOS( pGT, pGTCGI->iRow, pGTCGI->iCol ); if( buffer ) hb_xfree( buffer ); @@ -285,32 +303,33 @@ static void hb_gt_cgi_WriteCon( PHB_GT pGT, BYTE * pText, ULONG ulLength ) static void hb_gt_cgi_WriteAt( PHB_GT pGT, int iRow, int iCol, BYTE * pText, ULONG ulLength ) { int iLineFeed = 0, iSpace = 0; + PHB_GTCGI pGTCGI = HB_GTCGI_GET( pGT ); - if( s_iRow != iRow ) + if( pGTCGI->iRow != iRow ) { - iLineFeed = s_iRow < iRow ? iRow - s_iRow : 1; + iLineFeed = pGTCGI->iRow < iRow ? iRow - pGTCGI->iRow : 1; } - else if( s_iCol > iCol ) + else if( pGTCGI->iCol > iCol ) { iLineFeed = 1; iSpace = iCol; } - else if( s_iCol < iCol ) + else if( pGTCGI->iCol < iCol ) { - iSpace = iCol - s_iCol; + iSpace = iCol - pGTCGI->iCol; } if( iSpace > 0 ) { BYTE * buffer = ( BYTE * ) hb_xgrab( iSpace ); memset( buffer, ' ', iSpace ); - hb_gt_cgi_termOut( buffer, iSpace ); + hb_gt_cgi_termOut( pGTCGI, buffer, iSpace ); hb_xfree( buffer ); } while( --iLineFeed >= 0 ) - hb_gt_cgi_newLine(); - s_iRow = iRow; - s_iCol = iCol; + hb_gt_cgi_newLine( pGTCGI ); + pGTCGI->iRow = iRow; + pGTCGI->iCol = iCol; hb_gt_cgi_WriteCon( pGT, pText, ulLength ); } @@ -322,31 +341,33 @@ static void hb_gt_cgi_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) BYTE bColor, bAttr; USHORT usChar; int iLineFeed, iHeight, iWidth, iLen; + PHB_GTCGI pGTCGI; HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) ); + pGTCGI = HB_GTCGI_GET( pGT ); HB_GTSELF_GETSIZE( pGT, &iHeight, &iWidth ); iLineFeed = iLen = 0; - if( s_iRow != iRow ) + if( pGTCGI->iRow != iRow ) { - iLineFeed = s_iRow < iRow ? iRow - s_iRow : 1; - s_iLastCol = s_iCol = iCol = 0; + iLineFeed = pGTCGI->iRow < iRow ? iRow - pGTCGI->iRow : 1; + pGTCGI->iLastCol = pGTCGI->iCol = iCol = 0; iSize = iWidth; } - else if( s_iCol < iCol ) + else if( pGTCGI->iCol < iCol ) { - iSize += iCol - s_iCol; - iCol = s_iCol; + iSize += iCol - pGTCGI->iCol; + iCol = pGTCGI->iCol; } - else if( s_iCol > iCol ) + else if( pGTCGI->iCol > iCol ) { iLineFeed = 1; - iCol = s_iCol = s_iLastCol = 0; + iCol = pGTCGI->iCol = pGTCGI->iLastCol = 0; iSize = iWidth; } - while( iSize > 0 && iCol + iSize > s_iLastCol && + while( iSize > 0 && iCol + iSize > pGTCGI->iLastCol && HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol + iSize - 1, &bColor, &bAttr, &usChar ) ) { if( usChar != ' ' ) @@ -357,26 +378,26 @@ static void hb_gt_cgi_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) if( iSize > 0 ) { while( --iLineFeed >= 0 ) - hb_gt_cgi_newLine(); - s_iRow = iRow; + hb_gt_cgi_newLine( pGTCGI ); + pGTCGI->iRow = iRow; while( iLen < iSize ) { if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol, &bColor, &bAttr, &usChar ) ) break; - s_sLineBuf[ iLen++ ] = ( BYTE ) usChar; + pGTCGI->sLineBuf[ iLen++ ] = ( BYTE ) usChar; ++iCol; } if( iLen ) { #ifndef HB_CDP_SUPPORT_OFF - if( s_fDispTrans ) - hb_cdpnTranslate( ( char * ) s_sLineBuf, s_cdpHost, s_cdpTerm, iLen ); + if( pGTCGI->fDispTrans ) + hb_cdpnTranslate( ( char * ) pGTCGI->sLineBuf, pGTCGI->cdpHost, pGTCGI->cdpTerm, iLen ); #endif - hb_gt_cgi_termOut( s_sLineBuf, iLen ); - s_iCol = iCol; - if( s_iCol > s_iLastCol ) - s_iLastCol = s_iCol; + hb_gt_cgi_termOut( pGTCGI, pGTCGI->sLineBuf, iLen ); + pGTCGI->iCol = iCol; + if( pGTCGI->iCol > pGTCGI->iLastCol ) + pGTCGI->iLastCol = pGTCGI->iCol; } } } @@ -384,19 +405,21 @@ static void hb_gt_cgi_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) static void hb_gt_cgi_Refresh( PHB_GT pGT ) { int iHeight, iWidth; + PHB_GTCGI pGTCGI; HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Refresh(%p)", pGT ) ); + pGTCGI = HB_GTCGI_GET( pGT ); HB_GTSELF_GETSIZE( pGT, &iHeight, &iWidth ); - if( s_iLineBufSize == 0 ) + if( pGTCGI->iLineBufSize == 0 ) { - s_sLineBuf = ( BYTE * ) hb_xgrab( iWidth ); - s_iLineBufSize = iWidth; + pGTCGI->sLineBuf = ( BYTE * ) hb_xgrab( iWidth ); + pGTCGI->iLineBufSize = iWidth; } - else if( s_iLineBufSize < iWidth ) + else if( pGTCGI->iLineBufSize < iWidth ) { - s_sLineBuf = ( BYTE * ) hb_xrealloc( s_sLineBuf, iWidth ); - s_iLineBufSize = iWidth; + pGTCGI->sLineBuf = ( BYTE * ) hb_xrealloc( pGTCGI->sLineBuf, iWidth ); + pGTCGI->iLineBufSize = iWidth; } HB_GTSUPER_REFRESH( pGT ); } @@ -432,10 +455,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtcrs/gtcrs.c b/harbour/source/rtl/gtcrs/gtcrs.c index ed6b6231eb..bd0b4dd485 100644 --- a/harbour/source/rtl/gtcrs/gtcrs.c +++ b/harbour/source/rtl/gtcrs/gtcrs.c @@ -3001,10 +3001,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtdos/gtdos.c b/harbour/source/rtl/gtdos/gtdos.c index 2a7033f685..9a6e8d871b 100644 --- a/harbour/source/rtl/gtdos/gtdos.c +++ b/harbour/source/rtl/gtdos/gtdos.c @@ -1598,10 +1598,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtgui/gtgui.c b/harbour/source/rtl/gtgui/gtgui.c index ff049f6829..a59b486182 100644 --- a/harbour/source/rtl/gtgui/gtgui.c +++ b/harbour/source/rtl/gtgui/gtgui.c @@ -156,10 +156,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtos2/gtos2.c b/harbour/source/rtl/gtos2/gtos2.c index 4abf4422c7..6068006e90 100644 --- a/harbour/source/rtl/gtos2/gtos2.c +++ b/harbour/source/rtl/gtos2/gtos2.c @@ -987,10 +987,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtpca/gtpca.c b/harbour/source/rtl/gtpca/gtpca.c index 1b192d8c89..38bac2f9e9 100644 --- a/harbour/source/rtl/gtpca/gtpca.c +++ b/harbour/source/rtl/gtpca/gtpca.c @@ -992,10 +992,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtsln/gtsln.c b/harbour/source/rtl/gtsln/gtsln.c index 38ae15415c..13a2859b31 100644 --- a/harbour/source/rtl/gtsln/gtsln.c +++ b/harbour/source/rtl/gtsln/gtsln.c @@ -1051,10 +1051,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtstd/gtstd.c b/harbour/source/rtl/gtstd/gtstd.c index 4ee22e8c4e..814307b600 100644 --- a/harbour/source/rtl/gtstd/gtstd.c +++ b/harbour/source/rtl/gtstd/gtstd.c @@ -85,31 +85,48 @@ static HB_GT_FUNCS SuperTable; #define HB_GTSUPER (&SuperTable) #define HB_GTID_PTR (&s_GtId) -static const BYTE s_szBell[] = { HB_CHAR_BEL, 0 }; -static const BYTE * s_szCrLf; -static ULONG s_ulCrLf; +#define HB_GTSTD_GET(p) ( ( PHB_GTSTD ) HB_GTLOCAL( p ) ) + +static const BYTE s_szBell[] = { HB_CHAR_BEL, 0 }; + +typedef struct _HB_GTSTD +{ + FHANDLE hStdin; + FHANDLE hStdout; + FHANDLE hStderr; + BOOL fStdinConsole; + BOOL fStdoutConsole; + BOOL fStderrConsole; + + int iRow; + int iCol; + int iLastCol; + + int iLineBufSize; + BYTE * sLineBuf; + BOOL fFullRedraw; + char * szCrLf; + ULONG ulCrLf; + + BOOL fDispTrans; + PHB_CODEPAGE cdpTerm; + PHB_CODEPAGE cdpHost; + BYTE keyTransTbl[ 256 ]; + +#if defined( OS_UNIX_COMPATIBLE ) + struct termios saved_TIO; + struct termios curr_TIO; + BOOL fRestTTY; +#endif + + double dToneSeconds; + +} HB_GTSTD, * PHB_GTSTD; -static FHANDLE s_hFilenoStdin; -static FHANDLE s_hFilenoStdout; -static FHANDLE s_hFilenoStderr; -static int s_iRow; -static int s_iCol; -static int s_iLastCol; -static int s_iLineBufSize; -static BYTE * s_sLineBuf; -static BOOL s_bFullRedraw; -static BOOL s_bStdinConsole; -static BOOL s_bStdoutConsole; -static BOOL s_bStderrConsole; -static BOOL s_fDispTrans; -static PHB_CODEPAGE s_cdpTerm; -static PHB_CODEPAGE s_cdpHost; -static BYTE s_keyTransTbl[ 256 ]; #if defined( OS_UNIX_COMPATIBLE ) static volatile BOOL s_fRestTTY = FALSE; -static struct termios s_saved_TIO, s_curr_TIO; static void sig_handler( int iSigNo ) { @@ -142,65 +159,68 @@ static void sig_handler( int iSigNo ) #endif -static void hb_gt_std_setKeyTrans( char * pSrcChars, char * pDstChars ) +static void hb_gt_std_setKeyTrans( PHB_GTSTD pGTSTD, char * pSrcChars, char * pDstChars ) { int i; for( i = 0; i < 256; ++i ) - s_keyTransTbl[ i ] = ( BYTE ) i; + pGTSTD->keyTransTbl[ i ] = ( BYTE ) i; if( pSrcChars && pDstChars ) { BYTE c; for( i = 0; i < 256 && ( c = ( BYTE ) pSrcChars[ i ] ) != 0; ++i ) - s_keyTransTbl[ c ] = ( BYTE ) pDstChars[ i ]; + pGTSTD->keyTransTbl[ c ] = ( BYTE ) pDstChars[ i ]; } } -static void hb_gt_std_termOut( const BYTE * pStr, ULONG ulLen ) +static void hb_gt_std_termOut( PHB_GTSTD pGTSTD, const BYTE * pStr, ULONG ulLen ) { - hb_fsWriteLarge( s_hFilenoStdout, pStr, ulLen ); + hb_fsWriteLarge( pGTSTD->hStdout, pStr, ulLen ); } -static void hb_gt_std_newLine( void ) +static void hb_gt_std_newLine( PHB_GTSTD pGTSTD ) { - hb_gt_std_termOut( s_szCrLf, s_ulCrLf ); + hb_gt_std_termOut( pGTSTD, ( BYTE * ) pGTSTD->szCrLf, pGTSTD->ulCrLf ); } static void hb_gt_std_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr ) { + PHB_GTSTD pGTSTD; + HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr)); - s_hFilenoStdin = hFilenoStdin; - s_hFilenoStdout = hFilenoStdout; - s_hFilenoStderr = hFilenoStderr; + pGTSTD = ( PHB_GTSTD ) hb_xgrab( sizeof( HB_GTSTD ) ); + memset( pGTSTD, 0, sizeof( HB_GTSTD ) ); + HB_GTLOCAL( pGT ) = pGTSTD; - s_bStdinConsole = hb_fsIsDevice( s_hFilenoStdin ); - s_bStdoutConsole = hb_fsIsDevice( s_hFilenoStdout ); - s_bStderrConsole = hb_fsIsDevice( s_hFilenoStderr ); + pGTSTD->hStdin = hFilenoStdin; + pGTSTD->hStdout = hFilenoStdout; + pGTSTD->hStderr = hFilenoStderr; - s_iRow = s_iCol = s_iLastCol = s_iLineBufSize = 0; - s_cdpTerm = s_cdpHost = NULL; - s_fDispTrans = FALSE; - hb_gt_std_setKeyTrans( NULL, NULL ); + pGTSTD->fStdinConsole = hb_fsIsDevice( pGTSTD->hStdin ); + pGTSTD->fStdoutConsole = hb_fsIsDevice( pGTSTD->hStdout ); + pGTSTD->fStderrConsole = hb_fsIsDevice( pGTSTD->hStderr ); - s_szCrLf = ( BYTE * ) hb_conNewLine(); - s_ulCrLf = strlen( ( char * ) s_szCrLf ); + hb_gt_std_setKeyTrans( pGTSTD, NULL, NULL ); - hb_fsSetDevMode( s_hFilenoStdout, FD_BINARY ); + pGTSTD->szCrLf = hb_strdup( hb_conNewLine() ); + pGTSTD->ulCrLf = strlen( pGTSTD->szCrLf ); + + hb_fsSetDevMode( pGTSTD->hStdout, FD_BINARY ); HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr ); /* SA_NOCLDSTOP in #if is a hack to detect POSIX compatible environment */ #if defined( OS_UNIX_COMPATIBLE ) && defined( SA_NOCLDSTOP ) - s_fRestTTY = FALSE; - if( s_bStdinConsole ) + + if( pGTSTD->fStdinConsole ) { struct sigaction act, old; s_fRestTTY = TRUE; - /* if( s_saved_TIO.c_lflag & TOSTOP ) != 0 */ + /* if( pGTSTD->saved_TIO.c_lflag & TOSTOP ) != 0 */ sigaction( SIGTTOU, NULL, &old ); memcpy( &act, &old, sizeof( struct sigaction ) ); act.sa_handler = sig_handler; @@ -214,92 +234,100 @@ static void hb_gt_std_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStd #endif sigaction( SIGTTOU, &act, 0 ); - tcgetattr( hFilenoStdin, &s_saved_TIO ); - memcpy( &s_curr_TIO, &s_saved_TIO, sizeof( struct termios ) ); + tcgetattr( pGTSTD->hStdin, &pGTSTD->saved_TIO ); + memcpy( &pGTSTD->curr_TIO, &pGTSTD->saved_TIO, sizeof( struct termios ) ); /* atexit( restore_input_mode ); */ - s_curr_TIO.c_lflag &= ~( ICANON | ECHO ); - s_curr_TIO.c_iflag &= ~ICRNL; - s_curr_TIO.c_cc[ VMIN ] = 0; - s_curr_TIO.c_cc[ VTIME ] = 0; - tcsetattr( hFilenoStdin, TCSAFLUSH, &s_curr_TIO ); + pGTSTD->curr_TIO.c_lflag &= ~( ICANON | ECHO ); + pGTSTD->curr_TIO.c_iflag &= ~ICRNL; + pGTSTD->curr_TIO.c_cc[ VMIN ] = 0; + pGTSTD->curr_TIO.c_cc[ VTIME ] = 0; + tcsetattr( pGTSTD->hStdin, TCSAFLUSH, &pGTSTD->curr_TIO ); act.sa_handler = SIG_DFL; sigaction( SIGTTOU, &old, NULL ); + pGTSTD->fRestTTY = s_fRestTTY; } - if( s_bStdoutConsole ) + if( pGTSTD->fStdoutConsole ) { struct winsize win; - if( ioctl( hFilenoStdout, TIOCGWINSZ, ( char * ) &win ) != -1 ) + if( ioctl( pGTSTD->hStdout, TIOCGWINSZ, ( char * ) &win ) != -1 ) { HB_GTSELF_RESIZE( pGT, win.ws_row, win.ws_col ); } } #elif defined( HB_WIN32_IO ) && ! defined( HB_WINCE ) - if( s_bStdinConsole ) + if( pGTSTD->fStdinConsole ) { - SetConsoleMode( ( HANDLE ) hb_fsGetOsHandle( s_hFilenoStdin ), 0x0000 ); + SetConsoleMode( ( HANDLE ) hb_fsGetOsHandle( pGTSTD->hStdin ), 0x0000 ); } #endif - HB_GTSELF_SETFLAG( pGT, GTI_STDOUTCON, s_bStdoutConsole ); - HB_GTSELF_SETFLAG( pGT, GTI_STDERRCON, s_bStderrConsole ); + HB_GTSELF_SETFLAG( pGT, GTI_STDOUTCON, pGTSTD->fStdoutConsole ); + HB_GTSELF_SETFLAG( pGT, GTI_STDERRCON, pGTSTD->fStderrConsole ); } static void hb_gt_std_Exit( PHB_GT pGT ) { + PHB_GTSTD pGTSTD; int iRow, iCol; HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_Exit(%p)", pGT)); HB_GTSELF_REFRESH( pGT ); - - /* update cursor position on exit */ - if( s_bStdoutConsole && s_iLastCol > 0 ) - { - hb_gt_std_newLine(); - ++s_iRow; - } - HB_GTSELF_GETPOS( pGT, &iRow, &iCol ); - while( ++s_iRow <= iRow ) - hb_gt_std_newLine(); + + pGTSTD = HB_GTSTD_GET( pGT ); HB_GTSUPER_EXIT( pGT ); -#if defined( OS_UNIX_COMPATIBLE ) - if( s_fRestTTY ) - tcsetattr( s_hFilenoStdin, TCSANOW, &s_saved_TIO ); -#endif - if( s_iLineBufSize > 0 ) + if( pGTSTD ) { - hb_xfree( s_sLineBuf ); - s_iLineBufSize = 0; + /* update cursor position on exit */ + if( pGTSTD->fStdoutConsole && pGTSTD->iLastCol > 0 ) + { + hb_gt_std_newLine( pGTSTD ); + ++pGTSTD->iRow; + } + + while( ++pGTSTD->iRow <= iRow ) + hb_gt_std_newLine( pGTSTD ); + +#if defined( OS_UNIX_COMPATIBLE ) + if( pGTSTD->fRestTTY ) + tcsetattr( pGTSTD->hStdin, TCSANOW, &pGTSTD->saved_TIO ); +#endif + if( pGTSTD->iLineBufSize > 0 ) + hb_xfree( pGTSTD->sLineBuf ); + if( pGTSTD->szCrLf ) + hb_xfree( pGTSTD->szCrLf ); + hb_xfree( pGTSTD ); } - s_bStdinConsole = s_bStdoutConsole = s_bStderrConsole = FALSE; } static int hb_gt_std_ReadKey( PHB_GT pGT, int iEventMask ) { + PHB_GTSTD pGTSTD; int ch = 0; HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_ReadKey(%p,%d)", pGT, iEventMask)); - HB_SYMBOL_UNUSED( pGT ); HB_SYMBOL_UNUSED( iEventMask ); + pGTSTD = HB_GTSTD_GET( pGT ); + #if defined( _MSC_VER ) && !defined( HB_WINCE ) - if( s_bStdinConsole ) + if( pGTSTD->fStdinConsole ) { if( _kbhit() ) ch = _getch(); if( ch >= 0 && ch <= 255 ) - ch = s_keyTransTbl[ ch ]; + ch = pGTSTD->keyTransTbl[ ch ]; } - else if( !_eof( s_hFilenoStdin ) ) + else if( !_eof( pGTSTD->hStdin ) ) { BYTE bChar; - if( _read( s_hFilenoStdin, &bChar, 1 ) == 1 ) - ch = s_keyTransTbl[ bChar ]; + if( _read( pGTSTD->hStdin, &bChar, 1 ) == 1 ) + ch = pGTSTD->keyTransTbl[ bChar ]; } #elif defined( OS_UNIX_COMPATIBLE ) || defined( __DJGPP__ ) { @@ -308,21 +336,21 @@ static int hb_gt_std_ReadKey( PHB_GT pGT, int iEventMask ) tv.tv_sec = 0; tv.tv_usec = 0; FD_ZERO( &rfds ); - FD_SET( s_hFilenoStdin, &rfds); - if( select( s_hFilenoStdin + 1, &rfds, NULL, NULL, &tv ) > 0 ) + FD_SET( pGTSTD->hStdin, &rfds); + if( select( pGTSTD->hStdin + 1, &rfds, NULL, NULL, &tv ) > 0 ) { BYTE bChar; - if( hb_fsRead( s_hFilenoStdin, &bChar, 1 ) == 1 ) - ch = s_keyTransTbl[ bChar ]; + if( hb_fsRead( pGTSTD->hStdin, &bChar, 1 ) == 1 ) + ch = pGTSTD->keyTransTbl[ bChar ]; } } #elif defined( HB_WIN32_IO ) - if( !s_bStdinConsole || - WaitForSingleObject( ( HANDLE ) hb_fsGetOsHandle( s_hFilenoStdin ), 0 ) == 0x0000 ) + if( !pGTSTD->fStdinConsole || + WaitForSingleObject( ( HANDLE ) hb_fsGetOsHandle( pGTSTD->hStdin ), 0 ) == 0x0000 ) { BYTE bChar; - if( hb_fsRead( s_hFilenoStdin, &bChar, 1 ) == 1 ) - ch = s_keyTransTbl[ bChar ]; + if( hb_fsRead( pGTSTD->hStdin, &bChar, 1 ) == 1 ) + ch = pGTSTD->keyTransTbl[ bChar ]; } #else { @@ -344,12 +372,12 @@ static BOOL hb_gt_std_IsColor( PHB_GT pGT ) static void hb_gt_std_Tone( PHB_GT pGT, double dFrequency, double dDuration ) { - static double dLastSeconds = 0; double dCurrentSeconds; + PHB_GTSTD pGTSTD; HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration)); - HB_SYMBOL_UNUSED( pGT ); + pGTSTD = HB_GTSTD_GET( pGT ); /* Output an ASCII BEL character to cause a sound */ /* but throttle to max once per second, in case of sound */ @@ -357,10 +385,11 @@ static void hb_gt_std_Tone( PHB_GT pGT, double dFrequency, double dDuration ) /* succession leading to BEL hell on the terminal */ dCurrentSeconds = hb_dateSeconds(); - if( dCurrentSeconds < dLastSeconds || dCurrentSeconds - dLastSeconds > 0.5 ) + if( dCurrentSeconds < pGTSTD->dToneSeconds || + dCurrentSeconds - pGTSTD->dToneSeconds > 0.5 ) { - hb_gt_std_termOut( s_szBell, 1 ); - dLastSeconds = dCurrentSeconds; + hb_gt_std_termOut( pGTSTD, s_szBell, 1 ); + pGTSTD->dToneSeconds = dCurrentSeconds; } HB_SYMBOL_UNUSED( dFrequency ); @@ -373,9 +402,7 @@ static void hb_gt_std_Bell( PHB_GT pGT ) { HB_TRACE(HB_TR_DEBUG, ( "hb_gt_std_Bell(%p)", pGT ) ); - HB_SYMBOL_UNUSED( pGT ); - - hb_gt_std_termOut( s_szBell, 1 ); + hb_gt_std_termOut( HB_GTSTD_GET( pGT ), s_szBell, 1 ); } static char * hb_gt_std_Version( PHB_GT pGT, int iType ) @@ -394,30 +421,30 @@ static BOOL hb_gt_std_Suspend( PHB_GT pGT ) { HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Suspend(%p)", pGT ) ); - HB_SYMBOL_UNUSED( pGT ); - #if defined( OS_UNIX_COMPATIBLE ) - if( s_fRestTTY ) { - tcsetattr( s_hFilenoStdin, TCSANOW, &s_saved_TIO ); + PHB_GTSTD pGTSTD = HB_GTSTD_GET( pGT ); + if( pGTSTD->fRestTTY ) + tcsetattr( pGTSTD->hStdin, TCSANOW, &pGTSTD->saved_TIO ); } #endif - return TRUE; + + return HB_GTSUPER_SUSPEND( pGT ); } static BOOL hb_gt_std_Resume( PHB_GT pGT ) { HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Resume(%p)", pGT ) ); - HB_SYMBOL_UNUSED( pGT ); #if defined( OS_UNIX_COMPATIBLE ) - if( s_fRestTTY ) { - tcsetattr( s_hFilenoStdin, TCSANOW, &s_curr_TIO ); + PHB_GTSTD pGTSTD = HB_GTSTD_GET( pGT ); + if( pGTSTD->fRestTTY ) + tcsetattr( pGTSTD->hStdin, TCSANOW, &pGTSTD->curr_TIO ); } #endif - return TRUE; + return HB_GTSUPER_RESUME( pGT ); } static void hb_gt_std_Scroll( PHB_GT pGT, int iTop, int iLeft, int iBottom, int iRight, @@ -433,12 +460,14 @@ static void hb_gt_std_Scroll( PHB_GT pGT, int iTop, int iLeft, int iBottom, int iTop == 0 && iLeft == 0 && iBottom >= iHeight - 1 && iRight >= iWidth - 1 ) { + PHB_GTSTD pGTSTD; /* scroll up the internal screen buffer */ HB_GTSELF_SCROLLUP( pGT, iRows, bColor, bChar ); /* update our internal row position */ - s_iRow -= iRows; - if( s_iRow < 0 ) - s_iRow = 0; + pGTSTD = HB_GTSTD_GET( pGT ); + pGTSTD->iRow -= iRows; + if( pGTSTD->iRow < 0 ) + pGTSTD->iRow = 0; } else HB_GTSUPER_SCROLL( pGT, iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols ); @@ -458,9 +487,11 @@ static BOOL hb_gt_std_SetDispCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP, if( pszTermCDP && pszHostCDP ) { - s_cdpTerm = hb_cdpFind( pszTermCDP ); - s_cdpHost = hb_cdpFind( pszHostCDP ); - s_fDispTrans = s_cdpTerm && s_cdpHost && s_cdpTerm != s_cdpHost; + PHB_GTSTD pGTSTD = HB_GTSTD_GET( pGT ); + pGTSTD->cdpTerm = hb_cdpFind( pszTermCDP ); + pGTSTD->cdpHost = hb_cdpFind( pszHostCDP ); + pGTSTD->fDispTrans = pGTSTD->cdpTerm && pGTSTD->cdpHost && + pGTSTD->cdpTerm != pGTSTD->cdpHost; return TRUE; } #endif @@ -495,13 +526,13 @@ static BOOL hb_gt_std_SetKeyCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP ) strncpy( pszTermLetters, cdpTerm->CharsUpper, cdpTerm->nChars + 1 ); strncat( pszTermLetters, cdpTerm->CharsLower, cdpTerm->nChars + 1 ); - hb_gt_std_setKeyTrans( pszTermLetters, pszHostLetters ); + hb_gt_std_setKeyTrans( HB_GTSTD_GET( pGT ), pszTermLetters, pszHostLetters ); hb_xfree( pszHostLetters ); hb_xfree( pszTermLetters ); } else - hb_gt_std_setKeyTrans( NULL, NULL ); + hb_gt_std_setKeyTrans( HB_GTSTD_GET( pGT ), NULL, NULL ); return TRUE; } @@ -515,22 +546,23 @@ static void hb_gt_std_DispLine( PHB_GT pGT, int iRow ) BYTE bColor, bAttr; USHORT usChar; int iCol, iMin = 0; + PHB_GTSTD pGTSTD = HB_GTSTD_GET( pGT ); - for( iCol = 0; iCol < s_iLineBufSize; ++iCol ) + for( iCol = 0; iCol < pGTSTD->iLineBufSize; ++iCol ) { if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol, &bColor, &bAttr, &usChar ) ) break; if( usChar < 32 || usChar == 127 ) usChar = '.'; - s_sLineBuf[ iCol ] = ( BYTE ) usChar; + pGTSTD->sLineBuf[ iCol ] = ( BYTE ) usChar; if( usChar != ' ' ) iMin = iCol + 1; } - hb_gt_std_newLine(); + hb_gt_std_newLine( pGTSTD ); if( iMin > 0 ) - hb_gt_std_termOut( s_sLineBuf, iMin ); - s_iLastCol = s_iCol = iMin; - s_iRow = iRow; + hb_gt_std_termOut( pGTSTD, pGTSTD->sLineBuf, iMin ); + pGTSTD->iLastCol = pGTSTD->iCol = iMin; + pGTSTD->iRow = iRow; } static void hb_gt_std_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) @@ -538,27 +570,29 @@ static void hb_gt_std_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) BYTE bColor, bAttr; USHORT usChar; int iLineFeed, iBackSpace, iLen, iMin; + PHB_GTSTD pGTSTD; HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) ); iLineFeed = iBackSpace = 0; + pGTSTD = HB_GTSTD_GET( pGT ); - if( s_iRow != iRow ) + if( pGTSTD->iRow != iRow ) { - iLineFeed = s_iRow < iRow ? iRow - s_iRow : 1; + iLineFeed = pGTSTD->iRow < iRow ? iRow - pGTSTD->iRow : 1; iCol = 0; - iSize = s_iLineBufSize; + iSize = pGTSTD->iLineBufSize; } - else if( s_iCol < iCol ) + else if( pGTSTD->iCol < iCol ) { - iSize += iCol - s_iCol; - iCol = s_iCol; + iSize += iCol - pGTSTD->iCol; + iCol = pGTSTD->iCol; } - else if( s_iCol > iCol ) + else if( pGTSTD->iCol > iCol ) { - if( s_bStdoutConsole && s_iCol <= s_iLineBufSize ) + if( pGTSTD->fStdoutConsole && pGTSTD->iCol <= pGTSTD->iLineBufSize ) { - iBackSpace = s_iCol - iCol; + iBackSpace = pGTSTD->iCol - iCol; if( iBackSpace > iSize ) iSize = iBackSpace; } @@ -566,11 +600,11 @@ static void hb_gt_std_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) { iLineFeed = 1; iCol = 0; - iSize = s_iLineBufSize; + iSize = pGTSTD->iLineBufSize; } } - iMin = iLineFeed > 0 || s_iLastCol <= iCol ? 0 : s_iLastCol - iCol; + iMin = iLineFeed > 0 || pGTSTD->iLastCol <= iCol ? 0 : pGTSTD->iLastCol - iCol; while( iSize > iMin && HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol + iSize - 1, &bColor, &bAttr, &usChar ) ) @@ -588,29 +622,29 @@ static void hb_gt_std_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) * If you want to disable full screen redrawing in console (TTY) * output then comment out the 'if' block below, Druzus */ - if( s_bStdoutConsole ) + if( pGTSTD->fStdoutConsole ) { int i; - if( s_iRow > iRow ) + if( pGTSTD->iRow > iRow ) { - s_iRow = -1; - s_bFullRedraw = TRUE; + pGTSTD->iRow = -1; + pGTSTD->fFullRedraw = TRUE; } - for( i = s_iRow + 1; i < iRow; ++i ) + for( i = pGTSTD->iRow + 1; i < iRow; ++i ) hb_gt_std_DispLine( pGT, i ); iLineFeed = 1; } do - hb_gt_std_newLine(); + hb_gt_std_newLine( pGTSTD ); while( --iLineFeed ); - s_iLastCol = 0; + pGTSTD->iLastCol = 0; } else if( iBackSpace > 0 ) { - memset( s_sLineBuf, HB_CHAR_BS, iBackSpace ); - hb_gt_std_termOut( s_sLineBuf, iBackSpace ); + memset( pGTSTD->sLineBuf, HB_CHAR_BS, iBackSpace ); + hb_gt_std_termOut( pGTSTD, pGTSTD->sLineBuf, iBackSpace ); } for( iLen = 0; iLen < iSize; ++iLen ) @@ -619,51 +653,53 @@ static void hb_gt_std_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize ) break; if( usChar < 32 || usChar == 127 ) usChar = '.'; - s_sLineBuf[ iLen ] = ( BYTE ) usChar; + pGTSTD->sLineBuf[ iLen ] = ( BYTE ) usChar; ++iCol; } if( iLen ) { #ifndef HB_CDP_SUPPORT_OFF - if( s_fDispTrans ) - hb_cdpnTranslate( ( char * ) s_sLineBuf, s_cdpHost, s_cdpTerm, iLen ); + if( pGTSTD->fDispTrans ) + hb_cdpnTranslate( ( char * ) pGTSTD->sLineBuf, pGTSTD->cdpHost, pGTSTD->cdpTerm, iLen ); #endif - hb_gt_std_termOut( s_sLineBuf, iLen ); + hb_gt_std_termOut( pGTSTD, pGTSTD->sLineBuf, iLen ); } - s_iRow = iRow; - s_iCol = iCol; - if( s_iCol > s_iLastCol ) - s_iLastCol = s_iCol; + pGTSTD->iRow = iRow; + pGTSTD->iCol = iCol; + if( pGTSTD->iCol > pGTSTD->iLastCol ) + pGTSTD->iLastCol = pGTSTD->iCol; } } static void hb_gt_std_Refresh( PHB_GT pGT ) { int iHeight, iWidth; + PHB_GTSTD pGTSTD; HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Refresh(%p)", pGT ) ); HB_GTSELF_GETSIZE( pGT, &iHeight, &iWidth ); - if( s_iLineBufSize == 0 ) + pGTSTD = HB_GTSTD_GET( pGT ); + if( pGTSTD->iLineBufSize == 0 ) { - s_sLineBuf = ( BYTE * ) hb_xgrab( iWidth ); - s_iLineBufSize = iWidth; + pGTSTD->sLineBuf = ( BYTE * ) hb_xgrab( iWidth ); + pGTSTD->iLineBufSize = iWidth; } - else if( s_iLineBufSize != iWidth ) + else if( pGTSTD->iLineBufSize != iWidth ) { - s_sLineBuf = ( BYTE * ) hb_xrealloc( s_sLineBuf, iWidth ); - s_iLineBufSize = iWidth; + pGTSTD->sLineBuf = ( BYTE * ) hb_xrealloc( pGTSTD->sLineBuf, iWidth ); + pGTSTD->iLineBufSize = iWidth; } - s_bFullRedraw = FALSE; + pGTSTD->fFullRedraw = FALSE; HB_GTSUPER_REFRESH( pGT ); - if( s_bFullRedraw ) + if( pGTSTD->fFullRedraw ) { int i; - if( s_iRow < iHeight - 1 ) + if( pGTSTD->iRow < iHeight - 1 ) { - for( i = s_iRow + 1; i < iHeight; ++i ) + for( i = pGTSTD->iRow + 1; i < iHeight; ++i ) hb_gt_std_DispLine( pGT, i ); } } @@ -714,10 +750,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gttrm/gttrm.c b/harbour/source/rtl/gttrm/gttrm.c index b954302931..8e0b5d5f93 100644 --- a/harbour/source/rtl/gttrm/gttrm.c +++ b/harbour/source/rtl/gttrm/gttrm.c @@ -2876,7 +2876,7 @@ static void hb_gt_trm_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStd tcsetattr( pTerm->hFilenoStdin, TCSAFLUSH, &pTerm->curr_TIO ); act.sa_handler = SIG_DFL; - sigaction( SIGTTOU, &old, 0 ); + sigaction( SIGTTOU, &old, NULL ); pTerm->fRestTTY = s_fRestTTY; } set_signals(); @@ -3441,10 +3441,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtwin/gtwin.c b/harbour/source/rtl/gtwin/gtwin.c index dbce5533a4..60168b8b49 100644 --- a/harbour/source/rtl/gtwin/gtwin.c +++ b/harbour/source/rtl/gtwin/gtwin.c @@ -1809,10 +1809,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtwvt/gtwvt.c b/harbour/source/rtl/gtwvt/gtwvt.c index f408c967f3..71a8c2a7c1 100644 --- a/harbour/source/rtl/gtwvt/gtwvt.c +++ b/harbour/source/rtl/gtwvt/gtwvt.c @@ -2081,10 +2081,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/gtxwc/gtxwc.c b/harbour/source/rtl/gtxwc/gtxwc.c index dcbe82dabf..481cc17785 100644 --- a/harbour/source/rtl/gtxwc/gtxwc.c +++ b/harbour/source/rtl/gtxwc/gtxwc.c @@ -4051,10 +4051,10 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable ) /* ********************************************************************** */ -static HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), - hb_gt_FuncInit, - HB_GTSUPER, - HB_GTID_PTR }; +static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ), + hb_gt_FuncInit, + HB_GTSUPER, + HB_GTID_PTR }; HB_GT_ANNOUNCE( HB_GT_NAME ) diff --git a/harbour/source/rtl/hbgtcore.c b/harbour/source/rtl/hbgtcore.c index c104a3bc72..d498d1d576 100644 --- a/harbour/source/rtl/hbgtcore.c +++ b/harbour/source/rtl/hbgtcore.c @@ -2989,7 +2989,7 @@ static char s_gtNameBuf[ HB_GT_NAME_MAX_ + 1 ]; const char * s_defaultGT = "std"; #endif -static PHB_GT_INIT s_gtInit[ HB_GT_MAX_ ]; +static const HB_GT_INIT * s_gtInit[ HB_GT_MAX_ ]; static int s_gtLinkOrder[ HB_GT_MAX_ ]; static int s_iGtLinkCount = 0; static int s_iGtCount = 0; @@ -3036,7 +3036,7 @@ HB_EXPORT void hb_gtSetDefault( const char * szGtName ) s_defaultGT = s_gtNameBuf; } -HB_EXPORT BOOL hb_gtRegister( PHB_GT_INIT gtInit ) +HB_EXPORT BOOL hb_gtRegister( const HB_GT_INIT * gtInit ) { if( hb_gt_FindEntry( gtInit->id ) == -1 ) { @@ -3053,7 +3053,17 @@ HB_EXPORT BOOL hb_gtLoad( const char * szGtName, PHB_GT_FUNCS pFuncTable ) if( szGtName ) { if( hb_stricmp( szGtName, "nul" ) == 0 || hb_stricmp( szGtName, "null" ) == 0 ) + { + if( pFuncTable == NULL ) + pFuncTable = &s_gtCoreFunc; + if( !s_curGT ) + { + s_curGT = ( PHB_GT_BASE ) hb_xgrab( sizeof( HB_GT_BASE ) ); + memset( s_curGT, 0, sizeof( HB_GT_BASE ) ); + } + s_curGT->pFuncTable = pFuncTable; return TRUE; + } iPos = hb_gt_FindEntry( szGtName );