2008-10-21 22:18 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapigt.h
* harbour/source/rtl/console.c
* harbour/source/rtl/filesys.c
* use HB_STD{IN,OUT,ERR}_HANDLE macros instead of hard coded values
* harbour/include/hbgtcore.h
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/gtapi.c
+ added optional support for dynamic supertables
+ added reference counter to HB_GT_BASE structure
- removed hb_gtUnLoad() function
+ added hb_gtAlloc(), hb_gtRelease(), hb_gtAttach()
+ added hb_gtRealod() function which unloads current GT driver
and loads given new one
+ added .prg function HB_GTRELOAD( <cGtName> ) -> <lSuccess>
This function allow to switch active GT driver at run time.
It can be also used to simulate removed HB_NOSTARTUPWINDOW()
functionality. F.e.:
REQUEST HB_GT_WVT
REQUEST HB_GT_NUL_DEFAULT
proc main()
// do some initializations...
hb_gtReload( "WVT" )
// rest of code...
return
Please remember that some GTs may refuse initialization due to
missing required resources and instead of return FALSE they can
interrupt program with internal error, just like at application
startup so it's not guarantied that this function always returns.
* harbour/contrib/hbct/ctwin.c
* updated for new GT API
+ added support for dynamic supertable to allow using CTWIN in the
same time with different GTs.
* harbour/contrib/xhb/hbcompat.h
- removed hb_retclenAdoptRaw translation
This commit is contained in:
@@ -8,6 +8,47 @@
|
||||
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2008-10-21 22:18 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/include/hbapigt.h
|
||||
* harbour/source/rtl/console.c
|
||||
* harbour/source/rtl/filesys.c
|
||||
* use HB_STD{IN,OUT,ERR}_HANDLE macros instead of hard coded values
|
||||
|
||||
* harbour/include/hbgtcore.h
|
||||
* harbour/source/rtl/hbgtcore.c
|
||||
* harbour/source/rtl/gtapi.c
|
||||
+ added optional support for dynamic supertables
|
||||
+ added reference counter to HB_GT_BASE structure
|
||||
- removed hb_gtUnLoad() function
|
||||
+ added hb_gtAlloc(), hb_gtRelease(), hb_gtAttach()
|
||||
+ added hb_gtRealod() function which unloads current GT driver
|
||||
and loads given new one
|
||||
+ added .prg function HB_GTRELOAD( <cGtName> ) -> <lSuccess>
|
||||
This function allow to switch active GT driver at run time.
|
||||
It can be also used to simulate removed HB_NOSTARTUPWINDOW()
|
||||
functionality. F.e.:
|
||||
|
||||
REQUEST HB_GT_WVT
|
||||
REQUEST HB_GT_NUL_DEFAULT
|
||||
proc main()
|
||||
// do some initializations...
|
||||
hb_gtReload( "WVT" )
|
||||
// rest of code...
|
||||
return
|
||||
|
||||
Please remember that some GTs may refuse initialization due to
|
||||
missing required resources and instead of return FALSE they can
|
||||
interrupt program with internal error, just like at application
|
||||
startup so it's not guarantied that this function always returns.
|
||||
|
||||
* harbour/contrib/hbct/ctwin.c
|
||||
* updated for new GT API
|
||||
+ added support for dynamic supertable to allow using CTWIN in the
|
||||
same time with different GTs.
|
||||
|
||||
* harbour/contrib/xhb/hbcompat.h
|
||||
- removed hb_retclenAdoptRaw translation
|
||||
|
||||
2008-10-21 14:58 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
|
||||
* source/rtl/box.c
|
||||
! Fixed GPF in hb_dispBox() when box drawing chars
|
||||
|
||||
@@ -62,11 +62,11 @@
|
||||
#include "ctwin.h"
|
||||
|
||||
static int s_GtId;
|
||||
static HB_GT_FUNCS SuperTable;
|
||||
#define HB_GTSUPER (&SuperTable)
|
||||
#define HB_GTID_PTR (&s_GtId)
|
||||
#undef HB_GTSUPERTABLE
|
||||
#define HB_GTSUPERTABLE(g) ( &( HB_GTCTW_GET( g )->SuperTable ) )
|
||||
#define HB_GTID_PTR (&s_GtId)
|
||||
|
||||
#define HB_GTCTW_GET(p) ( ( PHB_GTCTW ) HB_GTLOCAL( p ) )
|
||||
#define HB_GTCTW_GET(p) ( ( PHB_GTCTW ) HB_GTLOCAL( p ) )
|
||||
|
||||
#define HB_CTWIN_ALLOC 16
|
||||
#define HB_CTWIN_MINROWS 1
|
||||
@@ -108,6 +108,7 @@ typedef struct
|
||||
typedef struct
|
||||
{
|
||||
PHB_GT pGT;
|
||||
HB_GT_FUNCS SuperTable;
|
||||
|
||||
int iShadowWidth;
|
||||
int iShadowAttr;
|
||||
@@ -798,28 +799,23 @@ static int hb_ctw_AddWindowBox( PHB_GTCTW pCTW, int iWindow, BYTE * szBox, int i
|
||||
|
||||
/* ********************************************************************** */
|
||||
|
||||
static void hb_ctw_Init( PHB_GT pGT )
|
||||
static void hb_ctw_Init( PHB_GTCTW pCTW )
|
||||
{
|
||||
PHB_GTCTW pCTW;
|
||||
int iRow, iCol;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_ctw_Init(%p)",pGT));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_ctw_Init(%p)",pCTW));
|
||||
|
||||
pCTW = ( PHB_GTCTW ) hb_xgrab( sizeof( HB_GTCTW ) );
|
||||
memset( pCTW, 0, sizeof( HB_GTCTW ) );
|
||||
HB_GTLOCAL( pGT ) = pCTW;
|
||||
pCTW->pGT = pGT;
|
||||
pCTW->iShadowWidth = 2;
|
||||
pCTW->iShadowAttr = -1;
|
||||
pCTW->iMoveMode = 1;
|
||||
pCTW->iVerticalStep = 2;
|
||||
pCTW->iHorizontalStep = 5;
|
||||
|
||||
HB_GTSUPER_GETSIZE( pGT, &pCTW->iMapHeight, &pCTW->iMapWidth );
|
||||
HB_GTSUPER_GETSIZE( pCTW->pGT, &pCTW->iMapHeight, &pCTW->iMapWidth );
|
||||
|
||||
/* update cursor position to the rules used by CTWIN */
|
||||
HB_GTSELF_GETPOS( pGT, &iRow, &iCol );
|
||||
HB_GTSELF_SETPOS( pGT, iRow, iCol );
|
||||
HB_GTSELF_GETPOS( pCTW->pGT, &iRow, &iCol );
|
||||
HB_GTSELF_SETPOS( pCTW->pGT, iRow, iCol );
|
||||
}
|
||||
|
||||
/* ********************************************************************** */
|
||||
@@ -828,17 +824,29 @@ static PHB_GTCTW hb_ctw_base( void )
|
||||
{
|
||||
PHB_GT pGT;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_ctw_base(%p)"));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_ctw_base()"));
|
||||
|
||||
pGT = hb_gt_Base();
|
||||
if( pGT )
|
||||
{
|
||||
if( *HB_GTID_PTR != 0 || hb_gtLoad( HB_GT_DRVNAME( HB_GT_NAME ), NULL ) )
|
||||
if( HB_GTCTW_GET( pGT ) )
|
||||
return HB_GTCTW_GET( pGT );
|
||||
else
|
||||
{
|
||||
if( ! HB_GTCTW_GET( pGT ) )
|
||||
hb_ctw_Init( pGT );
|
||||
if( HB_GTCTW_GET( pGT ) )
|
||||
return HB_GTCTW_GET( pGT );
|
||||
PHB_GTCTW pCTW = ( PHB_GTCTW ) hb_xgrab( sizeof( HB_GTCTW ) );
|
||||
|
||||
memset( pCTW, 0, sizeof( HB_GTCTW ) );
|
||||
HB_GTLOCAL( pGT ) = pCTW;
|
||||
pCTW->pGT = pGT;
|
||||
|
||||
if( hb_gtLoad( HB_GT_DRVNAME( HB_GT_NAME ), pGT, HB_GTSUPERTABLE( pGT ) ) )
|
||||
{
|
||||
hb_ctw_Init( pCTW );
|
||||
return pCTW;
|
||||
}
|
||||
|
||||
HB_GTLOCAL( pGT ) = NULL;
|
||||
hb_xfree( pCTW );
|
||||
}
|
||||
hb_gt_BaseFree( pGT );
|
||||
}
|
||||
@@ -846,14 +854,6 @@ static PHB_GTCTW hb_ctw_base( void )
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void hb_ctw_gt_Init( PHB_GT pGT, HB_FHANDLE hFilenoStdin, HB_FHANDLE hFilenoStdout, HB_FHANDLE hFilenoStderr )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_ctw_gt_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr));
|
||||
|
||||
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
|
||||
hb_ctw_Init( pGT );
|
||||
}
|
||||
|
||||
static void hb_ctw_gt_Exit( PHB_GT pGT )
|
||||
{
|
||||
PHB_GTCTW pCTW;
|
||||
@@ -1981,7 +1981,6 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_FuncInit(%p)", pFuncTable));
|
||||
|
||||
pFuncTable->Init = hb_ctw_gt_Init;
|
||||
pFuncTable->Exit = hb_ctw_gt_Exit;
|
||||
pFuncTable->MouseRow = hb_ctw_MouseRow;
|
||||
pFuncTable->MouseCol = hb_ctw_MouseCol;
|
||||
@@ -2013,7 +2012,7 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable )
|
||||
|
||||
static const HB_GT_INIT gtInit = { HB_GT_DRVNAME( HB_GT_NAME ),
|
||||
hb_gt_FuncInit,
|
||||
HB_GTSUPER,
|
||||
NULL,
|
||||
HB_GTID_PTR };
|
||||
|
||||
HB_GT_ANNOUNCE( HB_GT_NAME )
|
||||
|
||||
@@ -63,14 +63,13 @@
|
||||
#define hb_retc_buffer( szText ) hb_retcAdopt( (szText) )
|
||||
#define hb_retclen_buffer( szText, ulLen ) hb_retclenAdopt( (szText), (ulLen) )
|
||||
#define hb_retc_const( szText ) hb_retcStatic( (szText) )
|
||||
#define hb_storclen_buffer hb_storclenAdopt
|
||||
#define hb_storclen_buffer hb_storclenAdopt
|
||||
#define hb_itemPutCLConst hb_itemPutCRawStatic
|
||||
|
||||
#else
|
||||
|
||||
#define hb_retcAdopt( szText ) hb_retc_buffer( (szText) )
|
||||
#define hb_retclenAdopt( szText, ulLen ) hb_retclen_buffer( (szText), (ulLen) )
|
||||
#define hb_retclenAdoptRaw( szText, ulLen ) hb_retclen_buffer( (szText), (ulLen) )
|
||||
#define hb_retcStatic( szText ) hb_retc_const( (szText) )
|
||||
#define hb_storclenAdopt hb_storclen_buffer
|
||||
#define hb_itemPutCRawStatic hb_itemPutCLConst
|
||||
|
||||
@@ -129,6 +129,18 @@ HB_EXTERN_BEGIN
|
||||
#endif
|
||||
|
||||
|
||||
/* standard input/output handles
|
||||
* when HB_WIN32_IO is set file handles with numbers 0, 1, 2 are
|
||||
* transalted inside filesys to
|
||||
* GetStdHandle( STD_INPUT_HANDLE )
|
||||
* GetStdHandle( STD_OUTPUT_HANDLE )
|
||||
* GetStdHandle( STD_ERROR_HANDLE )
|
||||
*/
|
||||
#define HB_STDIN_HANDLE 0
|
||||
#define HB_STDOUT_HANDLE 1
|
||||
#define HB_STDERR_HANDLE 2
|
||||
|
||||
|
||||
/* structure used to pass/receive parameters in hb_gtInfo() */
|
||||
|
||||
typedef struct
|
||||
|
||||
@@ -296,6 +296,7 @@ typedef struct _HB_GT_BASE
|
||||
PHB_GT_FUNCS pFuncTable;
|
||||
|
||||
PHB_ITEM pMutex;
|
||||
int iUsed;
|
||||
|
||||
int iRow; /* cursor row position */
|
||||
int iCol; /* cursor column position */
|
||||
@@ -479,129 +480,138 @@ extern void hb_gt_BaseFree( PHB_GT pGT );
|
||||
#define HB_GTSELF_GFXTEXT(g,t,l,s,c,h,w) (g)->pFuncTable->GfxText(g,t,l,s,c,h,w)
|
||||
#define HB_GTSELF_WHOCARES(g,p) (g)->pFuncTable->WhoCares(g,p)
|
||||
|
||||
#define HB_GTSUPER_LOCK(g) (HB_GTSUPER)->Lock(g)
|
||||
#define HB_GTSUPER_UNLOCK(g) (HB_GTSUPER)->Unlock(g)
|
||||
#define HB_GTSUPER_INIT(g,i,o,e) (HB_GTSUPER)->Init(g,i,o,e)
|
||||
#define HB_GTSUPER_EXIT(g) (HB_GTSUPER)->Exit(g)
|
||||
#define HB_GTSUPER_NEW(g) (HB_GTSUPER)->New(g)
|
||||
#define HB_GTSUPER_FREE(g) (HB_GTSUPER)->Free(g)
|
||||
#define HB_GTSUPER_RESIZE(g,r,c) (HB_GTSUPER)->Resize(g,r,c)
|
||||
#define HB_GTSUPER_SETMODE(g,r,c) (HB_GTSUPER)->SetMode(g,r,c)
|
||||
#define HB_GTSUPER_GETSIZE(g,pr,pc) (HB_GTSUPER)->GetSize(g,pr,pc)
|
||||
#define HB_GTSUPER_SEMICOLD(g) (HB_GTSUPER)->SemiCold(g)
|
||||
#define HB_GTSUPER_COLDAREA(g,t,l,b,r) (HB_GTSUPER)->ColdArea(g,t,l,b,r)
|
||||
#define HB_GTSUPER_EXPOSEAREA(g,t,l,b,r) (HB_GTSUPER)->ExposeArea(g,t,l,b,r)
|
||||
#define HB_GTSUPER_SCROLLAREA(g,t,l,b,r,m,u,v,h) (HB_GTSUPER)->ScrollArea(g,t,l,b,r,m,u,v,h)
|
||||
#define HB_GTSUPER_TOUCHCELL(g,r,c) (HB_GTSUPER)->TouchCell(g,r,c)
|
||||
#define HB_GTSUPER_REDRAW(g,r,c,l) (HB_GTSUPER)->Redraw(g,r,c,l)
|
||||
#define HB_GTSUPER_REFRESH(g) (HB_GTSUPER)->Refresh(g)
|
||||
#define HB_GTSUPER_FLUSH(g) (HB_GTSUPER)->Flush(g)
|
||||
#define HB_GTSUPER_MAXCOL(g) (HB_GTSUPER)->MaxCol(g)
|
||||
#define HB_GTSUPER_MAXROW(g) (HB_GTSUPER)->MaxRow(g)
|
||||
#define HB_GTSUPER_CHECKPOS(g,r,c,l) (HB_GTSUPER)->CheckPos(g,r,c,l)
|
||||
#define HB_GTSUPER_SETPOS(g,r,c) (HB_GTSUPER)->SetPos(g,r,c)
|
||||
#define HB_GTSUPER_GETPOS(g,pr,pc) (HB_GTSUPER)->GetPos(g,pr,pc)
|
||||
#define HB_GTSUPER_ISCOLOR(g) (HB_GTSUPER)->IsColor(g)
|
||||
#define HB_GTSUPER_GETCOLORSTR(g,s) (HB_GTSUPER)->GetColorStr(g,s)
|
||||
#define HB_GTSUPER_SETCOLORSTR(g,s) (HB_GTSUPER)->SetColorStr(g,s)
|
||||
#define HB_GTSUPER_COLORSELECT(g,c) (HB_GTSUPER)->ColorSelect(g,c)
|
||||
#define HB_GTSUPER_GETCOLOR(g) (HB_GTSUPER)->GetColor(g)
|
||||
#define HB_GTSUPER_COLORNUM(g,s) (HB_GTSUPER)->ColorNum(g,s)
|
||||
#define HB_GTSUPER_COLORSTOSTRING(g,pc,i,ps,n) (HB_GTSUPER)->ColorsToString(g,pc,i,ps,n)
|
||||
#define HB_GTSUPER_STRINGTOCOLORS(g,ps,pc,pi) (HB_GTSUPER)->StringToColors(g,ps,pc,pi)
|
||||
#define HB_GTSUPER_GETCOLORDATA(g,pc,pn,pi) (HB_GTSUPER)->GetColorData(g,pc,pn,pi)
|
||||
#define HB_GTSUPER_GETCLEARCOLOR(g) (HB_GTSUPER)->GetClearColor(g)
|
||||
#define HB_GTSUPER_SETCLEARCOLOR(g,c) (HB_GTSUPER)->SetClearColor(g,c)
|
||||
#define HB_GTSUPER_GETCLEARCHAR(g) (HB_GTSUPER)->GetClearChar(g)
|
||||
#define HB_GTSUPER_SETCLEARCHAR(g,c) (HB_GTSUPER)->SetClearChar(g,c)
|
||||
#define HB_GTSUPER_GETCURSORSTYLE(g) (HB_GTSUPER)->GetCursorStyle(g)
|
||||
#define HB_GTSUPER_SETCURSORSTYLE(g,s) (HB_GTSUPER)->SetCursorStyle(g,s)
|
||||
#define HB_GTSUPER_GETSCRCURSOR(g,pr,pc,ps) (HB_GTSUPER)->GetScrCursor(g,pr,pc,ps)
|
||||
#define HB_GTSUPER_GETSCRCHAR(g,r,c,pm,pa,pc) (HB_GTSUPER)->GetScrChar(g,r,c,pm,pa,pc)
|
||||
#define HB_GTSUPER_PUTSCRCHAR(g,r,c,m,a,u) (HB_GTSUPER)->PutScrChar(g,r,c,m,a,u)
|
||||
#define HB_GTSUPER_DISPBEGIN(g) (HB_GTSUPER)->DispBegin(g)
|
||||
#define HB_GTSUPER_DISPEND(g) (HB_GTSUPER)->DispEnd(g)
|
||||
#define HB_GTSUPER_DISPCOUNT(g) (HB_GTSUPER)->DispCount(g)
|
||||
#define HB_GTSUPER_GETCHAR(g,r,c,pm,pa,pc) (HB_GTSUPER)->GetChar(g,r,c,pm,pa,pc)
|
||||
#define HB_GTSUPER_PUTCHAR(g,r,c,m,a,u) (HB_GTSUPER)->PutChar(g,r,c,m,a,u)
|
||||
#define HB_GTSUPER_RECTSIZE(g,t,l,b,r) (HB_GTSUPER)->RectSize(g,t,l,b,r)
|
||||
#define HB_GTSUPER_SAVE(g,t,l,b,r,p) (HB_GTSUPER)->Save(g,t,l,b,r,p)
|
||||
#define HB_GTSUPER_REST(g,t,l,b,r,p) (HB_GTSUPER)->Rest(g,t,l,b,r,p)
|
||||
#define HB_GTSUPER_PUTTEXT(g,r,c,m,s,l) (HB_GTSUPER)->PutText(g,r,c,m,s,l)
|
||||
#define HB_GTSUPER_REPLICATE(g,r,c,m,a,u,l) (HB_GTSUPER)->Replicate(g,r,c,m,a,u,l)
|
||||
#define HB_GTSUPER_WRITEAT(g,r,c,s,l) (HB_GTSUPER)->WriteAt(g,r,c,s,l)
|
||||
#define HB_GTSUPER_WRITE(g,s,l) (HB_GTSUPER)->Write(g,s,l)
|
||||
#define HB_GTSUPER_WRITECON(g,s,l) (HB_GTSUPER)->WriteCon(g,s,l)
|
||||
#define HB_GTSUPER_SETATTRIBUTE(g,t,l,b,r,m) (HB_GTSUPER)->SetAttribute(g,t,l,b,r,m)
|
||||
#define HB_GTSUPER_DRAWSHADOW(g,t,l,b,r,m) (HB_GTSUPER)->DrawShadow(g,t,l,b,r,m)
|
||||
#define HB_GTSUPER_SCROLL(g,t,l,b,r,m,u,v,h) (HB_GTSUPER)->Scroll(g,t,l,b,r,m,u,v,h)
|
||||
#define HB_GTSUPER_SCROLLUP(g,r,m,u) (HB_GTSUPER)->ScrollUp(g,r,m,u)
|
||||
#define HB_GTSUPER_BOX(g,t,l,b,r,f,m) (HB_GTSUPER)->Box(g,t,l,b,r,f,m)
|
||||
#define HB_GTSUPER_BOXD(g,t,l,b,r,f,m) (HB_GTSUPER)->BoxD(g,t,l,b,r,f,m)
|
||||
#define HB_GTSUPER_BOXS(g,t,l,b,r,f,m) (HB_GTSUPER)->BoxS(g,t,l,b,r,f,m)
|
||||
#define HB_GTSUPER_HORIZLINE(g,h,l,r,u,m) (HB_GTSUPER)->HorizLine(g,h,l,r,u,m)
|
||||
#define HB_GTSUPER_VERTLINE(g,c,t,b,u,m) (HB_GTSUPER)->VertLine(g,c,t,b,u,m)
|
||||
#define HB_GTSUPER_GETBLINK(g) (HB_GTSUPER)->GetBlink(g)
|
||||
#define HB_GTSUPER_SETBLINK(g,b) (HB_GTSUPER)->SetBlink(g,b)
|
||||
#define HB_GTSUPER_SETSNOWFLAG(g,b) (HB_GTSUPER)->SetSnowFlag(g,b)
|
||||
#define HB_GTSUPER_VERSION(g,i) (HB_GTSUPER)->Version(g,i)
|
||||
#define HB_GTSUPER_SUSPEND(g) (HB_GTSUPER)->Suspend(g)
|
||||
#define HB_GTSUPER_RESUME(g) (HB_GTSUPER)->Resume(g)
|
||||
#define HB_GTSUPER_PREEXT(g) (HB_GTSUPER)->PreExt(g)
|
||||
#define HB_GTSUPER_POSTEXT(g) (HB_GTSUPER)->PostExt(g)
|
||||
#define HB_GTSUPER_OUTSTD(g,s,l) (HB_GTSUPER)->OutStd(g,s,l)
|
||||
#define HB_GTSUPER_OUTERR(g,s,l) (HB_GTSUPER)->OutErr(g,s,l)
|
||||
#define HB_GTSUPER_TONE(g,f,d) (HB_GTSUPER)->Tone(g,f,d)
|
||||
#define HB_GTSUPER_BELL(g) (HB_GTSUPER)->Bell(g)
|
||||
#define HB_GTSUPER_INFO(g,i,p) (HB_GTSUPER)->Info(g,i,p)
|
||||
#define HB_GTSUPER_ALERT(g,m,o,n,h,d) (HB_GTSUPER)->Alert(g,m,o,n,h,d)
|
||||
#define HB_GTSUPER_SETFLAG(g,i,f) (HB_GTSUPER)->SetFlag(g,i,f)
|
||||
#define HB_GTSUPER_SETDISPCP(g,t,h,b) (HB_GTSUPER)->SetDispCP(g,t,h,b)
|
||||
#define HB_GTSUPER_SETKEYCP(g,t,h) (HB_GTSUPER)->SetKeyCP(g,t,h)
|
||||
#define HB_GTSUPER_READKEY(g,m) (HB_GTSUPER)->ReadKey(g,m)
|
||||
#define HB_GTSUPER_INKEYGET(g,w,d,m) (HB_GTSUPER)->InkeyGet(g,w,d,m)
|
||||
#define HB_GTSUPER_INKEYPUT(g,k) (HB_GTSUPER)->InkeyPut(g,k)
|
||||
#define HB_GTSUPER_INKEYINS(g,k) (HB_GTSUPER)->InkeyIns(g,k)
|
||||
#define HB_GTSUPER_INKEYLAST(g,m) (HB_GTSUPER)->InkeyLast(g,m)
|
||||
#define HB_GTSUPER_INKEYNEXT(g,m) (HB_GTSUPER)->InkeyNext(g,m)
|
||||
#define HB_GTSUPER_INKEYPOLL(g) (HB_GTSUPER)->InkeyPoll(g)
|
||||
#define HB_GTSUPER_INKEYSETTEXT(g,s,l) (HB_GTSUPER)->InkeySetText(g,s,l)
|
||||
#define HB_GTSUPER_INKEYSETLAST(g,k) (HB_GTSUPER)->InkeySetLast(g,k)
|
||||
#define HB_GTSUPER_INKEYRESET(g) (HB_GTSUPER)->InkeyReset(g)
|
||||
#define HB_GTSUPER_INKEYEXIT(g) (HB_GTSUPER)->InkeyExit(g)
|
||||
#define HB_GTSUPER_MOUSEINIT(g) (HB_GTSUPER)->MouseInit(g)
|
||||
#define HB_GTSUPER_MOUSEEXIT(g) (HB_GTSUPER)->MouseExit(g)
|
||||
#define HB_GTSUPER_MOUSEISPRESENT(g) (HB_GTSUPER)->MouseIsPresent(g)
|
||||
#define HB_GTSUPER_MOUSESHOW(g) (HB_GTSUPER)->MouseShow(g)
|
||||
#define HB_GTSUPER_MOUSEHIDE(g) (HB_GTSUPER)->MouseHide(g)
|
||||
#define HB_GTSUPER_MOUSEGETCURSOR(g) (HB_GTSUPER)->MouseGetCursor(g)
|
||||
#define HB_GTSUPER_MOUSESETCURSOR(g,v) (HB_GTSUPER)->MouseSetCursor(g,v)
|
||||
#define HB_GTSUPER_MOUSECOL(g) (HB_GTSUPER)->MouseCol(g)
|
||||
#define HB_GTSUPER_MOUSEROW(g) (HB_GTSUPER)->MouseRow(g)
|
||||
#define HB_GTSUPER_MOUSEGETPOS(g,pr,pc) (HB_GTSUPER)->MouseGetPos(g,pr,pc)
|
||||
#define HB_GTSUPER_MOUSESETPOS(g,r,c) (HB_GTSUPER)->MouseSetPos(g,r,c)
|
||||
#define HB_GTSUPER_MOUSESETBOUNDS(g,t,l,b,r) (HB_GTSUPER)->MouseSetBounds(g,t,l,b,r)
|
||||
#define HB_GTSUPER_MOUSEGETBOUNDS(g,t,l,b,r) (HB_GTSUPER)->MouseGetBounds(g,t,l,b,r)
|
||||
#define HB_GTSUPER_MOUSESTORAGESIZE(g) (HB_GTSUPER)->MouseStorageSize(g)
|
||||
#define HB_GTSUPER_MOUSESAVESTATE(g,p) (HB_GTSUPER)->MouseSaveState(g,p)
|
||||
#define HB_GTSUPER_MOUSERESTORESTATE(g,p) (HB_GTSUPER)->MouseRestoreState(g,p)
|
||||
#define HB_GTSUPER_MOUSEGETDOUBLECLICKSPEED(g) (HB_GTSUPER)->MouseGetDoubleClickSpeed(g)
|
||||
#define HB_GTSUPER_MOUSESETDOUBLECLICKSPEED(g,i) (HB_GTSUPER)->MouseSetDoubleClickSpeed(g,i)
|
||||
#define HB_GTSUPER_MOUSECOUNTBUTTON(g) (HB_GTSUPER)->MouseCountButton(g)
|
||||
#define HB_GTSUPER_MOUSEBUTTONSTATE(g,b) (HB_GTSUPER)->MouseButtonState(g,b)
|
||||
#define HB_GTSUPER_MOUSEBUTTONPRESSED(g,b,r,c) (HB_GTSUPER)->MouseButtonPressed(g,b,r,c)
|
||||
#define HB_GTSUPER_MOUSEBUTTONRELEASED(g,b,r,c) (HB_GTSUPER)->MouseButtonReleased(g,b,r,c)
|
||||
#define HB_GTSUPER_MOUSEREADKEY(g,m) (HB_GTSUPER)->MouseReadKey(g,m)
|
||||
#define HB_GTSUPER_GFXPRIMITIVE(g,i,t,l,b,r,c) (HB_GTSUPER)->GfxPrimitive(g,i,t,l,b,r,c)
|
||||
#define HB_GTSUPER_GFXTEXT(g,t,l,s,c,h,w) (HB_GTSUPER)->GfxText(g,t,l,s,c,h,w)
|
||||
#define HB_GTSUPER_WHOCARES(g,p) (HB_GTSUPER)->WhoCares(g,p)
|
||||
#ifndef HB_GTSUPERTABLE
|
||||
# define HB_GTSUPERTABLE(g) HB_GTSUPER
|
||||
#endif
|
||||
|
||||
extern HB_EXPORT void hb_gtSetDefault( const char * szGtName );
|
||||
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 );
|
||||
#define HB_GTSUPER_LOCK(g) (HB_GTSUPERTABLE(g))->Lock(g)
|
||||
#define HB_GTSUPER_UNLOCK(g) (HB_GTSUPERTABLE(g))->Unlock(g)
|
||||
#define HB_GTSUPER_INIT(g,i,o,e) (HB_GTSUPERTABLE(g))->Init(g,i,o,e)
|
||||
#define HB_GTSUPER_EXIT(g) (HB_GTSUPERTABLE(g))->Exit(g)
|
||||
#define HB_GTSUPER_NEW(g) (HB_GTSUPERTABLE(g))->New(g)
|
||||
#define HB_GTSUPER_FREE(g) (HB_GTSUPERTABLE(g))->Free(g)
|
||||
#define HB_GTSUPER_RESIZE(g,r,c) (HB_GTSUPERTABLE(g))->Resize(g,r,c)
|
||||
#define HB_GTSUPER_SETMODE(g,r,c) (HB_GTSUPERTABLE(g))->SetMode(g,r,c)
|
||||
#define HB_GTSUPER_GETSIZE(g,pr,pc) (HB_GTSUPERTABLE(g))->GetSize(g,pr,pc)
|
||||
#define HB_GTSUPER_SEMICOLD(g) (HB_GTSUPERTABLE(g))->SemiCold(g)
|
||||
#define HB_GTSUPER_COLDAREA(g,t,l,b,r) (HB_GTSUPERTABLE(g))->ColdArea(g,t,l,b,r)
|
||||
#define HB_GTSUPER_EXPOSEAREA(g,t,l,b,r) (HB_GTSUPERTABLE(g))->ExposeArea(g,t,l,b,r)
|
||||
#define HB_GTSUPER_SCROLLAREA(g,t,l,b,r,m,u,v,h) (HB_GTSUPERTABLE(g))->ScrollArea(g,t,l,b,r,m,u,v,h)
|
||||
#define HB_GTSUPER_TOUCHCELL(g,r,c) (HB_GTSUPERTABLE(g))->TouchCell(g,r,c)
|
||||
#define HB_GTSUPER_REDRAW(g,r,c,l) (HB_GTSUPERTABLE(g))->Redraw(g,r,c,l)
|
||||
#define HB_GTSUPER_REFRESH(g) (HB_GTSUPERTABLE(g))->Refresh(g)
|
||||
#define HB_GTSUPER_FLUSH(g) (HB_GTSUPERTABLE(g))->Flush(g)
|
||||
#define HB_GTSUPER_MAXCOL(g) (HB_GTSUPERTABLE(g))->MaxCol(g)
|
||||
#define HB_GTSUPER_MAXROW(g) (HB_GTSUPERTABLE(g))->MaxRow(g)
|
||||
#define HB_GTSUPER_CHECKPOS(g,r,c,l) (HB_GTSUPERTABLE(g))->CheckPos(g,r,c,l)
|
||||
#define HB_GTSUPER_SETPOS(g,r,c) (HB_GTSUPERTABLE(g))->SetPos(g,r,c)
|
||||
#define HB_GTSUPER_GETPOS(g,pr,pc) (HB_GTSUPERTABLE(g))->GetPos(g,pr,pc)
|
||||
#define HB_GTSUPER_ISCOLOR(g) (HB_GTSUPERTABLE(g))->IsColor(g)
|
||||
#define HB_GTSUPER_GETCOLORSTR(g,s) (HB_GTSUPERTABLE(g))->GetColorStr(g,s)
|
||||
#define HB_GTSUPER_SETCOLORSTR(g,s) (HB_GTSUPERTABLE(g))->SetColorStr(g,s)
|
||||
#define HB_GTSUPER_COLORSELECT(g,c) (HB_GTSUPERTABLE(g))->ColorSelect(g,c)
|
||||
#define HB_GTSUPER_GETCOLOR(g) (HB_GTSUPERTABLE(g))->GetColor(g)
|
||||
#define HB_GTSUPER_COLORNUM(g,s) (HB_GTSUPERTABLE(g))->ColorNum(g,s)
|
||||
#define HB_GTSUPER_COLORSTOSTRING(g,pc,i,ps,n) (HB_GTSUPERTABLE(g))->ColorsToString(g,pc,i,ps,n)
|
||||
#define HB_GTSUPER_STRINGTOCOLORS(g,ps,pc,pi) (HB_GTSUPERTABLE(g))->StringToColors(g,ps,pc,pi)
|
||||
#define HB_GTSUPER_GETCOLORDATA(g,pc,pn,pi) (HB_GTSUPERTABLE(g))->GetColorData(g,pc,pn,pi)
|
||||
#define HB_GTSUPER_GETCLEARCOLOR(g) (HB_GTSUPERTABLE(g))->GetClearColor(g)
|
||||
#define HB_GTSUPER_SETCLEARCOLOR(g,c) (HB_GTSUPERTABLE(g))->SetClearColor(g,c)
|
||||
#define HB_GTSUPER_GETCLEARCHAR(g) (HB_GTSUPERTABLE(g))->GetClearChar(g)
|
||||
#define HB_GTSUPER_SETCLEARCHAR(g,c) (HB_GTSUPERTABLE(g))->SetClearChar(g,c)
|
||||
#define HB_GTSUPER_GETCURSORSTYLE(g) (HB_GTSUPERTABLE(g))->GetCursorStyle(g)
|
||||
#define HB_GTSUPER_SETCURSORSTYLE(g,s) (HB_GTSUPERTABLE(g))->SetCursorStyle(g,s)
|
||||
#define HB_GTSUPER_GETSCRCURSOR(g,pr,pc,ps) (HB_GTSUPERTABLE(g))->GetScrCursor(g,pr,pc,ps)
|
||||
#define HB_GTSUPER_GETSCRCHAR(g,r,c,pm,pa,pc) (HB_GTSUPERTABLE(g))->GetScrChar(g,r,c,pm,pa,pc)
|
||||
#define HB_GTSUPER_PUTSCRCHAR(g,r,c,m,a,u) (HB_GTSUPERTABLE(g))->PutScrChar(g,r,c,m,a,u)
|
||||
#define HB_GTSUPER_DISPBEGIN(g) (HB_GTSUPERTABLE(g))->DispBegin(g)
|
||||
#define HB_GTSUPER_DISPEND(g) (HB_GTSUPERTABLE(g))->DispEnd(g)
|
||||
#define HB_GTSUPER_DISPCOUNT(g) (HB_GTSUPERTABLE(g))->DispCount(g)
|
||||
#define HB_GTSUPER_GETCHAR(g,r,c,pm,pa,pc) (HB_GTSUPERTABLE(g))->GetChar(g,r,c,pm,pa,pc)
|
||||
#define HB_GTSUPER_PUTCHAR(g,r,c,m,a,u) (HB_GTSUPERTABLE(g))->PutChar(g,r,c,m,a,u)
|
||||
#define HB_GTSUPER_RECTSIZE(g,t,l,b,r) (HB_GTSUPERTABLE(g))->RectSize(g,t,l,b,r)
|
||||
#define HB_GTSUPER_SAVE(g,t,l,b,r,p) (HB_GTSUPERTABLE(g))->Save(g,t,l,b,r,p)
|
||||
#define HB_GTSUPER_REST(g,t,l,b,r,p) (HB_GTSUPERTABLE(g))->Rest(g,t,l,b,r,p)
|
||||
#define HB_GTSUPER_PUTTEXT(g,r,c,m,s,l) (HB_GTSUPERTABLE(g))->PutText(g,r,c,m,s,l)
|
||||
#define HB_GTSUPER_REPLICATE(g,r,c,m,a,u,l) (HB_GTSUPERTABLE(g))->Replicate(g,r,c,m,a,u,l)
|
||||
#define HB_GTSUPER_WRITEAT(g,r,c,s,l) (HB_GTSUPERTABLE(g))->WriteAt(g,r,c,s,l)
|
||||
#define HB_GTSUPER_WRITE(g,s,l) (HB_GTSUPERTABLE(g))->Write(g,s,l)
|
||||
#define HB_GTSUPER_WRITECON(g,s,l) (HB_GTSUPERTABLE(g))->WriteCon(g,s,l)
|
||||
#define HB_GTSUPER_SETATTRIBUTE(g,t,l,b,r,m) (HB_GTSUPERTABLE(g))->SetAttribute(g,t,l,b,r,m)
|
||||
#define HB_GTSUPER_DRAWSHADOW(g,t,l,b,r,m) (HB_GTSUPERTABLE(g))->DrawShadow(g,t,l,b,r,m)
|
||||
#define HB_GTSUPER_SCROLL(g,t,l,b,r,m,u,v,h) (HB_GTSUPERTABLE(g))->Scroll(g,t,l,b,r,m,u,v,h)
|
||||
#define HB_GTSUPER_SCROLLUP(g,r,m,u) (HB_GTSUPERTABLE(g))->ScrollUp(g,r,m,u)
|
||||
#define HB_GTSUPER_BOX(g,t,l,b,r,f,m) (HB_GTSUPERTABLE(g))->Box(g,t,l,b,r,f,m)
|
||||
#define HB_GTSUPER_BOXD(g,t,l,b,r,f,m) (HB_GTSUPERTABLE(g))->BoxD(g,t,l,b,r,f,m)
|
||||
#define HB_GTSUPER_BOXS(g,t,l,b,r,f,m) (HB_GTSUPERTABLE(g))->BoxS(g,t,l,b,r,f,m)
|
||||
#define HB_GTSUPER_HORIZLINE(g,h,l,r,u,m) (HB_GTSUPERTABLE(g))->HorizLine(g,h,l,r,u,m)
|
||||
#define HB_GTSUPER_VERTLINE(g,c,t,b,u,m) (HB_GTSUPERTABLE(g))->VertLine(g,c,t,b,u,m)
|
||||
#define HB_GTSUPER_GETBLINK(g) (HB_GTSUPERTABLE(g))->GetBlink(g)
|
||||
#define HB_GTSUPER_SETBLINK(g,b) (HB_GTSUPERTABLE(g))->SetBlink(g,b)
|
||||
#define HB_GTSUPER_SETSNOWFLAG(g,b) (HB_GTSUPERTABLE(g))->SetSnowFlag(g,b)
|
||||
#define HB_GTSUPER_VERSION(g,i) (HB_GTSUPERTABLE(g))->Version(g,i)
|
||||
#define HB_GTSUPER_SUSPEND(g) (HB_GTSUPERTABLE(g))->Suspend(g)
|
||||
#define HB_GTSUPER_RESUME(g) (HB_GTSUPERTABLE(g))->Resume(g)
|
||||
#define HB_GTSUPER_PREEXT(g) (HB_GTSUPERTABLE(g))->PreExt(g)
|
||||
#define HB_GTSUPER_POSTEXT(g) (HB_GTSUPERTABLE(g))->PostExt(g)
|
||||
#define HB_GTSUPER_OUTSTD(g,s,l) (HB_GTSUPERTABLE(g))->OutStd(g,s,l)
|
||||
#define HB_GTSUPER_OUTERR(g,s,l) (HB_GTSUPERTABLE(g))->OutErr(g,s,l)
|
||||
#define HB_GTSUPER_TONE(g,f,d) (HB_GTSUPERTABLE(g))->Tone(g,f,d)
|
||||
#define HB_GTSUPER_BELL(g) (HB_GTSUPERTABLE(g))->Bell(g)
|
||||
#define HB_GTSUPER_INFO(g,i,p) (HB_GTSUPERTABLE(g))->Info(g,i,p)
|
||||
#define HB_GTSUPER_ALERT(g,m,o,n,h,d) (HB_GTSUPERTABLE(g))->Alert(g,m,o,n,h,d)
|
||||
#define HB_GTSUPER_SETFLAG(g,i,f) (HB_GTSUPERTABLE(g))->SetFlag(g,i,f)
|
||||
#define HB_GTSUPER_SETDISPCP(g,t,h,b) (HB_GTSUPERTABLE(g))->SetDispCP(g,t,h,b)
|
||||
#define HB_GTSUPER_SETKEYCP(g,t,h) (HB_GTSUPERTABLE(g))->SetKeyCP(g,t,h)
|
||||
#define HB_GTSUPER_READKEY(g,m) (HB_GTSUPERTABLE(g))->ReadKey(g,m)
|
||||
#define HB_GTSUPER_INKEYGET(g,w,d,m) (HB_GTSUPERTABLE(g))->InkeyGet(g,w,d,m)
|
||||
#define HB_GTSUPER_INKEYPUT(g,k) (HB_GTSUPERTABLE(g))->InkeyPut(g,k)
|
||||
#define HB_GTSUPER_INKEYINS(g,k) (HB_GTSUPERTABLE(g))->InkeyIns(g,k)
|
||||
#define HB_GTSUPER_INKEYLAST(g,m) (HB_GTSUPERTABLE(g))->InkeyLast(g,m)
|
||||
#define HB_GTSUPER_INKEYNEXT(g,m) (HB_GTSUPERTABLE(g))->InkeyNext(g,m)
|
||||
#define HB_GTSUPER_INKEYPOLL(g) (HB_GTSUPERTABLE(g))->InkeyPoll(g)
|
||||
#define HB_GTSUPER_INKEYSETTEXT(g,s,l) (HB_GTSUPERTABLE(g))->InkeySetText(g,s,l)
|
||||
#define HB_GTSUPER_INKEYSETLAST(g,k) (HB_GTSUPERTABLE(g))->InkeySetLast(g,k)
|
||||
#define HB_GTSUPER_INKEYRESET(g) (HB_GTSUPERTABLE(g))->InkeyReset(g)
|
||||
#define HB_GTSUPER_INKEYEXIT(g) (HB_GTSUPERTABLE(g))->InkeyExit(g)
|
||||
#define HB_GTSUPER_MOUSEINIT(g) (HB_GTSUPERTABLE(g))->MouseInit(g)
|
||||
#define HB_GTSUPER_MOUSEEXIT(g) (HB_GTSUPERTABLE(g))->MouseExit(g)
|
||||
#define HB_GTSUPER_MOUSEISPRESENT(g) (HB_GTSUPERTABLE(g))->MouseIsPresent(g)
|
||||
#define HB_GTSUPER_MOUSESHOW(g) (HB_GTSUPERTABLE(g))->MouseShow(g)
|
||||
#define HB_GTSUPER_MOUSEHIDE(g) (HB_GTSUPERTABLE(g))->MouseHide(g)
|
||||
#define HB_GTSUPER_MOUSEGETCURSOR(g) (HB_GTSUPERTABLE(g))->MouseGetCursor(g)
|
||||
#define HB_GTSUPER_MOUSESETCURSOR(g,v) (HB_GTSUPERTABLE(g))->MouseSetCursor(g,v)
|
||||
#define HB_GTSUPER_MOUSECOL(g) (HB_GTSUPERTABLE(g))->MouseCol(g)
|
||||
#define HB_GTSUPER_MOUSEROW(g) (HB_GTSUPERTABLE(g))->MouseRow(g)
|
||||
#define HB_GTSUPER_MOUSEGETPOS(g,pr,pc) (HB_GTSUPERTABLE(g))->MouseGetPos(g,pr,pc)
|
||||
#define HB_GTSUPER_MOUSESETPOS(g,r,c) (HB_GTSUPERTABLE(g))->MouseSetPos(g,r,c)
|
||||
#define HB_GTSUPER_MOUSESETBOUNDS(g,t,l,b,r) (HB_GTSUPERTABLE(g))->MouseSetBounds(g,t,l,b,r)
|
||||
#define HB_GTSUPER_MOUSEGETBOUNDS(g,t,l,b,r) (HB_GTSUPERTABLE(g))->MouseGetBounds(g,t,l,b,r)
|
||||
#define HB_GTSUPER_MOUSESTORAGESIZE(g) (HB_GTSUPERTABLE(g))->MouseStorageSize(g)
|
||||
#define HB_GTSUPER_MOUSESAVESTATE(g,p) (HB_GTSUPERTABLE(g))->MouseSaveState(g,p)
|
||||
#define HB_GTSUPER_MOUSERESTORESTATE(g,p) (HB_GTSUPERTABLE(g))->MouseRestoreState(g,p)
|
||||
#define HB_GTSUPER_MOUSEGETDOUBLECLICKSPEED(g) (HB_GTSUPERTABLE(g))->MouseGetDoubleClickSpeed(g)
|
||||
#define HB_GTSUPER_MOUSESETDOUBLECLICKSPEED(g,i) (HB_GTSUPERTABLE(g))->MouseSetDoubleClickSpeed(g,i)
|
||||
#define HB_GTSUPER_MOUSECOUNTBUTTON(g) (HB_GTSUPERTABLE(g))->MouseCountButton(g)
|
||||
#define HB_GTSUPER_MOUSEBUTTONSTATE(g,b) (HB_GTSUPERTABLE(g))->MouseButtonState(g,b)
|
||||
#define HB_GTSUPER_MOUSEBUTTONPRESSED(g,b,r,c) (HB_GTSUPERTABLE(g))->MouseButtonPressed(g,b,r,c)
|
||||
#define HB_GTSUPER_MOUSEBUTTONRELEASED(g,b,r,c) (HB_GTSUPERTABLE(g))->MouseButtonReleased(g,b,r,c)
|
||||
#define HB_GTSUPER_MOUSEREADKEY(g,m) (HB_GTSUPERTABLE(g))->MouseReadKey(g,m)
|
||||
#define HB_GTSUPER_GFXPRIMITIVE(g,i,t,l,b,r,c) (HB_GTSUPERTABLE(g))->GfxPrimitive(g,i,t,l,b,r,c)
|
||||
#define HB_GTSUPER_GFXTEXT(g,t,l,s,c,h,w) (HB_GTSUPERTABLE(g))->GfxText(g,t,l,s,c,h,w)
|
||||
#define HB_GTSUPER_WHOCARES(g,p) (HB_GTSUPERTABLE(g))->WhoCares(g,p)
|
||||
|
||||
extern HB_EXPORT void hb_gtSetDefault( const char * szGtName );
|
||||
extern HB_EXPORT BOOL hb_gtRegister( const HB_GT_INIT * gtInit );
|
||||
extern HB_EXPORT PHB_GT hb_gtLoad( const char * szGtName, PHB_GT pGT, PHB_GT_FUNCS pSuperTable );
|
||||
extern HB_EXPORT void * hb_gtAlloc( void );
|
||||
extern HB_EXPORT void hb_gtRelease( void * hGT );
|
||||
extern HB_EXPORT void hb_gtAttach( void * hGT );
|
||||
extern HB_EXPORT void hb_gtStartupInit( void );
|
||||
extern HB_EXPORT BOOL hb_gtReload( const char * szGtName,
|
||||
HB_FHANDLE hFilenoStdin,
|
||||
HB_FHANDLE hFilenoStdout,
|
||||
HB_FHANDLE hFilenoStderr );
|
||||
|
||||
/* low level GT functions common to different GTs supported by RTL */
|
||||
extern int hb_gt_chrmapinit( int *piTransTbl, const char *pszTerm, BOOL fSetACSC );
|
||||
|
||||
@@ -99,9 +99,9 @@
|
||||
static const int s_iCrLfLen = 2;
|
||||
#endif
|
||||
|
||||
static HB_FHANDLE s_hFilenoStdin = ( HB_FHANDLE ) 0;
|
||||
static HB_FHANDLE s_hFilenoStdout = ( HB_FHANDLE ) 1;
|
||||
static HB_FHANDLE s_hFilenoStderr = ( HB_FHANDLE ) 2;
|
||||
static HB_FHANDLE s_hFilenoStdin = ( HB_FHANDLE ) HB_STDIN_HANDLE;
|
||||
static HB_FHANDLE s_hFilenoStdout = ( HB_FHANDLE ) HB_STDOUT_HANDLE;
|
||||
static HB_FHANDLE s_hFilenoStderr = ( HB_FHANDLE ) HB_STDERR_HANDLE;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
@@ -310,13 +310,13 @@ static BOOL s_fUseWaitLocks = TRUE;
|
||||
|
||||
static HANDLE DosToWinHandle( HB_FHANDLE fHandle )
|
||||
{
|
||||
if( fHandle == ( HB_FHANDLE ) 0 )
|
||||
if( fHandle == ( HB_FHANDLE ) HB_STDIN_HANDLE )
|
||||
return GetStdHandle( STD_INPUT_HANDLE );
|
||||
|
||||
else if( fHandle == ( HB_FHANDLE ) 1 )
|
||||
else if( fHandle == ( HB_FHANDLE ) HB_STDOUT_HANDLE )
|
||||
return GetStdHandle( STD_OUTPUT_HANDLE );
|
||||
|
||||
else if( fHandle == ( HB_FHANDLE ) 2 )
|
||||
else if( fHandle == ( HB_FHANDLE ) HB_STDERR_HANDLE )
|
||||
return GetStdHandle( STD_ERROR_HANDLE );
|
||||
|
||||
else
|
||||
@@ -861,18 +861,20 @@ HB_EXPORT BOOL hb_fsSetDevMode( HB_FHANDLE hFileHandle, USHORT uiDevMode )
|
||||
int iRet = 0;
|
||||
|
||||
#if defined(HB_WIN32_IO)
|
||||
if( hFileHandle > 2 )
|
||||
if( hFileHandle != ( HB_FHANDLE ) 0 &&
|
||||
hFileHandle != ( HB_FHANDLE ) 1 &&
|
||||
hFileHandle != ( HB_FHANDLE ) 2 )
|
||||
iRet = -1;
|
||||
else
|
||||
#endif
|
||||
switch( uiDevMode )
|
||||
{
|
||||
case FD_BINARY:
|
||||
iRet = setmode( hFileHandle, O_BINARY );
|
||||
iRet = setmode( ( HB_NHANDLE ) hFileHandle, O_BINARY );
|
||||
break;
|
||||
|
||||
case FD_TEXT:
|
||||
iRet = setmode( hFileHandle, O_TEXT );
|
||||
iRet = setmode( ( HB_NHANDLE ) hFileHandle, O_TEXT );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -886,7 +888,9 @@ HB_EXPORT BOOL hb_fsSetDevMode( HB_FHANDLE hFileHandle, USHORT uiDevMode )
|
||||
int iRet = 0;
|
||||
|
||||
#if defined(HB_WIN32_IO)
|
||||
if( ( HB_NHANDLE ) hFileHandle > 2 )
|
||||
if( hFileHandle != ( HB_FHANDLE ) 0 &&
|
||||
hFileHandle != ( HB_FHANDLE ) 1 &&
|
||||
hFileHandle != ( HB_FHANDLE ) 2 )
|
||||
iRet = -1;
|
||||
else
|
||||
#endif
|
||||
|
||||
@@ -81,9 +81,6 @@
|
||||
#include "hbgtcore.h"
|
||||
#include "hbset.h"
|
||||
|
||||
#define HB_STDOUT_HANDLE 1
|
||||
#define HB_STDERR_HANDLE 2
|
||||
|
||||
/* gt API functions */
|
||||
|
||||
HB_EXPORT ERRCODE hb_gtInit( HB_FHANDLE hFilenoStdin, HB_FHANDLE hFilenoStdout, HB_FHANDLE hFilenoStderr )
|
||||
@@ -109,26 +106,13 @@ HB_EXPORT ERRCODE hb_gtInit( HB_FHANDLE hFilenoStdin, HB_FHANDLE hFilenoStdout,
|
||||
|
||||
HB_EXPORT ERRCODE hb_gtExit( void )
|
||||
{
|
||||
PHB_GT pGT;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gtExit()"));
|
||||
|
||||
pGT = hb_gt_Base();
|
||||
if( pGT )
|
||||
{
|
||||
while( HB_GTSELF_DISPCOUNT( pGT ) )
|
||||
HB_GTSELF_DISPEND( pGT );
|
||||
|
||||
HB_GTSELF_FLUSH( pGT );
|
||||
HB_GTSELF_EXIT( pGT );
|
||||
/* hb_gt_BaseFree( pGT ); */
|
||||
}
|
||||
hb_gtRelease( NULL );
|
||||
|
||||
/* clear internal clipboard data */
|
||||
hb_gt_setClipboard( NULL, 0 );
|
||||
|
||||
hb_gtUnLoad();
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -68,13 +68,6 @@
|
||||
#include "hbvm.h"
|
||||
#include "hbthread.h"
|
||||
|
||||
/* these variables are used for stdout/stderr output when GT subsystem
|
||||
* is not initialized
|
||||
*/
|
||||
static HB_FHANDLE s_hStdIn = ( HB_FHANDLE ) 0;
|
||||
static HB_FHANDLE s_hStdOut = ( HB_FHANDLE ) 1;
|
||||
static HB_FHANDLE s_hStdErr = ( HB_FHANDLE ) 2;
|
||||
|
||||
/* base GT strucure */
|
||||
static PHB_GT_BASE s_curGT = NULL;
|
||||
|
||||
@@ -107,9 +100,9 @@ static void hb_gt_def_BaseInit( PHB_GT_BASE pGT )
|
||||
pGT->bClearColor = 0x07;
|
||||
pGT->iHeight = 24;
|
||||
pGT->iWidth = 80;
|
||||
pGT->hStdIn = s_hStdIn;
|
||||
pGT->hStdOut = s_hStdOut;
|
||||
pGT->hStdErr = s_hStdErr;
|
||||
pGT->hStdIn = HB_STDIN_HANDLE;
|
||||
pGT->hStdOut = HB_STDOUT_HANDLE;
|
||||
pGT->hStdErr = HB_STDERR_HANDLE;
|
||||
|
||||
pGT->iDoubleClickSpeed = 168; /* In milliseconds */
|
||||
|
||||
@@ -175,6 +168,9 @@ static void hb_gt_def_Free( PHB_GT pGT )
|
||||
if( pGT->pMutex )
|
||||
hb_itemRelease( pGT->pMutex );
|
||||
|
||||
if( pGT->pFuncTable )
|
||||
hb_xfree( pGT->pFuncTable );
|
||||
|
||||
hb_xfree( pGT );
|
||||
}
|
||||
|
||||
@@ -3077,8 +3073,6 @@ static char s_gtNameBuf[ HB_GT_NAME_MAX_ + 1 ];
|
||||
#endif
|
||||
|
||||
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;
|
||||
|
||||
HB_FUNC_EXTERN( HB_GTSYS );
|
||||
@@ -3125,15 +3119,17 @@ HB_EXPORT void hb_gtSetDefault( const char * szGtName )
|
||||
|
||||
HB_EXPORT BOOL hb_gtRegister( const HB_GT_INIT * gtInit )
|
||||
{
|
||||
if( hb_gt_FindEntry( gtInit->id ) == -1 )
|
||||
if( s_iGtCount < HB_GT_MAX_ && hb_gt_FindEntry( gtInit->id ) == -1 )
|
||||
{
|
||||
if( gtInit->pGtId )
|
||||
*gtInit->pGtId = s_iGtCount;
|
||||
s_gtInit[ s_iGtCount++ ] = gtInit;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
HB_EXPORT BOOL hb_gtLoad( const char * szGtName, PHB_GT_FUNCS pFuncTable )
|
||||
HB_EXPORT PHB_GT hb_gtLoad( const char * szGtName, PHB_GT pGT, PHB_GT_FUNCS pSuperTable )
|
||||
{
|
||||
int iPos;
|
||||
|
||||
@@ -3141,87 +3137,142 @@ HB_EXPORT BOOL hb_gtLoad( const char * szGtName, PHB_GT_FUNCS pFuncTable )
|
||||
{
|
||||
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;
|
||||
if( pGT || pSuperTable )
|
||||
hb_errInternal( 9998, "Screen driver initialization failure", NULL, NULL );
|
||||
|
||||
pGT = ( PHB_GT_BASE ) hb_xgrab( sizeof( HB_GT_BASE ) );
|
||||
memset( pGT, 0, sizeof( HB_GT_BASE ) );
|
||||
pGT->pFuncTable = ( PHB_GT_FUNCS ) hb_xgrab( sizeof( HB_GT_FUNCS ) );
|
||||
memcpy( pGT->pFuncTable, &s_gtCoreFunc, sizeof( HB_GT_FUNCS ) );
|
||||
pGT->iUsed++;
|
||||
return pGT;
|
||||
}
|
||||
|
||||
iPos = hb_gt_FindEntry( szGtName );
|
||||
|
||||
if( iPos != -1 )
|
||||
{
|
||||
if( pFuncTable == NULL )
|
||||
pFuncTable = &s_gtCoreFunc;
|
||||
memcpy( s_gtInit[ iPos ]->pSuperTable, pFuncTable, sizeof( HB_GT_FUNCS ) );
|
||||
if( !s_gtInit[ iPos ]->init( pFuncTable ) )
|
||||
{
|
||||
hb_errInternal( 6001, "Screen driver initialization failure", NULL, NULL );
|
||||
}
|
||||
if( s_gtInit[ iPos ]->pGtId )
|
||||
*s_gtInit[ iPos ]->pGtId = s_iGtLinkCount;
|
||||
s_gtLinkOrder[ s_iGtLinkCount++ ] = iPos;
|
||||
BOOL fNew = pGT == NULL;
|
||||
|
||||
if( !s_curGT )
|
||||
if( fNew )
|
||||
{
|
||||
s_curGT = ( PHB_GT_BASE ) hb_xgrab( sizeof( HB_GT_BASE ) );
|
||||
memset( s_curGT, 0, sizeof( HB_GT_BASE ) );
|
||||
pGT = ( PHB_GT_BASE ) hb_xgrab( sizeof( HB_GT_BASE ) );
|
||||
memset( pGT, 0, sizeof( HB_GT_BASE ) );
|
||||
pGT->pFuncTable = ( PHB_GT_FUNCS ) hb_xgrab( sizeof( HB_GT_FUNCS ) );
|
||||
memcpy( pGT->pFuncTable, &s_gtCoreFunc, sizeof( HB_GT_FUNCS ) );
|
||||
pGT->iUsed++;
|
||||
}
|
||||
s_curGT->pFuncTable = pFuncTable;
|
||||
|
||||
return TRUE;
|
||||
if( pSuperTable == NULL )
|
||||
pSuperTable = s_gtInit[ iPos ]->pSuperTable;
|
||||
if( pSuperTable != NULL )
|
||||
memcpy( pSuperTable, pGT->pFuncTable, sizeof( HB_GT_FUNCS ) );
|
||||
|
||||
if( s_gtInit[ iPos ]->init( pGT->pFuncTable ) )
|
||||
return pGT;
|
||||
else if( fNew )
|
||||
{
|
||||
hb_xfree( pGT->pFuncTable );
|
||||
hb_xfree( pGT );
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
HB_EXPORT BOOL hb_gtUnLoad( void )
|
||||
HB_EXPORT void * hb_gtAlloc( void )
|
||||
{
|
||||
while( s_iGtLinkCount > 0 )
|
||||
PHB_GT pGT = hb_gt_Base();
|
||||
|
||||
if( pGT )
|
||||
{
|
||||
if( --s_iGtLinkCount == 0 )
|
||||
memcpy( &s_gtCoreFunc,
|
||||
s_gtInit[ s_gtLinkOrder[ s_iGtLinkCount ] ]->pSuperTable,
|
||||
sizeof( HB_GT_FUNCS ) );
|
||||
pGT->iUsed++;
|
||||
hb_gt_BaseFree( pGT );
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return ( void * ) pGT;
|
||||
}
|
||||
|
||||
HB_EXPORT void hb_gtRelease( void * hGT )
|
||||
{
|
||||
PHB_GT pGT;
|
||||
|
||||
if( hGT )
|
||||
{
|
||||
pGT = ( PHB_GT ) hGT;
|
||||
if( !HB_GTSELF_LOCK( pGT ) )
|
||||
pGT = NULL;
|
||||
}
|
||||
else
|
||||
pGT = hb_gt_Base();
|
||||
|
||||
if( pGT )
|
||||
{
|
||||
if( --pGT->iUsed == 0 )
|
||||
{
|
||||
while( HB_GTSELF_DISPCOUNT( pGT ) )
|
||||
HB_GTSELF_DISPEND( pGT );
|
||||
HB_GTSELF_FLUSH( pGT );
|
||||
HB_GTSELF_EXIT( pGT );
|
||||
}
|
||||
else
|
||||
hb_gt_BaseFree( pGT );
|
||||
}
|
||||
}
|
||||
|
||||
HB_EXPORT void hb_gtAttach( void * hGT )
|
||||
{
|
||||
if( s_curGT != hGT )
|
||||
{
|
||||
hb_gtRelease( NULL );
|
||||
s_curGT = ( PHB_GT ) hGT;
|
||||
}
|
||||
}
|
||||
|
||||
HB_EXPORT BOOL hb_gtReload( const char * szGtName,
|
||||
HB_FHANDLE hFilenoStdin,
|
||||
HB_FHANDLE hFilenoStdout,
|
||||
HB_FHANDLE hFilenoStderr )
|
||||
{
|
||||
BOOL fResult = FALSE;
|
||||
if( szGtName && hb_gt_FindEntry( szGtName ) != -1 )
|
||||
{
|
||||
hb_gtRelease( NULL );
|
||||
s_curGT = hb_gtLoad( szGtName, NULL, NULL );
|
||||
fResult = s_curGT != NULL;
|
||||
hb_gtInit( hFilenoStdin, hFilenoStdout, hFilenoStderr );
|
||||
}
|
||||
return fResult;
|
||||
}
|
||||
|
||||
static BOOL hb_gtTryInit( const char * szGtName, BOOL fFree )
|
||||
{
|
||||
if( szGtName )
|
||||
{
|
||||
if( s_curGT == NULL )
|
||||
s_curGT = hb_gtLoad( szGtName, NULL, NULL );
|
||||
|
||||
if( fFree )
|
||||
hb_xfree( ( void * ) szGtName );
|
||||
}
|
||||
|
||||
return s_curGT != NULL;
|
||||
}
|
||||
|
||||
HB_EXPORT void hb_gtStartupInit( void )
|
||||
{
|
||||
char * szGtName;
|
||||
BOOL fInit;
|
||||
|
||||
szGtName = hb_cmdargString( "GT" );
|
||||
if( szGtName )
|
||||
{
|
||||
fInit = hb_gtLoad( szGtName, &s_gtCoreFunc );
|
||||
hb_xfree( szGtName );
|
||||
if( fInit )
|
||||
return;
|
||||
}
|
||||
szGtName = hb_getenv( "HB_GT" );
|
||||
if( szGtName )
|
||||
{
|
||||
fInit = hb_gtLoad( szGtName, &s_gtCoreFunc );
|
||||
hb_xfree( szGtName );
|
||||
if( fInit )
|
||||
return;
|
||||
}
|
||||
if( hb_gtLoad( hb_gt_FindDefault(), &s_gtCoreFunc ) )
|
||||
if( hb_gtTryInit( hb_cmdargString( "GT" ), TRUE ) )
|
||||
return;
|
||||
if( hb_gtLoad( hb_gt_szNameDefault, &s_gtCoreFunc ) )
|
||||
if( hb_gtTryInit( hb_getenv( "HB_GT" ), TRUE ) )
|
||||
return;
|
||||
if( hb_gtTryInit( hb_gt_FindDefault(), FALSE ) )
|
||||
return;
|
||||
if( hb_gtTryInit( hb_gt_szNameDefault, FALSE ) )
|
||||
return;
|
||||
|
||||
if( hb_dynsymFind( "HB_GT_NUL" ) ) /* GTNUL was explicitly REQUESTed */
|
||||
{
|
||||
if( hb_gtLoad( "NUL", &s_gtCoreFunc ) )
|
||||
if( hb_gtTryInit( "NUL", FALSE ) )
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3232,3 +3283,11 @@ HB_EXPORT void hb_gtStartupInit( void )
|
||||
}
|
||||
|
||||
HB_GT_ANNOUNCE( HB_GT_NAME )
|
||||
|
||||
HB_FUNC( HB_GTRELOAD )
|
||||
{
|
||||
hb_retl( hb_gtReload( hb_parc( 1 ),
|
||||
ISNUM( 2 ) ? hb_numToHandle( hb_parnint( 1 ) ) : HB_STDIN_HANDLE,
|
||||
ISNUM( 3 ) ? hb_numToHandle( hb_parnint( 2 ) ) : HB_STDOUT_HANDLE,
|
||||
ISNUM( 4 ) ? hb_numToHandle( hb_parnint( 3 ) ) : HB_STDERR_HANDLE ) );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user