2007-12-07 10:43 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/inkeyapi.c
  * harbour/source/rtl/mouseapi.c
    - removed hb_gt_*(), hb_inkey_*(), hb_mouse_*() functions
    + implemented HB_GTSELF_*() functions and changed HB_GTSUPER_*()
      ones to operate on GT context passed ad 1-st parameter.
      Now GT API allows to create many GTs working simultaneously
    + added hb_gt_Base() core function which returns GT context
      it will be extended soon to allow using many GT contexts,
      setting thread default one or switch between them using some
      .prg function.

  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtcrs/gtcrs.h
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gtsln/gtsln.h
  * harbour/source/rtl/gtsln/kbsln.c
  * harbour/source/rtl/gtsln/mousesln.c
  * harbour/source/rtl/gtalleg/gtalleg.c
  * harbour/source/rtl/gtgui/gtgui.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtwvt/gtwvt.h
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/contrib/hbct/ctwin.c
  * harbour/contrib/hbct/ctwin.h
  * harbour/contrib/hbct/ctwfunc.c
  * harbour/contrib/hbgtwvg/gtwvt.h
  * harbour/contrib/hbgtwvg/gtwvt.c
    * updated GT code for new GT API. I still haven't added GT cloning
      to them and only GTTRM is ready to use in multi window MT programs
      but now they can be systematically modified and it can be done
      locally without core code modifications.

  * harbour/contrib/hbgtwvg/wvtutils.c
    ! fixed some memory leaks in Unicode conversions
This commit is contained in:
Przemyslaw Czerpak
2007-12-07 09:44:03 +00:00
parent 1e7aadcf86
commit 1b46d933d7
28 changed files with 3994 additions and 3772 deletions

View File

@@ -8,6 +8,50 @@
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2007-12-07 10:43 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtcore.h
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/gtapi.c
* harbour/source/rtl/inkeyapi.c
* harbour/source/rtl/mouseapi.c
- removed hb_gt_*(), hb_inkey_*(), hb_mouse_*() functions
+ implemented HB_GTSELF_*() functions and changed HB_GTSUPER_*()
ones to operate on GT context passed ad 1-st parameter.
Now GT API allows to create many GTs working simultaneously
+ added hb_gt_Base() core function which returns GT context
it will be extended soon to allow using many GT contexts,
setting thread default one or switch between them using some
.prg function.
* harbour/source/rtl/gtstd/gtstd.c
* harbour/source/rtl/gtcgi/gtcgi.c
* harbour/source/rtl/gtpca/gtpca.c
* harbour/source/rtl/gttrm/gttrm.c
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/source/rtl/gtcrs/gtcrs.c
* harbour/source/rtl/gtcrs/gtcrs.h
* harbour/source/rtl/gtsln/gtsln.c
* harbour/source/rtl/gtsln/gtsln.h
* harbour/source/rtl/gtsln/kbsln.c
* harbour/source/rtl/gtsln/mousesln.c
* harbour/source/rtl/gtalleg/gtalleg.c
* harbour/source/rtl/gtgui/gtgui.c
* harbour/source/rtl/gtwin/gtwin.c
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
* harbour/contrib/hbct/ctwin.c
* harbour/contrib/hbct/ctwin.h
* harbour/contrib/hbct/ctwfunc.c
* harbour/contrib/hbgtwvg/gtwvt.h
* harbour/contrib/hbgtwvg/gtwvt.c
* updated GT code for new GT API. I still haven't added GT cloning
to them and only GTTRM is ready to use in multi window MT programs
but now they can be systematically modified and it can be done
locally without core code modifications.
* harbour/contrib/hbgtwvg/wvtutils.c
! fixed some memory leaks in Unicode conversions
2007-12-06 11:35 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* harbour/source/lang/msgltwin.c
* more changes from LT to LTWIN

View File

@@ -56,7 +56,7 @@
HB_FUNC( CTWINIT )
{
hb_retl( hb_ctw_Init() );
hb_retl( hb_ctwInit() );
}
HB_FUNC( GETCLEARA )
@@ -97,86 +97,66 @@ HB_FUNC( GETCLEARB )
HB_FUNC( WSETSHADOW )
{
hb_retni( hb_ctw_SetShadowAttr( ISNUM( 1 ) ? hb_parni( 1 ) : -2 ) );
hb_retni( hb_ctwSetShadowAttr( ISNUM( 1 ) ? hb_parni( 1 ) : -2 ) );
}
HB_FUNC( WSETMOVE )
{
hb_retl( hb_ctw_SetMoveMode( ISLOG( 1 ) ? hb_parl( 1 ) : -1 ) != 0 );
hb_retl( hb_ctwSetMoveMode( ISLOG( 1 ) ? hb_parl( 1 ) : -1 ) != 0 );
}
HB_FUNC( WSTEP )
{
if( ISNUM( 1 ) && ISNUM( 2 ) )
hb_retni( hb_ctw_SetMoveStep( hb_parni( 1 ), hb_parni( 2 ) ) );
hb_retni( hb_ctwSetMoveStep( hb_parni( 1 ), hb_parni( 2 ) ) );
else
hb_retni( -1 );
}
HB_FUNC( WMODE )
{
hb_retni( hb_ctw_SetBorderMode( ISLOG( 1 ) ? ( hb_parl( 1 ) ? 1 : 0 ) : -1,
ISLOG( 2 ) ? ( hb_parl( 2 ) ? 1 : 0 ) : -1,
ISLOG( 3 ) ? ( hb_parl( 3 ) ? 1 : 0 ) : -1,
ISLOG( 4 ) ? ( hb_parl( 4 ) ? 1 : 0 ) : -1 ) );
hb_retni( hb_ctwSetBorderMode( ISLOG( 1 ) ? ( hb_parl( 1 ) ? 1 : 0 ) : -1,
ISLOG( 2 ) ? ( hb_parl( 2 ) ? 1 : 0 ) : -1,
ISLOG( 3 ) ? ( hb_parl( 3 ) ? 1 : 0 ) : -1,
ISLOG( 4 ) ? ( hb_parl( 4 ) ? 1 : 0 ) : -1 ) );
}
HB_FUNC( WBOARD )
{
int iResult;
iResult = hb_ctw_SetWindowBoard( hb_parni( 1 ), hb_parni( 2 ),
ISNUM( 3 ) ? hb_parni( 3 ) : hb_gtMaxRow(),
ISNUM( 4 ) ? hb_parni( 4 ) : hb_gtMaxCol() );
hb_gtFlush();
hb_retni( iResult );
hb_retni( hb_ctwSetWindowBoard( hb_parni( 1 ), hb_parni( 2 ),
ISNUM( 3 ) ? hb_parni( 3 ) : hb_gtMaxRow(),
ISNUM( 4 ) ? hb_parni( 4 ) : hb_gtMaxCol() ) );
}
HB_FUNC( WOPEN )
{
int iResult, iColor;
int iColor;
iColor = ISCHAR( 6 ) ? hb_gtColorToN( hb_parc( 6 ) ) : hb_parni( 6 );
iResult = hb_ctw_CreateWindow( hb_parni( 1 ), hb_parni( 2 ),
hb_parni( 3 ), hb_parni( 4 ),
hb_parl( 5 ), iColor );
hb_gtFlush();
hb_retni( iResult );
hb_retni( hb_ctwCreateWindow( hb_parni( 1 ), hb_parni( 2 ),
hb_parni( 3 ), hb_parni( 4 ),
hb_parl( 5 ), iColor ) );
}
HB_FUNC( WCLOSE )
{
int iResult;
iResult = hb_ctw_CloseWindow( hb_ctw_CurrentWindow() );
hb_gtFlush();
hb_retni( iResult );
hb_retni( hb_ctwCloseWindow( hb_ctwCurrentWindow() ) );
}
HB_FUNC( WACLOSE )
{
int iResult;
iResult = hb_ctw_CloseAllWindows();
hb_gtFlush();
hb_retni( iResult );
hb_retni( hb_ctwCloseAllWindows() );
}
HB_FUNC( WSELECT )
{
int iResult;
if( ISNUM( 1 ) )
iResult = hb_ctw_SelectWindow( hb_parni( 1 ) );
else
iResult = hb_ctw_CurrentWindow();
hb_gtFlush();
hb_retni( iResult );
hb_retni( ISNUM( 1 ) ? hb_ctwSelectWindow( hb_parni( 1 ) ) :
hb_ctwCurrentWindow() );
}
HB_FUNC( WNUM )
{
hb_retni( hb_ctw_MaxWindow() );
hb_retni( hb_ctwMaxWindow() );
}
HB_FUNC( WBOX )
@@ -203,7 +183,7 @@ HB_FUNC( WBOX )
"ÛÛÛÛÛÛÛÛ" }; /* 15 WB_FULL */
BYTE * szBox, szBoxBuf[ 10 ];
int iResult, iColor;
int iColor;
if( ISCHAR( 1 ) )
{
@@ -225,23 +205,21 @@ HB_FUNC( WBOX )
}
iColor = ISCHAR( 2 ) ? hb_gtColorToN( hb_parc( 2 ) ) : hb_parni( 2 );
iResult = hb_ctw_AddWindowBox( hb_ctw_CurrentWindow(), szBox, iColor );
hb_gtFlush();
hb_retni( iResult );
hb_retni( hb_ctwAddWindowBox( hb_ctwCurrentWindow(), szBox, iColor ) );
}
HB_FUNC( WFORMAT )
{
hb_retni( hb_ctw_ChangeMargins( hb_ctw_CurrentWindow(),
hb_parni( 1 ), hb_parni( 2 ),
hb_parni( 3 ), hb_parni( 4 ) ) );
hb_retni( hb_ctwChangeMargins( hb_ctwCurrentWindow(),
hb_parni( 1 ), hb_parni( 2 ),
hb_parni( 3 ), hb_parni( 4 ) ) );
}
HB_FUNC( WROW )
{
int iTop, iLeft, iBottom, iRight;
hb_ctw_GetWindowCords( hb_ctw_CurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_ctwGetWindowCords( hb_ctwCurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_retni( iTop );
}
@@ -249,7 +227,7 @@ HB_FUNC( WCOL )
{
int iTop, iLeft, iBottom, iRight;
hb_ctw_GetWindowCords( hb_ctw_CurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_ctwGetWindowCords( hb_ctwCurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_retni( iLeft );
}
@@ -257,7 +235,7 @@ HB_FUNC( WLASTROW )
{
int iTop, iLeft, iBottom, iRight;
hb_ctw_GetWindowCords( hb_ctw_CurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_ctwGetWindowCords( hb_ctwCurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_retni( iBottom );
}
@@ -265,7 +243,7 @@ HB_FUNC( WLASTCOL )
{
int iTop, iLeft, iBottom, iRight;
hb_ctw_GetWindowCords( hb_ctw_CurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_ctwGetWindowCords( hb_ctwCurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_retni( iRight );
}
@@ -273,7 +251,7 @@ HB_FUNC( WFROW )
{
int iTop, iLeft, iBottom, iRight;
hb_ctw_GetFormatCords( hb_ctw_CurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_ctwGetFormatCords( hb_ctwCurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_retni( iTop );
}
@@ -281,7 +259,7 @@ HB_FUNC( WFCOL )
{
int iTop, iLeft, iBottom, iRight;
hb_ctw_GetFormatCords( hb_ctw_CurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_ctwGetFormatCords( hb_ctwCurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_retni( iLeft );
}
@@ -289,7 +267,7 @@ HB_FUNC( WFLASTROW )
{
int iTop, iLeft, iBottom, iRight;
hb_ctw_GetFormatCords( hb_ctw_CurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_ctwGetFormatCords( hb_ctwCurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_retni( iBottom );
}
@@ -297,17 +275,17 @@ HB_FUNC( WFLASTCOL )
{
int iTop, iLeft, iBottom, iRight;
hb_ctw_GetFormatCords( hb_ctw_CurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_ctwGetFormatCords( hb_ctwCurrentWindow(), hb_parl( 1 ), &iTop, &iLeft, &iBottom, &iRight );
hb_retni( iRight );
}
HB_FUNC( WCENTER )
{
hb_retni( hb_ctw_CenterWindow( hb_ctw_CurrentWindow(), hb_parl( 1 ) ) );
hb_retni( hb_ctwCenterWindow( hb_ctwCurrentWindow(), hb_parl( 1 ) ) );
}
HB_FUNC( WMOVE )
{
hb_retni( hb_ctw_MoveWindow( hb_ctw_CurrentWindow(),
hb_parni( 1 ), hb_parni( 2 ) ) );
hb_retni( hb_ctwMoveWindow( hb_ctwCurrentWindow(),
hb_parni( 1 ), hb_parni( 2 ) ) );
}

File diff suppressed because it is too large Load Diff

View File

@@ -55,24 +55,24 @@
HB_EXTERN_BEGIN
extern BOOL hb_ctw_Init( void );
extern int hb_ctw_SetShadowAttr( int iAttr );
extern int hb_ctw_SetMoveMode( int iMode );
extern int hb_ctw_SetMoveStep( int iVertical, int iHorizontal );
extern int hb_ctw_SetWindowBoard( int iTop, int iLeft, int iBottom, int iRight );
extern int hb_ctw_SetBorderMode( int iTop, int iLeft, int iBottom, int iRight );
extern int hb_ctw_CreateWindow( int iTop, int iLeft, int iBottom, int iRight, BOOL fClear, int iColor );
extern int hb_ctw_CloseAllWindows( void );
extern int hb_ctw_CloseWindow( int iWindow );
extern int hb_ctw_CurrentWindow( void );
extern int hb_ctw_SelectWindow( int iWindow );
extern int hb_ctw_MaxWindow( void );
extern int hb_ctw_ChangeMargins( int iWindow, int iTop, int iLeft, int iBottom, int iRight );
extern int hb_ctw_GetWindowCords( int iWindow, BOOL fCenter, int * piTop, int * piLeft, int * piBottom, int * piRight );
extern int hb_ctw_GetFormatCords( int iWindow, BOOL fRelative, int * piTop, int * piLeft, int * piBottom, int * piRight );
extern int hb_ctw_MoveWindow( int iWindow, int iRow, int iCol );
extern int hb_ctw_CenterWindow( int iWindow, BOOL fCenter );
extern int hb_ctw_AddWindowBox( int iWindow, BYTE * szBox, int iColor );
extern BOOL hb_ctwInit( void );
extern int hb_ctwSetShadowAttr( int iAttr );
extern int hb_ctwSetMoveMode( int iMode );
extern int hb_ctwSetMoveStep( int iVertical, int iHorizontal );
extern int hb_ctwSetWindowBoard( int iTop, int iLeft, int iBottom, int iRight );
extern int hb_ctwSetBorderMode( int iTop, int iLeft, int iBottom, int iRight );
extern int hb_ctwCreateWindow( int iTop, int iLeft, int iBottom, int iRight, BOOL fClear, int iColor );
extern int hb_ctwCloseAllWindows( void );
extern int hb_ctwCloseWindow( int iWindow );
extern int hb_ctwCurrentWindow( void );
extern int hb_ctwSelectWindow( int iWindow );
extern int hb_ctwMaxWindow( void );
extern int hb_ctwChangeMargins( int iWindow, int iTop, int iLeft, int iBottom, int iRight );
extern int hb_ctwGetWindowCords( int iWindow, BOOL fCenter, int * piTop, int * piLeft, int * piBottom, int * piRight );
extern int hb_ctwGetFormatCords( int iWindow, BOOL fRelative, int * piTop, int * piLeft, int * piBottom, int * piRight );
extern int hb_ctwMoveWindow( int iWindow, int iRow, int iCol );
extern int hb_ctwCenterWindow( int iWindow, BOOL fCenter );
extern int hb_ctwAddWindowBox( int iWindow, BYTE * szBox, int iColor );
HB_EXTERN_END

View File

@@ -118,7 +118,7 @@ static COLORREF _COLORS[] = {
BRIGHT_WHITE
};
static int K_Ctrl[] =
static const int K_Ctrl[] =
{
K_CTRL_A, K_CTRL_B, K_CTRL_C, K_CTRL_D, K_CTRL_E, K_CTRL_F, K_CTRL_G,
K_CTRL_H, K_CTRL_I, K_CTRL_J, K_CTRL_K, K_CTRL_L, K_CTRL_M, K_CTRL_N,
@@ -247,20 +247,21 @@ static void hb_wvt_gtCreateObjects( void )
//-------------------------------------------------------------------//
static void hb_gt_wvt_InitStatics( void )
static void hb_gt_wvt_InitStatics( PHB_GT pGT )
{
OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
GetVersionEx( &osvi );
_s.pGT = pGT;
_s.ROWS = WVT_DEFAULT_ROWS;
_s.COLS = WVT_DEFAULT_COLS;
_s.CaretExist = FALSE;
_s.CaretHidden = FALSE;
_s.CaretSize = 4;
_s.mousePos.x = 0;
_s.mousePos.y = 0;
_s.MousePos.x = 0;
_s.MousePos.y = 0;
_s.MouseMove = TRUE;
_s.hWnd = NULL;
_s.keyPointerIn = 0;
@@ -289,7 +290,7 @@ static void hb_gt_wvt_InitStatics( void )
static BOOL hb_gt_wvt_SetWindowSize( int iRow, int iCol )
{
if( HB_GTSUPER_RESIZE( iRow, iCol ) )
if( HB_GTSUPER_RESIZE( _s.pGT, iRow, iCol ) )
{
_s.ROWS = ( USHORT ) iRow;
_s.COLS = ( USHORT ) iCol;
@@ -587,8 +588,8 @@ static int hb_gt_wvt_key_ansi_to_oem( int c )
static void hb_gt_wvt_SetMousePos( int iRow, int iCol )
{
_s.mousePos.y = ( SHORT ) iRow;
_s.mousePos.x = ( SHORT ) iCol;
_s.MousePos.y = ( SHORT ) iRow;
_s.MousePos.x = ( SHORT ) iCol;
}
static void hb_gt_wvt_MouseEvent( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
@@ -1101,7 +1102,7 @@ static void hb_gt_wvt_PaintText( HWND hWnd, RECT updateRect )
while( iCol <= rcRect.right )
{
if( !hb_gt_GetScrChar( iRow, iCol, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( _s.pGT, iRow, iCol, &bColor, &bAttr, &usChar ) )
break;
#if defined(UNICODE)
@@ -1160,7 +1161,7 @@ static void hb_gt_wvt_UpdateCaret( void )
{
int iRow, iCol, iStyle, iCaretSize;
hb_gt_GetScrCursor( &iRow, &iCol, &iStyle );
HB_GTSELF_GETSCRCURSOR( _s.pGT, &iRow, &iCol, &iStyle );
if( iRow < 0 || iCol < 0 || iRow >= _s.ROWS || iCol >= _s.COLS )
{
@@ -1946,16 +1947,17 @@ BOOL HB_EXPORT hb_wvt_gtSetFont( char *fontFace, int height, int width, int Bold
*/
/* ********************************************************************** */
static void hb_gt_wvt_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_wvt_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr ) );
if( ! hb_winmainArgGet( &s_hInstance, &s_hPrevInstance, &s_iCmdShow ) )
{
hb_errInternal( 10001, "It's not a window GUI program.", "", "" );
}
hb_gt_wvt_InitStatics();
hb_gt_wvt_InitStatics( pGT );
HB_GTLOCAL( pGT ) = ( void * ) &_s;
_s.hWnd = hb_gt_wvt_CreateWindow( ( HINSTANCE ) s_hInstance,
( HINSTANCE ) s_hPrevInstance,
"", s_iCmdShow );
@@ -1987,18 +1989,18 @@ static void hb_gt_wvt_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
}
/* SUPER GT initialization */
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( _s.ROWS, _s.COLS );
HB_GTSUPER_EXPOSEAREA( 0, 0, _s.ROWS, _s.COLS );
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( pGT, _s.ROWS, _s.COLS );
HB_GTSUPER_EXPOSEAREA( pGT, 0, 0, _s.ROWS, _s.COLS );
}
/* ********************************************************************** */
static void hb_gt_wvt_Exit( void )
static void hb_gt_wvt_Exit( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Exit()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Exit(%p)", pGT));
HB_GTSUPER_EXIT();
HB_GTSUPER_EXIT( pGT );
if( _s.hWnd )
{
@@ -2011,11 +2013,13 @@ static void hb_gt_wvt_Exit( void )
/* ********************************************************************** */
static BOOL hb_gt_wvt_SetMode( int iRow, int iCol )
static BOOL hb_gt_wvt_SetMode( PHB_GT pGT, int iRow, int iCol )
{
BOOL fResult = FALSE;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_SetMode( %hu, %hu )", iRow, iCol ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_SetMode(%p,%d,%d)", pGT, iRow, iCol ) );
HB_SYMBOL_UNUSED( pGT );
if( iRow <= WVT_MAX_ROWS && iCol <= WVT_MAX_COLS )
{
@@ -2048,9 +2052,11 @@ static BOOL hb_gt_wvt_SetMode( int iRow, int iCol )
/* ********************************************************************** */
static char * hb_gt_wvt_Version( int iType )
static char * hb_gt_wvt_Version( PHB_GT pGT, int iType )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Version()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Version(%p,%d)", pGT, iType ) );
HB_SYMBOL_UNUSED( pGT );
if( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
@@ -2060,13 +2066,14 @@ static char * hb_gt_wvt_Version( int iType )
/* ********************************************************************** */
static int hb_gt_wvt_ReadKey( int iEventMask )
static int hb_gt_wvt_ReadKey( PHB_GT pGT, int iEventMask )
{
int c = 0;
BOOL fKey;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_ReadKey( %d )", iEventMask ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_ReadKey(%p,%d)", pGT, iEventMask ) );
HB_SYMBOL_UNUSED( pGT );
HB_SYMBOL_UNUSED( iEventMask ); /* we ignore the eventmask! */
hb_gt_wvt_ProcessMessages();
@@ -2077,33 +2084,41 @@ static int hb_gt_wvt_ReadKey( int iEventMask )
/* ********************************************************************** */
/* dDuration is in 'Ticks' (18.2 per second) */
static void hb_gt_wvt_Tone( double dFrequency, double dDuration )
static void hb_gt_wvt_Tone( PHB_GT pGT, double dFrequency, double dDuration )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Tone(%lf, %lf)", dFrequency, dDuration));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration));
HB_SYMBOL_UNUSED( pGT );
hb_gt_w32_tone( dFrequency, dDuration );
}
/* ********************************************************************** */
static BOOL hb_gt_wvt_mouse_IsPresent( void )
static BOOL hb_gt_wvt_mouse_IsPresent( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_IsPresent()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_IsPresent(%p)", pGT));
HB_SYMBOL_UNUSED( pGT );
return TRUE;
}
static void hb_gt_wvt_mouse_GetPos( int * piRow, int * piCol )
static void hb_gt_wvt_mouse_GetPos( PHB_GT pGT, int * piRow, int * piCol )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_GetPos(%p,%p)", piRow, piCol));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_GetPos(%p,%p,%p)", pGT, piRow, piCol));
*piRow = _s.mousePos.y;
*piCol = _s.mousePos.x;
HB_SYMBOL_UNUSED( pGT );
*piRow = _s.MousePos.y;
*piCol = _s.MousePos.x;
}
static BOOL hb_gt_wvt_mouse_ButtonState( int iButton )
static BOOL hb_gt_wvt_mouse_ButtonState( PHB_GT pGT, int iButton )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_mouse_ButtonState(%i)", iButton ) );
HB_TRACE( HB_TR_DEBUG, ("hb_gt_wvt_mouse_ButtonState(%p,%i)", pGT, iButton) );
HB_SYMBOL_UNUSED( pGT );
switch( iButton )
{
@@ -2117,20 +2132,22 @@ static BOOL hb_gt_wvt_mouse_ButtonState( int iButton )
return FALSE;
}
static int hb_gt_wvt_mouse_CountButton( void )
static int hb_gt_wvt_mouse_CountButton( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_mouse_CountButton()") );
HB_TRACE( HB_TR_DEBUG, ("hb_gt_wvt_mouse_CountButton(%p)", pGT) );
HB_SYMBOL_UNUSED( pGT );
return GetSystemMetrics( SM_CMOUSEBUTTONS );
}
/* ********************************************************************** */
static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
int iVal;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Info(%d,%p)", iType, pInfo ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Info(%p,%d,%p)", pGT, iType, pInfo ) );
switch( iType )
{
@@ -2278,7 +2295,7 @@ static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
iVal = hb_itemGetNI( pInfo->pNewVal );
if( iVal > 0 )
{
hb_gtSetMode( (USHORT) ( iVal / _s.PTEXTSIZE.y ), _s.COLS );
HB_GTSELF_SETMODE( pGT, (USHORT) ( iVal / _s.PTEXTSIZE.y ), _s.COLS );
}
break;
@@ -2287,7 +2304,7 @@ static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
iVal = hb_itemGetNI( pInfo->pNewVal );
if( iVal > 0 )
{
hb_gtSetMode( _s.ROWS, (USHORT) ( iVal / _s.PTEXTSIZE.x ) );
HB_GTSELF_SETMODE( pGT, _s.ROWS, (USHORT) ( iVal / _s.PTEXTSIZE.x ) );
}
break;
@@ -2440,7 +2457,7 @@ static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
break;
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
return TRUE;
@@ -2476,14 +2493,16 @@ static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
ReleaseDC( _s.hWnd, hdc ); \
} while( 0 )
static int hb_gt_wvt_gfx_Primitive( int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor )
static int hb_gt_wvt_gfx_Primitive( PHB_GT pGT, int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor )
{
HDC hdc;
HPEN hPen, hOldPen;
HBRUSH hBrush, hOldBrush;
int iRet = 0;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_gfx_Primitive(%d, %d, %d, %d, %d, %d)", iType, iTop, iLeft, iBottom, iRight, iColor ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_gfx_Primitive(%p,%d,%d,%d,%d,%d,%d)", pGT, iType, iTop, iLeft, iBottom, iRight, iColor ) );
HB_SYMBOL_UNUSED( pGT );
if( _s.hWnd )
{
@@ -2595,8 +2614,9 @@ static int hb_gt_wvt_gfx_Primitive( int iType, int iTop, int iLeft, int iBottom,
}
/*
static void hb_gt_wvt_gfx_Text( int iTop, int iLeft, char *cBuf, int iColor, int iSize, int iWidth )
static void hb_gt_wvt_gfx_Text( PHB_GT pGT, int iTop, int iLeft, char *cBuf, int iColor, int iSize, int iWidth )
{
HB_SYMBOL_UNUSED( pGT );
HB_SYMBOL_UNUSED( iTop );
HB_SYMBOL_UNUSED( iLeft );
HB_SYMBOL_UNUSED( cBuf );
@@ -2608,9 +2628,11 @@ static void hb_gt_wvt_gfx_Text( int iTop, int iLeft, char *cBuf, int iColor, int
/* ********************************************************************** */
static void hb_gt_wvt_Redraw( int iRow, int iCol, int iSize )
static void hb_gt_wvt_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
HB_SYMBOL_UNUSED( pGT );
if( _s.hWnd )
{
@@ -2628,11 +2650,11 @@ static void hb_gt_wvt_Redraw( int iRow, int iCol, int iSize )
/* ********************************************************************** */
static void hb_gt_wvt_Refresh( void )
static void hb_gt_wvt_Refresh( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Refresh()") );
HB_TRACE( HB_TR_DEBUG, ("hb_gt_wvt_Refresh(%p)", pGT) );
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
if( _s.hWnd )
{
@@ -2643,10 +2665,9 @@ static void hb_gt_wvt_Refresh( void )
/* ********************************************************************** */
static BOOL hb_gt_wvt_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox )
static BOOL hb_gt_wvt_SetDispCP( PHB_GT pGT, char * pszTermCDP, char * pszHostCDP, BOOL fBox )
{
HB_GTSUPER_SETDISPCP( pszTermCDP, pszHostCDP, fBox );
HB_GTSUPER_SETDISPCP( pGT, pszTermCDP, pszHostCDP, fBox );
#ifndef HB_CDP_SUPPORT_OFF
/*
@@ -2672,9 +2693,9 @@ static BOOL hb_gt_wvt_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox
return TRUE;
}
static BOOL hb_gt_wvt_SetKeyCP( char * pszTermCDP, char * pszHostCDP )
static BOOL hb_gt_wvt_SetKeyCP( PHB_GT pGT, char * pszTermCDP, char * pszHostCDP )
{
HB_GTSUPER_SETKEYCP( pszTermCDP, pszHostCDP );
HB_GTSUPER_SETKEYCP( pGT, pszTermCDP, pszHostCDP );
#ifndef HB_CDP_SUPPORT_OFF
/*

View File

@@ -186,6 +186,8 @@ typedef BOOL ( WINAPI *wvtGradientFill ) (
typedef struct global_data
{
PHB_GT pGT; /* core GT pointer */
USHORT ROWS; /* number of displayable rows in window */
USHORT COLS; /* number of displayable columns in window */
@@ -193,7 +195,7 @@ typedef struct global_data
BOOL CaretHidden; /* TRUE if a caret has been hiden */
int CaretSize; /* Size of solid caret */
POINT mousePos; /* the last mouse position */
POINT MousePos; /* the last mouse position */
BOOL MouseMove; /* Flag to say whether to return mouse movement events */
int Keys[ WVT_CHAR_QUEUE_SIZE ]; /* Array to hold the characters & events */

View File

@@ -177,11 +177,12 @@ HB_FUNC( WVT_CHOOSEFONT )
if ( ChooseFont( &cf ) )
{
char * szFaceName = HB_TCHAR_CONVFROM( lf.lfFaceName );
PointSize = -MulDiv( lf.lfHeight, 72, GetDeviceCaps( _s->hdc, LOGPIXELSY ) ) ;
hb_reta( 8 );
hb_storc( HB_TCHAR_CONVFROM( lf.lfFaceName ), -1, 1 );
hb_storc( szFaceName , -1, 1 );
hb_stornl( ( LONG ) PointSize, -1, 2 );
hb_storni( lf.lfWidth , -1, 3 );
hb_storni( lf.lfWeight , -1, 4 );
@@ -189,6 +190,8 @@ HB_FUNC( WVT_CHOOSEFONT )
hb_storl( lf.lfItalic , -1, 6 );
hb_storl( lf.lfUnderline , -1, 7 );
hb_storl( lf.lfStrikeOut , -1, 8 );
HB_TCHAR_FREE( szFaceName );
}
else
{
@@ -277,7 +280,7 @@ HB_FUNC( WVT_SETTOOLTIPACTIVE )
//
HB_FUNC( WVT_SETTOOLTIP )
{
TOOLINFO ti = { 0,0,0,0,0,0,0,0 };
TOOLINFO ti;
POINT xy = { 0,0 };
int iTop, iLeft, iBottom, iRight;
@@ -286,6 +289,7 @@ HB_FUNC( WVT_SETTOOLTIP )
return;
}
memset( &ti, 0, sizeof( ti ) );
ti.cbSize = sizeof( TOOLINFO );
ti.hwnd = _s->hWnd;
ti.uId = 100000;
@@ -1648,9 +1652,11 @@ HB_FUNC( WIN_SENDMESSAGE )
( LPARAM ) hb_parnl( 4 ) ) ) ) )
);
if ( cText )
if( cText )
{
hb_storc( HB_TCHAR_CONVFROM( cText ), 4 );
char * szText = HB_TCHAR_CONVFROM( cText );
hb_storc( szText, 4 );
HB_TCHAR_FREE( szText );
HB_TCHAR_FREE( cText );
}
}
@@ -1798,15 +1804,19 @@ HB_FUNC( WIN_SETDLGITEMTEXT )
HB_FUNC( WIN_GETDLGITEMTEXT )
{
USHORT iLen = SendMessage( GetDlgItem( ( HWND ) hb_parnl( 1 ), hb_parni( 2 ) ), WM_GETTEXTLENGTH, 0, 0 ) + 1 ;
char *cText = ( char* ) hb_xgrab( iLen * sizeof( TCHAR ) );
LPTSTR cText = ( LPTSTR ) hb_xgrab( iLen * sizeof( TCHAR ) );
char * szText;
GetDlgItemText( ( HWND ) hb_parnl( 1 ), // handle of dialog box
hb_parni( 2 ), // identifier of control
( LPTSTR ) cText, // address of buffer for text
cText, // address of buffer for text
iLen // maximum size of string
);
hb_retc( HB_TCHAR_CONVFROM( cText ) );
szText = HB_TCHAR_CONVFROM( cText );
hb_retc( szText );
HB_TCHAR_FREE( szText );
HB_TCHAR_FREE( cText );
}
@@ -2273,7 +2283,7 @@ HB_FUNC( WVT__GETOPENFILENAME )
hb_stornl( ofn.nFilterIndex, 8 );
hb_storclen( szFileName, size, 2 ) ;
hb_retc( szFileName );
HB_TCHAR_FREE( szFileName );
}
else
{

View File

@@ -111,148 +111,150 @@
/* forward declaration */
struct _HB_GT_BASE;
#define HB_GT_PTR struct _HB_GT_BASE *
typedef struct
{
void (* Init) ( FHANDLE, FHANDLE, FHANDLE );
void (* Exit) ( void );
void * (* New) ( void );
void (* Free) ( void * );
BOOL (* Resize ) ( int, int );
BOOL (* SetMode) ( int, int );
void (* GetSize) ( int *, int * );
void (* SemiCold) ( void );
void (* ColdArea) ( int, int, int, int );
void (* ExposeArea) ( int, int, int, int );
void (* ScrollArea) ( int, int, int, int, BYTE, BYTE, int, int );
void (* TouchCell) ( int, int );
void (* Redraw) ( int, int, int );
void (* Refresh) ( void );
void (* Flush) ( void );
int (* MaxCol) ( void );
int (* MaxRow) ( void );
BOOL (* CheckPos) ( int, int, long * );
void (* SetPos) ( int, int );
void (* GetPos) ( int *, int * );
BOOL (* IsColor) ( void );
void (* GetColorStr) ( char * );
void (* SetColorStr) ( const char * );
void (* ColorSelect) ( int );
int (* GetColor) ( void );
int (* ColorNum) ( const char * );
void (* ColorsToString) ( int *, int, char *, int );
void (* StringToColors) ( const char *, int **, int * );
void (* GetColorData) ( int **, int *, int * );
int (* GetClearColor) ( void );
void (* SetClearColor) ( int );
int (* GetClearChar) ( void );
void (* SetClearChar) ( int );
int (* GetCursorStyle) ( void );
void (* SetCursorStyle) ( int );
void (* GetScrCursor) ( int *, int *, int * );
BOOL (* GetScrChar) ( int, int, BYTE *, BYTE *, USHORT * );
BOOL (* PutScrChar) ( int, int, BYTE, BYTE, USHORT );
void (* DispBegin) ( void );
void (* DispEnd) ( void );
int (* DispCount) ( void );
BOOL (* GetChar) ( int, int, BYTE *, BYTE *, USHORT * );
BOOL (* PutChar) ( int, int, BYTE, BYTE, USHORT );
long (* RectSize) ( int, int, int, int );
void (* Save) ( int, int, int, int, BYTE * );
void (* Rest) ( int, int, int, int, BYTE * );
void (* PutText) ( int, int, BYTE, BYTE *, ULONG );
void (* Replicate) ( int, int, BYTE, BYTE, USHORT, ULONG );
void (* WriteAt) ( int, int, BYTE *, ULONG );
void (* Write) ( BYTE *, ULONG );
void (* WriteCon) ( BYTE *, ULONG );
void (* SetAttribute) ( int, int, int, int, BYTE );
void (* DrawShadow) ( int, int, int, int, BYTE );
void (* Scroll) ( int, int, int, int, BYTE, BYTE, int, int );
void (* ScrollUp) ( int, BYTE, BYTE );
void (* Box) ( int, int, int, int, BYTE *, BYTE );
void (* BoxD) ( int, int, int, int, BYTE *, BYTE );
void (* BoxS) ( int, int, int, int, BYTE *, BYTE );
void (* HorizLine) ( int, int, int, BYTE, BYTE );
void (* VertLine) ( int, int, int, BYTE, BYTE );
BOOL (* GetBlink) ( void );
void (* SetBlink) ( BOOL );
void (* SetSnowFlag) ( BOOL );
char * (* Version) ( int );
BOOL (* Suspend) ( void );
BOOL (* Resume) ( void );
BOOL (* PreExt) ( void );
BOOL (* PostExt) ( void );
void (* OutStd) ( BYTE *, ULONG );
void (* OutErr) ( BYTE *, ULONG );
void (* Tone) ( double, double );
void (* Bell) ( void );
BOOL (* Info) ( int, PHB_GT_INFO );
int (* Alert) ( PHB_ITEM, PHB_ITEM, int, int, double );
int (* SetFlag) ( int, int );
void (* Init) ( HB_GT_PTR, FHANDLE, FHANDLE, FHANDLE );
void (* Exit) ( HB_GT_PTR );
void * (* New) ( HB_GT_PTR );
void (* Free) ( HB_GT_PTR );
BOOL (* Resize ) ( HB_GT_PTR, int, int );
BOOL (* SetMode) ( HB_GT_PTR, int, int );
void (* GetSize) ( HB_GT_PTR, int *, int * );
void (* SemiCold) ( HB_GT_PTR );
void (* ColdArea) ( HB_GT_PTR, int, int, int, int );
void (* ExposeArea) ( HB_GT_PTR, int, int, int, int );
void (* ScrollArea) ( HB_GT_PTR, int, int, int, int, BYTE, BYTE, int, int );
void (* TouchCell) ( HB_GT_PTR, int, int );
void (* Redraw) ( HB_GT_PTR, int, int, int );
void (* Refresh) ( HB_GT_PTR );
void (* Flush) ( HB_GT_PTR );
int (* MaxCol) ( HB_GT_PTR );
int (* MaxRow) ( HB_GT_PTR );
BOOL (* CheckPos) ( HB_GT_PTR, int, int, long * );
void (* SetPos) ( HB_GT_PTR, int, int );
void (* GetPos) ( HB_GT_PTR, int *, int * );
BOOL (* IsColor) ( HB_GT_PTR );
void (* GetColorStr) ( HB_GT_PTR, char * );
void (* SetColorStr) ( HB_GT_PTR, const char * );
void (* ColorSelect) ( HB_GT_PTR, int );
int (* GetColor) ( HB_GT_PTR );
int (* ColorNum) ( HB_GT_PTR, const char * );
void (* ColorsToString) ( HB_GT_PTR, int *, int, char *, int );
void (* StringToColors) ( HB_GT_PTR, const char *, int **, int * );
void (* GetColorData) ( HB_GT_PTR, int **, int *, int * );
int (* GetClearColor) ( HB_GT_PTR );
void (* SetClearColor) ( HB_GT_PTR, int );
int (* GetClearChar) ( HB_GT_PTR );
void (* SetClearChar) ( HB_GT_PTR, int );
int (* GetCursorStyle) ( HB_GT_PTR );
void (* SetCursorStyle) ( HB_GT_PTR, int );
void (* GetScrCursor) ( HB_GT_PTR, int *, int *, int * );
BOOL (* GetScrChar) ( HB_GT_PTR, int, int, BYTE *, BYTE *, USHORT * );
BOOL (* PutScrChar) ( HB_GT_PTR, int, int, BYTE, BYTE, USHORT );
void (* DispBegin) ( HB_GT_PTR );
void (* DispEnd) ( HB_GT_PTR );
int (* DispCount) ( HB_GT_PTR );
BOOL (* GetChar) ( HB_GT_PTR, int, int, BYTE *, BYTE *, USHORT * );
BOOL (* PutChar) ( HB_GT_PTR, int, int, BYTE, BYTE, USHORT );
long (* RectSize) ( HB_GT_PTR, int, int, int, int );
void (* Save) ( HB_GT_PTR, int, int, int, int, BYTE * );
void (* Rest) ( HB_GT_PTR, int, int, int, int, BYTE * );
void (* PutText) ( HB_GT_PTR, int, int, BYTE, BYTE *, ULONG );
void (* Replicate) ( HB_GT_PTR, int, int, BYTE, BYTE, USHORT, ULONG );
void (* WriteAt) ( HB_GT_PTR, int, int, BYTE *, ULONG );
void (* Write) ( HB_GT_PTR, BYTE *, ULONG );
void (* WriteCon) ( HB_GT_PTR, BYTE *, ULONG );
void (* SetAttribute) ( HB_GT_PTR, int, int, int, int, BYTE );
void (* DrawShadow) ( HB_GT_PTR, int, int, int, int, BYTE );
void (* Scroll) ( HB_GT_PTR, int, int, int, int, BYTE, BYTE, int, int );
void (* ScrollUp) ( HB_GT_PTR, int, BYTE, BYTE );
void (* Box) ( HB_GT_PTR, int, int, int, int, BYTE *, BYTE );
void (* BoxD) ( HB_GT_PTR, int, int, int, int, BYTE *, BYTE );
void (* BoxS) ( HB_GT_PTR, int, int, int, int, BYTE *, BYTE );
void (* HorizLine) ( HB_GT_PTR, int, int, int, BYTE, BYTE );
void (* VertLine) ( HB_GT_PTR, int, int, int, BYTE, BYTE );
BOOL (* GetBlink) ( HB_GT_PTR );
void (* SetBlink) ( HB_GT_PTR, BOOL );
void (* SetSnowFlag) ( HB_GT_PTR, BOOL );
char * (* Version) ( HB_GT_PTR, int );
BOOL (* Suspend) ( HB_GT_PTR );
BOOL (* Resume) ( HB_GT_PTR );
BOOL (* PreExt) ( HB_GT_PTR );
BOOL (* PostExt) ( HB_GT_PTR );
void (* OutStd) ( HB_GT_PTR, BYTE *, ULONG );
void (* OutErr) ( HB_GT_PTR, BYTE *, ULONG );
void (* Tone) ( HB_GT_PTR, double, double );
void (* Bell) ( HB_GT_PTR );
BOOL (* Info) ( HB_GT_PTR, int, PHB_GT_INFO );
int (* Alert) ( HB_GT_PTR, PHB_ITEM, PHB_ITEM, int, int, double );
int (* SetFlag) ( HB_GT_PTR, int, int );
/* internationalization */
BOOL (* SetDispCP) ( char *, char *, BOOL );
BOOL (* SetKeyCP) ( char *, char * );
BOOL (* SetDispCP) ( HB_GT_PTR, char *, char *, BOOL );
BOOL (* SetKeyCP) ( HB_GT_PTR, char *, char * );
/* keyboard */
int (* ReadKey) ( int );
int (* ReadKey) ( HB_GT_PTR, int );
int (* InkeyGet) ( BOOL fWait, double dSeconds, int iEventMask );
void (* InkeyPut) ( int iKey );
int (* InkeyLast) ( int iEventMask );
int (* InkeyNext) ( int iEventMask );
void (* InkeyPoll) ( void );
void (* InkeySetText) ( const char * szText, ULONG ulLen );
int (* InkeySetLast) ( int iKey );
void (* InkeyReset) ( void );
void (* InkeyExit) ( void );
int (* InkeyGet) ( HB_GT_PTR, BOOL fWait, double dSeconds, int iEventMask );
void (* InkeyPut) ( HB_GT_PTR, int iKey );
int (* InkeyLast) ( HB_GT_PTR, int iEventMask );
int (* InkeyNext) ( HB_GT_PTR, int iEventMask );
void (* InkeyPoll) ( HB_GT_PTR );
void (* InkeySetText) ( HB_GT_PTR, const char * szText, ULONG ulLen );
int (* InkeySetLast) ( HB_GT_PTR, int iKey );
void (* InkeyReset) ( HB_GT_PTR );
void (* InkeyExit) ( HB_GT_PTR );
/* mouse */
void (* MouseInit) ( void );
void (* MouseExit) ( void );
BOOL (* MouseIsPresent) ( void );
void (* MouseShow) ( void );
void (* MouseHide) ( void );
BOOL (* MouseGetCursor) ( void );
void (* MouseSetCursor) ( BOOL );
int (* MouseCol) ( void );
int (* MouseRow) ( void );
void (* MouseGetPos) ( int *, int * );
void (* MouseSetPos) ( int, int );
void (* MouseSetBounds) ( int, int, int, int );
void (* MouseGetBounds) ( int *, int *, int *, int * );
int (* MouseStorageSize) ( void );
void (* MouseSaveState) ( BYTE * );
void (* MouseRestoreState) ( BYTE * );
int (* MouseGetDoubleClickSpeed) ( void );
void (* MouseSetDoubleClickSpeed) ( int );
int (* MouseCountButton) ( void );
BOOL (* MouseButtonState) ( int );
BOOL (* MouseButtonPressed) ( int, int *, int * );
BOOL (* MouseButtonReleased) ( int, int *, int * );
int (* MouseReadKey) ( int );
void (* MouseInit) ( HB_GT_PTR );
void (* MouseExit) ( HB_GT_PTR );
BOOL (* MouseIsPresent) ( HB_GT_PTR );
void (* MouseShow) ( HB_GT_PTR );
void (* MouseHide) ( HB_GT_PTR );
BOOL (* MouseGetCursor) ( HB_GT_PTR );
void (* MouseSetCursor) ( HB_GT_PTR, BOOL );
int (* MouseCol) ( HB_GT_PTR );
int (* MouseRow) ( HB_GT_PTR );
void (* MouseGetPos) ( HB_GT_PTR, int *, int * );
void (* MouseSetPos) ( HB_GT_PTR, int, int );
void (* MouseSetBounds) ( HB_GT_PTR, int, int, int, int );
void (* MouseGetBounds) ( HB_GT_PTR, int *, int *, int *, int * );
int (* MouseStorageSize) ( HB_GT_PTR );
void (* MouseSaveState) ( HB_GT_PTR, BYTE * );
void (* MouseRestoreState) ( HB_GT_PTR, BYTE * );
int (* MouseGetDoubleClickSpeed) ( HB_GT_PTR );
void (* MouseSetDoubleClickSpeed) ( HB_GT_PTR, int );
int (* MouseCountButton) ( HB_GT_PTR );
BOOL (* MouseButtonState) ( HB_GT_PTR, int );
BOOL (* MouseButtonPressed) ( HB_GT_PTR, int, int *, int * );
BOOL (* MouseButtonReleased) ( HB_GT_PTR, int, int *, int * );
int (* MouseReadKey) ( HB_GT_PTR, int );
/* Graphics API */
int (* GfxPrimitive) ( int, int, int, int, int, int );
void (* GfxText) ( int, int, char *, int, int, int );
int (* GfxPrimitive) ( HB_GT_PTR, int, int, int, int, int, int );
void (* GfxText) ( HB_GT_PTR, int, int, char *, int, int, int );
#if 0
/* keyboard */
int (* ExtendedKeySupport) ( void );
int (* ExtendedKeySupport) ( HB_GT_PTR );
/* GT CLIPBOARD functions */
void (* GetClipboard) ( char *, ULONG * );
void (* SetClipboard) ( char *, ULONG );
ULONG (* GetClipboardSize) ( void );
void (* GetClipboard) ( HB_GT_PTR, char *, ULONG * );
void (* SetClipboard) ( HB_GT_PTR, char *, ULONG );
ULONG (* GetClipboardSize) ( HB_GT_PTR );
void (* ProcessMessages) ( void );
void (* ProcessMessages) ( HB_GT_PTR );
/* GT to DRIVER communication functions */
void (* update ) ( int );
int (* info ) ( int, BOOL , int , void * );
void (* update ) ( HB_GT_PTR, int );
int (* info ) ( HB_GT_PTR, int, BOOL , int , void * );
#endif
void (* WhoCares) ( void * );
void (* WhoCares) ( HB_GT_PTR, void * );
} HB_GT_FUNCS, * PHB_GT_FUNCS;
@@ -360,125 +362,13 @@ typedef struct _HB_GT_BASE
ULONG StrBufferSize;
ULONG StrBufferPos;
void ** pGTData; /* */
void * pGTData[HB_GT_MAX_]; /* local GT data */
} HB_GT_BASE, * PHB_GT_BASE, * PHB_GT;
extern PHB_GT hb_gt_Base( void );
extern void hb_gt_Init( FHANDLE hStdIn, FHANDLE hStdOut, FHANDLE hStdErr );
extern void hb_gt_Exit( void );
extern void * hb_gt_New( void );
extern void hb_gt_Free( void * pGtPtr );
extern BOOL hb_gt_Resize( int iRows, int iCols );
extern BOOL hb_gt_SetMode( int iRows, int iCols );
extern void hb_gt_GetSize( int * piRows, int * piCols );
extern void hb_gt_SemiCold( void );
extern void hb_gt_ColdArea( int iTop, int iLeft, int iBottom, int iRight );
extern void hb_gt_ExposeArea( int iTop, int iLeft, int iBottom, int iRight );
extern void hb_gt_ScrollArea( int iTop, int iLeft, int iBottom, int iRight, BYTE bColor, BYTE bChar, int iRows, int iCols );
extern void hb_gt_TouchCell( int iRow, int iCol );
extern void hb_gt_Redraw( int iRow, int iCol, int iSize );
extern void hb_gt_Refresh( void );
extern void hb_gt_Flush( void );
extern int hb_gt_MaxCol( void );
extern int hb_gt_MaxRow( void );
extern BOOL hb_gt_CheckPos( int iRow, int iCol, long *plIndex );
extern void hb_gt_SetPos( int iRow, int iCol );
extern void hb_gt_GetPos( int * piRow, int * piCol );
extern BOOL hb_gt_IsColor( void );
extern void hb_gt_GetColorStr( char * );
extern void hb_gt_SetColorStr( const char * );
extern void hb_gt_ColorSelect( int iColorIndex );
extern int hb_gt_GetColor( void );
extern int hb_gt_ColorNum( const char * );
extern void hb_gt_ColorsToString( int *, int, char *, int );
extern void hb_gt_StringToColors( const char *, int **, int * );
extern void hb_gt_GetColorData( int **, int *, int * );
extern int hb_gt_GetClearColor( void );
extern void hb_gt_SetClearColor( int );
extern int hb_gt_GetClearChar( void );
extern void hb_gt_SetClearChar( int );
extern int hb_gt_GetCursorStyle( void );
extern void hb_gt_SetCursorStyle( int iStyle );
extern void hb_gt_GetScrCursor( int * piRow, int * piCol, int * piStyle );
extern BOOL hb_gt_GetScrChar( int iRow, int iCol, BYTE * pbColor, BYTE * pbAttr, USHORT * pusChar );
extern BOOL hb_gt_PutScrChar( int iRow, int iCol, BYTE bColor, BYTE bAttr, USHORT usChar );
extern void hb_gt_DispBegin( void );
extern void hb_gt_DispEnd( void );
extern int hb_gt_DispCount( void );
extern BOOL hb_gt_GetChar( int iRow, int iCol, BYTE * pbColor, BYTE * pbAttr, USHORT * pusChar );
extern BOOL hb_gt_PutChar( int iRow, int iCol, BYTE bColor, BYTE bAttr, USHORT usChar );
extern long hb_gt_RectSize( int iTop, int iLeft, int iBottom, int iRight );
extern void hb_gt_Save( int iTop, int iLeft, int iBottom, int iRight, BYTE * pBuffer );
extern void hb_gt_Rest( int iTop, int iLeft, int iBottom, int iRight, BYTE * pBuffer );
extern void hb_gt_PutText( int iRow, int iCol, BYTE bColor, BYTE * pText, ULONG ulLen );
extern void hb_gt_Replicate( int iRow, int iCol, BYTE bColor, BYTE bAttr, USHORT usChar, ULONG ulLen );
extern void hb_gt_WriteAt( int iRow, int iCol, BYTE * pText, ULONG ulLength );
extern void hb_gt_Write( BYTE * pText, ULONG ulLength );
extern void hb_gt_WriteCon( BYTE * pText, ULONG ulLength );
extern void hb_gt_SetAttribute( int iTop, int iLeft, int iBottom, int iRight, BYTE bColor );
extern void hb_gt_DrawShadow( int iTop, int iLeft, int iBottom, int iRight, BYTE bColor );
extern void hb_gt_Scroll( int iTop, int iLeft, int iBottom, int iRight, BYTE bColor, BYTE bChar, int iRows, int iCols );
extern void hb_gt_ScrollUp( int iRows, BYTE bColor, BYTE bChar );
extern void hb_gt_Box( int iTop, int iLeft, int iBottom, int iRight, BYTE * pbyFrame, BYTE bColor );
extern void hb_gt_BoxD( int iTop, int iLeft, int iBottom, int iRight, BYTE * pbyFrame, BYTE bColor );
extern void hb_gt_BoxS( int iTop, int iLeft, int iBottom, int iRight, BYTE * pbyFrame, BYTE bColor );
extern void hb_gt_HorizLine( int iRow, int iLeft, int iRight, BYTE bChar, BYTE bColor );
extern void hb_gt_VertLine( int iCol, int iTop, int iBottom, BYTE bChar, BYTE bColor );
extern BOOL hb_gt_GetBlink( void );
extern void hb_gt_SetBlink( BOOL fBlink );
extern void hb_gt_SetSnowFlag( BOOL fNoSnow );
extern char * hb_gt_Version( int iType );
extern BOOL hb_gt_Suspend( void );
extern BOOL hb_gt_Resume( void );
extern BOOL hb_gt_PreExt( void );
extern BOOL hb_gt_PostExt( void );
extern void hb_gt_OutStd( BYTE * pbyStr, ULONG ulLen );
extern void hb_gt_OutErr( BYTE * pbyStr, ULONG ulLen );
extern void hb_gt_Tone( double dFrequency, double dDuration );
extern void hb_gt_Bell( void );
extern BOOL hb_gt_Info( int iType, PHB_GT_INFO pInfo );
extern int hb_gt_Alert( PHB_ITEM pMessage, PHB_ITEM pOptions, int iClrNorm, int iClrHigh, double dDelay );
extern int hb_gt_SetFlag( int iType, int iNewValue );
extern BOOL hb_gt_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox );
extern BOOL hb_gt_SetKeyCP( char * pszTermCDP, char * pszHostCDP );
extern int hb_gt_ReadKey( int iEventMask );
extern int hb_inkey_Get( BOOL fWait, double dSeconds, int iEventMask );
extern void hb_inkey_Put( int iKey );
extern int hb_inkey_Last( int iEventMask );
extern int hb_inkey_Next( int iEventMask );
extern void hb_inkey_Poll( void );
extern void hb_inkey_SetText( const char * szText, ULONG ulLen );
extern int hb_inkey_SetLast( int iKey );
extern void hb_inkey_Reset( void );
extern void hb_inkey_Exit( void );
extern void hb_mouse_Init( void );
extern void hb_mouse_Exit( void );
extern BOOL hb_mouse_IsPresent( void );
extern void hb_mouse_Show( void );
extern void hb_mouse_Hide( void );
extern BOOL hb_mouse_GetCursor( void );
extern void hb_mouse_SetCursor( BOOL fVisible );
extern int hb_mouse_Col( void );
extern int hb_mouse_Row( void );
extern void hb_mouse_SetPos( int iRow, int iCol );
extern void hb_mouse_GetPos( int * piRow, int * piCol );
extern void hb_mouse_SetBounds( int iTop, int iLeft, int iBottom, int iRight );
extern void hb_mouse_GetBounds( int * piTop, int * piLeft, int * piBottom, int * piRight );
extern int hb_mouse_StorageSize( void );
extern void hb_mouse_SaveState( BYTE * pBuffer );
extern void hb_mouse_RestoreState( BYTE * pBuffer );
extern int hb_mouse_GetDoubleClickSpeed( void );
extern void hb_mouse_SetDoubleClickSpeed( int iSpeed );
extern int hb_mouse_CountButton( void );
extern BOOL hb_mouse_ButtonState( int iButton );
extern BOOL hb_mouse_ButtonPressed( int iButton, int * piRow, int * piCol );
extern BOOL hb_mouse_ButtonReleased( int iButton, int * piRow, int * piCol );
extern int hb_mouse_ReadKey( int iEventMask );
extern int hb_gt_GfxPrimitive( int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor );
extern void hb_gt_GfxText( int iTop, int iLeft, char * szText, int iColor, int iSize, int iWidth );
extern void hb_gt_WhoCares( void * pCargo );
#define HB_GTLOCAL(g) (g)->pGTData[*HB_GTID_PTR]
#define HB_GTSELF_INIT(g,i,o,e) (g)->pFuncTable->Init(g,i,o,e)
#define HB_GTSELF_EXIT(g) (g)->pFuncTable->Exit(g)
@@ -572,8 +462,8 @@ extern void hb_gt_WhoCares( void * pCargo );
#define HB_GTSELF_MOUSEISPRESENT(g) (g)->pFuncTable->MouseIsPresent(g)
#define HB_GTSELF_MOUSESHOW(g) (g)->pFuncTable->MouseShow(g)
#define HB_GTSELF_MOUSEHIDE(g) (g)->pFuncTable->MouseHide(g)
#define HB_GTSELF_MOUSESGETCURSOR(g) (g)->pFuncTable->MouseGetCursor(g)
#define HB_GTSELF_MOUSESSETCURSOR(g,v) (g)->pFuncTable->MouseSetCursor(g,v)
#define HB_GTSELF_MOUSEGETCURSOR(g) (g)->pFuncTable->MouseGetCursor(g)
#define HB_GTSELF_MOUSESETCURSOR(g,v) (g)->pFuncTable->MouseSetCursor(g,v)
#define HB_GTSELF_MOUSECOL(g) (g)->pFuncTable->MouseCol(g)
#define HB_GTSELF_MOUSEROW(g) (g)->pFuncTable->MouseRow(g)
#define HB_GTSELF_MOUSEGETPOS(g,pr,pc) (g)->pFuncTable->MouseGetPos(g,pr,pc)
@@ -594,119 +484,119 @@ extern void hb_gt_WhoCares( void * pCargo );
#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_INIT(i,o,e) (HB_GTSUPER)->Init(i,o,e)
#define HB_GTSUPER_EXIT() (HB_GTSUPER)->Exit()
#define HB_GTSUPER_NEW() (HB_GTSUPER)->New()
#define HB_GTSUPER_FREE(p) (HB_GTSUPER)->Free(p)
#define HB_GTSUPER_RESIZE(r,c) (HB_GTSUPER)->Resize(r,c)
#define HB_GTSUPER_SETMODE(r,c) (HB_GTSUPER)->SetMode(r,c)
#define HB_GTSUPER_GETSIZE(pr,pc) (HB_GTSUPER)->GetSize(pr,pc)
#define HB_GTSUPER_SEMICOLD() (HB_GTSUPER)->SemiCold()
#define HB_GTSUPER_COLDAREA(t,l,b,r) (HB_GTSUPER)->ColdArea(t,l,b,r)
#define HB_GTSUPER_EXPOSEAREA(t,l,b,r) (HB_GTSUPER)->ExposeArea(t,l,b,r)
#define HB_GTSUPER_SCROLLAREA(t,l,b,r,m,u,v,h) (HB_GTSUPER)->ScrollArea(t,l,b,r,m,u,v,h)
#define HB_GTSUPER_TOUCHCELL(r,c) (HB_GTSUPER)->TouchCell(r,c)
#define HB_GTSUPER_REDRAW(r,c,l) (HB_GTSUPER)->Redraw(r,c,l)
#define HB_GTSUPER_REFRESH() (HB_GTSUPER)->Refresh()
#define HB_GTSUPER_FLUSH() (HB_GTSUPER)->Flush()
#define HB_GTSUPER_MAXCOL() (HB_GTSUPER)->MaxCol()
#define HB_GTSUPER_MAXROW() (HB_GTSUPER)->MaxRow()
#define HB_GTSUPER_CHECKPOS(r,c,l) (HB_GTSUPER)->CheckPos(r,c,l)
#define HB_GTSUPER_SETPOS(r,c) (HB_GTSUPER)->SetPos(r,c)
#define HB_GTSUPER_GETPOS(pr,pc) (HB_GTSUPER)->GetPos(pr,pc)
#define HB_GTSUPER_ISCOLOR() (HB_GTSUPER)->IsColor()
#define HB_GTSUPER_GETCOLORSTR(s) (HB_GTSUPER)->GetColorStr(s)
#define HB_GTSUPER_SETCOLORSTR(s) (HB_GTSUPER)->SetColorStr(s)
#define HB_GTSUPER_COLORSELECT(c) (HB_GTSUPER)->ColorSelect(c)
#define HB_GTSUPER_GETCOLOR() (HB_GTSUPER)->GetColor()
#define HB_GTSUPER_COLORNUM(s) (HB_GTSUPER)->ColorNum(s)
#define HB_GTSUPER_COLORSTOSTRING(pc,i,ps,n) (HB_GTSUPER)->ColorsToString(pc,i,ps,n)
#define HB_GTSUPER_STRINGTOCOLORS(ps,pc,pi) (HB_GTSUPER)->StringToColors(ps,pc,pi)
#define HB_GTSUPER_GETCOLORDATA(pc,pn,pi) (HB_GTSUPER)->GetColorData(pc,pn,pi)
#define HB_GTSUPER_GETCLEARCOLOR() (HB_GTSUPER)->GetClearColor()
#define HB_GTSUPER_SETCLEARCOLOR(c) (HB_GTSUPER)->SetClearColor(c)
#define HB_GTSUPER_GETCLEARCHAR() (HB_GTSUPER)->GetClearChar()
#define HB_GTSUPER_SETCLEARCHAR(c) (HB_GTSUPER)->SetClearChar(c)
#define HB_GTSUPER_GETCURSORSTYLE() (HB_GTSUPER)->GetCursorStyle()
#define HB_GTSUPER_SETCURSORSTYLE(s) (HB_GTSUPER)->SetCursorStyle(s)
#define HB_GTSUPER_GETSCRCURSOR(pr,pc,ps) (HB_GTSUPER)->GetScrCursor(pr,pc,ps)
#define HB_GTSUPER_GETSCRCHAR(r,c,pm,pa,pc) (HB_GTSUPER)->GetScrChar(r,c,pm,pa,pc)
#define HB_GTSUPER_PUTSCRCHAR(r,c,m,a,u) (HB_GTSUPER)->PutScrChar(r,c,m,a,u)
#define HB_GTSUPER_DISPBEGIN() (HB_GTSUPER)->DispBegin()
#define HB_GTSUPER_DISPEND() (HB_GTSUPER)->DispEnd()
#define HB_GTSUPER_DISPCOUNT() (HB_GTSUPER)->DispCount()
#define HB_GTSUPER_GETCHAR(r,c,pm,pa,pc) (HB_GTSUPER)->GetChar(r,c,pm,pa,pc)
#define HB_GTSUPER_PUTCHAR(r,c,m,a,u) (HB_GTSUPER)->PutChar(r,c,m,a,u)
#define HB_GTSUPER_RECTSIZE(t,l,b,r) (HB_GTSUPER)->RectSize(t,l,b,r)
#define HB_GTSUPER_SAVE(t,l,b,r,p) (HB_GTSUPER)->Save(t,l,b,r,p)
#define HB_GTSUPER_REST(t,l,b,r,p) (HB_GTSUPER)->Rest(t,l,b,r,p)
#define HB_GTSUPER_PUTTEXT(r,c,m,s,l) (HB_GTSUPER)->PutText(r,c,m,s,l)
#define HB_GTSUPER_REPLICATE(r,c,m,a,u,l) (HB_GTSUPER)->Replicate(r,c,m,a,u,l)
#define HB_GTSUPER_WRITEAT(r,c,s,l) (HB_GTSUPER)->WriteAt(r,c,s,l)
#define HB_GTSUPER_WRITE(s,l) (HB_GTSUPER)->Write(s,l)
#define HB_GTSUPER_WRITECON(s,l) (HB_GTSUPER)->WriteCon(s,l)
#define HB_GTSUPER_SETATTRIBUTE(t,l,b,r,m) (HB_GTSUPER)->SetAttribute(t,l,b,r,m)
#define HB_GTSUPER_DRAWSHADOW(t,l,b,r,m) (HB_GTSUPER)->DrawShadow(t,l,b,r,m)
#define HB_GTSUPER_SCROLL(t,l,b,r,m,u,v,h) (HB_GTSUPER)->Scroll(t,l,b,r,m,u,v,h)
#define HB_GTSUPER_SCROLLUP(r,m,u) (HB_GTSUPER)->ScrollUp(r,m,u)
#define HB_GTSUPER_BOX(t,l,b,r,f,m) (HB_GTSUPER)->Box(t,l,b,r,f,m)
#define HB_GTSUPER_BOXD(t,l,b,r,f,m) (HB_GTSUPER)->BoxD(t,l,b,r,f,m)
#define HB_GTSUPER_BOXS(t,l,b,r,f,m) (HB_GTSUPER)->BoxS(t,l,b,r,f,m)
#define HB_GTSUPER_HORIZLINE(h,l,r,u,m) (HB_GTSUPER)->HorizLine(h,l,r,u,m)
#define HB_GTSUPER_VERTLINE(c,t,b,u,m) (HB_GTSUPER)->VertLine(c,t,b,u,m)
#define HB_GTSUPER_GETBLINK() (HB_GTSUPER)->GetBlink()
#define HB_GTSUPER_SETBLINK(b) (HB_GTSUPER)->SetBlink(b)
#define HB_GTSUPER_SETSNOWFLAG(b) (HB_GTSUPER)->SetSnowFlag(b)
#define HB_GTSUPER_VERSION(i) (HB_GTSUPER)->Version(i)
#define HB_GTSUPER_SUSPEND() (HB_GTSUPER)->Suspend()
#define HB_GTSUPER_RESUME() (HB_GTSUPER)->Resume()
#define HB_GTSUPER_PREEXT() (HB_GTSUPER)->PreExt()
#define HB_GTSUPER_POSTEXT() (HB_GTSUPER)->PostExt()
#define HB_GTSUPER_OUTSTD(s,l) (HB_GTSUPER)->OutStd(s,l)
#define HB_GTSUPER_OUTERR(s,l) (HB_GTSUPER)->OutErr(s,l)
#define HB_GTSUPER_TONE(f,d) (HB_GTSUPER)->Tone(f,d)
#define HB_GTSUPER_BELL() (HB_GTSUPER)->Bell()
#define HB_GTSUPER_INFO(i,p) (HB_GTSUPER)->Info(i,p)
#define HB_GTSUPER_ALERT(m,o,n,h,d) (HB_GTSUPER)->Alert(m,o,n,h,d)
#define HB_GTSUPER_SETFLAG(i,f) (HB_GTSUPER)->SetFlag(i,f)
#define HB_GTSUPER_SETDISPCP(t,h,b) (HB_GTSUPER)->SetDispCP(t,h,b)
#define HB_GTSUPER_SETKEYCP(t,h) (HB_GTSUPER)->SetKeyCP(t,h)
#define HB_GTSUPER_READKEY(m) (HB_GTSUPER)->ReadKey(m)
#define HB_GTSUPER_INKEYGET(w,d,m) (HB_GTSUPER)->InkeyGet(w,d,m)
#define HB_GTSUPER_INKEYPUT(k) (HB_GTSUPER)->InkeyPut(k)
#define HB_GTSUPER_INKEYLAST(m) (HB_GTSUPER)->InkeyLast(m)
#define HB_GTSUPER_INKEYNEXT(m) (HB_GTSUPER)->InkeyNext(m)
#define HB_GTSUPER_INKEYPOLL() (HB_GTSUPER)->InkeyPoll()
#define HB_GTSUPER_INKEYSETTEXT(s,l) (HB_GTSUPER)->InkeySetText(s,l)
#define HB_GTSUPER_INKEYSETLAST(k) (HB_GTSUPER)->InkeySetLast(k)
#define HB_GTSUPER_INKEYRESET() (HB_GTSUPER)->InkeyReset()
#define HB_GTSUPER_INKEYEXIT() (HB_GTSUPER)->InkeyExit()
#define HB_GTSUPER_MOUSEINIT() (HB_GTSUPER)->MouseInit()
#define HB_GTSUPER_MOUSEEXIT() (HB_GTSUPER)->MouseExit()
#define HB_GTSUPER_MOUSEISPRESENT() (HB_GTSUPER)->MouseIsPresent()
#define HB_GTSUPER_MOUSESHOW() (HB_GTSUPER)->MouseShow()
#define HB_GTSUPER_MOUSEHIDE() (HB_GTSUPER)->MouseHide()
#define HB_GTSUPER_MOUSESGETCURSOR() (HB_GTSUPER)->MouseGetCursor()
#define HB_GTSUPER_MOUSESSETCURSOR(v) (HB_GTSUPER)->MouseSetCursor(v)
#define HB_GTSUPER_MOUSECOL() (HB_GTSUPER)->MouseCol()
#define HB_GTSUPER_MOUSEROW() (HB_GTSUPER)->MouseRow()
#define HB_GTSUPER_MOUSEGETPOS(pr,pc) (HB_GTSUPER)->MouseGetPos(pr,pc)
#define HB_GTSUPER_MOUSESETPOS(r,c) (HB_GTSUPER)->MouseSetPos(r,c)
#define HB_GTSUPER_MOUSESETBOUNDS(t,l,b,r) (HB_GTSUPER)->MouseSetBounds(t,l,b,r)
#define HB_GTSUPER_MOUSEGETBOUNDS(t,l,b,r) (HB_GTSUPER)->MouseGetBounds(t,l,b,r)
#define HB_GTSUPER_MOUSESTORAGESIZE() (HB_GTSUPER)->MouseStorageSize()
#define HB_GTSUPER_MOUSESAVESTATE(p) (HB_GTSUPER)->MouseSaveState(p)
#define HB_GTSUPER_MOUSERESTORESTATE(p) (HB_GTSUPER)->MouseRestoreState(p)
#define HB_GTSUPER_MOUSEGETDOUBLECLICKSPEED() (HB_GTSUPER)->MouseGetDoubleClickSpeed()
#define HB_GTSUPER_MOUSESETDOUBLECLICKSPEED(i) (HB_GTSUPER)->MouseSetDoubleClickSpeed(i)
#define HB_GTSUPER_MOUSECOUNTBUTTON() (HB_GTSUPER)->MouseCountButton()
#define HB_GTSUPER_MOUSEBUTTONSTATE(b) (HB_GTSUPER)->MouseButtonState(b)
#define HB_GTSUPER_MOUSEBUTTONPRESSED(b,r,c) (HB_GTSUPER)->MouseButtonPressed(b,r,c)
#define HB_GTSUPER_MOUSEBUTTONRELEASED(b,r,c) (HB_GTSUPER)->MouseButtonReleased(b,r,c)
#define HB_GTSUPER_MOUSEREADKEY(m) (HB_GTSUPER)->MouseReadKey(m)
#define HB_GTSUPER_GFXPRIMITIVE(i,t,l,b,r,c) (HB_GTSUPER)->GfxPrimitive(i,t,l,b,r,c)
#define HB_GTSUPER_GFXTEXT(t,l,s,c,h,w) (HB_GTSUPER)->GfxText(t,l,s,c,h,w)
#define HB_GTSUPER_WHOCARES(p) (HB_GTSUPER)->WhoCares(p)
#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_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)
extern HB_EXPORT void hb_gtSetDefault( const char * szGtName );
extern HB_EXPORT BOOL hb_gtRegister( PHB_GT_INIT gtInit );

View File

@@ -181,7 +181,7 @@ static const gtAllegKey sCtrlTable[GT_CTRL_TABLE_SIZE] = {
if( r > s_iGFXUpdRight ) s_iGFXUpdRight=r; \
} while(0)
#define GT_SCREENINIT() do { if( !s_fInit ) \
hb_gt_alleg_InitializeScreen( s_iScrHeight, s_iScrWidth, TRUE ); \
hb_gt_alleg_InitializeScreen( pGT, s_iScrHeight, s_iScrWidth, TRUE ); \
} while( 0 )
#define MK_GT8BCOLOR(n) ((n & 0xFF) / 16 | (n & 0xFF00) / 256)
@@ -258,14 +258,14 @@ static void hb_gt_alleg_DoCursor( int iRow, int iCol, int iStyle )
s_iCursorStyle = iStyle;
}
static void hb_gt_alleg_ScreenUpdate( void )
static void hb_gt_alleg_ScreenUpdate( PHB_GT pGT )
{
int iRow, iCol, iStyle;
BOOL fPix, fCursor;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_ScreenUpdate()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_ScreenUpdate(%p)", pGT));
hb_gt_GetScrCursor( &iRow, &iCol, &iStyle );
HB_GTSELF_GETSCRCURSOR( pGT, &iRow, &iCol, &iStyle );
fPix = s_iGFXUpdTop <= s_iGFXUpdBottom && s_iGFXUpdLeft <= s_iGFXUpdRight;
fCursor = s_iCurRow != iRow || s_iCurCol != iCol || s_iCursorStyle != iStyle;
@@ -292,14 +292,14 @@ static void hb_gt_alleg_ScreenUpdate( void )
}
}
static BOOL hb_gt_alleg_InitializeScreen( int iRows, int iCols, BOOL lClearInit )
static BOOL hb_gt_alleg_InitializeScreen( PHB_GT pGT, int iRows, int iCols, BOOL lClearInit )
{
PHB_FNAME pFileName;
int iRet = 1, iWidth, iHeight; /* Don't remove iRet, ixFP and iyFP initializers! */
short ixFP = 0, iyFP = 0;
BOOL lMode = FALSE, lPrev = s_fInit;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_InitializeScreen(%d, %d, %d)", iRows, iCols, (int) lClearInit ));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_InitializeScreen(%p,%d,%d,%d)", pGT, iRows, iCols, (int) lClearInit ));
if( s_fGtError )
{
@@ -499,14 +499,14 @@ static BOOL hb_gt_alleg_InitializeScreen( int iRows, int iCols, BOOL lClearInit
if( !lClearInit )
{
BYTE bColor = s_pClr[ ( hb_gt_GetClearColor() >> 4 ) & 0x0f ];
BYTE bColor = s_pClr[ ( HB_GTSELF_GETCLEARCOLOR( pGT ) >> 4 ) & 0x0f ];
al_clear_to_color( bmp, bColor );
al_clear_to_color( al_screen, bColor );
}
HB_GTSUPER_RESIZE( s_iScrHeight, s_iScrWidth );
hb_gt_ExposeArea( 0, 0, s_iScrHeight, s_iScrWidth );
hb_gt_Refresh();
HB_GTSUPER_RESIZE( pGT, s_iScrHeight, s_iScrWidth );
HB_GTSELF_EXPOSEAREA( pGT, 0, 0, s_iScrHeight, s_iScrWidth );
HB_GTSELF_REFRESH( pGT );
}
s_iGFXWidth = 0;
@@ -515,11 +515,11 @@ static BOOL hb_gt_alleg_InitializeScreen( int iRows, int iCols, BOOL lClearInit
return lMode;
}
static void hb_gt_alleg_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_alleg_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
int iRet;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr));
ssfCreateThinFont( &s_ssfDefaultFont );
@@ -538,15 +538,15 @@ static void hb_gt_alleg_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHAND
al_set_color_depth( iRet );
}
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( s_iScrHeight, s_iScrWidth );
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( pGT, s_iScrHeight, s_iScrWidth );
}
static void hb_gt_alleg_Exit( void )
static void hb_gt_alleg_Exit( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_Exit()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_Exit(%p)", pGT));
HB_GTSUPER_EXIT();
HB_GTSUPER_EXIT( pGT );
if( bmp )
{
@@ -555,27 +555,31 @@ static void hb_gt_alleg_Exit( void )
}
}
static char * hb_gt_alleg_Version( int iType )
static char * hb_gt_alleg_Version( PHB_GT pGT, int iType )
{
HB_SYMBOL_UNUSED( pGT );
if( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
return "Harbour Terminal: Multiplatform Allegro graphics console";
}
static BOOL hb_gt_alleg_SetMode( int iRows, int iCols )
static BOOL hb_gt_alleg_SetMode( PHB_GT pGT, int iRows, int iCols )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_SetMode(%d, %d)", iRows, iCols));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_SetMode(%p,%d,%d)", pGT, iRows, iCols));
return hb_gt_alleg_InitializeScreen( iRows, iCols, TRUE );
HB_SYMBOL_UNUSED( pGT );
return hb_gt_alleg_InitializeScreen( pGT, iRows, iCols, TRUE );
}
static int hb_gt_alleg_ReadKey( int iEventMask )
static int hb_gt_alleg_ReadKey( PHB_GT pGT, int iEventMask )
{
int nKey = 0;
int i, iMSX, iMSY;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_ReadKey(%d)", iEventMask));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_ReadKey(%p,%d)", pGT, iEventMask));
GT_SCREENINIT();
@@ -724,12 +728,14 @@ static int hb_gt_alleg_ReadKey( int iEventMask )
return nKey;
}
static BOOL hb_gt_alleg_mouse_IsPresent( void )
static BOOL hb_gt_alleg_mouse_IsPresent( PHB_GT pGT )
{
HB_SYMBOL_UNUSED( pGT );
return TRUE;
}
static void hb_gt_alleg_mouse_GetPos( int * piRow, int * piCol )
static void hb_gt_alleg_mouse_GetPos( PHB_GT pGT, int * piRow, int * piCol )
{
GT_SCREENINIT();
@@ -742,14 +748,14 @@ static void hb_gt_alleg_mouse_GetPos( int * piRow, int * piCol )
*piCol = al_mouse_x / s_byFontWidth;
}
static void hb_gt_alleg_mouse_SetPos( int iRow, int iCol )
static void hb_gt_alleg_mouse_SetPos( PHB_GT pGT, int iRow, int iCol )
{
GT_SCREENINIT();
al_position_mouse(iCol * s_byFontWidth, iRow * s_byFontSize);
}
static BOOL hb_gt_alleg_mouse_ButtonState( int iButton )
static BOOL hb_gt_alleg_mouse_ButtonState( PHB_GT pGT, int iButton )
{
GT_SCREENINIT();
@@ -761,14 +767,14 @@ static BOOL hb_gt_alleg_mouse_ButtonState( int iButton )
return ( al_mouse_b & ( 1 << ( iButton - 1 ) ) ) != 0;
}
static int hb_gt_alleg_mouse_CountButton( void )
static int hb_gt_alleg_mouse_CountButton( PHB_GT pGT )
{
GT_SCREENINIT();
return s_iMsButtons;
}
static void hb_gt_alleg_mouse_SetBounds( int iTop, int iLeft, int iBottom, int iRight )
static void hb_gt_alleg_mouse_SetBounds( PHB_GT pGT, int iTop, int iLeft, int iBottom, int iRight )
{
GT_SCREENINIT();
@@ -795,7 +801,7 @@ static void hb_gt_alleg_mouse_SetBounds( int iTop, int iLeft, int iBottom, int i
al_set_mouse_range( s_iMSBoundLeft, s_iMSBoundTop, s_iMSBoundRight, s_iMSBoundBottom );
}
static void hb_gt_alleg_mouse_GetBounds( int *piTop, int *piLeft, int *piBottom, int *piRight )
static void hb_gt_alleg_mouse_GetBounds( PHB_GT pGT, int *piTop, int *piLeft, int *piBottom, int *piRight )
{
GT_SCREENINIT();
@@ -805,11 +811,11 @@ static void hb_gt_alleg_mouse_GetBounds( int *piTop, int *piLeft, int *piBottom,
*piRight = s_iMSBoundRight;
}
static BOOL hb_gt_alleg_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_alleg_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
int iWidth, iHeight, iValue;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_Info(%d, %p)", iType, pInfo));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_Info(%p,%d,%p)", pGT, iType, pInfo));
switch( iType )
{
@@ -830,7 +836,7 @@ static BOOL hb_gt_alleg_Info( int iType, PHB_GT_INFO pInfo )
if( iWidth > 0 )
{
s_iGFXWidth = iWidth;
/* hb_gt_alleg_InitializeScreen(s_iScrHeight, s_iScrWidth, s_fInit); */
/* hb_gt_alleg_InitializeScreen( pGT, s_iScrHeight, s_iScrWidth, s_fInit ); */
}
break;
@@ -841,7 +847,7 @@ static BOOL hb_gt_alleg_Info( int iType, PHB_GT_INFO pInfo )
if( iHeight > 0 )
{
s_iGFXHeight = iHeight;
hb_gt_alleg_InitializeScreen(s_iScrHeight, s_iScrWidth, s_fInit);
hb_gt_alleg_InitializeScreen( pGT, s_iScrHeight, s_iScrWidth, s_fInit );
}
break;
@@ -853,7 +859,7 @@ static BOOL hb_gt_alleg_Info( int iType, PHB_GT_INFO pInfo )
iValue == 24 || iValue == 32 )
{
al_set_color_depth( iValue );
hb_gt_alleg_InitializeScreen(s_iScrHeight, s_iScrWidth, s_fInit);
hb_gt_alleg_InitializeScreen( pGT, s_iScrHeight, s_iScrWidth, s_fInit );
}
break;
@@ -864,7 +870,7 @@ static BOOL hb_gt_alleg_Info( int iType, PHB_GT_INFO pInfo )
{
s_byFontSize = ( BYTE ) iValue;
s_byFontWidth = s_byFontSize / 2;
hb_gt_alleg_InitializeScreen(s_iScrHeight, s_iScrWidth, s_fInit);
hb_gt_alleg_InitializeScreen( pGT, s_iScrHeight, s_iScrWidth, s_fInit );
}
break;
@@ -914,7 +920,7 @@ static BOOL hb_gt_alleg_Info( int iType, PHB_GT_INFO pInfo )
break;
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
return TRUE;
@@ -922,14 +928,14 @@ static BOOL hb_gt_alleg_Info( int iType, PHB_GT_INFO pInfo )
/* ********** Graphics API ********** */
static int hb_gt_alleg_gfx_Primitive( int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor )
static int hb_gt_alleg_gfx_Primitive( PHB_GT pGT, int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor )
{
int iRet = 1;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_gfx_Primitive(%d, %d, %d, %d, %d, %d)", iType, iTop, iLeft, iBottom, iRight, iColor));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_gfx_Primitive(%p,%d,%d,%d,%d,%d,%d)", pGT, iType, iTop, iLeft, iBottom, iRight, iColor));
GT_SCREENINIT();
hb_gt_Refresh();
HB_GTSELF_REFRESH( pGT );
switch( iType )
{
@@ -1046,27 +1052,27 @@ static int hb_gt_alleg_gfx_Primitive( int iType, int iTop, int iLeft, int iBotto
break;
default:
return HB_GTSUPER_GFXPRIMITIVE( iType, iTop, iLeft, iBottom, iRight, iColor );
return HB_GTSUPER_GFXPRIMITIVE( pGT, iType, iTop, iLeft, iBottom, iRight, iColor );
}
if( hb_gt_DispCount() == 0 )
if( HB_GTSELF_DISPCOUNT( pGT ) == 0 )
{
hb_gt_alleg_ScreenUpdate();
hb_gt_alleg_ScreenUpdate( pGT );
}
return iRet;
}
static void hb_gt_alleg_gfx_Text( int iTop, int iLeft, char * cBuf, int iColor, int iSize, int iWidth )
static void hb_gt_alleg_gfx_Text( PHB_GT pGT, int iTop, int iLeft, char * cBuf, int iColor, int iSize, int iWidth )
{
int iBottom, iRight;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_gfx_Text(%d, %d, %s, %d, %d, %d)", iTop, iLeft, cBuf, iColor, iSize, iWidth));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_alleg_gfx_Text(%p,%d,%d,%s,%d,%d,%d)", pGT, iTop, iLeft, cBuf, iColor, iSize, iWidth));
HB_SYMBOL_UNUSED( iWidth );
GT_SCREENINIT();
hb_gt_Refresh();
HB_GTSELF_REFRESH( pGT );
if( iSize )
{
@@ -1086,20 +1092,20 @@ static void hb_gt_alleg_gfx_Text( int iTop, int iLeft, char * cBuf, int iColor,
ssfSetFontSize( &s_ssfDefaultFont, s_byFontSize );
}
if( hb_gt_DispCount() == 0 )
if( HB_GTSELF_DISPCOUNT( pGT ) == 0 )
{
hb_gt_alleg_ScreenUpdate();
hb_gt_alleg_ScreenUpdate( pGT );
}
}
/* ******** Graphics API end ******** */
static void hb_gt_alleg_Redraw( int iRow, int iCol, int iSize )
static void hb_gt_alleg_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize )
{
BYTE bColor, bAttr;
USHORT usChar;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_alleg_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_alleg_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
if( s_fInit )
{
@@ -1114,7 +1120,7 @@ static void hb_gt_alleg_Redraw( int iRow, int iCol, int iSize )
while( iSize-- )
{
if( !hb_gt_GetScrChar( iRow, iCol++, &bColor, &bAttr, &usChar ) )
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] );
@@ -1123,11 +1129,11 @@ static void hb_gt_alleg_Redraw( int iRow, int iCol, int iSize )
}
else if( !s_fMakeInit )
{
BYTE bDefColor = hb_gt_GetColor();
BYTE bDefColor = HB_GTSELF_GETCOLOR( pGT );
while( iSize-- )
{
if( !hb_gt_GetScrChar( iRow, iCol++, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol++, &bColor, &bAttr, &usChar ) )
break;
if( bColor != bDefColor || usChar != ' ' )
@@ -1139,25 +1145,25 @@ static void hb_gt_alleg_Redraw( int iRow, int iCol, int iSize )
}
}
static void hb_gt_alleg_Refresh( void )
static void hb_gt_alleg_Refresh( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_alleg_Refresh()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_alleg_Refresh(%p)", pGT ) );
if( !s_fGtError )
{
if( s_fInit )
{
al_acquire_bitmap(bmp);
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
al_release_bitmap(bmp);
if( hb_gt_DispCount() == 0 )
if( HB_GTSELF_DISPCOUNT( pGT ) == 0 )
{
hb_gt_alleg_ScreenUpdate();
hb_gt_alleg_ScreenUpdate( pGT );
}
}
else
{
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
if( s_fMakeInit )
{
s_fMakeInit = FALSE;

File diff suppressed because it is too large Load Diff

View File

@@ -106,9 +106,9 @@ static void hb_gt_cgi_newLine( void )
hb_gt_cgi_termOut( s_szCrLf, s_ulCrLf );
}
static void hb_gt_cgi_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_cgi_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr ) );
s_hFilenoStdin = hFilenoStdin;
s_hFilenoStdout = hFilenoStdout;
@@ -123,21 +123,21 @@ static void hb_gt_cgi_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
hb_fsSetDevMode( s_hFilenoStdout, FD_BINARY );
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
hb_gt_SetFlag( GTI_STDOUTCON, TRUE );
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSELF_SETFLAG( pGT, GTI_STDOUTCON, TRUE );
}
static void hb_gt_cgi_Exit( void )
static void hb_gt_cgi_Exit( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_cgi_Exit()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_cgi_Exit(%p)", pGT));
hb_gt_Refresh();
HB_GTSELF_REFRESH( pGT );
/* update cursor position on exit */
if( s_iLastCol > 0 )
hb_gt_cgi_newLine();
HB_GTSUPER_EXIT();
HB_GTSUPER_EXIT( pGT );
if( s_iLineBufSize > 0 )
{
@@ -146,32 +146,39 @@ static void hb_gt_cgi_Exit( void )
}
}
static int hb_gt_cgi_ReadKey( int iEventMask )
static int hb_gt_cgi_ReadKey( PHB_GT pGT, int iEventMask )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_cgi_ReadKey(%d)", iEventMask));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_cgi_ReadKey(%p,%d)", pGT, iEventMask));
HB_SYMBOL_UNUSED( pGT );
HB_SYMBOL_UNUSED( iEventMask );
return 13;
}
static BOOL hb_gt_cgi_IsColor( void )
static BOOL hb_gt_cgi_IsColor( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_cgi_IsColor()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_cgi_IsColor(%p)", pGT));
HB_SYMBOL_UNUSED( pGT );
return FALSE;
}
static void hb_gt_cgi_Bell( void )
static void hb_gt_cgi_Bell( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ( "hb_gt_cgi_Bell()" ) );
HB_TRACE(HB_TR_DEBUG, ("hb_gt_cgi_Bell(%p)", pGT));
HB_SYMBOL_UNUSED( pGT );
hb_gt_cgi_termOut( s_szBell, 1 );
}
static char * hb_gt_cgi_Version( int iType )
static char * hb_gt_cgi_Version( PHB_GT pGT, int iType )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Version(%d)", iType ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Version(%p,%d)", pGT, iType ) );
HB_SYMBOL_UNUSED( pGT );
if( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
@@ -179,21 +186,21 @@ static char * hb_gt_cgi_Version( int iType )
return "Harbour Terminal: Raw stream console";
}
static void hb_gt_cgi_Scroll( int iTop, int iLeft, int iBottom, int iRight,
static void hb_gt_cgi_Scroll( PHB_GT pGT, int iTop, int iLeft, int iBottom, int iRight,
BYTE bColor, BYTE bChar, int iRows, int iCols )
{
int iHeight, iWidth;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Scroll(%d,%d,%d,%d,%d,%d,%d,%d)", iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Scroll(%p,%d,%d,%d,%d,%d,%d,%d,%d)", pGT, iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols ) );
/* Provide some basic scroll support for full screen */
hb_gt_GetSize( &iHeight, &iWidth );
HB_GTSELF_GETSIZE( pGT, &iHeight, &iWidth );
if( iCols == 0 && iRows > 0 &&
iTop == 0 && iLeft == 0 &&
iBottom >= iHeight - 1 && iRight >= iWidth - 1 )
{
/* scroll up the internal screen buffer */
HB_GTSUPER_SCROLLUP( iRows, bColor, bChar );
HB_GTSUPER_SCROLLUP( pGT, iRows, bColor, bChar );
/* update our internal row position */
s_iRow -= iRows;
if( s_iRow < 0 )
@@ -201,14 +208,14 @@ static void hb_gt_cgi_Scroll( int iTop, int iLeft, int iBottom, int iRight,
s_iLastCol = s_iCol = 0;
}
else
HB_GTSUPER_SCROLL( iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols );
HB_GTSUPER_SCROLL( pGT, iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols );
}
static BOOL hb_gt_cgi_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
static BOOL hb_gt_cgi_SetDispCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP, BOOL fBox )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_SetDispCP(%s,%s,%d)", pszTermCDP, pszHostCDP, (int) fBox ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_SetDispCP(%p,%s,%s,%d)", pGT, pszTermCDP, pszHostCDP, (int) fBox ) );
HB_GTSUPER_SETDISPCP( pszTermCDP, pszHostCDP, fBox );
HB_GTSUPER_SETDISPCP( pGT, pszTermCDP, pszHostCDP, fBox );
#ifndef HB_CDP_SUPPORT_OFF
if( !pszHostCDP )
@@ -230,7 +237,7 @@ static BOOL hb_gt_cgi_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
#ifdef HB_GT_CGI_RAWOUTPUT
static void hb_gt_cgi_WriteCon( BYTE * pText, ULONG ulLength )
static void hb_gt_cgi_WriteCon( PHB_GT pGT, BYTE * pText, ULONG ulLength )
{
BYTE * buffer = NULL;
@@ -269,13 +276,13 @@ static void hb_gt_cgi_WriteCon( BYTE * pText, ULONG ulLength )
++s_iCol;
}
}
HB_GTSUPER_SETPOS( s_iRow, s_iCol );
HB_GTSUPER_SETPOS( pGT, s_iRow, s_iCol );
if( buffer )
hb_xfree( buffer );
}
static void hb_gt_cgi_WriteAt( int iRow, int iCol, 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;
@@ -305,20 +312,20 @@ static void hb_gt_cgi_WriteAt( int iRow, int iCol, BYTE * pText, ULONG ulLength
s_iRow = iRow;
s_iCol = iCol;
hb_gt_cgi_WriteCon( pText, ulLength );
hb_gt_cgi_WriteCon( pGT, pText, ulLength );
}
#else /* HB_GT_CGI_RAWOUTPUT */
static void hb_gt_cgi_Redraw( int iRow, int iCol, int iSize )
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;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
hb_gt_GetSize( &iHeight, &iWidth );
HB_GTSELF_GETSIZE( pGT, &iHeight, &iWidth );
iLineFeed = iLen = 0;
if( s_iRow != iRow )
@@ -340,7 +347,7 @@ static void hb_gt_cgi_Redraw( int iRow, int iCol, int iSize )
}
while( iSize > 0 && iCol + iSize > s_iLastCol &&
hb_gt_GetScrChar( iRow, iCol + iSize - 1, &bColor, &bAttr, &usChar ) )
HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol + iSize - 1, &bColor, &bAttr, &usChar ) )
{
if( usChar != ' ' )
break;
@@ -355,7 +362,7 @@ static void hb_gt_cgi_Redraw( int iRow, int iCol, int iSize )
while( iLen < iSize )
{
if( !hb_gt_GetScrChar( iRow, iCol, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol, &bColor, &bAttr, &usChar ) )
break;
s_sLineBuf[ iLen++ ] = ( BYTE ) usChar;
++iCol;
@@ -374,13 +381,13 @@ static void hb_gt_cgi_Redraw( int iRow, int iCol, int iSize )
}
}
static void hb_gt_cgi_Refresh( void )
static void hb_gt_cgi_Refresh( PHB_GT pGT )
{
int iHeight, iWidth;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Refresh()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_cgi_Refresh(%p)", pGT ) );
hb_gt_GetSize( &iHeight, &iWidth );
HB_GTSELF_GETSIZE( pGT, &iHeight, &iWidth );
if( s_iLineBufSize == 0 )
{
s_sLineBuf = ( BYTE * ) hb_xgrab( iWidth );
@@ -391,7 +398,7 @@ static void hb_gt_cgi_Refresh( void )
s_sLineBuf = ( BYTE * ) hb_xrealloc( s_sLineBuf, iWidth );
s_iLineBufSize = iWidth;
}
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
}
#endif /* HB_GT_CGI_RAWOUTPUT */

View File

@@ -2446,11 +2446,11 @@ void HB_GT_FUNC( gt_CatchSignal( int iSig ) )
/* *********************************************************************** */
static void hb_gt_crs_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_crs_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
InOutBase *ioBase;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr ) );
if( !s_ioBase )
{
@@ -2470,10 +2470,10 @@ static void hb_gt_crs_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
if( ioBase )
{
add_new_ioBase( ioBase );
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( s_ioBase->maxrow, s_ioBase->maxcol );
hb_gt_SetFlag( GTI_COMPATBUFFER, FALSE );
hb_gt_SetBlink( TRUE );
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( pGT, s_ioBase->maxrow, s_ioBase->maxcol );
HB_GTSELF_SETFLAG( pGT, GTI_COMPATBUFFER, FALSE );
HB_GTSELF_SETBLINK( pGT, TRUE );
}
}
@@ -2483,33 +2483,35 @@ static void hb_gt_crs_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
/* *********************************************************************** */
static void hb_gt_crs_Exit( void )
static void hb_gt_crs_Exit( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Exit()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Exit(%p)", pGT ) );
HB_GTSUPER_EXIT();
HB_GTSUPER_EXIT( pGT );
del_all_ioBase();
}
/* *********************************************************************** */
static BOOL hb_gt_crs_IsColor( void )
static BOOL hb_gt_crs_IsColor( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_IsColor()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_IsColor(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
return s_ioBase->is_color;
}
/* *********************************************************************** */
static BOOL hb_gt_crs_SetMode( int iRows, int iCols )
static BOOL hb_gt_crs_SetMode( PHB_GT pGT, int iRows, int iCols )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_SetMode(%d, %d)", iRows, iCols ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_SetMode(%p,%d,%d)", pGT, iRows, iCols ) );
if( gt_setsize( s_ioBase, iRows, iCols ) == 0 )
{
HB_GTSUPER_RESIZE( iRows, iCols );
HB_GTSUPER_RESIZE( pGT, iRows, iCols );
return TRUE;
}
return FALSE;
@@ -2517,23 +2519,25 @@ static BOOL hb_gt_crs_SetMode( int iRows, int iCols )
/* *********************************************************************** */
static void hb_gt_crs_SetBlink( BOOL fBlink )
static void hb_gt_crs_SetBlink( PHB_GT pGT, BOOL fBlink )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_SetBlink(%d)", ( int ) fBlink ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_SetBlink(%p, %d)", pGT, ( int ) fBlink ) );
if( fBlink )
s_ioBase->attr_mask |= A_BLINK;
else
s_ioBase->attr_mask &= ~A_BLINK;
HB_GTSUPER_SETBLINK( fBlink );
HB_GTSUPER_SETBLINK( pGT, fBlink );
}
/* *********************************************************************** */
static void hb_gt_crs_Tone( double dFrequency, double dDuration )
static void hb_gt_crs_Tone( PHB_GT pGT, double dFrequency, double dDuration )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Tone(%lf, %lf)", dFrequency, dDuration ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration ) );
HB_SYMBOL_UNUSED( pGT );
gt_tone( s_ioBase, dFrequency, dDuration );
@@ -2546,9 +2550,11 @@ static void hb_gt_crs_Tone( double dFrequency, double dDuration )
/* *********************************************************************** */
static char * hb_gt_crs_Version( int iType )
static char * hb_gt_crs_Version( PHB_GT pGT, int iType )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Version(%d)", iType ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Version(%p,%d)", pGT, iType ) );
HB_SYMBOL_UNUSED( pGT );
if( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
@@ -2558,42 +2564,44 @@ static char * hb_gt_crs_Version( int iType )
/* *********************************************************************** */
static void hb_gt_crs_OutStd( BYTE * pbyStr, ULONG ulLen )
static void hb_gt_crs_OutStd( PHB_GT pGT, BYTE * pbyStr, ULONG ulLen )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_OutStd(%s, %hu)", pbyStr, ulLen ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_OutStd(%p,%s,%lu)", pGT, pbyStr, ulLen ) );
if( s_ioBase )
{
if( s_ioBase->stdoutfd == -1 )
hb_gt_WriteCon( pbyStr, ulLen );
HB_GTSELF_WRITECON( pGT, pbyStr, ulLen );
else
gt_outstd( s_ioBase, pbyStr, ulLen );
}
else
HB_GTSUPER_OUTSTD( pbyStr, ulLen );
HB_GTSUPER_OUTSTD( pGT, pbyStr, ulLen );
}
/* *********************************************************************** */
static void hb_gt_crs_OutErr( BYTE * pbyStr, ULONG ulLen )
static void hb_gt_crs_OutErr( PHB_GT pGT, BYTE * pbyStr, ULONG ulLen )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_OutErr(%s, %hu)", pbyStr, ulLen ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_OutErr(%p,%s,%lu)", pGT, pbyStr, ulLen ) );
if( s_ioBase )
{
if( s_ioBase->stderrfd == -1 )
hb_gt_WriteCon( pbyStr, ulLen );
HB_GTSELF_WRITECON( pGT, pbyStr, ulLen );
else
gt_outerr( s_ioBase, ( char * ) pbyStr, ulLen );
}
else
HB_GTSUPER_OUTERR( pbyStr, ulLen );
HB_GTSUPER_OUTERR( pGT, pbyStr, ulLen );
}
/* *********************************************************************** */
static BOOL hb_gt_crs_Suspend( void )
static BOOL hb_gt_crs_Suspend( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Suspend()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Suspend(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
if( s_ioBase )
{
@@ -2606,9 +2614,11 @@ static BOOL hb_gt_crs_Suspend( void )
/* *********************************************************************** */
static BOOL hb_gt_crs_Resume( void )
static BOOL hb_gt_crs_Resume( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Resume()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Resume(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
if( s_ioBase )
{
@@ -2623,9 +2633,11 @@ static BOOL hb_gt_crs_Resume( void )
/* *********************************************************************** */
static BOOL hb_gt_crs_PreExt( void )
static BOOL hb_gt_crs_PreExt( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_PreExt()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_PreExt(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
if( s_ioBase )
{
@@ -2636,27 +2648,33 @@ static BOOL hb_gt_crs_PreExt( void )
/* *********************************************************************** */
static BOOL hb_gt_crs_PostExt( void )
static BOOL hb_gt_crs_PostExt( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_PostExt()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_PostExt(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
return TRUE;
}
/* *********************************************************************** */
static BOOL hb_gt_crs_mouse_IsPresent( void )
static BOOL hb_gt_crs_mouse_IsPresent( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_IsPresent()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_IsPresent(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
return s_ioBase->mouse_type != MOUSE_NONE;
}
/* *********************************************************************** */
static void hb_gt_crs_mouse_Show( void )
static void hb_gt_crs_mouse_Show( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_Show()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_Show(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
#ifdef HAVE_GPM_H
if( s_ioBase->mouse_type == MOUSE_GPM )
@@ -2667,9 +2685,11 @@ static void hb_gt_crs_mouse_Show( void )
/* *********************************************************************** */
static void hb_gt_crs_mouse_Hide( void )
static void hb_gt_crs_mouse_Hide( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_Hide()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_Hide(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
#ifdef HAVE_GPM_H
if( s_ioBase->mouse_type == MOUSE_GPM )
@@ -2681,9 +2701,11 @@ static void hb_gt_crs_mouse_Hide( void )
/* *********************************************************************** */
static void hb_gt_crs_mouse_GetPos( int * piRow, int * piCol )
static void hb_gt_crs_mouse_GetPos( PHB_GT pGT, int * piRow, int * piCol )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_Col(%p,%p)", piRow, piCol ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_Col(%p,%p,%p)", pGT, piRow, piCol ) );
HB_SYMBOL_UNUSED( pGT );
*piRow = s_ioBase->mLastEvt.row;
*piCol = s_ioBase->mLastEvt.col;
@@ -2691,9 +2713,11 @@ static void hb_gt_crs_mouse_GetPos( int * piRow, int * piCol )
/* *********************************************************************** */
static void hb_gt_crs_mouse_SetPos( int iRow, int iCol )
static void hb_gt_crs_mouse_SetPos( PHB_GT pGT, int iRow, int iCol )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_SetPos(%i, %i)", iRow, iCol ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_SetPos(%p,%i,%i)", pGT, iRow, iCol ) );
HB_SYMBOL_UNUSED( pGT );
/* it does really nothing */
s_ioBase->mLastEvt.col = iCol;
@@ -2703,11 +2727,13 @@ static void hb_gt_crs_mouse_SetPos( int iRow, int iCol )
/* *********************************************************************** */
static BOOL hb_gt_crs_mouse_ButtonState( int iButton )
static BOOL hb_gt_crs_mouse_ButtonState( PHB_GT pGT, int iButton )
{
BOOL ret = FALSE;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_ButtonState(%i)", iButton ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_ButtonState(%p,%i)", pGT, iButton ) );
HB_SYMBOL_UNUSED( pGT );
if( s_ioBase->mouse_type != 0 )
{
@@ -2730,26 +2756,30 @@ static BOOL hb_gt_crs_mouse_ButtonState( int iButton )
/* *********************************************************************** */
static int hb_gt_crs_mouse_CountButton( void )
static int hb_gt_crs_mouse_CountButton( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_CountButton()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_CountButton(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
return ( s_ioBase->mButtons );
}
static void hb_gt_crs_mouse_SetDoubleClickSpeed( int iSpeed )
static void hb_gt_crs_mouse_SetDoubleClickSpeed( PHB_GT pGT, int iSpeed )
{
HB_GTSUPER_MOUSESETDOUBLECLICKSPEED( iSpeed );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_mouse_SetDoubleClickSpeed(%p,%d)", pGT, iSpeed ) );
HB_GTSUPER_MOUSESETDOUBLECLICKSPEED( pGT, iSpeed );
s_ioBase->mLastEvt.click_delay = iSpeed;
}
/* *********************************************************************** */
static int hb_gt_crs_ReadKey( int iEventMask )
static int hb_gt_crs_ReadKey( PHB_GT pGT, int iEventMask )
{
int iKey;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_ReadKey(%d)", iEventMask ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_ReadKey(%p,%d)", pGT, iEventMask ) );
HB_SYMBOL_UNUSED( iEventMask );
@@ -2758,7 +2788,7 @@ static int hb_gt_crs_ReadKey( int iEventMask )
if( iKey == K_RESIZE )
{
gt_resize( s_ioBase );
HB_GTSUPER_RESIZE( s_ioBase->maxrow, s_ioBase->maxcol );
HB_GTSUPER_RESIZE( pGT, s_ioBase->maxrow, s_ioBase->maxcol );
iKey = 0;
}
@@ -2767,11 +2797,11 @@ static int hb_gt_crs_ReadKey( int iEventMask )
/* *********************************************************************** */
static BOOL hb_gt_crs_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
static BOOL hb_gt_crs_SetDispCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP, BOOL fBox )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_SetDispCP(%s,%s,%d)", pszTermCDP, pszHostCDP, (int) fBox ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_SetDispCP(%p,%s,%s,%d)", pGT, pszTermCDP, pszHostCDP, (int) fBox ) );
HB_GTSUPER_SETDISPCP( pszTermCDP, pszHostCDP, fBox );
HB_GTSUPER_SETDISPCP( pGT, pszTermCDP, pszHostCDP, fBox );
#ifndef HB_CDP_SUPPORT_OFF
if( !pszHostCDP || !*pszHostCDP )
@@ -2816,9 +2846,11 @@ static BOOL hb_gt_crs_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
/* *********************************************************************** */
static BOOL hb_gt_crs_SetKeyCP( char *pszTermCDP, char *pszHostCDP )
static BOOL hb_gt_crs_SetKeyCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_SetKeyCP(%s,%s)", pszTermCDP, pszHostCDP ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_SetKeyCP(%p,%s,%s)", pGT, pszTermCDP, pszHostCDP ) );
HB_SYMBOL_UNUSED( pGT );
#ifndef HB_CDP_SUPPORT_OFF
if( !pszHostCDP || !*pszHostCDP )
@@ -2859,9 +2891,9 @@ static BOOL hb_gt_crs_SetKeyCP( char *pszTermCDP, char *pszHostCDP )
/* *********************************************************************** */
static BOOL hb_gt_crs_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_crs_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Info(%d,%p)", iType, pInfo ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Info(%p,%d,%p)", pGT, iType, pInfo ) );
if( s_ioBase )
{
@@ -2879,7 +2911,7 @@ static BOOL hb_gt_crs_Info( int iType, PHB_GT_INFO pInfo )
break;
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
}
@@ -2889,9 +2921,9 @@ static BOOL hb_gt_crs_Info( int iType, PHB_GT_INFO pInfo )
/* *********************************************************************** */
static void hb_gt_crs_Redraw( int iRow, int iCol, int iSize )
static void hb_gt_crs_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
if( s_ioBase )
{
@@ -2902,7 +2934,7 @@ static void hb_gt_crs_Redraw( int iRow, int iCol, int iSize )
wmove( s_ioBase->stdscr, iRow, iCol );
while( iSize-- > 0 )
{
if( !hb_gt_GetScrChar( iRow, iCol++, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol++, &bColor, &bAttr, &usChar ) )
break;
ch = ( s_ioBase->attr_map[ bColor ] & s_ioBase->attr_mask ) |
( bAttr & HB_GT_ATTR_BOX ? s_ioBase->box_chmap[ usChar & 0xff ] :
@@ -2914,16 +2946,16 @@ static void hb_gt_crs_Redraw( int iRow, int iCol, int iSize )
/* *********************************************************************** */
static void hb_gt_crs_Refresh( void )
static void hb_gt_crs_Refresh( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Refresh()") );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_crs_Refresh(%p)", pGT ) );
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
if( s_ioBase )
{
int iRow, iCol, iShape;
hb_gt_GetScrCursor( &iRow, &iCol, &iShape );
HB_GTSELF_GETSCRCURSOR( pGT, &iRow, &iCol, &iShape );
s_ioBase->row = iRow;
s_ioBase->col = iCol;
set_cursor( s_ioBase, iShape );

View File

@@ -133,8 +133,8 @@
#define ESC_DELAY 25
/* #define DBLCLK_DELAY 250 */
#define DBLCLK_DELAY hb_mouse_GetDoubleClickSpeed();
/* #define DBLCLK_DELAY 168 */
#define DBLCLK_DELAY hb_mouseGetDoubleClickSpeed()
#define MAX_IOBASE 32
#define STDIN_BUFLEN 128

View File

@@ -70,9 +70,11 @@ static HB_GT_FUNCS SuperTable;
/* *********************************************************************** */
static char * hb_gt_gui_Version( int iType )
static char * hb_gt_gui_Version( PHB_GT pGT, int iType )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_gui_Version(%d)", iType ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_gui_Version(%p,%d)", pGT, iType ) );
HB_SYMBOL_UNUSED( pGT );
if ( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
@@ -82,22 +84,23 @@ static char * hb_gt_gui_Version( int iType )
/* *********************************************************************** */
/* dDuration is in 'Ticks' (18.2 per second) */
static void hb_gt_gui_Tone( double dFrequency, double dDuration )
static void hb_gt_gui_Tone( PHB_GT pGT, double dFrequency, double dDuration )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_gui_Tone(%lf, %lf)", dFrequency, dDuration));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_gui_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration));
#if defined( HB_OS_WIN_32 )
HB_SYMBOL_UNUSED( pGT );
hb_gt_w32_tone( dFrequency, dDuration );
#else
HB_GTSUPER_TONE( dFrequency, dDuration );
HB_GTSUPER_TONE( pGT, dFrequency, dDuration );
#endif
}
/* *********************************************************************** */
static BOOL hb_gt_gui_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_gui_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_gui_Info(%d,%p)", iType, pInfo ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_gui_Info(%p,%d,%p)", pGT, iType, pInfo ) );
switch( iType )
{
@@ -132,7 +135,7 @@ static BOOL hb_gt_gui_Info( int iType, PHB_GT_INFO pInfo )
break;
#endif
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
return TRUE;

View File

@@ -419,11 +419,11 @@ static void hb_gt_pca_setKeyTrans( char * pSrcChars, char * pDstChars )
}
}
static void hb_gt_pca_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_pca_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
int iRows = 25, iCols = 80;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_pca_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_pca_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr));
s_hFilenoStdin = hFilenoStdin;
s_hFilenoStdout = hFilenoStdout;
@@ -442,7 +442,7 @@ static void hb_gt_pca_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
hb_fsSetDevMode( s_hFilenoStdout, FD_BINARY );
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
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( __DJGPP__ ) ) && \
@@ -501,26 +501,26 @@ static void hb_gt_pca_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
s_sOutBuf = ( BYTE * ) hb_xgrab( s_iOutBufSize );
}
HB_GTSUPER_RESIZE( iRows, iCols );
hb_gt_SetFlag( GTI_STDOUTCON, s_bStdoutConsole );
hb_gt_SetFlag( GTI_STDERRCON, s_bStderrConsole );
HB_GTSUPER_RESIZE( pGT, iRows, iCols );
HB_GTSELF_SETFLAG( pGT, GTI_STDOUTCON, s_bStdoutConsole );
HB_GTSELF_SETFLAG( pGT, GTI_STDERRCON, s_bStderrConsole );
hb_gt_pca_AnsiInit();
hb_gt_pca_AnsiGetCurPos( &s_iRow, &s_iCol );
}
static void hb_gt_pca_Exit( void )
static void hb_gt_pca_Exit( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_pca_Exit()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_pca_Exit(%p)", pGT));
hb_gt_Refresh();
HB_GTSELF_REFRESH( pGT );
/* set default color */
hb_gt_pca_AnsiSetAttributes( 0x07 );
hb_gt_pca_AnsiSetCursorStyle( SC_NORMAL );
hb_gt_pca_AnsiSetAutoMargin( 1 );
hb_gt_pca_termFlush();
HB_GTSUPER_EXIT();
HB_GTSUPER_EXIT( pGT );
#if defined( OS_UNIX_COMPATIBLE ) || defined( __DJGPP__ )
if( s_fRestTTY )
@@ -539,12 +539,13 @@ static void hb_gt_pca_Exit( void )
s_bStdinConsole = s_bStdoutConsole = s_bStderrConsole = FALSE;
}
static int hb_gt_pca_ReadKey( int iEventMask )
static int hb_gt_pca_ReadKey( PHB_GT pGT, int iEventMask )
{
int ch = 0;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_pca_ReadKey(%d)", iEventMask));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_pca_ReadKey(%p,%d)", pGT, iEventMask));
HB_SYMBOL_UNUSED( pGT );
HB_SYMBOL_UNUSED( iEventMask );
#if defined( HARBOUR_GCC_OS2 )
@@ -706,12 +707,14 @@ static int hb_gt_pca_ReadKey( int iEventMask )
return ch;
}
static void hb_gt_pca_Tone( double dFrequency, double dDuration )
static void hb_gt_pca_Tone( PHB_GT pGT, double dFrequency, double dDuration )
{
static double dLastSeconds = 0;
double dCurrentSeconds;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_pca_Tone(%lf, %lf)", dFrequency, dDuration));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_pca_Tone(%p, %lf, %lf)", pGT, dFrequency, dDuration));
HB_SYMBOL_UNUSED( pGT );
/* Output an ASCII BEL character to cause a sound */
/* but throttle to max once per second, in case of sound */
@@ -732,17 +735,21 @@ static void hb_gt_pca_Tone( double dFrequency, double dDuration )
hb_idleSleep( dDuration / 18.2 );
}
static void hb_gt_pca_Bell( void )
static void hb_gt_pca_Bell( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ( "hb_gt_pca_Bell()" ) );
HB_TRACE(HB_TR_DEBUG, ( "hb_gt_pca_Bell(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
hb_gt_pca_termOut( s_szBell, 1 );
hb_gt_pca_termFlush();
}
static char * hb_gt_pca_Version( int iType )
static char * hb_gt_pca_Version( PHB_GT pGT, int iType )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Version(%d)", iType ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Version(%p,%d)", pGT, iType ) );
HB_SYMBOL_UNUSED( pGT );
if( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
@@ -750,9 +757,11 @@ static char * hb_gt_pca_Version( int iType )
return "Harbour Terminal: PC ANSI";
}
static BOOL hb_gt_pca_Suspend( void )
static BOOL hb_gt_pca_Suspend( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Suspend()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Suspend(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
#if defined( OS_UNIX_COMPATIBLE ) || defined( __DJGPP__ )
if( s_fRestTTY )
{
@@ -764,10 +773,11 @@ static BOOL hb_gt_pca_Suspend( void )
return TRUE;
}
static BOOL hb_gt_pca_Resume( void )
static BOOL hb_gt_pca_Resume( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Resume()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Resume(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
#if defined( OS_UNIX_COMPATIBLE ) || defined( __DJGPP__ )
if( s_fRestTTY )
{
@@ -779,11 +789,11 @@ static BOOL hb_gt_pca_Resume( void )
return TRUE;
}
static BOOL hb_gt_pca_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
static BOOL hb_gt_pca_SetDispCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP, BOOL fBox )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_SetDispCP(%s,%s,%d)", pszTermCDP, pszHostCDP, (int) fBox ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_SetDispCP(%p,%s,%s,%d)", pGT, pszTermCDP, pszHostCDP, (int) fBox ) );
HB_GTSUPER_SETDISPCP( pszTermCDP, pszHostCDP, fBox );
HB_GTSUPER_SETDISPCP( pGT, pszTermCDP, pszHostCDP, fBox );
#ifndef HB_CDP_SUPPORT_OFF
if( !pszHostCDP )
@@ -803,10 +813,11 @@ static BOOL hb_gt_pca_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
return FALSE;
}
static BOOL hb_gt_pca_SetKeyCP( char *pszTermCDP, char *pszHostCDP )
static BOOL hb_gt_pca_SetKeyCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_SetKeyCP(%s,%s)", pszTermCDP, pszHostCDP ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_SetKeyCP(%p,%s,%s)", pGT, pszTermCDP, pszHostCDP ) );
HB_SYMBOL_UNUSED( pGT );
#ifndef HB_CDP_SUPPORT_OFF
if( !pszHostCDP )
pszHostCDP = hb_cdp_page->id;
@@ -846,17 +857,17 @@ static BOOL hb_gt_pca_SetKeyCP( char *pszTermCDP, char *pszHostCDP )
return FALSE;
}
static void hb_gt_pca_Redraw( int iRow, int iCol, int iSize )
static void hb_gt_pca_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize )
{
BYTE bColor, bAttr;
USHORT usChar;
int iLen = 0, iColor = 0;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
while( iSize-- )
{
if( !hb_gt_GetScrChar( iRow, iCol + iLen, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol + iLen, &bColor, &bAttr, &usChar ) )
break;
if( iLen == 0 )
@@ -886,13 +897,13 @@ static void hb_gt_pca_Redraw( int iRow, int iCol, int iSize )
}
}
static void hb_gt_pca_Refresh( void )
static void hb_gt_pca_Refresh( PHB_GT pGT )
{
int iWidth, iHeight, iRow, iCol, iStyle;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Refresh()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Refresh(%p)", pGT ) );
hb_gt_GetSize( &iHeight, &iWidth );
HB_GTSELF_GETSIZE( pGT, &iHeight, &iWidth );
if( s_iLineBufSize == 0 )
{
@@ -905,9 +916,9 @@ static void hb_gt_pca_Refresh( void )
s_iLineBufSize = iWidth;
}
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
hb_gt_GetScrCursor( &iRow, &iCol, &iStyle );
HB_GTSELF_GETSCRCURSOR( pGT, &iRow, &iCol, &iStyle );
if( iStyle != SC_NONE )
{
if( iRow >= 0 && iCol >= 0 && iRow < iHeight && iCol < iWidth )
@@ -919,9 +930,9 @@ static void hb_gt_pca_Refresh( void )
hb_gt_pca_termFlush();
}
static BOOL hb_gt_pca_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_pca_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Info(%d,%p)", iType, pInfo ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_pca_Info(%p,%d,%p)", pGT, iType, pInfo ) );
switch ( iType )
{
@@ -931,7 +942,7 @@ static BOOL hb_gt_pca_Info( int iType, PHB_GT_INFO pInfo )
break;
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
return TRUE;

View File

@@ -566,11 +566,11 @@ static int hb_sln_isUTF8( int iStdOut, int iStdIn )
/* *********************************************************************** */
/* I think this function should not be void. It should be BOOL */
static void hb_gt_sln_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_sln_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
BOOL gt_Inited = FALSE;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr));
/* stdin && stdout && stderr */
s_hStdIn = hFilenoStdin;
@@ -694,21 +694,21 @@ static void hb_gt_sln_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
s_fActive = TRUE;
hb_gt_sln_mouse_Init();
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( SLtt_Screen_Rows, SLtt_Screen_Cols );
hb_gt_SetFlag( GTI_COMPATBUFFER, FALSE );
hb_gt_SetFlag( GTI_STDOUTCON, s_fStdOutTTY );
hb_gt_SetFlag( GTI_STDERRCON, s_fStdErrTTY );
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( pGT, SLtt_Screen_Rows, SLtt_Screen_Cols );
HB_GTSELF_SETFLAG( pGT, GTI_COMPATBUFFER, FALSE );
HB_GTSELF_SETFLAG( pGT, GTI_STDOUTCON, s_fStdOutTTY );
HB_GTSELF_SETFLAG( pGT, GTI_STDERRCON, s_fStdErrTTY );
hb_gt_SetBlink( TRUE );
hb_gt_SetPos( SLsmg_get_row(), SLsmg_get_column() );
HB_GTSELF_SETBLINK( pGT, TRUE );
HB_GTSELF_SETPOS( pGT, SLsmg_get_row(), SLsmg_get_column() );
}
/* *********************************************************************** */
static void hb_gt_sln_Exit( void )
static void hb_gt_sln_Exit( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_Exit()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_Exit(%p)", pGT));
/* restore a standard bell frequency and duration */
if( hb_sln_UnderLinuxConsole )
@@ -718,7 +718,7 @@ static void hb_gt_sln_Exit( void )
SLtt_flush_output();
}
hb_gt_Refresh();
HB_GTSELF_REFRESH( pGT );
hb_gt_sln_mouse_Exit();
/* NOTE: This is incompatible with Clipper - on exit leave a cursor visible */
hb_sln_SetCursorStyle( SC_NORMAL );
@@ -729,15 +729,16 @@ static void hb_gt_sln_Exit( void )
s_fStdInTTY = s_fStdOutTTY = s_fStdErrTTY = s_fActive = FALSE;
HB_GTSUPER_EXIT();
HB_GTSUPER_EXIT( pGT );
}
/* *********************************************************************** */
static BOOL hb_gt_sln_SetMode( int iRows, int iCols )
static BOOL hb_gt_sln_SetMode( PHB_GT pGT, int iRows, int iCols )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_SetMode(%d, %d)", iRows, iCols));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_SetMode(%p,%d,%d)", pGT, iRows, iCols));
HB_SYMBOL_UNUSED( pGT );
HB_SYMBOL_UNUSED( iRows );
HB_SYMBOL_UNUSED( iCols );
@@ -747,18 +748,20 @@ static BOOL hb_gt_sln_SetMode( int iRows, int iCols )
/* *********************************************************************** */
static BOOL hb_gt_sln_IsColor( void )
static BOOL hb_gt_sln_IsColor( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_IsColor()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_IsColor(%p)", pGT));
HB_SYMBOL_UNUSED( pGT );
return SLtt_Use_Ansi_Colors;
}
/* *********************************************************************** */
static void hb_gt_sln_SetBlink( BOOL fBlink )
static void hb_gt_sln_SetBlink( PHB_GT pGT, BOOL fBlink )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_SetBlink(%d)", (int) fBlink));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_SetBlink(%p,%d)", pGT, (int) fBlink));
/*
* We cannot switch remote terminal between blinking and highlight mode
@@ -774,17 +777,19 @@ static void hb_gt_sln_SetBlink( BOOL fBlink )
*/
SLtt_Blink_Mode = fBlink ? 1 : 0;
HB_GTSUPER_SETBLINK( fBlink );
HB_GTSUPER_SETBLINK( pGT, fBlink );
}
/* *********************************************************************** */
static void hb_gt_sln_Tone( double dFrequency, double dDuration )
static void hb_gt_sln_Tone( PHB_GT pGT, double dFrequency, double dDuration )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_Tone(%lf, %lf)", dFrequency, dDuration));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration));
/* TODO: Implement this for other consoles than linux ? */
HB_SYMBOL_UNUSED( pGT );
if( hb_sln_UnderLinuxConsole )
{
char escstr[ 64 ];
@@ -812,9 +817,11 @@ static void hb_gt_sln_Tone( double dFrequency, double dDuration )
/* *********************************************************************** */
static char * hb_gt_sln_Version( int iType )
static char * hb_gt_sln_Version( PHB_GT pGT, int iType )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_sln_Version()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_sln_Version(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
if ( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
@@ -829,8 +836,10 @@ static char * hb_gt_sln_Version( int iType )
/* *********************************************************************** */
static BOOL hb_gt_sln_Suspend( void )
static BOOL hb_gt_sln_Suspend( PHB_GT pGT )
{
HB_SYMBOL_UNUSED( pGT );
if( ! s_bSuspended )
{
if( SLsmg_suspend_smg() != -1 )
@@ -845,8 +854,10 @@ static BOOL hb_gt_sln_Suspend( void )
/* *********************************************************************** */
static BOOL hb_gt_sln_Resume( void )
static BOOL hb_gt_sln_Resume( PHB_GT pGT )
{
HB_SYMBOL_UNUSED( pGT );
if( s_bSuspended && SLsmg_resume_smg() != -1 &&
hb_sln_Init_Terminal( 1 ) != -1 )
{
@@ -862,27 +873,31 @@ static BOOL hb_gt_sln_Resume( void )
/* *********************************************************************** */
static BOOL hb_gt_sln_PreExt( void )
static BOOL hb_gt_sln_PreExt( PHB_GT pGT )
{
SLsmg_refresh();
HB_SYMBOL_UNUSED( pGT );
SLsmg_refresh();
#ifdef HAVE_GPM_H
hb_gt_sln_mouse_FixTrash();
hb_gt_sln_mouse_FixTrash();
#endif
return TRUE;
return TRUE;
}
/* *********************************************************************** */
static BOOL hb_gt_sln_PostExt( void )
static BOOL hb_gt_sln_PostExt( PHB_GT pGT )
{
return TRUE;
HB_SYMBOL_UNUSED( pGT );
return TRUE;
}
/* *********************************************************************** */
static BOOL hb_gt_sln_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_sln_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_sln_Info(%d,%p)", iType, pInfo ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_sln_Info(%p,%d,%p)", pGT, iType, pInfo ) );
switch ( iType )
{
@@ -898,7 +913,7 @@ static BOOL hb_gt_sln_Info( int iType, PHB_GT_INFO pInfo )
break;
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
return TRUE;
@@ -907,9 +922,9 @@ static BOOL hb_gt_sln_Info( int iType, PHB_GT_INFO pInfo )
/* *********************************************************************** */
static BOOL hb_gt_sln_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox )
static BOOL hb_gt_sln_SetDispCP( PHB_GT pGT, char * pszTermCDP, char * pszHostCDP, BOOL fBox )
{
HB_GTSUPER_SETDISPCP( pszTermCDP, pszHostCDP, fBox );
HB_GTSUPER_SETDISPCP( pGT, pszTermCDP, pszHostCDP, fBox );
#ifndef HB_CDP_SUPPORT_OFF
{
@@ -932,7 +947,7 @@ static BOOL hb_gt_sln_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox
/* *********************************************************************** */
static BOOL hb_gt_sln_SetKeyCP( char * pszTermCDP, char * pszHostCDP )
static BOOL hb_gt_sln_SetKeyCP( PHB_GT pGT, char * pszTermCDP, char * pszHostCDP )
{
#ifndef HB_CDP_SUPPORT_OFF
PHB_CODEPAGE cdpTerm = NULL, cdpHost = NULL;
@@ -951,14 +966,16 @@ static BOOL hb_gt_sln_SetKeyCP( char * pszTermCDP, char * pszHostCDP )
HB_SYMBOL_UNUSED( pszTermCDP );
HB_SYMBOL_UNUSED( pszHostCDP );
#endif
HB_SYMBOL_UNUSED( pGT );
return TRUE;
}
/* *********************************************************************** */
static void hb_gt_sln_Redraw( int iRow, int iCol, int iSize )
static void hb_gt_sln_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_sln_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_sln_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
if( s_fActive )
{
@@ -968,7 +985,7 @@ static void hb_gt_sln_Redraw( int iRow, int iCol, int iSize )
while( iSize-- > 0 )
{
if( !hb_gt_GetScrChar( iRow, iCol, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol, &bColor, &bAttr, &usChar ) )
break;
SLsmg_gotorc( iRow, iCol );
HB_SLN_BUILD_CHAR( SLchar, usChar & 0xff, bColor, bAttr );
@@ -980,16 +997,16 @@ static void hb_gt_sln_Redraw( int iRow, int iCol, int iSize )
/* *********************************************************************** */
static void hb_gt_sln_Refresh( void )
static void hb_gt_sln_Refresh( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_sln_Refresh()") );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_sln_Refresh(%p)", pGT ) );
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
if( s_fActive )
{
int iRow, iCol, iStyle;
hb_gt_GetScrCursor( &iRow, &iCol, &iStyle );
HB_GTSELF_GETSCRCURSOR( pGT, &iRow, &iCol, &iStyle );
if( iStyle != SC_NONE && ( iRow < 0 || iCol < 0 ||
iRow >= SLtt_Screen_Rows || iCol >= SLtt_Screen_Cols ) )
iStyle = SC_NONE;

View File

@@ -233,17 +233,17 @@ extern volatile BOOL hb_sln_bScreen_Size_Changed;
extern int hb_sln_Init_Terminal( int phase );
extern int hb_gt_sln_ReadKey( int iEventMask );
extern int hb_gt_sln_ReadKey( PHB_GT pGT, int iEventMask );
extern void hb_gt_sln_mouse_Init( void );
extern void hb_gt_sln_mouse_Exit( void );
extern BOOL hb_gt_sln_mouse_IsPresent( void );
extern void hb_gt_sln_mouse_Show( void );
extern void hb_gt_sln_mouse_Hide( void );
extern void hb_gt_sln_mouse_GetPos( int * piRow, int * piCol );
extern void hb_gt_sln_mouse_SetPos( int iRow, int iCol );
extern int hb_gt_sln_mouse_CountButton( void );
extern BOOL hb_gt_sln_mouse_ButtonState( int iButton );
extern BOOL hb_gt_sln_mouse_IsPresent( PHB_GT pGT );
extern void hb_gt_sln_mouse_Show( PHB_GT pGT );
extern void hb_gt_sln_mouse_Hide( PHB_GT pGT );
extern void hb_gt_sln_mouse_GetPos( PHB_GT pGT, int * piRow, int * piCol );
extern void hb_gt_sln_mouse_SetPos( PHB_GT pGT, int iRow, int iCol );
extern int hb_gt_sln_mouse_CountButton( PHB_GT pGT );
extern BOOL hb_gt_sln_mouse_ButtonState( PHB_GT pGT, int iButton );
extern void hb_gt_sln_mouse_FixTrash( void );
extern int hb_gt_sln_mouse_Inkey( int iEventMask, BOOL fCheckNew );

View File

@@ -307,14 +307,14 @@ int hb_sln_Init_Terminal( int phase )
/* *********************************************************************** */
int hb_gt_sln_ReadKey( int iEventMask )
int hb_gt_sln_ReadKey( PHB_GT pGT, int iEventMask )
{
static int InDeadState = FALSE;
unsigned int ch, tmp, kbdflags;
BOOL fInput;
int iKey;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_ReadKey(%d)", (int) iEventMask));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_sln_ReadKey(%p,%d)", pGT, (int) iEventMask));
/* user AbortKey break */
if( SLKeyBoard_Quit == 1 )
@@ -331,7 +331,7 @@ int hb_gt_sln_ReadKey( int iEventMask )
/* TODO: we need here some kind of screen redrawing */
/*SLsmg_refresh();*/
hb_gt_Resize( SLtt_Screen_Rows, SLtt_Screen_Cols );
HB_GTSELF_RESIZE( pGT, SLtt_Screen_Rows, SLtt_Screen_Cols );
}
fInput = SLang_input_pending( 0 ) != 0;

View File

@@ -138,19 +138,19 @@ static void hb_sln_CheckDoubleClick()
{
if ( TIMEVAL_LESS( evtTime, mLeftDblckTime ) )
s_usMouseState |= M_BUTTON_LDBLCK;
TIMEVAL_ADD( mLeftDblckTime, evtTime, hb_mouse_GetDoubleClickSpeed() );
TIMEVAL_ADD( mLeftDblckTime, evtTime, hb_mouseGetDoubleClickSpeed() );
}
if( usNewButtons & M_BUTTON_MIDDLE )
{
if ( TIMEVAL_LESS( evtTime, mMiddleDblckTime ) )
s_usMouseState |= M_BUTTON_MDBLCK;
TIMEVAL_ADD( mMiddleDblckTime, evtTime, hb_mouse_GetDoubleClickSpeed() );
TIMEVAL_ADD( mMiddleDblckTime, evtTime, hb_mouseGetDoubleClickSpeed() );
}
if( usNewButtons & M_BUTTON_RIGHT )
{
if ( TIMEVAL_LESS( evtTime, mRightDblckTime ) )
s_usMouseState |= M_BUTTON_RDBLCK;
TIMEVAL_ADD( mRightDblckTime, evtTime, hb_mouse_GetDoubleClickSpeed() );
TIMEVAL_ADD( mRightDblckTime, evtTime, hb_mouseGetDoubleClickSpeed() );
}
}
}
@@ -429,15 +429,19 @@ void hb_gt_sln_mouse_Exit( void )
/* *********************************************************************** */
BOOL hb_gt_sln_mouse_IsPresent( void )
BOOL hb_gt_sln_mouse_IsPresent( PHB_GT pGT )
{
HB_SYMBOL_UNUSED( pGT );
return s_bMousePresent;
}
/* *********************************************************************** */
void hb_gt_sln_mouse_Show( void )
void hb_gt_sln_mouse_Show( PHB_GT pGT )
{
HB_SYMBOL_UNUSED( pGT );
#ifdef HAVE_GPM_H
gpm_visiblepointer = 1;
if( hb_sln_UnderLinuxConsole && s_bMousePresent )
@@ -448,8 +452,10 @@ void hb_gt_sln_mouse_Show( void )
/* *********************************************************************** */
void hb_gt_sln_mouse_Hide( void )
void hb_gt_sln_mouse_Hide( PHB_GT pGT )
{
HB_SYMBOL_UNUSED( pGT );
#ifdef HAVE_GPM_H
gpm_visiblepointer = 0;
#endif
@@ -458,16 +464,20 @@ void hb_gt_sln_mouse_Hide( void )
/* *********************************************************************** */
void hb_gt_sln_mouse_GetPos( int * piRow, int * piCol )
void hb_gt_sln_mouse_GetPos( PHB_GT pGT, int * piRow, int * piCol )
{
HB_SYMBOL_UNUSED( pGT );
*piRow = s_iMouseRow;
*piCol = s_iMouseCol;
}
/* *********************************************************************** */
void hb_gt_sln_mouse_SetPos( int iRow, int iCol )
void hb_gt_sln_mouse_SetPos( PHB_GT pGT, int iRow, int iCol )
{
HB_SYMBOL_UNUSED( pGT );
/* it does really nothing */
s_iMouseRow = iRow;
s_iMouseCol = iCol;
@@ -480,8 +490,10 @@ void hb_gt_sln_mouse_SetPos( int iRow, int iCol )
/* *********************************************************************** */
BOOL hb_gt_sln_mouse_ButtonState( int iButton )
BOOL hb_gt_sln_mouse_ButtonState( PHB_GT pGT, int iButton )
{
HB_SYMBOL_UNUSED( pGT );
switch( iButton )
{
case 0:
@@ -497,9 +509,11 @@ BOOL hb_gt_sln_mouse_ButtonState( int iButton )
/* *********************************************************************** */
int hb_gt_sln_mouse_CountButton( void )
int hb_gt_sln_mouse_CountButton( PHB_GT pGT )
{
return( s_iMouseButtons );
HB_SYMBOL_UNUSED( pGT );
return s_iMouseButtons;
}
/* *********************************************************************** */

View File

@@ -168,9 +168,9 @@ static void hb_gt_std_newLine( void )
}
static void hb_gt_std_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_std_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr));
s_hFilenoStdin = hFilenoStdin;
s_hFilenoStdout = hFilenoStdout;
@@ -189,7 +189,7 @@ static void hb_gt_std_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
s_ulCrLf = strlen( ( char * ) s_szCrLf );
hb_fsSetDevMode( s_hFilenoStdout, FD_BINARY );
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
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 )
@@ -233,7 +233,7 @@ static void hb_gt_std_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
if( ioctl( hFilenoStdout, TIOCGWINSZ, ( char * ) &win ) != -1 )
{
HB_GTSUPER_RESIZE( win.ws_row, win.ws_col );
HB_GTSUPER_RESIZE( pGT, win.ws_row, win.ws_col );
}
}
#elif defined( HB_WIN32_IO ) && ! defined( HB_WINCE )
@@ -242,17 +242,17 @@ static void hb_gt_std_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
SetConsoleMode( ( HANDLE ) hb_fsGetOsHandle( s_hFilenoStdin ), 0x0000 );
}
#endif
hb_gt_SetFlag( GTI_STDOUTCON, s_bStdoutConsole );
hb_gt_SetFlag( GTI_STDERRCON, s_bStderrConsole );
HB_GTSELF_SETFLAG( pGT, GTI_STDOUTCON, s_bStdoutConsole );
HB_GTSELF_SETFLAG( pGT, GTI_STDERRCON, s_bStderrConsole );
}
static void hb_gt_std_Exit( void )
static void hb_gt_std_Exit( PHB_GT pGT )
{
int iRow, iCol;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_Exit()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_Exit(%p)", pGT));
hb_gt_Refresh();
HB_GTSELF_REFRESH( pGT );
/* update cursor position on exit */
if( s_bStdoutConsole && s_iLastCol > 0 )
@@ -261,11 +261,11 @@ static void hb_gt_std_Exit( void )
++s_iRow;
}
hb_gt_GetPos( &iRow, &iCol );
HB_GTSELF_GETPOS( pGT, &iRow, &iCol );
while( ++s_iRow <= iRow )
hb_gt_std_newLine();
HB_GTSUPER_EXIT();
HB_GTSUPER_EXIT( pGT );
#if defined( OS_UNIX_COMPATIBLE )
if( s_fRestTTY )
@@ -279,12 +279,13 @@ static void hb_gt_std_Exit( void )
s_bStdinConsole = s_bStdoutConsole = s_bStderrConsole = FALSE;
}
static int hb_gt_std_ReadKey( int iEventMask )
static int hb_gt_std_ReadKey( PHB_GT pGT, int iEventMask )
{
int ch = 0;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_ReadKey(%d)", iEventMask));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_ReadKey(%p,%d)", pGT, iEventMask));
HB_SYMBOL_UNUSED( pGT );
HB_SYMBOL_UNUSED( iEventMask );
#if defined( _MSC_VER ) && !defined( HB_WINCE )
@@ -332,19 +333,23 @@ static int hb_gt_std_ReadKey( int iEventMask )
return ch;
}
static BOOL hb_gt_std_IsColor( void )
static BOOL hb_gt_std_IsColor( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_IsColor()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_IsColor(%p)", pGT));
HB_SYMBOL_UNUSED( pGT );
return FALSE;
}
static void hb_gt_std_Tone( double dFrequency, double dDuration )
static void hb_gt_std_Tone( PHB_GT pGT, double dFrequency, double dDuration )
{
static double dLastSeconds = 0;
double dCurrentSeconds;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_Tone(%lf, %lf)", dFrequency, dDuration));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_std_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration));
HB_SYMBOL_UNUSED( pGT );
/* Output an ASCII BEL character to cause a sound */
/* but throttle to max once per second, in case of sound */
@@ -364,16 +369,20 @@ static void hb_gt_std_Tone( double dFrequency, double dDuration )
hb_idleSleep( dDuration / 18.2 );
}
static void hb_gt_std_Bell( void )
static void hb_gt_std_Bell( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ( "hb_gt_std_Bell()" ) );
HB_TRACE(HB_TR_DEBUG, ( "hb_gt_std_Bell(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
hb_gt_std_termOut( s_szBell, 1 );
}
static char * hb_gt_std_Version( int iType )
static char * hb_gt_std_Version( PHB_GT pGT, int iType )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Version(%d)", iType ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Version(%p,%d)", pGT, iType ) );
HB_SYMBOL_UNUSED( pGT );
if( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
@@ -381,9 +390,12 @@ static char * hb_gt_std_Version( int iType )
return "Harbour Terminal: Standard stream console";
}
static BOOL hb_gt_std_Suspend( void )
static BOOL hb_gt_std_Suspend( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Suspend()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Suspend(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
#if defined( OS_UNIX_COMPATIBLE )
if( s_fRestTTY )
{
@@ -393,9 +405,11 @@ static BOOL hb_gt_std_Suspend( void )
return TRUE;
}
static BOOL hb_gt_std_Resume( void )
static BOOL hb_gt_std_Resume( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Resume()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Resume(%p)", pGT ) );
HB_SYMBOL_UNUSED( pGT );
#if defined( OS_UNIX_COMPATIBLE )
if( s_fRestTTY )
@@ -406,35 +420,35 @@ static BOOL hb_gt_std_Resume( void )
return TRUE;
}
static void hb_gt_std_Scroll( int iTop, int iLeft, int iBottom, int iRight,
static void hb_gt_std_Scroll( PHB_GT pGT, int iTop, int iLeft, int iBottom, int iRight,
BYTE bColor, BYTE bChar, int iRows, int iCols )
{
int iHeight, iWidth;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Scroll(%d,%d,%d,%d,%d,%d,%d,%d)", iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Scroll(%p,%d,%d,%d,%d,%d,%d,%d,%d)", pGT, iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols ) );
/* Provide some basic scroll support for full screen */
hb_gt_GetSize( &iHeight, &iWidth );
HB_GTSELF_GETSIZE( pGT, &iHeight, &iWidth );
if( iCols == 0 && iRows > 0 &&
iTop == 0 && iLeft == 0 &&
iBottom >= iHeight - 1 && iRight >= iWidth - 1 )
{
/* scroll up the internal screen buffer */
HB_GTSUPER_SCROLLUP( iRows, bColor, bChar );
HB_GTSUPER_SCROLLUP( pGT, iRows, bColor, bChar );
/* update our internal row position */
s_iRow -= iRows;
if( s_iRow < 0 )
s_iRow = 0;
}
else
HB_GTSUPER_SCROLL( iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols );
HB_GTSUPER_SCROLL( pGT, iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols );
}
static BOOL hb_gt_std_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
static BOOL hb_gt_std_SetDispCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP, BOOL fBox )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_SetDispCP(%s,%s,%d)", pszTermCDP, pszHostCDP, (int) fBox ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_SetDispCP(%p,%s,%s,%d)", pGT, pszTermCDP, pszHostCDP, (int) fBox ) );
HB_GTSUPER_SETDISPCP( pszTermCDP, pszHostCDP, fBox );
HB_GTSUPER_SETDISPCP( pGT, pszTermCDP, pszHostCDP, fBox );
#ifndef HB_CDP_SUPPORT_OFF
if( !pszHostCDP )
@@ -454,9 +468,11 @@ static BOOL hb_gt_std_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
return FALSE;
}
static BOOL hb_gt_std_SetKeyCP( char *pszTermCDP, char *pszHostCDP )
static BOOL hb_gt_std_SetKeyCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_SetKeyCP(%s,%s)", pszTermCDP, pszHostCDP ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_SetKeyCP(%p,%s,%s)", pGT, pszTermCDP, pszHostCDP ) );
HB_SYMBOL_UNUSED( pGT );
#ifndef HB_CDP_SUPPORT_OFF
if( !pszHostCDP )
@@ -497,7 +513,7 @@ static BOOL hb_gt_std_SetKeyCP( char *pszTermCDP, char *pszHostCDP )
return FALSE;
}
static void hb_gt_std_DispLine( int iRow )
static void hb_gt_std_DispLine( PHB_GT pGT, int iRow )
{
BYTE bColor, bAttr;
USHORT usChar;
@@ -505,7 +521,7 @@ static void hb_gt_std_DispLine( int iRow )
for( iCol = 0; iCol < s_iLineBufSize; ++iCol )
{
if( !hb_gt_GetScrChar( iRow, iCol, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol, &bColor, &bAttr, &usChar ) )
break;
if( usChar < 32 || usChar == 127 )
usChar = '.';
@@ -520,13 +536,13 @@ static void hb_gt_std_DispLine( int iRow )
s_iRow = iRow;
}
static void hb_gt_std_Redraw( int iRow, int iCol, int iSize )
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;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
iLineFeed = iBackSpace = 0;
@@ -560,7 +576,7 @@ static void hb_gt_std_Redraw( int iRow, int iCol, int iSize )
iMin = iLineFeed > 0 || s_iLastCol <= iCol ? 0 : s_iLastCol - iCol;
while( iSize > iMin &&
hb_gt_GetScrChar( iRow, iCol + iSize - 1, &bColor, &bAttr, &usChar ) )
HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol + iSize - 1, &bColor, &bAttr, &usChar ) )
{
if( usChar != ' ' )
break;
@@ -585,7 +601,7 @@ static void hb_gt_std_Redraw( int iRow, int iCol, int iSize )
s_bFullRedraw = TRUE;
}
for( i = s_iRow + 1; i < iRow; ++i )
hb_gt_std_DispLine( i );
hb_gt_std_DispLine( pGT, i );
iLineFeed = 1;
}
@@ -602,7 +618,7 @@ static void hb_gt_std_Redraw( int iRow, int iCol, int iSize )
for( iLen = 0; iLen < iSize; ++iLen )
{
if( !hb_gt_GetScrChar( iRow, iCol, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol, &bColor, &bAttr, &usChar ) )
break;
if( usChar < 32 || usChar == 127 )
usChar = '.';
@@ -625,13 +641,13 @@ static void hb_gt_std_Redraw( int iRow, int iCol, int iSize )
}
}
static void hb_gt_std_Refresh( void )
static void hb_gt_std_Refresh( PHB_GT pGT )
{
int iHeight, iWidth;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Refresh()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Refresh(%p)", pGT ) );
hb_gt_GetSize( &iHeight, &iWidth );
HB_GTSELF_GETSIZE( pGT, &iHeight, &iWidth );
if( s_iLineBufSize == 0 )
{
s_sLineBuf = ( BYTE * ) hb_xgrab( iWidth );
@@ -643,7 +659,7 @@ static void hb_gt_std_Refresh( void )
s_iLineBufSize = iWidth;
}
s_bFullRedraw = FALSE;
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
if( s_bFullRedraw )
{
int i;
@@ -651,14 +667,14 @@ static void hb_gt_std_Refresh( void )
if( s_iRow < iHeight - 1 )
{
for( i = s_iRow + 1; i < iHeight; ++i )
hb_gt_std_DispLine( i );
hb_gt_std_DispLine( pGT, i );
}
}
}
static BOOL hb_gt_std_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_std_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Info(%d,%p)", iType, pInfo ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_std_Info(%p,%d,%p)", pGT, iType, pInfo ) );
switch ( iType )
{
@@ -668,7 +684,7 @@ static BOOL hb_gt_std_Info( int iType, PHB_GT_INFO pInfo )
break;
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
return TRUE;

File diff suppressed because it is too large Load Diff

View File

@@ -546,31 +546,31 @@ static BOOL WINAPI hb_gt_win_CtrlHandler( DWORD dwCtrlType )
/* *********************************************************************** */
static void hb_gt_win_xGetScreenContents( SMALL_RECT * psrWin )
static void hb_gt_win_xGetScreenContents( PHB_GT pGT, SMALL_RECT * psrWin )
{
int iRow, iCol, i;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_GetScreenContents()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_xGetScreenContents(%p,%p)", pGT, psrWin));
for( iRow = psrWin->Top; iRow <= psrWin->Bottom; ++iRow )
{
i = iRow * _GetScreenWidth() + psrWin->Left;
for( iCol = psrWin->Left; iCol <= psrWin->Right; ++iCol )
{
hb_gt_PutScrChar( iRow, iCol, ( BYTE ) s_pCharInfoScreen[i].Attributes, 0,
s_charTransRev[ ( BYTE ) s_pCharInfoScreen[i].Char.AsciiChar ] );
HB_GTSELF_PUTSCRCHAR( pGT, iRow, iCol, ( BYTE ) s_pCharInfoScreen[i].Attributes, 0,
s_charTransRev[ ( BYTE ) s_pCharInfoScreen[i].Char.AsciiChar ] );
++i;
}
}
hb_gt_ColdArea( psrWin->Top, psrWin->Left, psrWin->Bottom, psrWin->Right );
HB_GTSELF_COLDAREA( pGT, psrWin->Top, psrWin->Left, psrWin->Bottom, psrWin->Right );
}
/* *********************************************************************** */
static void hb_gt_win_xInitScreenParam( void )
static void hb_gt_win_xInitScreenParam( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_xInitScreenParam()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_xInitScreenParam(%p)", pGT));
if( GetConsoleScreenBufferInfo( s_HOutput, &s_csbi ) )
{
@@ -579,7 +579,7 @@ static void hb_gt_win_xInitScreenParam( void )
ULONG ulSize = ( ULONG ) _GetScreenWidth() * _GetScreenHeight() *
sizeof( CHAR_INFO );
HB_GTSUPER_RESIZE( _GetScreenHeight(), _GetScreenWidth() );
HB_GTSUPER_RESIZE( pGT, _GetScreenHeight(), _GetScreenWidth() );
if( s_pCharInfoScreen == NULL || ulSize != s_ulScreenBuffSize )
{
@@ -617,15 +617,15 @@ static void hb_gt_win_xInitScreenParam( void )
coDest.X = srWin.Left;
/* read the screen rectangle into the buffer */
if ( ReadConsoleOutput( s_HOutput, /* screen handle */
s_pCharInfoScreen, /* transfer area */
s_csbi.dwSize, /* size of destination buffer */
coDest, /* upper-left cell to write data to */
&srWin ) ) /* screen buffer rectangle to read from */
if( ReadConsoleOutput( s_HOutput, /* screen handle */
s_pCharInfoScreen, /* transfer area */
s_csbi.dwSize, /* size of destination buffer */
coDest, /* upper-left cell to write data to */
&srWin ) ) /* screen buffer rectangle to read from */
{
hb_gt_win_xGetScreenContents( &srWin );
hb_gt_win_xGetScreenContents( pGT, &srWin );
}
hb_gt_SetPos( s_sCurRow, s_sCurCol );
HB_GTSELF_SETPOS( pGT, s_sCurRow, s_sCurCol );
}
else if( s_pCharInfoScreen != NULL )
{
@@ -636,9 +636,9 @@ static void hb_gt_win_xInitScreenParam( void )
/* *********************************************************************** */
static void hb_gt_win_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_win_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr));
s_osv.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
GetVersionEx( &s_osv );
@@ -665,8 +665,8 @@ static void hb_gt_win_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
s_bAltKeyHandling = TRUE;
/* initialize code page translation */
hb_gt_SetDispCP( NULL, NULL, FALSE );
hb_gt_SetKeyCP( NULL, NULL );
HB_GTSELF_SETDISPCP( pGT, NULL, NULL, FALSE );
HB_GTSELF_SETKEYCP( pGT, NULL, NULL );
/* Add Ctrl+Break handler [vszakats] */
SetConsoleCtrlHandler( hb_gt_win_CtrlHandler, TRUE );
@@ -711,7 +711,7 @@ static void hb_gt_win_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
}
}
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
s_HOutput = CreateFile( TEXT( "CONOUT$" ), /* filename */
GENERIC_READ | GENERIC_WRITE, /* Access flag */
@@ -745,7 +745,7 @@ static void hb_gt_win_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
SetConsoleWindowInfo( s_HOutput, TRUE, &s_csbi.srWindow );
SetConsoleScreenBufferSize( s_HOutput, s_csbi.dwSize );
hb_gt_win_xInitScreenParam();
hb_gt_win_xInitScreenParam( pGT );
GetConsoleMode( s_HOutput, &s_dwomode );
GetConsoleMode( s_HInput, &s_dwimode );
@@ -755,11 +755,11 @@ static void hb_gt_win_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
/* *********************************************************************** */
static void hb_gt_win_Exit( void )
static void hb_gt_win_Exit( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Exit()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Exit(%p)", pGT));
hb_gt_Refresh();
HB_GTSELF_REFRESH( pGT );
if( s_pCharInfoScreen != NULL )
{
@@ -782,16 +782,16 @@ static void hb_gt_win_Exit( void )
/* Remove Ctrl+Break handler */
SetConsoleCtrlHandler( hb_gt_win_CtrlHandler, FALSE );
HB_GTSUPER_EXIT();
HB_GTSUPER_EXIT( pGT );
}
/* *********************************************************************** */
static BOOL hb_gt_win_SetMode( int iRows, int iCols )
static BOOL hb_gt_win_SetMode( PHB_GT pGT, int iRows, int iCols )
{
BOOL fRet = FALSE;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_SetMode(%d, %d)", iRows, iCols));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_SetMode(%p,%d,%d)", pGT, iRows, iCols));
if( s_HOutput != INVALID_HANDLE_VALUE && iRows > 0 && iCols > 0 )
{
@@ -819,7 +819,7 @@ static BOOL hb_gt_win_SetMode( int iRows, int iCols )
/* console window first, then the buffer */
if( ( DWORD ) _GetScreenWidth() * _GetScreenHeight() > ( DWORD ) iCols * iRows )
{
if ( SetConsoleWindowInfo( s_HOutput, TRUE, &srWin ) )
if( SetConsoleWindowInfo( s_HOutput, TRUE, &srWin ) )
{
SetConsoleScreenBufferSize( s_HOutput, coBuf );
fRet = TRUE;
@@ -827,7 +827,7 @@ static BOOL hb_gt_win_SetMode( int iRows, int iCols )
}
else
{
if ( SetConsoleScreenBufferSize( s_HOutput, coBuf ) )
if( SetConsoleScreenBufferSize( s_HOutput, coBuf ) )
{
SetConsoleWindowInfo( s_HOutput, TRUE, &srWin );
fRet = TRUE;
@@ -835,7 +835,7 @@ static BOOL hb_gt_win_SetMode( int iRows, int iCols )
}
if( fRet )
hb_gt_win_xInitScreenParam();
hb_gt_win_xInitScreenParam( pGT );
}
return fRet;
@@ -843,11 +843,13 @@ static BOOL hb_gt_win_SetMode( int iRows, int iCols )
/* *********************************************************************** */
static char * hb_gt_win_Version( int iType )
static char * hb_gt_win_Version( PHB_GT pGT, int iType )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_win_Version(%d)", iType ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_win_Version(%p,%d)", pGT, iType ) );
if ( iType == 0 )
HB_SYMBOL_UNUSED( pGT );
if( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
return "Harbour Terminal: Win32 buffered console";
@@ -855,28 +857,23 @@ static char * hb_gt_win_Version( int iType )
/* *********************************************************************** */
static BOOL hb_gt_win_PreExt( void )
static BOOL hb_gt_win_PostExt( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_PreExt()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_PostExt(%p)", pGT));
return HB_GTSUPER_PREEXT();
}
static BOOL hb_gt_win_PostExt( void )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_PostExt()"));
HB_GTSUPER_POSTEXT();
HB_GTSUPER_POSTEXT( pGT );
if( s_pCharInfoScreen )
hb_gt_win_xInitScreenParam();
hb_gt_win_xInitScreenParam( pGT );
return TRUE;
}
/* *********************************************************************** */
static BOOL hb_gt_win_Suspend( void )
static BOOL hb_gt_win_Suspend( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Suspend()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Suspend(%p)", pGT));
HB_SYMBOL_UNUSED( pGT );
if( s_pCharInfoScreen )
{
@@ -888,9 +885,9 @@ static BOOL hb_gt_win_Suspend( void )
return TRUE;
}
static BOOL hb_gt_win_Resume( void )
static BOOL hb_gt_win_Resume( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Resume()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Resume(%p)", pGT));
if( s_pCharInfoScreen )
{
@@ -898,7 +895,7 @@ static BOOL hb_gt_win_Resume( void )
SetConsoleCtrlHandler( hb_gt_win_CtrlHandler, TRUE );
SetConsoleMode( s_HOutput, s_dwomode );
SetConsoleMode( s_HInput, b_MouseEnable ? ENABLE_MOUSE_INPUT : 0x0000 );
hb_gt_win_xInitScreenParam();
hb_gt_win_xInitScreenParam( pGT );
hb_gt_win_xSetCursorStyle();
}
return TRUE;
@@ -948,8 +945,8 @@ static int Handle_Alt_Key( int * paltisdown, int * paltnum, unsigned short wKey,
printf( " the state %ld ",s_irInBuf[ s_cNumIndex ].Event.KeyEvent.dwControlKeyState );
#endif
if ((s_irInBuf[ s_cNumIndex ].Event.KeyEvent.dwControlKeyState &
0x04000000 ))
if( s_irInBuf[ s_cNumIndex ].Event.KeyEvent.dwControlKeyState &
0x04000000 )
/* ... has been released after a numpad entry */
{
ch = *paltnum & 0xff;
@@ -988,7 +985,7 @@ static int SpecialHandling( WORD * wChar, unsigned short wKey, int ch, BOOL lRev
{
if( lReverse )
{
switch (wKey)
switch( wKey )
{
case 2: /* 1 to 9 */
case 3:
@@ -1056,7 +1053,7 @@ static int SpecialHandling( WORD * wChar, unsigned short wKey, int ch, BOOL lRev
}
else
{
switch (wKey)
switch( wKey )
{
case 2: /* 1 to 9 */
case 3:
@@ -1125,13 +1122,15 @@ static int SpecialHandling( WORD * wChar, unsigned short wKey, int ch, BOOL lRev
return ch;
}
static int hb_gt_win_ReadKey( int iEventMask )
static int hb_gt_win_ReadKey( PHB_GT pGT, int iEventMask )
{
int ch = 0,
extKey = -1;
const ClipKeyCode *clipKey = NULL;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_ReadKey(%d)", iEventMask));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_ReadKey(%p,%d)", pGT, iEventMask));
HB_SYMBOL_UNUSED( pGT );
/* First check for Ctrl+Break, which is handled by gt/gtwin.c */
if( s_bBreak )
@@ -1158,7 +1157,7 @@ static int hb_gt_win_ReadKey( int iEventMask )
/* Set up to process the first input event */
s_cNumIndex = 0;
if ( s_irInBuf[ s_cNumIndex ].EventType == KEY_EVENT )
if( s_irInBuf[ s_cNumIndex ].EventType == KEY_EVENT )
{
unsigned short wKey = s_irInBuf[ s_cNumIndex ].Event.KeyEvent.wVirtualScanCode;
@@ -1181,12 +1180,10 @@ static int hb_gt_win_ReadKey( int iEventMask )
}
else
{
if ( wKey == 0x38 &&
s_irInBuf[ s_cNumIndex ].Event.KeyEvent.bKeyDown &&
(s_irInBuf[ s_cNumIndex ].Event.KeyEvent.dwControlKeyState
& NUMLOCK_ON )
& ( (RIGHT_ALT_PRESSED | LEFT_ALT_PRESSED ) | NUMLOCK_ON )
& ~(LEFT_CTRL_PRESSED) )
if( wKey == 0x38 &&
s_irInBuf[ s_cNumIndex ].Event.KeyEvent.bKeyDown &&
( s_irInBuf[ s_cNumIndex ].Event.KeyEvent.dwControlKeyState
& NUMLOCK_ON ) )
{
s_altisdown = 1;
}
@@ -1203,7 +1200,7 @@ static int hb_gt_win_ReadKey( int iEventMask )
printf( " event %ld ",s_irInBuf[ s_cNumIndex ].EventType );
#endif
if ( s_irInBuf[ s_cNumIndex ].EventType == KEY_EVENT )
if( s_irInBuf[ s_cNumIndex ].EventType == KEY_EVENT )
{
/* Only process key down events */
@@ -1238,19 +1235,19 @@ static int hb_gt_win_ReadKey( int iEventMask )
*
*/
if ( s_bSpecialKeyHandling &&
( dwState & CAPSLOCK_ON ) &&
s_osv.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
if( s_bSpecialKeyHandling &&
( dwState & CAPSLOCK_ON ) &&
s_osv.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
{
ch = SpecialHandling( &wChar, wKey, ch, (dwState & SHIFT_PRESSED) );
}
if ( s_wRepeated == 0 )
if( s_wRepeated == 0 )
{
s_wRepeated = s_irInBuf[ s_cNumIndex ].Event.KeyEvent.wRepeatCount;
}
if ( s_wRepeated > 0 ) /* Might not be redundant */
if( s_wRepeated > 0 ) /* Might not be redundant */
{
s_wRepeated--;
}
@@ -1258,59 +1255,59 @@ static int hb_gt_win_ReadKey( int iEventMask )
printf( "\n\nhb_gt_ReadKey(): dwState is %ld, wChar is %d, wKey is %d, ch is %d", dwState, wChar, wKey, ch );
#endif
if ( wChar == 8 ) // VK_BACK
if( wChar == 8 ) /* VK_BACK */
{
extKey = EXKEY_BS;
}
else if ( wChar == 9 ) // VK_TAB
else if( wChar == 9 ) /* VK_TAB */
{
extKey = EXKEY_TAB;
}
else if ( wChar == 13 ) // VK_RETURN
else if( wChar == 13 ) /* VK_RETURN */
{
extKey = EXKEY_ENTER;
}
else if ( wChar == 27 ) // VK_ESCAPE
else if( wChar == 27 ) /* VK_ESCAPE */
{
extKey = EXKEY_ESC;
}
else if ( wChar == 33 ) // VK_PRIOR
else if( wChar == 33 ) /* VK_PRIOR */
{
extKey = EXKEY_PGUP;
}
else if ( wChar == 34 ) // VK_NEXT
else if( wChar == 34 ) /* VK_NEXT */
{
extKey = EXKEY_PGDN;
}
else if ( wChar == 35 ) // VK_END
else if( wChar == 35 ) /* VK_END */
{
extKey = EXKEY_END;
}
else if ( wChar == 36 ) // VK_HOME
else if( wChar == 36 ) /* VK_HOME */
{
extKey = EXKEY_HOME;
}
else if ( wChar == 37 ) // VK_LEFT
else if( wChar == 37 ) /* VK_LEFT */
{
extKey = EXKEY_LEFT;
}
else if ( wChar == 38 ) // VK_UP
else if( wChar == 38 ) /* VK_UP */
{
extKey = EXKEY_UP;
}
else if ( wChar == 39 ) // VK_RIGHT
else if( wChar == 39 ) /* VK_RIGHT */
{
extKey = EXKEY_RIGHT;
}
else if ( wChar == 40 ) // VK_DOWN
else if( wChar == 40 ) /* VK_DOWN */
{
extKey = EXKEY_DOWN;
}
else if ( wChar == 45 ) // VK_INSERT
else if( wChar == 45 ) /* VK_INSERT */
{
extKey = EXKEY_INS;
}
else if ( wChar == 46 && (!(ch==46)) ) // VK_DELETE
else if( wChar == 46 && (!(ch==46)) ) /* VK_DELETE */
{
/* International keyboard under Win98 - when VirtualKey and Ascii
char are both 46, then it's keypad del key, but numlock is on,
@@ -1318,52 +1315,52 @@ static int hb_gt_win_ReadKey( int iEventMask )
*/
extKey = EXKEY_DEL;
}
else if ( wChar == 191 && ch == 63 && ( dwState & ENHANCED_KEY ))
else if( wChar == 191 && ch == 63 && ( dwState & ENHANCED_KEY ))
{ /* numpad '/' always */
/* This is the Win98 test */
ch = 47;
}
else if ( wChar == 106 ) // VK_MULTIPLY
else if( wChar == 106 ) /* VK_MULTIPLY */
{
extKey = EXKEY_KPASTERISK;
}
else if ( wChar == 107 ) // VK_ADD
else if( wChar == 107 ) /* VK_ADD */
{
extKey = EXKEY_KPPLUS;
}
else if ( wChar == 109 ) // VK_SUBTRACT
else if( wChar == 109 ) /* VK_SUBTRACT */
{
extKey = EXKEY_KPMINUS;
}
else if ( wChar == 111 || // VK_DIVIDE
else if( wChar == 111 || /* VK_DIVIDE */
( wChar == 191 && ( dwState & ENHANCED_KEY )))
{
/* This should be for other than Win98 */
extKey = EXKEY_KPDIVIDE;
}
else if ( wChar >= 112 && wChar <= 123 ) // F1-F12 VK_F1-VK_F12
else if( wChar >= 112 && wChar <= 123 ) /* F1-F12 VK_F1-VK_F12 */
{
extKey = wChar - 112;
}
else if ( ch >= K_SPACE && ch <= K_CTRL_BS )
else if( ch >= K_SPACE && ch <= K_CTRL_BS )
{
clipKey = &stdKeyTab[ ch - K_SPACE ];
}
else if ( ch > 0 && ch < K_SPACE && ( dwState & ( LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED ) ) )
else if( ch > 0 && ch < K_SPACE && ( dwState & ( LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED ) ) )
{
clipKey = &stdKeyTab[ ch + '@' ];
}
else if ( ch < 0 ) // international keys
else if( ch < 0 ) /* international keys */
{
ch += 256;
}
if ( extKey > -1 )
if( extKey > -1 )
{
clipKey = &extKeyTab[ extKey ];
}
if ( clipKey != NULL )
if( clipKey != NULL )
{
if( ( dwState & SHIFT_PRESSED ) && ( dwState & ( LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED ) ) )
{
@@ -1393,7 +1390,7 @@ static int hb_gt_win_ReadKey( int iEventMask )
ch = clipKey->key;
}
if( ch == 0 ) // for keys that are only on shift or AltGr
if( ch == 0 ) /* for keys that are only on shift or AltGr */
{
ch = clipKey->key;
}
@@ -1467,13 +1464,13 @@ static int hb_gt_win_ReadKey( int iEventMask )
}
/* Set up to process the next input event (if any) */
if ( s_wRepeated == 0 )
if( s_wRepeated == 0 )
{
s_cNumIndex++;
}
}
#if 0
if (ch )
if( ch )
{
printf(" %ld:%ld",ch,extKey);
}
@@ -1486,22 +1483,24 @@ static int hb_gt_win_ReadKey( int iEventMask )
/* *********************************************************************** */
/* dDuration is in 'Ticks' (18.2 per second) */
static void hb_gt_win_Tone( double dFrequency, double dDuration )
static void hb_gt_win_Tone( PHB_GT pGT, double dFrequency, double dDuration )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Tone(%lf, %lf)", dFrequency, dDuration));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration));
HB_SYMBOL_UNUSED( pGT );
hb_gt_w32_tone( dFrequency, dDuration );
}
/* *********************************************************************** */
static BOOL hb_gt_win_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
static BOOL hb_gt_win_SetDispCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP, BOOL fBox )
{
int i;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_SetDispCP(%s,%s,%d)", pszTermCDP, pszHostCDP, (int) fBox));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_SetDispCP(%p,%s,%s,%d)", pGT, pszTermCDP, pszHostCDP, (int) fBox));
HB_GTSUPER_SETDISPCP( pszTermCDP, pszHostCDP, fBox );
HB_GTSUPER_SETDISPCP( pGT, pszTermCDP, pszHostCDP, fBox );
for( i = 0; i < 256; i++ )
s_charTrans[ i ] = ( BYTE ) i;
@@ -1536,11 +1535,13 @@ static BOOL hb_gt_win_SetDispCP( char *pszTermCDP, char *pszHostCDP, BOOL fBox )
/* *********************************************************************** */
static BOOL hb_gt_win_SetKeyCP( char *pszTermCDP, char *pszHostCDP )
static BOOL hb_gt_win_SetKeyCP( PHB_GT pGT, char *pszTermCDP, char *pszHostCDP )
{
int i;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_SetKeyCP(%s,%s)", pszTermCDP, pszHostCDP));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_win_SetKeyCP(%p,%s,%s)", pGT, pszTermCDP, pszHostCDP));
HB_GTSUPER_SETKEYCP( pGT, pszTermCDP, pszHostCDP );
for( i = 0; i < 256; i++ )
s_keyTrans[ i ] = ( BYTE ) i;
@@ -1567,9 +1568,6 @@ static BOOL hb_gt_win_SetKeyCP( char *pszTermCDP, char *pszHostCDP )
}
}
}
#else
HB_SYMBOL_UNUSED( pszTermCDP );
HB_SYMBOL_UNUSED( pszHostCDP );
#endif
return TRUE;
@@ -1577,11 +1575,11 @@ static BOOL hb_gt_win_SetKeyCP( char *pszTermCDP, char *pszHostCDP )
/* *********************************************************************** */
static BOOL hb_gt_win_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_win_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_win_Info(%d,%p)", iType, pInfo ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_win_Info(%p,%d,%p)", pGT, iType, pInfo ) );
switch ( iType )
switch( iType )
{
case GTI_FULLSCREEN:
case GTI_KBDSUPPORT:
@@ -1670,7 +1668,7 @@ static BOOL hb_gt_win_Info( int iType, PHB_GT_INFO pInfo )
break;
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
return TRUE;
@@ -1678,35 +1676,43 @@ static BOOL hb_gt_win_Info( int iType, PHB_GT_INFO pInfo )
/* *********************************************************************** */
static BOOL hb_gt_win_mouse_IsPresent( void )
static BOOL hb_gt_win_mouse_IsPresent( PHB_GT pGT )
{
HB_SYMBOL_UNUSED( pGT );
return b_MouseEnable;
}
static void hb_gt_win_mouse_GetPos( int * piRow, int * piCol )
static void hb_gt_win_mouse_GetPos( PHB_GT pGT, int * piRow, int * piCol )
{
HB_SYMBOL_UNUSED( pGT );
*piRow = hb_mouse_iRow;
*piCol = hb_mouse_iCol;
}
static BOOL hb_gt_win_mouse_ButtonState( int iButton )
static BOOL hb_gt_win_mouse_ButtonState( PHB_GT pGT, int iButton )
{
BOOL fReturn = FALSE;
if ( iButton == 0 )
HB_SYMBOL_UNUSED( pGT );
if( iButton == 0 )
fReturn = ( GetKeyState( VK_LBUTTON ) & 0x8000 ) != 0;
else if ( iButton== 1 )
else if( iButton== 1 )
fReturn = ( GetKeyState( VK_RBUTTON ) & 0x8000 ) != 0;
else if ( iButton == 2 )
else if( iButton == 2 )
fReturn = ( GetKeyState( VK_MBUTTON ) & 0x8000 ) != 0;
return fReturn;
}
static int hb_gt_win_mouse_CountButton( void )
static int hb_gt_win_mouse_CountButton( PHB_GT pGT )
{
DWORD dwCount = 0;
HB_SYMBOL_UNUSED( pGT );
GetNumberOfConsoleMouseButtons( &dwCount );
return ( int ) dwCount;
@@ -1714,9 +1720,9 @@ static int hb_gt_win_mouse_CountButton( void )
/* *********************************************************************** */
static void hb_gt_win_Redraw( int iRow, int iCol, int iSize )
static void hb_gt_win_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_win_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_win_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
if( iSize > 0 && s_pCharInfoScreen != NULL &&
iRow < ( int ) _GetScreenHeight() && iCol < ( int ) _GetScreenWidth() )
@@ -1728,7 +1734,7 @@ static void hb_gt_win_Redraw( int iRow, int iCol, int iSize )
while( iSize-- > 0 )
{
if( !hb_gt_GetScrChar( iRow, iCol++, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol++, &bColor, &bAttr, &usChar ) )
break;
s_pCharInfoScreen[i].Char.AsciiChar = ( CHAR ) s_charTrans[ usChar & 0xFF ];
s_pCharInfoScreen[i].Attributes = ( WORD ) ( bColor & 0xFF );
@@ -1741,17 +1747,17 @@ static void hb_gt_win_Redraw( int iRow, int iCol, int iSize )
/* *********************************************************************** */
static void hb_gt_win_Refresh( void )
static void hb_gt_win_Refresh( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_win_Refresh()") );
HB_TRACE( HB_TR_DEBUG, ("hb_gt_win_Refresh(%p)", pGT) );
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
if( s_pCharInfoScreen )
{
int iRow, iCol, iStyle;
hb_gt_GetScrCursor( &iRow, &iCol, &iStyle );
HB_GTSELF_GETSCRCURSOR( pGT, &iRow, &iCol, &iStyle );
s_sCurRow = iRow;
s_sCurCol = iCol;
@@ -1783,7 +1789,6 @@ static BOOL hb_gt_FuncInit( PHB_GT_FUNCS pFuncTable )
pFuncTable->Redraw = hb_gt_win_Redraw;
pFuncTable->Refresh = hb_gt_win_Refresh;
pFuncTable->Version = hb_gt_win_Version;
pFuncTable->PreExt = hb_gt_win_PreExt;
pFuncTable->PostExt = hb_gt_win_PostExt;
pFuncTable->Suspend = hb_gt_win_Suspend;
pFuncTable->Resume = hb_gt_win_Resume;

View File

@@ -97,9 +97,9 @@ static HANDLE s_hInstance;
static HANDLE s_hPrevInstance;
static int s_iCmdShow;
static GLOBAL_DATA _s;
static HB_GTWVT _s;
static COLORREF _COLORS[] = {
static const COLORREF _COLORS[16] = {
BLACK,
BLUE,
GREEN,
@@ -118,7 +118,7 @@ static COLORREF _COLORS[] = {
BRIGHT_WHITE
};
static int K_Ctrl[] =
static const int K_Ctrl[] =
{
K_CTRL_A, K_CTRL_B, K_CTRL_C, K_CTRL_D, K_CTRL_E, K_CTRL_F, K_CTRL_G,
K_CTRL_H, K_CTRL_I, K_CTRL_J, K_CTRL_K, K_CTRL_L, K_CTRL_M, K_CTRL_N,
@@ -126,20 +126,21 @@ static int K_Ctrl[] =
K_CTRL_V, K_CTRL_W, K_CTRL_X, K_CTRL_Y, K_CTRL_Z
};
static void hb_gt_wvt_InitStatics( void )
static void hb_gt_wvt_InitStatics( PHB_GT pGT )
{
OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
GetVersionEx( &osvi );
_s.pGT = pGT;
_s.ROWS = WVT_DEFAULT_ROWS;
_s.COLS = WVT_DEFAULT_COLS;
_s.CaretExist = FALSE;
_s.CaretHidden = FALSE;
_s.CaretSize = 4;
_s.mousePos.x = 0;
_s.mousePos.y = 0;
_s.MousePos.x = 0;
_s.MousePos.y = 0;
_s.MouseMove = TRUE;
_s.hWnd = NULL;
_s.keyPointerIn = 0;
@@ -166,7 +167,7 @@ static void hb_gt_wvt_InitStatics( void )
static BOOL hb_gt_wvt_SetWindowSize( int iRow, int iCol )
{
if( HB_GTSUPER_RESIZE( iRow, iCol ) )
if( HB_GTSUPER_RESIZE( _s.pGT, iRow, iCol ) )
{
_s.ROWS = ( USHORT ) iRow;
_s.COLS = ( USHORT ) iCol;
@@ -447,8 +448,8 @@ static int hb_gt_wvt_key_ansi_to_oem( int c )
static void hb_gt_wvt_SetMousePos( int iRow, int iCol )
{
_s.mousePos.y = ( SHORT ) iRow;
_s.mousePos.x = ( SHORT ) iCol;
_s.MousePos.y = ( SHORT ) iRow;
_s.MousePos.x = ( SHORT ) iCol;
}
static void hb_gt_wvt_MouseEvent( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
@@ -908,7 +909,7 @@ static void hb_gt_wvt_PaintText( HWND hWnd, RECT updateRect )
while( iCol <= rcRect.right )
{
if( !hb_gt_GetScrChar( iRow, iCol, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( _s.pGT, iRow, iCol, &bColor, &bAttr, &usChar ) )
break;
#if defined(UNICODE)
@@ -939,7 +940,7 @@ static void hb_gt_wvt_UpdateCaret( void )
{
int iRow, iCol, iStyle, iCaretSize;
hb_gt_GetScrCursor( &iRow, &iCol, &iStyle );
HB_GTSELF_GETSCRCURSOR( _s.pGT, &iRow, &iCol, &iStyle );
if( iRow < 0 || iCol < 0 || iRow >= _s.ROWS || iCol >= _s.COLS )
{
@@ -1197,16 +1198,17 @@ static HWND hb_gt_wvt_CreateWindow( HINSTANCE hInstance, HINSTANCE hPrevInstance
*/
/* ********************************************************************** */
static void hb_gt_wvt_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_wvt_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr ) );
if( ! hb_winmainArgGet( &s_hInstance, &s_hPrevInstance, &s_iCmdShow ) )
{
hb_errInternal( 10001, "It's not a window GUI program.", "", "" );
}
hb_gt_wvt_InitStatics();
hb_gt_wvt_InitStatics( pGT );
HB_GTLOCAL( pGT ) = ( void * ) &_s;
_s.hWnd = hb_gt_wvt_CreateWindow( ( HINSTANCE ) s_hInstance,
( HINSTANCE ) s_hPrevInstance,
"", s_iCmdShow );
@@ -1229,18 +1231,18 @@ static void hb_gt_wvt_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE
}
/* SUPER GT initialization */
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( _s.ROWS, _s.COLS );
HB_GTSUPER_EXPOSEAREA( 0, 0, _s.ROWS, _s.COLS );
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( pGT, _s.ROWS, _s.COLS );
HB_GTSUPER_EXPOSEAREA( pGT, 0, 0, _s.ROWS, _s.COLS );
}
/* ********************************************************************** */
static void hb_gt_wvt_Exit( void )
static void hb_gt_wvt_Exit( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Exit()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Exit(%p)", pGT));
HB_GTSUPER_EXIT();
HB_GTSUPER_EXIT( pGT );
if( _s.hWnd )
{
@@ -1252,11 +1254,13 @@ static void hb_gt_wvt_Exit( void )
/* ********************************************************************** */
static BOOL hb_gt_wvt_SetMode( int iRow, int iCol )
static BOOL hb_gt_wvt_SetMode( PHB_GT pGT, int iRow, int iCol )
{
BOOL fResult = FALSE;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_SetMode( %hu, %hu )", iRow, iCol ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_SetMode(%p,%d,%d)", pGT, iRow, iCol ) );
HB_SYMBOL_UNUSED( pGT );
if( iRow <= WVT_MAX_ROWS && iCol <= WVT_MAX_COLS )
{
@@ -1289,9 +1293,11 @@ static BOOL hb_gt_wvt_SetMode( int iRow, int iCol )
/* ********************************************************************** */
static char * hb_gt_wvt_Version( int iType )
static char * hb_gt_wvt_Version( PHB_GT pGT, int iType )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Version()" ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Version(%p,%d)", pGT, iType ) );
HB_SYMBOL_UNUSED( pGT );
if( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
@@ -1301,13 +1307,14 @@ static char * hb_gt_wvt_Version( int iType )
/* ********************************************************************** */
static int hb_gt_wvt_ReadKey( int iEventMask )
static int hb_gt_wvt_ReadKey( PHB_GT pGT, int iEventMask )
{
int c = 0;
BOOL fKey;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_ReadKey( %d )", iEventMask ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_ReadKey(%p,%d)", pGT, iEventMask ) );
HB_SYMBOL_UNUSED( pGT );
HB_SYMBOL_UNUSED( iEventMask ); /* we ignore the eventmask! */
hb_gt_wvt_ProcessMessages();
@@ -1318,33 +1325,41 @@ static int hb_gt_wvt_ReadKey( int iEventMask )
/* ********************************************************************** */
/* dDuration is in 'Ticks' (18.2 per second) */
static void hb_gt_wvt_Tone( double dFrequency, double dDuration )
static void hb_gt_wvt_Tone( PHB_GT pGT, double dFrequency, double dDuration )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Tone(%lf, %lf)", dFrequency, dDuration));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration));
HB_SYMBOL_UNUSED( pGT );
hb_gt_w32_tone( dFrequency, dDuration );
}
/* ********************************************************************** */
static BOOL hb_gt_wvt_mouse_IsPresent( void )
static BOOL hb_gt_wvt_mouse_IsPresent( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_IsPresent()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_IsPresent(%p)", pGT));
HB_SYMBOL_UNUSED( pGT );
return TRUE;
}
static void hb_gt_wvt_mouse_GetPos( int * piRow, int * piCol )
static void hb_gt_wvt_mouse_GetPos( PHB_GT pGT, int * piRow, int * piCol )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_GetPos(%p,%p)", piRow, piCol));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_wvt_mouse_GetPos(%p,%p,%p)", pGT, piRow, piCol));
*piRow = _s.mousePos.y;
*piCol = _s.mousePos.x;
HB_SYMBOL_UNUSED( pGT );
*piRow = _s.MousePos.y;
*piCol = _s.MousePos.x;
}
static BOOL hb_gt_wvt_mouse_ButtonState( int iButton )
static BOOL hb_gt_wvt_mouse_ButtonState( PHB_GT pGT, int iButton )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_mouse_ButtonState(%i)", iButton ) );
HB_TRACE( HB_TR_DEBUG, ("hb_gt_wvt_mouse_ButtonState(%p,%i)", pGT, iButton) );
HB_SYMBOL_UNUSED( pGT );
switch( iButton )
{
@@ -1358,20 +1373,22 @@ static BOOL hb_gt_wvt_mouse_ButtonState( int iButton )
return FALSE;
}
static int hb_gt_wvt_mouse_CountButton( void )
static int hb_gt_wvt_mouse_CountButton( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_mouse_CountButton()") );
HB_TRACE( HB_TR_DEBUG, ("hb_gt_wvt_mouse_CountButton(%p)", pGT) );
HB_SYMBOL_UNUSED( pGT );
return GetSystemMetrics( SM_CMOUSEBUTTONS );
}
/* ********************************************************************** */
static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
int iVal;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Info(%d,%p)", iType, pInfo ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Info(%p,%d,%p)", pGT, iType, pInfo ) );
switch( iType )
{
@@ -1519,7 +1536,7 @@ static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
iVal = hb_itemGetNI( pInfo->pNewVal );
if( iVal > 0 )
{
hb_gtSetMode( (USHORT) ( iVal / _s.PTEXTSIZE.y ), _s.COLS );
HB_GTSELF_SETMODE( pGT, (USHORT) ( iVal / _s.PTEXTSIZE.y ), _s.COLS );
}
break;
@@ -1528,7 +1545,7 @@ static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
iVal = hb_itemGetNI( pInfo->pNewVal );
if( iVal > 0 )
{
hb_gtSetMode( _s.ROWS, (USHORT) ( iVal / _s.PTEXTSIZE.x ) );
HB_GTSELF_SETMODE( pGT, _s.ROWS, (USHORT) ( iVal / _s.PTEXTSIZE.x ) );
}
break;
@@ -1681,7 +1698,7 @@ static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
break;
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
return TRUE;
@@ -1717,14 +1734,16 @@ static BOOL hb_gt_wvt_Info( int iType, PHB_GT_INFO pInfo )
ReleaseDC( _s.hWnd, hdc ); \
} while( 0 )
static int hb_gt_wvt_gfx_Primitive( int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor )
static int hb_gt_wvt_gfx_Primitive( PHB_GT pGT, int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor )
{
HDC hdc;
HPEN hPen, hOldPen;
HBRUSH hBrush, hOldBrush;
int iRet = 0;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_gfx_Primitive(%d, %d, %d, %d, %d, %d)", iType, iTop, iLeft, iBottom, iRight, iColor ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_gfx_Primitive(%p,%d,%d,%d,%d,%d,%d)", pGT, iType, iTop, iLeft, iBottom, iRight, iColor ) );
HB_SYMBOL_UNUSED( pGT );
if( _s.hWnd )
{
@@ -1836,8 +1855,9 @@ static int hb_gt_wvt_gfx_Primitive( int iType, int iTop, int iLeft, int iBottom,
}
/*
static void hb_gt_wvt_gfx_Text( int iTop, int iLeft, char *cBuf, int iColor, int iSize, int iWidth )
static void hb_gt_wvt_gfx_Text( PHB_GT pGT, int iTop, int iLeft, char *cBuf, int iColor, int iSize, int iWidth )
{
HB_SYMBOL_UNUSED( pGT );
HB_SYMBOL_UNUSED( iTop );
HB_SYMBOL_UNUSED( iLeft );
HB_SYMBOL_UNUSED( cBuf );
@@ -1849,9 +1869,11 @@ static void hb_gt_wvt_gfx_Text( int iTop, int iLeft, char *cBuf, int iColor, int
/* ********************************************************************** */
static void hb_gt_wvt_Redraw( int iRow, int iCol, int iSize )
static void hb_gt_wvt_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
HB_SYMBOL_UNUSED( pGT );
if( _s.hWnd )
{
@@ -1869,11 +1891,11 @@ static void hb_gt_wvt_Redraw( int iRow, int iCol, int iSize )
/* ********************************************************************** */
static void hb_gt_wvt_Refresh( void )
static void hb_gt_wvt_Refresh( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_wvt_Refresh()") );
HB_TRACE( HB_TR_DEBUG, ("hb_gt_wvt_Refresh(%p)", pGT) );
HB_GTSUPER_REFRESH();
HB_GTSUPER_REFRESH( pGT );
if( _s.hWnd )
{
@@ -1884,10 +1906,9 @@ static void hb_gt_wvt_Refresh( void )
/* ********************************************************************** */
static BOOL hb_gt_wvt_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox )
static BOOL hb_gt_wvt_SetDispCP( PHB_GT pGT, char * pszTermCDP, char * pszHostCDP, BOOL fBox )
{
HB_GTSUPER_SETDISPCP( pszTermCDP, pszHostCDP, fBox );
HB_GTSUPER_SETDISPCP( pGT, pszTermCDP, pszHostCDP, fBox );
#ifndef HB_CDP_SUPPORT_OFF
/*
@@ -1913,9 +1934,9 @@ static BOOL hb_gt_wvt_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox
return TRUE;
}
static BOOL hb_gt_wvt_SetKeyCP( char * pszTermCDP, char * pszHostCDP )
static BOOL hb_gt_wvt_SetKeyCP( PHB_GT pGT, char * pszTermCDP, char * pszHostCDP )
{
HB_GTSUPER_SETKEYCP( pszTermCDP, pszHostCDP );
HB_GTSUPER_SETKEYCP( pGT, pszTermCDP, pszHostCDP );
#ifndef HB_CDP_SUPPORT_OFF
/*

View File

@@ -109,8 +109,10 @@
#define WM_MY_UPDATE_CARET ( WM_USER + 0x0101 )
typedef struct global_data
typedef struct
{
PHB_GT pGT; /* core GT pointer */
USHORT ROWS; /* number of displayable rows in window */
USHORT COLS; /* number of displayable columns in window */
@@ -118,7 +120,7 @@ typedef struct global_data
BOOL CaretHidden; /* TRUE if a caret has been hiden */
int CaretSize; /* Size of solid caret */
POINT mousePos; /* the last mouse position */
POINT MousePos; /* the last mouse position */
BOOL MouseMove; /* Flag to say whether to return mouse movement events */
int Keys[ WVT_CHAR_QUEUE_SIZE ]; /* Array to hold the characters & events */
@@ -148,7 +150,7 @@ typedef struct global_data
BOOL IgnoreWM_SYSCHAR;
} GLOBAL_DATA, * LPGLOBAL_DATA;
} HB_GTWVT, * PHB_GTWVT;
/* xHarbour compatible definitions */
#if !defined( K_SH_LEFT )

View File

@@ -62,10 +62,12 @@ static HB_GT_FUNCS SuperTable;
#define HB_GTSUPER (&SuperTable)
#define HB_GTID_PTR (&s_GtId)
#define HB_GTXWC_GET(p) ( ( PXWND_DEF ) HB_GTLOCAL( p ) )
/* mouse button mapping into Clipper keycodes */
static int mousePressKeys[ XWC_MAX_BUTTONS ] = { K_LBUTTONDOWN, K_MBUTTONDOWN, K_RBUTTONDOWN, K_MWFORWARD, K_MWBACKWARD };
static int mouseReleaseKeys[ XWC_MAX_BUTTONS ] = { K_LBUTTONUP, K_MBUTTONUP, K_RBUTTONUP };
static int mouseDblPressKeys[ XWC_MAX_BUTTONS ] = { K_LDBLCLK, K_MDBLCLK, K_RDBLCLK , K_MWFORWARD, K_MWBACKWARD };
static const int mousePressKeys[ XWC_MAX_BUTTONS ] = { K_LBUTTONDOWN, K_MBUTTONDOWN, K_RBUTTONDOWN, K_MWFORWARD, K_MWBACKWARD };
static const int mouseReleaseKeys[ XWC_MAX_BUTTONS ] = { K_LBUTTONUP, K_MBUTTONUP, K_RBUTTONUP };
static const int mouseDblPressKeys[ XWC_MAX_BUTTONS ] = { K_LDBLCLK, K_MDBLCLK, K_RDBLCLK , K_MWFORWARD, K_MWBACKWARD };
typedef struct tag_ClipKeyCode {
int key;
@@ -322,6 +324,8 @@ typedef struct tag_modifiers
typedef struct tag_x_wnddef
{
PHB_GT pGT;
Display *dpy;
Window window;
GC gc;
@@ -337,6 +341,9 @@ typedef struct tag_x_wnddef
/* is anything written to screen */
BOOL fData;
/* block recursive refresh calls */
BOOL fRefresh;
/* window size in character cells */
USHORT cols;
USHORT rows;
@@ -387,6 +394,10 @@ typedef struct tag_x_wnddef
int lastCursorRow;
int lastCursorType;
BOOL cursorState;
ULONG cursorBlinkRate;
ULONG cursorStateTime;
/* Mouse informations */
int mouseCol;
int mouseRow;
@@ -441,10 +452,6 @@ static void hb_gt_xwc_InvalidatePts( PXWND_DEF wnd, int left, int top, int right
static PXWND_DEF s_wnd = NULL;
static BOOL s_fNoXServer = FALSE;
static BOOL s_cursorState = TRUE;
static ULONG s_cursorBlinkRate = 350;
static ULONG s_cursorStateTime = 0;
#if 1
static int s_updateMode = XWC_SYNC_UPDATE;
#else
@@ -471,13 +478,15 @@ static int s_errorHandler( Display *dpy, XErrorEvent *e )
static void hb_gt_xwc_SigHandler( int iSig )
{
PXWND_DEF wnd = s_wnd;
HB_SYMBOL_UNUSED( iSig );
if( s_updateMode == XWC_ASYNC_UPDATE && s_wnd && s_wnd->fInit )
if( s_updateMode == XWC_ASYNC_UPDATE && wnd && wnd->fInit )
{
if( s_iUpdateCounter )
--s_iUpdateCounter;
hb_gt_xwc_ProcessMessages( s_wnd );
hb_gt_xwc_ProcessMessages( wnd );
}
}
@@ -2038,7 +2047,7 @@ static void hb_gt_xwc_WndProc( PXWND_DEF wnd, XEvent *evt )
{
Time evtTime = ((XButtonEvent *) evt)->time;
if( evtTime - wnd->mouseButtonsTime[ button ] <
( Time ) hb_mouse_GetDoubleClickSpeed() )
( Time ) HB_GTSELF_MOUSEGETDOUBLECLICKSPEED( wnd->pGT ) )
{
key = mouseDblPressKeys[ button ];
}
@@ -2478,7 +2487,7 @@ static void hb_gt_xwc_RepaintChar( PXWND_DEF wnd, int colStart, int rowStart, in
*/
while( icol <= colStop )
{
hb_gt_GetScrChar( irow, icol, &color, &attr, &usCh16 );
HB_GTSELF_GETSCRCHAR( wnd->pGT, irow, icol, &color, &attr, &usCh16 );
ulCurr = hb_gt_xwc_HashCurrChar( attr, color, usCh16 );
if( wnd->charTrans[ usCh16 ].inverse )
{
@@ -2689,7 +2698,7 @@ static void hb_gt_xwc_InvalidatePts( PXWND_DEF wnd,
static void hb_gt_xwc_UpdateCursor( PXWND_DEF wnd )
{
int cursorType = s_cursorState ? wnd->cursorType : SC_NONE;
int cursorType = wnd->cursorState ? wnd->cursorType : SC_NONE;
/* must the mouse cursor be positioned? */
if( wnd->mouseGotoRow >= 0 && wnd->mouseGotoCol >= 0 )
@@ -2743,7 +2752,7 @@ static void hb_gt_xwc_UpdateCursor( PXWND_DEF wnd )
BYTE color, attr;
USHORT usChar;
hb_gt_GetScrChar( wnd->row, wnd->col, &color, &attr, &usChar );
HB_GTSELF_GETSCRCHAR( wnd->pGT, wnd->row, wnd->col, &color, &attr, &usChar );
XSetForeground( wnd->dpy, wnd->gc, wnd->pixels[color & 0x0f] );
XFillRectangle( wnd->dpy, wnd->window, wnd->gc,
basex, basey, wnd->fontWidth, size );
@@ -2816,8 +2825,8 @@ static void hb_gt_xwc_UpdateSize( PXWND_DEF wnd )
if( wnd->fWinResize )
{
wnd->fWinResize = FALSE;
hb_gtSetMode( wnd->newHeight / wnd->fontHeight,
wnd->newWidth / wnd->fontWidth );
HB_GTSELF_SETMODE( wnd->pGT, wnd->newHeight / wnd->fontHeight,
wnd->newWidth / wnd->fontWidth );
}
}
@@ -2838,18 +2847,18 @@ static void hb_gt_xwc_ProcessMessages( PXWND_DEF wnd )
if( wnd->cursorType != SC_NONE )
{
if( s_cursorBlinkRate == 0 )
if( wnd->cursorBlinkRate == 0 )
{
s_cursorState = TRUE;
wnd->cursorState = TRUE;
}
else
{
ULONG ulCurrentTime = hb_gt_xwc_CurrentTime();
if( ulCurrentTime - s_cursorStateTime > s_cursorBlinkRate )
if( ulCurrentTime - wnd->cursorStateTime > wnd->cursorBlinkRate )
{
s_cursorState = !s_cursorState;
s_cursorStateTime = ulCurrentTime;
wnd->cursorState = !wnd->cursorState;
wnd->cursorStateTime = ulCurrentTime;
}
}
}
@@ -2894,7 +2903,7 @@ static void hb_gt_xwc_SetScrBuff( PXWND_DEF wnd, USHORT cols, USHORT rows )
memset( wnd->pCurrScr, 0xFFFFFFFFL, iSize * sizeof( ULONG ) );
hb_gt_xwc_InvalidateChar( wnd, 0, 0, wnd->cols - 1, wnd->rows - 1 );
HB_GTSUPER_RESIZE( wnd->rows, wnd->cols );
HB_GTSUPER_RESIZE( wnd->pGT, wnd->rows, wnd->cols );
}
}
@@ -2965,7 +2974,7 @@ static BOOL hb_gt_xwc_SetFont( PXWND_DEF wnd, char *fontFace, char *weight, int
/* *********************************************************************** */
static PXWND_DEF hb_gt_xwc_CreateWndDef( void )
static PXWND_DEF hb_gt_xwc_CreateWndDef( PHB_GT pGT )
{
PHB_FNAME pFileName;
PXWND_DEF wnd = ( PXWND_DEF ) hb_xgrab( sizeof( XWND_DEF ) );
@@ -2973,6 +2982,7 @@ static PXWND_DEF hb_gt_xwc_CreateWndDef( void )
/* clear whole structure */
memset( wnd, 0, sizeof( XWND_DEF ) );
wnd->pGT = pGT;
wnd->dpy = NULL;
wnd->fInit = wnd->fData = FALSE;
hb_gt_xwc_SetScrBuff( wnd, XWC_DEFAULT_COLS, XWC_DEFAULT_ROWS );
@@ -3228,7 +3238,7 @@ static void hb_gt_xwc_SetSelection( PXWND_DEF wnd, char *szData, ULONG ulSize )
else
{
char * cMsg = "Cannot set primary selection\r\n";
hb_gt_OutErr( ( BYTE * ) cMsg, strlen( cMsg ) );
HB_GTSELF_OUTERR( wnd->pGT, ( BYTE * ) cMsg, strlen( cMsg ) );
}
}
}
@@ -3297,93 +3307,106 @@ static void hb_gt_xwc_RequestSelection( PXWND_DEF wnd )
/* *********************************************************************** */
static void hb_gt_xwc_RealRefresh( void )
static void hb_gt_xwc_RealRefresh( PXWND_DEF wnd )
{
static BOOL s_fRefresh = FALSE;
hb_gt_xwc_Initialize( wnd );
hb_gt_xwc_Initialize( s_wnd );
if( s_updateMode == XWC_SYNC_UPDATE && !s_fRefresh )
if( s_updateMode == XWC_SYNC_UPDATE && !wnd->fRefresh )
{
s_fRefresh = TRUE;
hb_gt_xwc_ProcessMessages( s_wnd );
s_fRefresh = FALSE;
wnd->fRefresh = TRUE;
hb_gt_xwc_ProcessMessages( wnd );
wnd->fRefresh = FALSE;
}
}
/* *********************************************************************** */
static void hb_gt_xwc_LateRefresh( void )
static void hb_gt_xwc_LateRefresh( PXWND_DEF wnd )
{
if( s_wnd->fInit )
hb_gt_xwc_RealRefresh();
if( wnd->fInit )
hb_gt_xwc_RealRefresh( wnd );
}
/* *********************************************************************** */
/* *********************************************************************** */
static void hb_gt_xwc_Init( FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
static void hb_gt_xwc_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStdout, FHANDLE hFilenoStderr )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_Init(%p,%p,%p)", hFilenoStdin, hFilenoStdout, hFilenoStderr));
PXWND_DEF wnd;
s_wnd = hb_gt_xwc_CreateWndDef();
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_Init(%p,%p,%p,%p)", pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr));
HB_GTSUPER_INIT( hFilenoStdin, hFilenoStdout, hFilenoStderr );
HB_GTSUPER_RESIZE( s_wnd->rows, s_wnd->cols );
hb_gt_SemiCold();
HB_GTSUPER_INIT( pGT, hFilenoStdin, hFilenoStdout, hFilenoStderr );
wnd = hb_gt_xwc_CreateWndDef( pGT );
HB_GTLOCAL( pGT ) = wnd;
/* for signal handler */
s_wnd = wnd;
wnd->cursorState = TRUE;
wnd->cursorBlinkRate = 350;
wnd->cursorStateTime = 0;
HB_GTSUPER_RESIZE( pGT, wnd->rows, wnd->cols );
HB_GTSELF_SEMICOLD( pGT );
/* For immediate connection to XSarver and screen Window show */
/* hb_gt_xwc_Initialize( s_wnd ); */
/* hb_gt_xwc_Initialize( wnd ); */
/* For connection to XSarver only */
/* hb_gt_xwc_ConnectX( s_wnd, TRUE ); */
/* hb_gt_xwc_ConnectX( wnd, TRUE ); */
}
/* *********************************************************************** */
static void hb_gt_xwc_Exit( void )
static void hb_gt_xwc_Exit( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_Exit()"));
PXWND_DEF wnd;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_Exit(%p)", pGT));
wnd = HB_GTXWC_GET( pGT );
hb_gt_xwc_Disable();
HB_GTSUPER_EXIT( pGT );
HB_GTSUPER_EXIT();
if( s_wnd )
if( wnd )
{
hb_gt_xwc_DestroyWndDef( s_wnd );
s_wnd = NULL;
hb_gt_xwc_DestroyWndDef( wnd );
}
}
/* *********************************************************************** */
static BOOL hb_gt_xwc_SetMode( int iRow, int iCol )
static BOOL hb_gt_xwc_SetMode( PHB_GT pGT, int iRow, int iCol )
{
BOOL fResult = FALSE;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_SetMode(%d, %d)", iRow, iCol));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_SetMode(%p,%d,%d)", pGT, iRow, iCol));
if( iCol >= XWC_MIN_COLS && iRow >= XWC_MIN_ROWS &&
iCol <= XWC_MAX_COLS && iRow <= XWC_MAX_ROWS )
{
if( iCol == s_wnd->cols && iRow == s_wnd->rows )
PXWND_DEF wnd = HB_GTXWC_GET( pGT );
if( iCol == wnd->cols && iRow == wnd->rows )
{
fResult = TRUE;
HB_GTSUPER_RESIZE( s_wnd->rows, s_wnd->cols );
HB_GTSUPER_RESIZE( pGT, wnd->rows, wnd->cols );
}
else if( !s_wnd->fInit )
else if( !wnd->fInit )
{
hb_gt_xwc_SetScrBuff( s_wnd, iCol, iRow );
hb_gt_xwc_SetScrBuff( wnd, iCol, iRow );
fResult = TRUE;
}
else
{
hb_gt_xwc_Disable();
fResult = hb_gt_xwc_Resize( s_wnd, iCol, iRow );
fResult = hb_gt_xwc_Resize( wnd, iCol, iRow );
if( fResult )
HB_GTSUPER_RESIZE( s_wnd->rows, s_wnd->cols );
HB_GTSUPER_RESIZE( pGT, wnd->rows, wnd->cols );
hb_gt_xwc_Enable();
}
}
@@ -3393,17 +3416,21 @@ static BOOL hb_gt_xwc_SetMode( int iRow, int iCol )
/* *********************************************************************** */
static BOOL hb_gt_xwc_GetBlink()
static BOOL hb_gt_xwc_GetBlink( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_GetBlink()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_GetBlink(%p)", pGT));
HB_SYMBOL_UNUSED( pGT );
return FALSE;
}
/* *********************************************************************** */
static char * hb_gt_xwc_Version( int iType )
static char * hb_gt_xwc_Version( PHB_GT pGT, int iType )
{
HB_SYMBOL_UNUSED( pGT );
if( iType == 0 )
return HB_GT_DRVNAME( HB_GT_NAME );
@@ -3412,18 +3439,20 @@ static char * hb_gt_xwc_Version( int iType )
/* *********************************************************************** */
static int hb_gt_xwc_ReadKey( int iEventMask )
static int hb_gt_xwc_ReadKey( PHB_GT pGT, int iEventMask )
{
PXWND_DEF wnd;
int c = 0;
HB_TRACE(HB_TR_DEBUG, ("hb_wxc_gt_ReadKey(%p,%d)", pGT, iEventMask));
HB_SYMBOL_UNUSED( iEventMask );
HB_TRACE(HB_TR_DEBUG, ("hb_wxc_gt_ReadKey(%d)", iEventMask));
wnd = HB_GTXWC_GET( pGT );
hb_gt_xwc_LateRefresh( wnd );
/* hb_gt_xwc_RealRefresh( wnd ); */
hb_gt_xwc_LateRefresh();
/* hb_gt_xwc_RealRefresh(); */
if( hb_gt_xwc_GetCharFromInputQueue( s_wnd, &c ) )
if( hb_gt_xwc_GetCharFromInputQueue( wnd, &c ) )
return c;
else
return 0;
@@ -3432,86 +3461,104 @@ static int hb_gt_xwc_ReadKey( int iEventMask )
/* *********************************************************************** */
static void hb_gt_xwc_Tone( double dFrequency, double dDuration )
static void hb_gt_xwc_Tone( PHB_GT pGT, double dFrequency, double dDuration )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_Tone(%lf, %lf)", dFrequency, dDuration));
PXWND_DEF wnd;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_Tone(%p,%lf,%lf)", pGT, dFrequency, dDuration));
/* The conversion from Clipper (DOS) timer tick units to
milliseconds is * 1000.0 / 18.2. */
dDuration /= 18.2;
if( s_wnd->dpy != NULL )
wnd = HB_GTXWC_GET( pGT );
if( wnd->dpy != NULL )
{
XKeyboardControl XkbCtrl;
XkbCtrl.bell_pitch = (int) dFrequency;
XkbCtrl.bell_duration = (int) (dDuration * 1000);
XChangeKeyboardControl( s_wnd->dpy, KBBellPitch | KBBellDuration, &XkbCtrl );
XBell( s_wnd->dpy, 0 );
XChangeKeyboardControl( wnd->dpy, KBBellPitch | KBBellDuration, &XkbCtrl );
XBell( wnd->dpy, 0 );
}
hb_idleSleep( dDuration );
}
/* *********************************************************************** */
static BOOL hb_gt_xwc_mouse_IsPresent( void )
static BOOL hb_gt_xwc_mouse_IsPresent( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_IsPresent()"));
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_IsPresent(%p)", pGT));
return s_wnd->mouseNumButtons > 0;
return HB_GTXWC_GET( pGT )->mouseNumButtons > 0;
}
/* *********************************************************************** */
static void hb_gt_xwc_mouse_GetPos( int * piRow, int * piCol )
static void hb_gt_xwc_mouse_GetPos( PHB_GT pGT, int * piRow, int * piCol )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_GetPos(%p,%p)", piRow, piCol));
PXWND_DEF wnd;
hb_gt_xwc_LateRefresh();
*piRow = s_wnd->mouseRow;
*piCol = s_wnd->mouseCol;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_GetPos(%p,%p,%p)", pGT, piRow, piCol));
wnd = HB_GTXWC_GET( pGT );
if( wnd )
{
hb_gt_xwc_LateRefresh( wnd );
*piRow = wnd->mouseRow;
*piCol = wnd->mouseCol;
}
}
/* *********************************************************************** */
static void hb_gt_xwc_mouse_SetPos( int iRow, int iCol )
static void hb_gt_xwc_mouse_SetPos( PHB_GT pGT, int iRow, int iCol )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_SetPos(%d,%d)", iRow, iCol));
PXWND_DEF wnd;
s_wnd->mouseGotoRow = iRow;
s_wnd->mouseGotoCol = iCol;
hb_gt_xwc_LateRefresh();
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_SetPos(%p,%d,%d)", pGT, iRow, iCol));
wnd = HB_GTXWC_GET( pGT );
wnd->mouseGotoRow = iRow;
wnd->mouseGotoCol = iCol;
hb_gt_xwc_LateRefresh( wnd );
}
/* *********************************************************************** */
static BOOL hb_gt_xwc_mouse_ButtonState( int iButton )
static BOOL hb_gt_xwc_mouse_ButtonState( PHB_GT pGT,int iButton )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_ButtonState(%i)", iButton));
PXWND_DEF wnd;
if( iButton >= 0 && iButton < s_wnd->mouseNumButtons )
return ( s_wnd->mouseButtonsState & 1 << iButton ) != 0;
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_ButtonState(%p,%i)", pGT, iButton));
wnd = HB_GTXWC_GET( pGT );
if( iButton >= 0 && iButton < wnd->mouseNumButtons )
return ( wnd->mouseButtonsState & 1 << iButton ) != 0;
else
return FALSE;
}
/* *********************************************************************** */
static int hb_gt_xwc_mouse_CountButton( void )
static int hb_gt_xwc_mouse_CountButton( PHB_GT pGT )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_CountButton()"));
PXWND_DEF wnd;
hb_gt_xwc_RealRefresh();
HB_TRACE(HB_TR_DEBUG, ("hb_gt_xwc_mouse_CountButton(%p)", pGT));
return s_wnd->mouseNumButtons;
wnd = HB_GTXWC_GET( pGT );
hb_gt_xwc_RealRefresh( wnd );
return wnd->mouseNumButtons;
}
/* *********************************************************************** */
static BOOL hb_gt_xwc_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox )
static BOOL hb_gt_xwc_SetDispCP( PHB_GT pGT, char * pszTermCDP, char * pszHostCDP, BOOL fBox )
{
HB_GTSUPER_SETDISPCP( pszTermCDP, pszHostCDP, fBox );
HB_GTSUPER_SETDISPCP( pGT, pszTermCDP, pszHostCDP, fBox );
#ifndef HB_CDP_SUPPORT_OFF
/*
@@ -3529,11 +3576,13 @@ static BOOL hb_gt_xwc_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox
if( pszHostCDP && *pszHostCDP )
{
PHB_CODEPAGE cdpHost = hb_cdpFind( pszHostCDP );
if( cdpHost && cdpHost != s_wnd->hostCDP )
PXWND_DEF wnd = HB_GTXWC_GET( pGT );
if( cdpHost && cdpHost != wnd->hostCDP )
{
s_wnd->hostCDP = cdpHost;
if( s_wnd->fInit )
hb_gt_xwc_BuildCharTrans( s_wnd );
wnd->hostCDP = cdpHost;
if( wnd->fInit )
hb_gt_xwc_BuildCharTrans( wnd );
}
}
#endif
@@ -3543,7 +3592,7 @@ static BOOL hb_gt_xwc_SetDispCP( char * pszTermCDP, char * pszHostCDP, BOOL fBox
/* *********************************************************************** */
static BOOL hb_gt_xwc_SetKeyCP( char * pszTermCDP, char * pszHostCDP )
static BOOL hb_gt_xwc_SetKeyCP( PHB_GT pGT, char * pszTermCDP, char * pszHostCDP )
{
#ifndef HB_CDP_SUPPORT_OFF
/*
@@ -3566,10 +3615,11 @@ static BOOL hb_gt_xwc_SetKeyCP( char * pszTermCDP, char * pszHostCDP )
PHB_CODEPAGE cdpTerm = hb_cdpFind( pszTermCDP );
if( cdpTerm )
{
s_wnd->inCDP = cdpTerm;
HB_GTXWC_GET( pGT )->inCDP = cdpTerm;
}
}
#else
HB_SYMBOL_UNUSED( pGT );
HB_SYMBOL_UNUSED( pszTermCDP );
HB_SYMBOL_UNUSED( pszHostCDP );
#endif
@@ -3590,20 +3640,22 @@ static int hb_gt_xwc_getKbdState( PXWND_DEF wnd )
return iKbdState;
}
static BOOL hb_gt_xwc_Info( int iType, PHB_GT_INFO pInfo )
static BOOL hb_gt_xwc_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
PXWND_DEF wnd;
int iVal;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_xwc_Info(%d,%p)", iType, pInfo ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_xwc_Info(%p,%d,%p)", pGT, iType, pInfo ) );
if( !s_wnd->dpy )
wnd = HB_GTXWC_GET( pGT );
if( !wnd->dpy )
{
switch( iType )
{
case GTI_FULLSCREEN:
case GTI_KBDSUPPORT:
case GTI_ISGRAPHIC:
hb_gt_xwc_ConnectX( s_wnd, FALSE );
hb_gt_xwc_ConnectX( wnd, FALSE );
break;
case GTI_INPUTFD:
@@ -3614,7 +3666,7 @@ static BOOL hb_gt_xwc_Info( int iType, PHB_GT_INFO pInfo )
case GTI_DESKTOPCOLS:
case GTI_DESKTOPROWS:
case GTI_CLIPBOARDDATA:
hb_gt_xwc_ConnectX( s_wnd, TRUE );
hb_gt_xwc_ConnectX( wnd, TRUE );
break;
}
}
@@ -3624,48 +3676,48 @@ static BOOL hb_gt_xwc_Info( int iType, PHB_GT_INFO pInfo )
case GTI_FULLSCREEN:
case GTI_KBDSUPPORT:
case GTI_ISGRAPHIC:
pInfo->pResult = hb_itemPutL( pInfo->pResult, s_wnd->dpy != NULL );
pInfo->pResult = hb_itemPutL( pInfo->pResult, wnd->dpy != NULL );
break;
case GTI_INPUTFD:
pInfo->pResult = hb_itemPutNI( pInfo->pResult, ConnectionNumber( s_wnd->dpy ) );
pInfo->pResult = hb_itemPutNI( pInfo->pResult, ConnectionNumber( wnd->dpy ) );
break;
case GTI_SCREENWIDTH:
pInfo->pResult = hb_itemPutNI( pInfo->pResult, s_wnd->width );
pInfo->pResult = hb_itemPutNI( pInfo->pResult, wnd->width );
break;
case GTI_SCREENHEIGHT:
pInfo->pResult = hb_itemPutNI( pInfo->pResult, s_wnd->height );
pInfo->pResult = hb_itemPutNI( pInfo->pResult, wnd->height );
break;
case GTI_SCREENDEPTH:
case GTI_DESKTOPDEPTH:
pInfo->pResult = hb_itemPutNI( pInfo->pResult,
DefaultDepth( s_wnd->dpy, DefaultScreen( s_wnd->dpy ) ) );
DefaultDepth( wnd->dpy, DefaultScreen( wnd->dpy ) ) );
break;
case GTI_FONTSIZE:
pInfo->pResult = hb_itemPutNI( pInfo->pResult, s_wnd->fontHeight );
pInfo->pResult = hb_itemPutNI( pInfo->pResult, wnd->fontHeight );
iVal = hb_itemGetNI( pInfo->pNewVal );
if( iVal > 0 ) /* TODO */
s_wnd->fontHeight = iVal;
wnd->fontHeight = iVal;
break;
case GTI_FONTWIDTH:
pInfo->pResult = hb_itemPutNI( pInfo->pResult, s_wnd->fontWidth );
pInfo->pResult = hb_itemPutNI( pInfo->pResult, wnd->fontWidth );
iVal = hb_itemGetNI( pInfo->pNewVal );
if( iVal > 0 ) /* TODO */
s_wnd->fontWidth = iVal;
wnd->fontWidth = iVal;
break;
case GTI_FONTNAME:
pInfo->pResult = hb_itemPutC( pInfo->pResult, s_wnd->szFontName );
pInfo->pResult = hb_itemPutC( pInfo->pResult, wnd->szFontName );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) /* TODO */
{
if( s_wnd->szFontName )
hb_xfree( s_wnd->szFontName );
s_wnd->szFontName = hb_strdup( hb_itemGetCPtr( pInfo->pNewVal ) );
if( wnd->szFontName )
hb_xfree( wnd->szFontName );
wnd->szFontName = hb_strdup( hb_itemGetCPtr( pInfo->pNewVal ) );
}
break;
@@ -3675,7 +3727,7 @@ static BOOL hb_gt_xwc_Info( int iType, PHB_GT_INFO pInfo )
case GTI_DESKTOPROWS:
{
XWindowAttributes wndAttr;
XGetWindowAttributes( s_wnd->dpy, DefaultRootWindow( s_wnd->dpy ), &wndAttr );
XGetWindowAttributes( wnd->dpy, DefaultRootWindow( wnd->dpy ), &wndAttr );
switch( iType )
{
case GTI_DESKTOPWIDTH:
@@ -3685,10 +3737,10 @@ static BOOL hb_gt_xwc_Info( int iType, PHB_GT_INFO pInfo )
iVal = wndAttr.height;
break;
case GTI_DESKTOPCOLS:
iVal = wndAttr.width / s_wnd->fontWidth;
iVal = wndAttr.width / wnd->fontWidth;
break;
case GTI_DESKTOPROWS:
iVal = wndAttr.height / s_wnd->fontHeight;
iVal = wndAttr.height / wnd->fontHeight;
break;
default:
iVal = 0;
@@ -3698,74 +3750,76 @@ static BOOL hb_gt_xwc_Info( int iType, PHB_GT_INFO pInfo )
}
case GTI_WINTITLE:
pInfo->pResult = hb_itemPutC( pInfo->pResult, s_wnd->szTitle );
pInfo->pResult = hb_itemPutC( pInfo->pResult, wnd->szTitle );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
{
if( s_wnd->szTitle )
hb_xfree( s_wnd->szTitle );
if( wnd->szTitle )
hb_xfree( wnd->szTitle );
if( hb_itemGetCLen( pInfo->pNewVal ) > 0 )
s_wnd->szTitle = hb_strdup( hb_itemGetCPtr( pInfo->pNewVal ) );
wnd->szTitle = hb_strdup( hb_itemGetCPtr( pInfo->pNewVal ) );
else
s_wnd->szTitle = NULL;
wnd->szTitle = NULL;
s_wnd->fDspTitle = TRUE;
wnd->fDspTitle = TRUE;
}
break;
case GTI_VIEWMAXWIDTH:
pInfo->pResult = hb_itemPutNI( pInfo->pResult, s_wnd->cols );
pInfo->pResult = hb_itemPutNI( pInfo->pResult, wnd->cols );
break;
case GTI_VIEWMAXHEIGHT:
pInfo->pResult = hb_itemPutNI( pInfo->pResult, s_wnd->rows );
pInfo->pResult = hb_itemPutNI( pInfo->pResult, wnd->rows );
break;
case GTI_CLIPBOARDDATA:
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
{
hb_gt_xwc_RealRefresh();
hb_gt_xwc_SetSelection( s_wnd, hb_itemGetCPtr( pInfo->pNewVal ),
hb_gt_xwc_RealRefresh( wnd );
hb_gt_xwc_SetSelection( wnd, hb_itemGetCPtr( pInfo->pNewVal ),
hb_itemGetCLen( pInfo->pNewVal ) );
hb_gt_xwc_RealRefresh();
hb_gt_xwc_RealRefresh( wnd );
}
else
{
hb_gt_xwc_RealRefresh();
hb_gt_xwc_RequestSelection( s_wnd );
hb_gt_xwc_RealRefresh( wnd );
hb_gt_xwc_RequestSelection( wnd );
pInfo->pResult = hb_itemPutCL( pInfo->pResult,
( char * ) s_wnd->ClipboardData,
s_wnd->ClipboardSize );
( char * ) wnd->ClipboardData,
wnd->ClipboardSize );
}
break;
case GTI_CURSORBLINKRATE:
pInfo->pResult = hb_itemPutNI( pInfo->pResult, s_cursorBlinkRate );
pInfo->pResult = hb_itemPutNI( pInfo->pResult, wnd->cursorBlinkRate );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC )
s_cursorBlinkRate = hb_itemGetNI( pInfo->pNewVal );
wnd->cursorBlinkRate = hb_itemGetNI( pInfo->pNewVal );
break;
case GTI_KBDSHIFTS:
pInfo->pResult = hb_itemPutNI( pInfo->pResult,
hb_gt_xwc_getKbdState( s_wnd ) );
hb_gt_xwc_getKbdState( wnd ) );
break;
default:
return HB_GTSUPER_INFO( iType, pInfo );
return HB_GTSUPER_INFO( pGT, iType, pInfo );
}
return TRUE;
}
static int hb_gt_xwc_gfx_Primitive( int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor )
static int hb_gt_xwc_gfx_Primitive( PHB_GT pGT, int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor )
{
PXWND_DEF wnd;
int iRet = 1;
XColor color;
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_xwc_gfx_Primitive(%d, %d, %d, %d, %d, %d)", iType, iTop, iLeft, iBottom, iRight, iColor ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_xwc_gfx_Primitive(%p,%d,%d,%d,%d,%d,%d)", pGT, iType, iTop, iLeft, iBottom, iRight, iColor ) );
hb_gt_xwc_Initialize( s_wnd );
hb_gt_Refresh();
wnd = HB_GTXWC_GET( pGT );
hb_gt_xwc_Initialize( wnd );
HB_GTSELF_REFRESH( pGT );
switch( iType )
{
@@ -3783,32 +3837,32 @@ static int hb_gt_xwc_gfx_Primitive( int iType, int iTop, int iLeft, int iBottom,
color.green = iLeft * 256;
color.blue = iBottom * 256;
color.flags = DoRed | DoGreen | DoBlue;
hb_gt_xwc_AllocColor( s_wnd, &color );
hb_gt_xwc_AllocColor( wnd, &color );
iRet = color.pixel;
break;
case GFX_CLIPTOP:
iRet = s_wnd->ClipRect.y;
iRet = wnd->ClipRect.y;
break;
case GFX_CLIPLEFT:
iRet = s_wnd->ClipRect.x;
iRet = wnd->ClipRect.x;
break;
case GFX_CLIPBOTTOM:
iRet = s_wnd->ClipRect.y + s_wnd->ClipRect.height - 1;
iRet = wnd->ClipRect.y + wnd->ClipRect.height - 1;
break;
case GFX_CLIPRIGHT:
iRet = s_wnd->ClipRect.x + s_wnd->ClipRect.width - 1;
iRet = wnd->ClipRect.x + wnd->ClipRect.width - 1;
break;
case GFX_SETCLIP:
s_wnd->ClipRect.y = iTop;
s_wnd->ClipRect.x = iLeft;
s_wnd->ClipRect.width = iBottom;
s_wnd->ClipRect.height = iRight;
XSetClipRectangles( s_wnd->dpy, s_wnd->gc, 0, 0, &s_wnd->ClipRect, 1, YXBanded );
wnd->ClipRect.y = iTop;
wnd->ClipRect.x = iLeft;
wnd->ClipRect.width = iBottom;
wnd->ClipRect.height = iRight;
XSetClipRectangles( wnd->dpy, wnd->gc, 0, 0, &wnd->ClipRect, 1, YXBanded );
break;
case GFX_DRAWINGMODE:
@@ -3821,76 +3875,76 @@ static int hb_gt_xwc_gfx_Primitive( int iType, int iTop, int iLeft, int iBottom,
break;
case GFX_PUTPIXEL:
XSetForeground( s_wnd->dpy, s_wnd->gc, iBottom );
XDrawPoint( s_wnd->dpy, s_wnd->drw, s_wnd->gc, iLeft, iTop );
hb_gt_xwc_InvalidatePts( s_wnd, iLeft, iTop, iLeft, iTop );
XSetForeground( wnd->dpy, wnd->gc, iBottom );
XDrawPoint( wnd->dpy, wnd->drw, wnd->gc, iLeft, iTop );
hb_gt_xwc_InvalidatePts( wnd, iLeft, iTop, iLeft, iTop );
break;
case GFX_LINE:
XSetForeground( s_wnd->dpy, s_wnd->gc, iColor );
XDrawLine( s_wnd->dpy, s_wnd->drw, s_wnd->gc,
XSetForeground( wnd->dpy, wnd->gc, iColor );
XDrawLine( wnd->dpy, wnd->drw, wnd->gc,
iLeft, iTop, iRight, iBottom );
hb_gt_xwc_InvalidatePts( s_wnd, iLeft, iTop, iRight, iBottom );
hb_gt_xwc_InvalidatePts( wnd, iLeft, iTop, iRight, iBottom );
break;
case GFX_RECT:
XSetForeground( s_wnd->dpy, s_wnd->gc, iColor );
XDrawRectangle( s_wnd->dpy, s_wnd->drw, s_wnd->gc,
XSetForeground( wnd->dpy, wnd->gc, iColor );
XDrawRectangle( wnd->dpy, wnd->drw, wnd->gc,
iLeft, iTop, iRight - iLeft, iBottom - iTop );
hb_gt_xwc_InvalidatePts( s_wnd, iLeft, iTop, iRight, iBottom );
hb_gt_xwc_InvalidatePts( wnd, iLeft, iTop, iRight, iBottom );
break;
case GFX_FILLEDRECT:
XSetForeground( s_wnd->dpy, s_wnd->gc, iColor );
XFillRectangle( s_wnd->dpy, s_wnd->drw, s_wnd->gc,
XSetForeground( wnd->dpy, wnd->gc, iColor );
XFillRectangle( wnd->dpy, wnd->drw, wnd->gc,
iLeft, iTop, iRight - iLeft, iBottom - iTop );
hb_gt_xwc_InvalidatePts( s_wnd, iLeft, iTop, iRight, iBottom );
hb_gt_xwc_InvalidatePts( wnd, iLeft, iTop, iRight, iBottom );
break;
case GFX_CIRCLE:
XSetForeground( s_wnd->dpy, s_wnd->gc, iRight );
XDrawArc( s_wnd->dpy, s_wnd->drw, s_wnd->gc,
XSetForeground( wnd->dpy, wnd->gc, iRight );
XDrawArc( wnd->dpy, wnd->drw, wnd->gc,
iLeft, iTop, iBottom, iBottom, 0, 360*64 );
hb_gt_xwc_InvalidatePts( s_wnd, iLeft - iBottom, iTop - iBottom,
iLeft + iBottom, iTop + iBottom );
hb_gt_xwc_InvalidatePts( wnd, iLeft - iBottom, iTop - iBottom,
iLeft + iBottom, iTop + iBottom );
break;
case GFX_FILLEDCIRCLE:
XSetForeground( s_wnd->dpy, s_wnd->gc, iRight );
XFillArc( s_wnd->dpy, s_wnd->drw, s_wnd->gc,
XSetForeground( wnd->dpy, wnd->gc, iRight );
XFillArc( wnd->dpy, wnd->drw, wnd->gc,
iLeft, iTop, iBottom, iBottom, 0, 360*64 );
hb_gt_xwc_InvalidatePts( s_wnd, iLeft - iBottom, iTop - iBottom,
iLeft + iBottom, iTop + iBottom );
hb_gt_xwc_InvalidatePts( wnd, iLeft - iBottom, iTop - iBottom,
iLeft + iBottom, iTop + iBottom );
break;
case GFX_ELLIPSE:
XSetForeground( s_wnd->dpy, s_wnd->gc, iColor );
XDrawArc( s_wnd->dpy, s_wnd->drw, s_wnd->gc,
XSetForeground( wnd->dpy, wnd->gc, iColor );
XDrawArc( wnd->dpy, wnd->drw, wnd->gc,
iLeft, iTop, iRight, iBottom, 0, 360*64 );
hb_gt_xwc_InvalidatePts( s_wnd, iLeft - iRight, iTop - iBottom,
iLeft + iRight, iTop + iBottom );
hb_gt_xwc_InvalidatePts( wnd, iLeft - iRight, iTop - iBottom,
iLeft + iRight, iTop + iBottom );
break;
case GFX_FILLEDELLIPSE:
XSetForeground( s_wnd->dpy, s_wnd->gc, iColor );
XFillArc( s_wnd->dpy, s_wnd->drw, s_wnd->gc,
XSetForeground( wnd->dpy, wnd->gc, iColor );
XFillArc( wnd->dpy, wnd->drw, wnd->gc,
iLeft, iTop, iRight, iBottom, 0, 360*64 );
hb_gt_xwc_InvalidatePts( s_wnd, iLeft - iRight, iTop - iBottom,
iLeft + iRight, iTop + iBottom );
hb_gt_xwc_InvalidatePts( wnd, iLeft - iRight, iTop - iBottom,
iLeft + iRight, iTop + iBottom );
break;
case GFX_FLOODFILL:
/* TODO: */
hb_gt_xwc_InvalidatePts( s_wnd, 0, 0, s_wnd->width, s_wnd->height );
hb_gt_xwc_InvalidatePts( wnd, 0, 0, wnd->width, wnd->height );
break;
default:
return HB_GTSUPER_GFXPRIMITIVE( iType, iTop, iLeft, iBottom, iRight, iColor );
return HB_GTSUPER_GFXPRIMITIVE( pGT, iType, iTop, iLeft, iBottom, iRight, iColor );
}
if ( hb_gt_DispCount() == 0 )
if ( HB_GTSELF_DISPCOUNT( pGT ) == 0 )
{
hb_gt_xwc_RealRefresh();
hb_gt_xwc_RealRefresh( wnd );
}
return iRet;
@@ -3898,64 +3952,70 @@ static int hb_gt_xwc_gfx_Primitive( int iType, int iTop, int iLeft, int iBottom,
/* *********************************************************************** */
static void hb_gt_xwc_Redraw( int iRow, int iCol, int iSize )
static void hb_gt_xwc_Redraw( PHB_GT pGT, int iRow, int iCol, int iSize )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_xwc_Redraw(%d, %d, %d)", iRow, iCol, iSize ) );
PXWND_DEF wnd;
if( s_wnd && !s_fNoXServer )
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_xwc_Redraw(%p,%d,%d,%d)", pGT, iRow, iCol, iSize ) );
wnd = HB_GTXWC_GET( pGT );
if( wnd && !s_fNoXServer )
{
if( s_wnd->fInit )
if( wnd->fInit )
{
#if 1
hb_gt_xwc_InvalidateChar( s_wnd, iCol, iRow, iCol + iSize - 1, iRow );
hb_gt_xwc_InvalidateChar( wnd, iCol, iRow, iCol + iSize - 1, iRow );
#else
hb_gt_xwc_RepaintChar( s_wnd, iCol, iRow, iCol + iSize - 1, iRow );
iCol *= s_wnd->fontWidth;
iRow *= s_wnd->fontHeight;
hb_gt_xwc_InvalidatePts( s_wnd, iCol, iRow,
iCol + iSize * s_wnd->fontWidth - 1,
iRow + s_wnd->fontHeight - 1 );
hb_gt_xwc_RepaintChar( wnd, iCol, iRow, iCol + iSize - 1, iRow );
iCol *= wnd->fontWidth;
iRow *= wnd->fontHeight;
hb_gt_xwc_InvalidatePts( wnd, iCol, iRow,
iCol + iSize * wnd->fontWidth - 1,
iRow + wnd->fontHeight - 1 );
#endif
}
#if 0
else if( !s_wnd->fData )
else if( !wnd->fData )
{
BYTE bDefColor = hb_gt_GetColor();
BYTE bDefColor = HB_GTSELF_GETCOLOR( pGT );
BYTE bColor, bAttr;
USHORT usChar;
while( iSize-- )
{
if( !hb_gt_GetScrChar( iRow, iCol++, &bColor, &bAttr, &usChar ) )
if( !HB_GTSELF_GETSCRCHAR( pGT, iRow, iCol++, &bColor, &bAttr, &usChar ) )
break;
if( bColor != bDefColor || usChar != ' ' )
{
s_wnd->fData = TRUE;
wnd->fData = TRUE;
break;
}
}
}
#else
else
s_wnd->fData = TRUE;
wnd->fData = TRUE;
#endif
}
}
/* *********************************************************************** */
static void hb_gt_xwc_Refresh( void )
static void hb_gt_xwc_Refresh( PHB_GT pGT )
{
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_xwc_Refresh()") );
PXWND_DEF wnd;
HB_GTSUPER_REFRESH();
HB_TRACE( HB_TR_DEBUG, ( "hb_gt_xwc_Refresh(%p)", pGT) );
if( s_wnd && !s_fNoXServer )
wnd = HB_GTXWC_GET( pGT );
HB_GTSUPER_REFRESH( pGT );
if( wnd && !s_fNoXServer )
{
hb_gt_GetScrCursor( &s_wnd->row, &s_wnd->col, &s_wnd->cursorType );
HB_GTSELF_GETSCRCURSOR( pGT, &wnd->row, &wnd->col, &wnd->cursorType );
if( s_wnd->fInit || s_wnd->fData )
hb_gt_xwc_RealRefresh();
if( wnd->fInit || wnd->fData )
hb_gt_xwc_RealRefresh( wnd );
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -54,58 +54,86 @@
HB_EXPORT int hb_inkey( BOOL fWait, double dSeconds, int iEventMask )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_inkey(%d, %f, %d)", (int) fWait, dSeconds, iEventMask));
return hb_inkey_Get( fWait, dSeconds, iEventMask );
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_INKEYGET( pGT, fWait, dSeconds, iEventMask ) : 0;
}
HB_EXPORT void hb_inkeyPut( int iKey )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_inkeyPut(%d)", iKey));
hb_inkey_Put( iKey );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_INKEYPUT( pGT, iKey );
}
HB_EXPORT int hb_inkeyLast( int iEventMask )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_inkeyLast(%d)", iEventMask));
return hb_inkey_Last( iEventMask );
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_INKEYLAST( pGT, iEventMask ) : 0;
}
HB_EXPORT int hb_inkeyNext( int iEventMask )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_inkeyNext(%d)", iEventMask));
return hb_inkey_Next( iEventMask );
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_INKEYNEXT( pGT, iEventMask ) : 0;
}
HB_EXPORT void hb_inkeyPoll( void )
{
PHB_GT pGT;
HB_TRACE( HB_TR_DEBUG, ("hb_inkeyPoll()") );
hb_inkey_Poll();
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_INKEYPOLL( pGT );
}
HB_EXPORT int hb_inkeySetLast( int iKey )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_inkeySetLast(%d)", iKey));
return hb_inkey_SetLast( iKey );
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_INKEYSETLAST( pGT, iKey ) : 0;
}
HB_EXPORT void hb_inkeySetText( const char * szText, ULONG ulLen )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_inkeySetText(%s,%lu)", szText, ulLen));
hb_inkey_SetText( szText, ulLen );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_INKEYSETTEXT( pGT, szText, ulLen );
}
HB_EXPORT void hb_inkeyReset( void )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_inkeyReset()"));
hb_inkey_Reset();
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_INKEYRESET( pGT );
}
HB_EXPORT void hb_inkeySetCancelKeys( int iCancelKey, int iCancelKeyEx )

View File

@@ -72,133 +72,198 @@
HB_EXPORT BOOL hb_mouseIsPresent( void )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseIsPresent()"));
return hb_mouse_IsPresent();
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSEISPRESENT( pGT ) : FALSE;
}
HB_EXPORT BOOL hb_mouseGetCursor( void )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseGetCursor()"));
return hb_mouse_GetCursor();
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSEGETCURSOR( pGT ) : FALSE;
}
HB_EXPORT void hb_mouseSetCursor( BOOL fVisible )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseSetCursor(%d)", (int) fVisible));
hb_mouse_SetCursor( fVisible );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_MOUSESETCURSOR( pGT, fVisible );
}
HB_EXPORT int hb_mouseCol( void )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseCol()"));
return hb_mouse_Col();
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSECOL( pGT ) : 0;
}
HB_EXPORT int hb_mouseRow( void )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseRow()"));
return hb_mouse_Row();
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSEROW( pGT ) : 0;
}
HB_EXPORT void hb_mouseGetPos( int * piRow, int * piCol )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseSetPos(%p, %p)", piRow, piCol));
hb_mouse_GetPos( piRow, piCol );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_MOUSEGETPOS( pGT, piRow, piCol );
}
HB_EXPORT void hb_mouseSetPos( int iRow, int iCol )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseSetPos(%d, %d)", iRow, iCol));
hb_mouse_SetPos( iRow, iCol );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_MOUSESETPOS( pGT, iRow, iCol );
}
HB_EXPORT void hb_mouseSetBounds( int iTop, int iLeft, int iBottom, int iRight )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseSetBounds(%d, %d, %d, %d)", iTop, iLeft, iBottom, iRight));
hb_mouse_SetBounds( iTop, iLeft, iBottom, iRight );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_MOUSESETBOUNDS( pGT, iTop, iLeft, iBottom, iRight );
}
HB_EXPORT void hb_mouseGetBounds( int * piTop, int * piLeft, int * piBottom, int * piRight )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseSetBounds(%p, %p, %p, %p)", piTop, piLeft, piBottom, piRight));
hb_mouse_GetBounds( piTop, piLeft, piBottom, piRight );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_MOUSEGETBOUNDS( pGT, piTop, piLeft, piBottom, piRight );
}
HB_EXPORT int hb_mouseStorageSize( void )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseStorageSize()"));
return hb_mouse_StorageSize();
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSESTORAGESIZE( pGT ) : 0;
}
HB_EXPORT void hb_mouseSaveState( BYTE * pBuffer )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseSaveState(%p)", pBuffer));
hb_mouse_SaveState( pBuffer );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_MOUSESAVESTATE( pGT, pBuffer );
}
HB_EXPORT void hb_mouseRestoreState( BYTE * pBuffer )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseRestoreState(%p)", pBuffer));
hb_mouse_RestoreState( pBuffer );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_MOUSERESTORESTATE( pGT, pBuffer );
}
HB_EXPORT int hb_mouseGetDoubleClickSpeed( void )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseGetDoubleClickSpeed()"));
return hb_mouse_GetDoubleClickSpeed();
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSEGETDOUBLECLICKSPEED( pGT ) : 0;
}
HB_EXPORT void hb_mouseSetDoubleClickSpeed( int iSpeed )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseSetDoubleClickSpeed(%d)", iSpeed));
hb_mouse_SetDoubleClickSpeed( iSpeed );
pGT = hb_gt_Base();
if( pGT )
HB_GTSELF_MOUSESETDOUBLECLICKSPEED( pGT, iSpeed );
}
HB_EXPORT int hb_mouseCountButton( void )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseCountButton()"));
return hb_mouse_CountButton();
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSECOUNTBUTTON( pGT ) : 0;
}
HB_EXPORT BOOL hb_mouseButtonState( int iButton )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseButtonState(%d)", iButton));
return hb_mouse_ButtonState( iButton );
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSEBUTTONSTATE( pGT, iButton ) : FALSE;
}
HB_EXPORT BOOL hb_mouseButtonPressed( int iButton, int * piRow, int * piCol )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseButtonPressed(%d,%p,%p)", iButton, piRow, piCol));
return hb_mouse_ButtonPressed( iButton, piRow, piCol );
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSEBUTTONPRESSED( pGT, iButton, piRow, piCol ) : FALSE;
}
HB_EXPORT BOOL hb_mouseButtonReleased( int iButton, int * piRow, int * piCol )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseButtonReleased(%d,%p,%p)", iButton, piRow, piCol));
return hb_mouse_ButtonReleased( iButton, piRow, piCol );
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSEBUTTONRELEASED( pGT, iButton, piRow, piCol ) : FALSE;
}
HB_EXPORT int hb_mouseReadKey( int iEventMask )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_mouseReadKey(%d)", iEventMask));
return hb_mouse_ReadKey( iEventMask );
pGT = hb_gt_Base();
return pGT ? HB_GTSELF_MOUSEREADKEY( pGT, iEventMask ) : 0;
}