20000311-17:54 GMT+1 Victor Szakats <info@szelvesz.hu>
This commit is contained in:
@@ -1,3 +1,32 @@
|
||||
20000311-17:54 GMT+1 Victor Szakats <info@szelvesz.hu>
|
||||
- include/hbcursor.h
|
||||
- include/hbbox.h
|
||||
* include/hbapigt.h
|
||||
include/Makefile
|
||||
source/rtl/console.c
|
||||
source/rtl/gtapi.c
|
||||
* Two header files merged to the mainstream GT header.
|
||||
! B_* box #defines renamed to _B_* to be CA-Cl*pper compatible.
|
||||
* include/hbapigt.h
|
||||
source/rtl/gt/*.c
|
||||
* Low-level hb_gt_SetPos(), hb_gt_Row(), hb_gt_Col() uses SHORT instead
|
||||
of USHORT, to be in sync with the GT API.
|
||||
WARNING! Please test the different API drivers. GTWIN was the only
|
||||
one tested.
|
||||
* source/rtl/console.c
|
||||
source/rtl/gt/gtstd.c
|
||||
* hb_setpos() removed, non-GT API functionality moved to gtstd.c, all
|
||||
hb_setpos() calls changed to hb_gtSetPos().
|
||||
* source/rtl/console.c
|
||||
% QOUT() small optim., variable scope adjusted.
|
||||
! __EJECT() fixed to always reset PROW() and PCOL()
|
||||
+ TOFIX added for __EJECT() since in Clipper it always prints a eject,
|
||||
regardless of the SET DEVICE setting.
|
||||
% SAVESCREEN() optimized.
|
||||
! RESTSCREEM() fixed to check the fifth parameter, like in CA-Cl*pper.
|
||||
* source/rtl/console.c
|
||||
% hb_gtSetPos() small optim.
|
||||
|
||||
20000311-19:16 GMT+3 Alexander Kresin
|
||||
+ contrib/rdd_ads/make_vc.bat
|
||||
+ contrib/rdd_ads/makefile.vc
|
||||
|
||||
@@ -15,9 +15,7 @@ C_HEADERS=\
|
||||
hbapilng.h \
|
||||
hbapimou.h \
|
||||
hbapirdd.h \
|
||||
hbbox.h \
|
||||
hbcomp.h \
|
||||
hbcursor.h \
|
||||
hbdate.h \
|
||||
hbdefs.h \
|
||||
hberrors.h \
|
||||
|
||||
@@ -37,9 +37,8 @@
|
||||
#define HB_APIGT_H_
|
||||
|
||||
#include "hbapi.h"
|
||||
|
||||
#include "color.ch"
|
||||
#include "hbcursor.h"
|
||||
#include "hbbox.h"
|
||||
|
||||
/* NOTE: The declaration of hb_gtSetPos(), hb_gtGetPos(), hb_gtWrite(),
|
||||
hb_gtWriteAt(), hb_gtRepChar() differs in parameter types from the
|
||||
@@ -48,6 +47,24 @@
|
||||
/* maximum length of color string */
|
||||
#define CLR_STRLEN 64
|
||||
|
||||
/* strings for borders (same as box.ch, but defined for use by C) */
|
||||
/*01234567*/
|
||||
#define _B_SINGLE "谀砍倌莱"
|
||||
#define _B_DOUBLE "赏缓纪群"
|
||||
#define _B_SINGLE_DOUBLE "帜泛侥雍"
|
||||
#define _B_DOUBLE_SINGLE "胀赋就猿"
|
||||
|
||||
/* Cursor style constants */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SC_NONE = 0, /* None */
|
||||
SC_NORMAL = 1, /* Underline */
|
||||
SC_INSERT = 2, /* Lower half block */
|
||||
SC_SPECIAL1 = 3, /* Full block */
|
||||
SC_SPECIAL2 = 4 /* Upper half block */
|
||||
} HB_cursor_enum;
|
||||
|
||||
/* Public interface. These should never change, only be added to. */
|
||||
|
||||
extern void hb_gtInit( void );
|
||||
@@ -94,9 +111,9 @@ extern void hb_gt_Done( void );
|
||||
extern int hb_gt_ReadKey( void );
|
||||
extern USHORT hb_gt_GetScreenWidth( void );
|
||||
extern USHORT hb_gt_GetScreenHeight( void );
|
||||
extern void hb_gt_SetPos( USHORT uiRow, USHORT uiCol );
|
||||
extern USHORT hb_gt_Col( void );
|
||||
extern USHORT hb_gt_Row( void );
|
||||
extern void hb_gt_SetPos( SHORT iRow, SHORT iCol );
|
||||
extern SHORT hb_gt_Col( void );
|
||||
extern SHORT hb_gt_Row( void );
|
||||
extern void hb_gt_Scroll( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight, BYTE byAttr, SHORT iRows, SHORT iCols );
|
||||
extern void hb_gt_SetCursorStyle( USHORT uiCursorShape );
|
||||
extern USHORT hb_gt_GetCursorStyle( void );
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
* Header file for box drawing
|
||||
*
|
||||
* Copyright 1999 {list of individual authors and e-mail addresses}
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version, with one exception:
|
||||
*
|
||||
* The exception is that if you link the Harbour Runtime Library (HRL)
|
||||
* and/or the Harbour Virtual Machine (HVM) with other files to produce
|
||||
* an executable, this does not by itself cause the resulting executable
|
||||
* to be covered by the GNU General Public License. Your use of that
|
||||
* executable is in no way restricted on account of linking the HRL
|
||||
* and/or HVM code into it.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
|
||||
* their web site at http://www.gnu.org/).
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef HB_BOX_H_
|
||||
#define HB_BOX_H_
|
||||
|
||||
/* strings for borders (same as box.ch, but defined for use by C) */
|
||||
/*01234567*/
|
||||
#define B_NONE " "
|
||||
#define B_SINGLE "ÚÄ¿³ÙÄÀ³"
|
||||
#define B_DOUBLE "ÉÍ»º¼ÍȺ"
|
||||
#define B_SINGLE_DOUBLE "ÖÄ·º½ÄÓº"
|
||||
#define B_DOUBLE_SINGLE "Õ͸³¾ÍÔ³"
|
||||
#define B_THIN "ÛßÛÛÛÜÛÛ"
|
||||
#define B_FAT "ÛÛÛÛÛÛÛÛ"
|
||||
|
||||
#endif /* HB_BOX_H_ */
|
||||
@@ -1,48 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
* Header file for the Cursor style constants
|
||||
*
|
||||
* Copyright 1999 David G. Holm <dholm@jsd-llc.com>
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version, with one exception:
|
||||
*
|
||||
* The exception is that if you link the Harbour Runtime Library (HRL)
|
||||
* and/or the Harbour Virtual Machine (HVM) with other files to produce
|
||||
* an executable, this does not by itself cause the resulting executable
|
||||
* to be covered by the GNU General Public License. Your use of that
|
||||
* executable is in no way restricted on account of linking the HRL
|
||||
* and/or HVM code into it.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
|
||||
* their web site at http://www.gnu.org/).
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef HB_CURSOR_H_
|
||||
#define HB_CURSOR_H_
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SC_NONE = 0, /* None */
|
||||
SC_NORMAL = 1, /* Underline */
|
||||
SC_INSERT = 2, /* Lower half block */
|
||||
SC_SPECIAL1 = 3, /* Full block */
|
||||
SC_SPECIAL2 = 4 /* Upper half block */
|
||||
} HB_cursor_enum;
|
||||
|
||||
#endif /* HB_CURSOR_H_ */
|
||||
@@ -44,7 +44,7 @@
|
||||
* adjust_pos(), hb_altout(), hb_devout(), HB_DEVOUT(), hb_devpos(),
|
||||
* HB_DEVPOS(), hb_dispout(), HB___EJECT(), HB_MAXCOL(),
|
||||
* HB_MAXROW(), hb_out(), hb_outerr(), HB_OUTERR(),
|
||||
* hb_outstd(), HB_OUTSTD(), HB_PCOL(), HB_PROW(), hb_setpos(),
|
||||
* hb_outstd(), HB_OUTSTD(), HB_PCOL(), HB_PROW(),
|
||||
* HB_SETPOS(), HB_SETPRC(), HB_SCROLL(), and hb_consoleInitialize()
|
||||
*
|
||||
* Copyright 1999 Victor Szakats <info@szelvesz.hu>
|
||||
@@ -409,41 +409,6 @@ static void hb_dispout( char * pStr, ULONG ulLen )
|
||||
#endif
|
||||
}
|
||||
|
||||
void hb_setpos( SHORT row, SHORT col )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_setpos(%hd, %hd)", row, col));
|
||||
|
||||
#ifndef HARBOUR_USE_GTAPI
|
||||
{
|
||||
SHORT iCount;
|
||||
/* TOFIX: Violation of API calling rules! */
|
||||
SHORT iDevRow = hb_gt_Row();
|
||||
SHORT iDevCol = hb_gt_Col();
|
||||
|
||||
if( row < iDevRow || col < iDevCol )
|
||||
{
|
||||
fputs( s_szCrLf, stdout );
|
||||
iDevCol = 0;
|
||||
iDevRow++;
|
||||
}
|
||||
else if( row > iDevRow )
|
||||
iDevCol = 0;
|
||||
|
||||
for( iCount = iDevRow; iCount < row; iCount++ )
|
||||
fputs( s_szCrLf, stdout );
|
||||
for( iCount = iDevCol; iCount < col; iCount++ )
|
||||
fputc( ' ', stdout );
|
||||
|
||||
fflush( stdout );
|
||||
|
||||
row = iDevRow;
|
||||
col = iDevCol;
|
||||
}
|
||||
#endif
|
||||
|
||||
hb_gtSetPos( row, col );
|
||||
}
|
||||
|
||||
void hb_devpos( SHORT row, SHORT col )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_devpos(%hd, %hd)", row, col));
|
||||
@@ -454,6 +419,7 @@ void hb_devpos( SHORT row, SHORT col )
|
||||
{
|
||||
USHORT uiCount, uiProw = ( USHORT ) row, uiPcol = ( USHORT ) col;
|
||||
USHORT user_ferror = hb_fsError(); /* Save current user file error code */
|
||||
|
||||
if( uiProw < s_uiPRow )
|
||||
{
|
||||
hb_fsWrite( hb_set.hb_set_printhan, ( BYTE * ) "\x0C\x0D", 2 );
|
||||
@@ -474,12 +440,27 @@ void hb_devpos( SHORT row, SHORT col )
|
||||
hb_fsSetError( user_ferror ); /* Restore last user file error code */
|
||||
}
|
||||
else
|
||||
hb_setpos( row, col );
|
||||
hb_gtSetPos( row, col );
|
||||
}
|
||||
|
||||
/* NOTE: This should be placed after the hb_devpos() definition. */
|
||||
|
||||
HARBOUR HB_DEVPOS( void ) /* Sets the screen and/or printer position */
|
||||
{
|
||||
if( ISNUM( 1 ) && ISNUM( 2 ) )
|
||||
hb_devpos( hb_parni( 1 ), hb_parni( 2 ) );
|
||||
}
|
||||
|
||||
HARBOUR HB_SETPOS( void ) /* Sets the screen position */
|
||||
{
|
||||
if( ISNUM( 1 ) && ISNUM( 2 ) )
|
||||
hb_gtSetPos( hb_parni( 1 ), hb_parni( 2 ) );
|
||||
}
|
||||
|
||||
HARBOUR HB_OUTSTD( void ) /* writes a list of values to the standard output device */
|
||||
{
|
||||
USHORT uiParam, uiPCount = hb_pcount();
|
||||
USHORT uiPCount = hb_pcount();
|
||||
USHORT uiParam;
|
||||
|
||||
for( uiParam = 1; uiParam <= uiPCount; uiParam++ )
|
||||
{
|
||||
@@ -491,7 +472,8 @@ HARBOUR HB_OUTSTD( void ) /* writes a list of values to the standard output devi
|
||||
|
||||
HARBOUR HB_OUTERR( void ) /* writes a list of values to the standard error device */
|
||||
{
|
||||
USHORT uiParam, uiPCount = hb_pcount();
|
||||
USHORT uiPCount = hb_pcount();
|
||||
USHORT uiParam;
|
||||
|
||||
for( uiParam = 1; uiParam <= uiPCount; uiParam++ )
|
||||
{
|
||||
@@ -503,7 +485,8 @@ HARBOUR HB_OUTERR( void ) /* writes a list of values to the standard error devic
|
||||
|
||||
HARBOUR HB_QQOUT( void ) /* writes a list of values to the current device (screen or printer) and is affected by SET ALTERNATE */
|
||||
{
|
||||
USHORT uiParam, uiPCount = hb_pcount();
|
||||
USHORT uiPCount = hb_pcount();
|
||||
USHORT uiParam;
|
||||
|
||||
for( uiParam = 1; uiParam <= uiPCount; uiParam++ )
|
||||
{
|
||||
@@ -515,30 +498,24 @@ HARBOUR HB_QQOUT( void ) /* writes a list of values to the current device (scree
|
||||
|
||||
HARBOUR HB_QOUT( void )
|
||||
{
|
||||
USHORT uiCount;
|
||||
|
||||
hb_altout( s_szCrLf, CRLF_BUFFER_LEN - 1 );
|
||||
|
||||
if( hb_set.HB_SET_PRINTER && hb_set.hb_set_printhan != FS_ERROR )
|
||||
{
|
||||
USHORT user_ferror = hb_fsError(); /* Save current user file error code */
|
||||
USHORT uiCount;
|
||||
|
||||
s_uiPRow++;
|
||||
s_uiPCol = hb_set.HB_SET_MARGIN;
|
||||
uiCount = s_uiPCol;
|
||||
uiCount = s_uiPCol = hb_set.HB_SET_MARGIN;
|
||||
while( uiCount-- > 0 )
|
||||
hb_fsWrite( hb_set.hb_set_printhan, ( BYTE * ) " ", 1 );
|
||||
|
||||
hb_fsSetError( user_ferror ); /* Restore last user file error code */
|
||||
}
|
||||
|
||||
HB_QQOUT();
|
||||
}
|
||||
|
||||
HARBOUR HB_SETPOS( void ) /* Sets the screen position */
|
||||
{
|
||||
if( ISNUM( 1 ) && ISNUM( 2 ) )
|
||||
hb_setpos( hb_parni( 1 ), hb_parni( 2 ) );
|
||||
}
|
||||
|
||||
/* Move the screen position to the right by one column */
|
||||
HARBOUR HB_SETPOSBS( void )
|
||||
{
|
||||
@@ -550,12 +527,6 @@ HARBOUR HB_SETPOSBS( void )
|
||||
hb_gtSetPos( iRow, iCol + 1 );
|
||||
}
|
||||
|
||||
HARBOUR HB_DEVPOS( void ) /* Sets the screen and/or printer position */
|
||||
{
|
||||
if( ISNUM( 1 ) && ISNUM( 2 ) )
|
||||
hb_devpos( hb_parni( 1 ), hb_parni( 2 ) );
|
||||
}
|
||||
|
||||
HARBOUR HB_DEVOUT( void ) /* writes a single value to the current device (screen or printer), but is not affected by SET ALTERNATE */
|
||||
{
|
||||
if( hb_pcount() >= 1 )
|
||||
@@ -603,7 +574,7 @@ HARBOUR HB_DISPOUTAT( void ) /* writes a single value to the screen at speficic
|
||||
if( hb_pcount() >= 3 )
|
||||
{
|
||||
/* NOTE: Clipper does no checks here. [vszakats] */
|
||||
hb_setpos( hb_parni( 1 ), hb_parni( 2 ) );
|
||||
hb_gtSetPos( hb_parni( 1 ), hb_parni( 2 ) );
|
||||
|
||||
if( ISCHAR( 4 ) )
|
||||
{
|
||||
@@ -621,15 +592,18 @@ HARBOUR HB_DISPOUTAT( void ) /* writes a single value to the screen at speficic
|
||||
}
|
||||
}
|
||||
|
||||
/* TOFIX: CA-Cl*pper will print an eject even if SET DEVICE=SCREEN */
|
||||
|
||||
HARBOUR HB___EJECT( void ) /* Ejects the current page from the printer */
|
||||
{
|
||||
if( hb_stricmp( hb_set.HB_SET_DEVICE, "PRINTER" ) == 0 && hb_set.hb_set_printhan != FS_ERROR )
|
||||
{
|
||||
USHORT user_ferror = hb_fsError(); /* Save current user file error code */
|
||||
hb_fsWrite( hb_set.hb_set_printhan, ( BYTE * ) "\x0C\x0D", 2 );
|
||||
s_uiPRow = s_uiPCol = 0;
|
||||
hb_fsSetError( user_ferror ); /* Restore last user file error code */
|
||||
}
|
||||
|
||||
s_uiPRow = s_uiPCol = 0;
|
||||
}
|
||||
|
||||
HARBOUR HB_PROW( void ) /* Returns the current printer row position */
|
||||
@@ -738,12 +712,12 @@ HARBOUR HB_DISPBOX( void )
|
||||
#else
|
||||
if( ISNUM( 1 ) && ISNUM( 2 ) && ISNUM( 3 ) && ISNUM( 4 ) )
|
||||
{
|
||||
char * szBorderStyle = B_SINGLE;
|
||||
char * szBorderStyle = _B_SINGLE;
|
||||
int i_top = hb_parni( 1 );
|
||||
int i_left = hb_parni( 2 );
|
||||
int i_bottom = hb_parni( 3 );
|
||||
int i_right = hb_parni( 4 );
|
||||
USHORT top, left, bottom, right, size = strlen( B_SINGLE );
|
||||
USHORT top, left, bottom, right, size = strlen( _B_SINGLE );
|
||||
USHORT row, col, width, height;
|
||||
char Borders[ 9 ];
|
||||
|
||||
@@ -786,16 +760,16 @@ HARBOUR HB_DISPBOX( void )
|
||||
switch( hb_parni( 5 ) )
|
||||
{
|
||||
case 2:
|
||||
szBorderStyle = B_DOUBLE;
|
||||
szBorderStyle = _B_DOUBLE;
|
||||
break;
|
||||
case 3:
|
||||
szBorderStyle = B_SINGLE_DOUBLE;
|
||||
szBorderStyle = _B_SINGLE_DOUBLE;
|
||||
break;
|
||||
case 4:
|
||||
szBorderStyle = B_DOUBLE_SINGLE;
|
||||
szBorderStyle = _B_DOUBLE_SINGLE;
|
||||
break;
|
||||
default:
|
||||
szBorderStyle = B_SINGLE;
|
||||
szBorderStyle = _B_SINGLE;
|
||||
}
|
||||
size = strlen( szBorderStyle );
|
||||
}
|
||||
@@ -820,7 +794,7 @@ HARBOUR HB_DISPBOX( void )
|
||||
Borders[ 8 ] = ' ';
|
||||
|
||||
/* Draw the box */
|
||||
hb_setpos( top, left );
|
||||
hb_gtSetPos( top, left );
|
||||
if( height > 1 && width > 1 )
|
||||
fputc( Borders[ 0 ], stdout ); /* Upper left corner */
|
||||
for( col = ( height > 1 ? left + 1 : left ); col < ( height > 1 ? right : right + 1 ); col++ )
|
||||
@@ -829,7 +803,7 @@ HARBOUR HB_DISPBOX( void )
|
||||
fputc( Borders[ 2 ], stdout ); /* Upper right corner */
|
||||
for( row = ( height > 1 ? top + 1 : top ); row < ( width > 1 ? bottom : bottom + 1 ); row++ )
|
||||
{
|
||||
hb_setpos( row, left );
|
||||
hb_gtSetPos( row, left );
|
||||
if( height > 1 )
|
||||
fputc( Borders[ 3 ], stdout ); /* Left side */
|
||||
if( height > 1 && width > 1 ) for( col = left + 1; col < right; col++ )
|
||||
@@ -839,7 +813,7 @@ HARBOUR HB_DISPBOX( void )
|
||||
}
|
||||
if( height > 1 && width > 1 )
|
||||
{
|
||||
hb_setpos( bottom, left );
|
||||
hb_gtSetPos( bottom, left );
|
||||
col = left;
|
||||
fputc( Borders[ 6 ], stdout ); /* Bottom left corner */
|
||||
for( col = left + 1; col < right; col++ )
|
||||
@@ -847,7 +821,7 @@ HARBOUR HB_DISPBOX( void )
|
||||
fputc( Borders[ 4 ], stdout ); /* Bottom right corner */
|
||||
}
|
||||
fflush( stdout );
|
||||
hb_setpos( bottom + 1, right + 1 );
|
||||
hb_gtSetPos( bottom + 1, right + 1 );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -901,14 +875,10 @@ HARBOUR HB_SAVESCREEN( void )
|
||||
USHORT uiCoords[ 4 ];
|
||||
void * pBuffer;
|
||||
|
||||
uiCoords[ 0 ] = 0;
|
||||
uiCoords[ 1 ] = 0;
|
||||
uiCoords[ 2 ] = hb_gtMaxRow();
|
||||
uiCoords[ 3 ] = hb_gtMaxCol();
|
||||
|
||||
for( uiX = 1; uiX <= 4; uiX++ )
|
||||
if( ISNUM( uiX ) )
|
||||
uiCoords[ uiX - 1 ] = hb_parni( uiX );
|
||||
uiCoords[ 0 ] = ISNUM( 1 ) ? hb_parni( 1 ) : 0;
|
||||
uiCoords[ 1 ] = ISNUM( 2 ) ? hb_parni( 2 ) : 0;
|
||||
uiCoords[ 2 ] = ISNUM( 3 ) ? hb_parni( 3 ) : hb_gtMaxRow();
|
||||
uiCoords[ 3 ] = ISNUM( 4 ) ? hb_parni( 4 ) : hb_gtMaxCol();
|
||||
|
||||
hb_gtRectSize( uiCoords[ 0 ], uiCoords[ 1 ], uiCoords[ 2 ], uiCoords[ 3 ], &uiX );
|
||||
pBuffer = hb_xgrab( uiX );
|
||||
@@ -919,21 +889,12 @@ HARBOUR HB_SAVESCREEN( void )
|
||||
|
||||
HARBOUR HB_RESTSCREEN( void )
|
||||
{
|
||||
if( hb_pcount() >= 5 )
|
||||
if( ISCHAR( 5 ) )
|
||||
{
|
||||
USHORT uiX;
|
||||
USHORT uiCoords[ 4 ];
|
||||
|
||||
uiCoords[ 0 ] = 0;
|
||||
uiCoords[ 1 ] = 0;
|
||||
uiCoords[ 2 ] = hb_gtMaxRow();
|
||||
uiCoords[ 3 ] = hb_gtMaxCol();
|
||||
|
||||
for( uiX = 1; uiX < 5; uiX++ )
|
||||
if( ISNUM( uiX ) )
|
||||
uiCoords[ uiX - 1 ] = hb_parni( uiX );
|
||||
|
||||
hb_gtRest( uiCoords[ 0 ], uiCoords[ 1 ], uiCoords[ 2 ], uiCoords[ 3 ],
|
||||
hb_gtRest( ISNUM( 1 ) ? hb_parni( 1 ) : 0,
|
||||
ISNUM( 2 ) ? hb_parni( 2 ) : 0,
|
||||
ISNUM( 3 ) ? hb_parni( 3 ) : hb_gtMaxRow(),
|
||||
ISNUM( 4 ) ? hb_parni( 4 ) : hb_gtMaxCol(),
|
||||
( void * ) hb_parc( 5 ) );
|
||||
}
|
||||
}
|
||||
@@ -1033,16 +994,16 @@ HARBOUR HB_HB_COLORINDEX( void )
|
||||
{
|
||||
if( ISCHAR( 1 ) && ISNUM( 2 ) )
|
||||
{
|
||||
char * szColor = hb_parc( 1 );
|
||||
char * pszColor = hb_parc( 1 );
|
||||
ULONG ulColorPos;
|
||||
ULONG ulColorLen;
|
||||
USHORT uiColorIndex = ( USHORT ) hb_parni( 2 );
|
||||
|
||||
/* Skip the given number of commas */
|
||||
|
||||
for( ulColorPos = 0 ; szColor[ ulColorPos ] != '\0' && uiColorIndex > 0 ; ulColorPos++ )
|
||||
for( ulColorPos = 0 ; pszColor[ ulColorPos ] != '\0' && uiColorIndex > 0 ; ulColorPos++ )
|
||||
{
|
||||
if( szColor[ ulColorPos ] == ',' )
|
||||
if( pszColor[ ulColorPos ] == ',' )
|
||||
uiColorIndex--;
|
||||
}
|
||||
|
||||
@@ -1052,23 +1013,23 @@ HARBOUR HB_HB_COLORINDEX( void )
|
||||
{
|
||||
/* Skip the spaces after the comma */
|
||||
|
||||
while( szColor[ ulColorPos ] == ' ' ) ulColorPos++;
|
||||
while( pszColor[ ulColorPos ] == ' ' ) ulColorPos++;
|
||||
|
||||
/* Search for next comma or end of string */
|
||||
|
||||
ulColorLen = 0;
|
||||
|
||||
while( szColor[ ulColorPos + ulColorLen ] != '\0' &&
|
||||
szColor[ ulColorPos + ulColorLen ] != ',' ) ulColorLen++;
|
||||
while( pszColor[ ulColorPos + ulColorLen ] != '\0' &&
|
||||
pszColor[ ulColorPos + ulColorLen ] != ',' ) ulColorLen++;
|
||||
|
||||
/* Skip the trailing spaces */
|
||||
|
||||
while( ulColorLen > 0 &&
|
||||
szColor[ ulColorPos + ulColorLen - 1 ] == ' ' ) ulColorLen--;
|
||||
pszColor[ ulColorPos + ulColorLen - 1 ] == ' ' ) ulColorLen--;
|
||||
|
||||
/* Return the string */
|
||||
|
||||
hb_retclen( szColor + ulColorPos, ulColorLen );
|
||||
hb_retclen( pszColor + ulColorPos, ulColorLen );
|
||||
}
|
||||
else
|
||||
hb_retc( "" );
|
||||
|
||||
@@ -86,17 +86,17 @@ USHORT hb_gt_GetScreenHeight( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hb_gt_SetPos( USHORT uiRow, USHORT uiCol )
|
||||
void hb_gt_SetPos( SHORT iRow, SHORT iCol )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hu, %hu)", uiRow, uiCol));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hd, %hd)", iRow, iCol));
|
||||
|
||||
/* TODO: How to reposition the cursor? */
|
||||
|
||||
HB_SYMBOL_UNUSED( uiRow );
|
||||
HB_SYMBOL_UNUSED( uiCol );
|
||||
HB_SYMBOL_UNUSED( iRow );
|
||||
HB_SYMBOL_UNUSED( iCol );
|
||||
}
|
||||
|
||||
USHORT hb_gt_Col( void )
|
||||
SHORT hb_gt_Col( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Col()"));
|
||||
|
||||
@@ -104,7 +104,7 @@ USHORT hb_gt_Col( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
USHORT hb_gt_Row( void )
|
||||
SHORT hb_gt_Row( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Row()"));
|
||||
|
||||
|
||||
@@ -44,20 +44,20 @@ static void gt_SetRC(int r, int c);
|
||||
|
||||
void hb_gt_Init( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Init()"));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Init()"));
|
||||
|
||||
initscr();
|
||||
cbreak();
|
||||
noecho();
|
||||
nodelay(stdscr, 1);
|
||||
initscr();
|
||||
cbreak();
|
||||
noecho();
|
||||
nodelay(stdscr, 1);
|
||||
}
|
||||
|
||||
void hb_gt_Done( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Done()"));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Done()"));
|
||||
|
||||
refresh();
|
||||
endwin();
|
||||
refresh();
|
||||
endwin();
|
||||
}
|
||||
|
||||
int hb_gt_ReadKey( void )
|
||||
@@ -76,72 +76,72 @@ int hb_gt_ReadKey( void )
|
||||
|
||||
BOOL hb_gt_IsColor( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_IsColor()"));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_IsColor()"));
|
||||
|
||||
/* TODO: How to detect this? */
|
||||
return TRUE;
|
||||
/* TODO: How to detect this? */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
USHORT hb_gt_GetScreenWidth( void )
|
||||
{
|
||||
int r, c;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetScreenWidth()"));
|
||||
|
||||
gt_GetMaxRC(&r, &c);
|
||||
return c;
|
||||
int r, c;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetScreenWidth()"));
|
||||
|
||||
gt_GetMaxRC(&r, &c);
|
||||
return c;
|
||||
}
|
||||
|
||||
USHORT hb_gt_GetScreenHeight( void )
|
||||
{
|
||||
int r, c;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetScreenHeight()"));
|
||||
|
||||
gt_GetMaxRC(&r, &c);
|
||||
return r;
|
||||
int r, c;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetScreenHeight()"));
|
||||
|
||||
gt_GetMaxRC(&r, &c);
|
||||
return r;
|
||||
}
|
||||
|
||||
void hb_gt_SetPos( USHORT uiRow, USHORT uiCol )
|
||||
void hb_gt_SetPos( SHORT iRow, SHORT iCol )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hu, %hu)", uiRow, uiCol));
|
||||
|
||||
gt_SetRC(uiRow, uiCol);
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hd, %hd)", iRow, iCol));
|
||||
|
||||
gt_SetRC(iRow, iCol);
|
||||
}
|
||||
|
||||
USHORT hb_gt_Col( void )
|
||||
SHORT hb_gt_Col( void )
|
||||
{
|
||||
int r, c;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Col()"));
|
||||
|
||||
gt_GetRC(&r, &c);
|
||||
return c;
|
||||
int r, c;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Col()"));
|
||||
|
||||
gt_GetRC(&r, &c);
|
||||
return c;
|
||||
}
|
||||
|
||||
USHORT hb_gt_Row( void )
|
||||
SHORT hb_gt_Row( void )
|
||||
{
|
||||
int r, c;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Row()"));
|
||||
|
||||
gt_GetRC(&r, &c);
|
||||
return r;
|
||||
int r, c;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Row()"));
|
||||
|
||||
gt_GetRC(&r, &c);
|
||||
return r;
|
||||
}
|
||||
|
||||
USHORT hb_gt_GetCursorStyle( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetCursorStyle()"));
|
||||
|
||||
/* TODO: What shape is the cursor? */
|
||||
return 0;
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetCursorStyle()"));
|
||||
|
||||
/* TODO: What shape is the cursor? */
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hb_gt_SetCursorStyle( USHORT uiStyle )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetCursorStyle(%hu)", uiStyle));
|
||||
|
||||
/* TODO: How to set the cursor shape? */
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetCursorStyle(%hu)", uiStyle));
|
||||
|
||||
/* TODO: How to set the cursor shape? */
|
||||
}
|
||||
|
||||
void hb_gt_Puts( USHORT uiRow,
|
||||
@@ -150,14 +150,13 @@ void hb_gt_Puts( USHORT uiRow,
|
||||
BYTE * pbyStr,
|
||||
ULONG ulLen )
|
||||
{
|
||||
ULONG i;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Puts(%hu, %hu, %d, %p, %lu)", uiRow, uiCol, (int) byAttr, pbyStr, ulLen));
|
||||
|
||||
move(uiRow, uiCol);
|
||||
for (i = 0; i < ulLen; ++i) {
|
||||
addch(pbyStr[i]);
|
||||
}
|
||||
ULONG i;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Puts(%hu, %hu, %d, %p, %lu)", uiRow, uiCol, (int) byAttr, pbyStr, ulLen));
|
||||
|
||||
move( uiRow, uiCol );
|
||||
for( i = 0; i < ulLen; ++i )
|
||||
addch( pbyStr[ i ] );
|
||||
}
|
||||
|
||||
void hb_gt_GetText( USHORT uiTop,
|
||||
@@ -166,9 +165,9 @@ void hb_gt_GetText( USHORT uiTop,
|
||||
USHORT uiRight,
|
||||
BYTE * pbyDst )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetText(%hu, %hu, %hu, %hu, %p)", uiTop, uiLeft, uiBottom, uiRight, pbyDst));
|
||||
|
||||
/* TODO */
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetText(%hu, %hu, %hu, %hu, %p)", uiTop, uiLeft, uiBottom, uiRight, pbyDst));
|
||||
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
void hb_gt_PutText( USHORT uiTop,
|
||||
@@ -177,9 +176,9 @@ void hb_gt_PutText( USHORT uiTop,
|
||||
USHORT uiRight,
|
||||
BYTE * pbySrc )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_PutText(%hu, %hu, %hu, %hu, %p)", uiTop, uiLeft, uiBottom, uiRight, pbySrc));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_PutText(%hu, %hu, %hu, %hu, %p)", uiTop, uiLeft, uiBottom, uiRight, pbySrc));
|
||||
|
||||
/* TODO */
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
void hb_gt_SetAttribute( USHORT uiTop,
|
||||
@@ -188,12 +187,12 @@ void hb_gt_SetAttribute( USHORT uiTop,
|
||||
USHORT uiRight,
|
||||
BYTE byAttr )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetAttribute(%hu, %hu, %hu, %hu, %d)", uiTop, uiLeft, uiBottom, uiRight, (int) byAttr));
|
||||
|
||||
/* TODO: we want to take a screen that is say bright white on blue,
|
||||
and change the attributes only for a section of the screen
|
||||
to white on black.
|
||||
*/
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetAttribute(%hu, %hu, %hu, %hu, %d)", uiTop, uiLeft, uiBottom, uiRight, (int) byAttr));
|
||||
|
||||
/* TODO: we want to take a screen that is say bright white on blue,
|
||||
and change the attributes only for a section of the screen
|
||||
to white on black.
|
||||
*/
|
||||
}
|
||||
|
||||
void hb_gt_Scroll( USHORT uiTop,
|
||||
@@ -204,86 +203,86 @@ void hb_gt_Scroll( USHORT uiTop,
|
||||
SHORT iRows,
|
||||
SHORT iCols )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Scroll(%hu, %hu, %hu, %hu, %d, %hd, %hd)", uiTop, uiLeft, uiBottom, uiRight, (int) byAttr, iRows, iCols));
|
||||
|
||||
/* TODO */
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Scroll(%hu, %hu, %hu, %hu, %d, %hd, %hd)", uiTop, uiLeft, uiBottom, uiRight, (int) byAttr, iRows, iCols));
|
||||
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
void hb_gt_DispBegin( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_DispBegin()"));
|
||||
|
||||
/* TODO: Is there a way to change screen buffers?
|
||||
ie: can we write somewhere without it going to the screen
|
||||
and then update the screen from this buffer at a later time?
|
||||
We will initially want to copy the current screen to this buffer.
|
||||
*/
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_DispBegin()"));
|
||||
|
||||
/* TODO: Is there a way to change screen buffers?
|
||||
ie: can we write somewhere without it going to the screen
|
||||
and then update the screen from this buffer at a later time?
|
||||
We will initially want to copy the current screen to this buffer.
|
||||
*/
|
||||
}
|
||||
|
||||
void hb_gt_DispEnd()
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_DispEnd()"));
|
||||
|
||||
/* TODO: here we flush the buffer, and restore normal screen writes */
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_DispEnd()"));
|
||||
|
||||
/* TODO: here we flush the buffer, and restore normal screen writes */
|
||||
}
|
||||
|
||||
BOOL hb_gt_SetMode( USHORT uiRows, USHORT uiCols )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetMode(%hu, %hu)", uiRows, uiCols));
|
||||
|
||||
/* TODO: How to change the size of the screen? */
|
||||
return TRUE;
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetMode(%hu, %hu)", uiRows, uiCols));
|
||||
|
||||
/* TODO: How to change the size of the screen? */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void hb_gt_Replicate( BYTE byChar, ULONG ulLen )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Replicate(%d, %lu)", (int) byChar, ulLen));
|
||||
|
||||
/* TODO: this will write character c nlength times to the screen.
|
||||
Note that it is not used yet
|
||||
If there is no native function that supports this, it is
|
||||
already handled in a generic way by higher level functions.
|
||||
*/
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Replicate(%d, %lu)", (int) byChar, ulLen));
|
||||
|
||||
/* TODO: this will write character c nlength times to the screen.
|
||||
Note that it is not used yet
|
||||
If there is no native function that supports this, it is
|
||||
already handled in a generic way by higher level functions.
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
BOOL hb_gt_GetBlink()
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetBlink()"));
|
||||
|
||||
/* TODO: under dos, the background 'intensity' bit can be switched
|
||||
from intensity to 'blinking'
|
||||
does this work under your platform?
|
||||
*/
|
||||
return FALSE;
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_GetBlink()"));
|
||||
|
||||
/* TODO: under dos, the background 'intensity' bit can be switched
|
||||
from intensity to 'blinking'
|
||||
does this work under your platform?
|
||||
*/
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void hb_gt_SetBlink( BOOL bBlink )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetBlink(%d)", (int) bBlink));
|
||||
|
||||
/* TODO: set the bit if it's supported */
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetBlink(%d)", (int) bBlink));
|
||||
|
||||
/* TODO: set the bit if it's supported */
|
||||
}
|
||||
|
||||
|
||||
static void gt_GetMaxRC(int* r, int* c)
|
||||
{
|
||||
int y, x;
|
||||
getmaxyx(stdscr, y, x);
|
||||
*r = y;
|
||||
*c = x;
|
||||
int y, x;
|
||||
getmaxyx(stdscr, y, x);
|
||||
*r = y;
|
||||
*c = x;
|
||||
}
|
||||
|
||||
static void gt_GetRC(int* r, int* c)
|
||||
{
|
||||
int y, x;
|
||||
getyx(stdscr, y, x);
|
||||
*r = y;
|
||||
*c = x;
|
||||
int y, x;
|
||||
getyx(stdscr, y, x);
|
||||
*r = y;
|
||||
*c = x;
|
||||
}
|
||||
|
||||
static void gt_SetRC(int r, int c)
|
||||
{
|
||||
move(r, c);
|
||||
refresh();
|
||||
move(r, c);
|
||||
refresh();
|
||||
}
|
||||
|
||||
@@ -264,15 +264,15 @@ USHORT hb_gt_GetScreenHeight( void )
|
||||
#endif
|
||||
}
|
||||
|
||||
void hb_gt_SetPos( USHORT usRow, USHORT usCol )
|
||||
void hb_gt_SetPos( SHORT iRow, SHORT iCol )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hu, %hu)", usRow, usCol));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hd, %hd)", iRow, iCol));
|
||||
|
||||
#if defined(__TURBOC__)
|
||||
{
|
||||
BYTE cRow, cCol;
|
||||
cRow = ( BYTE ) usRow;
|
||||
cCol = ( BYTE ) usCol;
|
||||
cRow = ( BYTE ) iRow;
|
||||
cCol = ( BYTE ) iCol;
|
||||
|
||||
_AH = 0x02;
|
||||
_BH = 0;
|
||||
@@ -285,8 +285,8 @@ void hb_gt_SetPos( USHORT usRow, USHORT usCol )
|
||||
union REGS regs;
|
||||
regs.h.ah = 0x02;
|
||||
regs.h.bh = 0;
|
||||
regs.h.dh = ( BYTE ) usRow;
|
||||
regs.h.dl = ( BYTE ) usCol;
|
||||
regs.h.dh = ( BYTE ) iRow;
|
||||
regs.h.dl = ( BYTE ) iCol;
|
||||
#if defined(__WATCOMC__) && defined(__386__)
|
||||
int386( 0x10, ®s, ®s );
|
||||
#else
|
||||
@@ -578,7 +578,7 @@ void hb_gt_SetAttribute( USHORT usTop, USHORT usLeft, USHORT usBottom, USHORT us
|
||||
}
|
||||
}
|
||||
|
||||
USHORT hb_gt_Col( void )
|
||||
SHORT hb_gt_Col( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Col()"));
|
||||
|
||||
@@ -604,7 +604,7 @@ USHORT hb_gt_Col( void )
|
||||
#endif
|
||||
}
|
||||
|
||||
USHORT hb_gt_Row( void )
|
||||
SHORT hb_gt_Row( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Row()"));
|
||||
|
||||
|
||||
@@ -110,31 +110,31 @@ USHORT hb_gt_GetScreenHeight( void )
|
||||
return vi.row;
|
||||
}
|
||||
|
||||
void hb_gt_SetPos( USHORT uiRow, USHORT uiCol )
|
||||
void hb_gt_SetPos( SHORT iRow, SHORT iCol )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hu, %hu)", uiRow, uiCol));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hd, %hd)", iRow, iCol));
|
||||
|
||||
VioSetCurPos( uiRow, uiCol, 0 );
|
||||
VioSetCurPos( ( USHORT ) iRow, ( USHORT ) iCol, 0 );
|
||||
}
|
||||
|
||||
USHORT hb_gt_Row( void )
|
||||
SHORT hb_gt_Row( void )
|
||||
{
|
||||
USHORT x, y;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Row()"));
|
||||
|
||||
VioGetCurPos( &y, &x, 0 );
|
||||
return y;
|
||||
return ( SHORT ) y;
|
||||
}
|
||||
|
||||
USHORT hb_gt_Col( void )
|
||||
SHORT hb_gt_Col( void )
|
||||
{
|
||||
USHORT x, y;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Col()"));
|
||||
|
||||
VioGetCurPos( &y, &x, 0 );
|
||||
return x;
|
||||
return ( SHORT ) x;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -92,21 +92,21 @@ USHORT hb_gt_GetScreenHeight( void )
|
||||
return SLtt_Screen_Rows;
|
||||
}
|
||||
|
||||
void hb_gt_SetPos( USHORT uiRow, USHORT uiCol )
|
||||
void hb_gt_SetPos( SHORT iRow, SHORT iCol )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hu, %hu)", uiRow, uiCol));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hd, %hd)", iRow, iCol));
|
||||
|
||||
SLsmg_gotorc(uiRow, uiCol);
|
||||
SLsmg_gotorc(iRow, iCol);
|
||||
}
|
||||
|
||||
USHORT hb_gt_Col( void )
|
||||
SHORT hb_gt_Col( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Col()"));
|
||||
|
||||
return SLsmg_get_column();
|
||||
}
|
||||
|
||||
USHORT hb_gt_Row( void )
|
||||
SHORT hb_gt_Row( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Row()"));
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
/* TODO: include any standard headers here */
|
||||
|
||||
#include "hbapifs.h"
|
||||
#include "hbapigt.h"
|
||||
|
||||
static SHORT s_iRow;
|
||||
@@ -45,6 +46,8 @@ static USHORT s_uiMaxRow;
|
||||
static USHORT s_uiMaxCol;
|
||||
static USHORT s_uiCursorStyle;
|
||||
static BOOL s_bBlink;
|
||||
static int s_iFilenoStdout;
|
||||
static int s_iFilenoStderr;
|
||||
|
||||
void hb_gt_Init( void )
|
||||
{
|
||||
@@ -60,6 +63,8 @@ void hb_gt_Init( void )
|
||||
s_uiMaxCol = 80;
|
||||
s_uiCursorStyle = SC_NORMAL;
|
||||
s_bBlink = FALSE;
|
||||
s_iFilenoStdout = fileno( stdout );
|
||||
hb_fsSetDevMode( s_iFilenoStdout, FD_BINARY );
|
||||
}
|
||||
|
||||
void hb_gt_Done( void )
|
||||
@@ -97,22 +102,44 @@ USHORT hb_gt_GetScreenHeight( void )
|
||||
return s_uiMaxRow;
|
||||
}
|
||||
|
||||
void hb_gt_SetPos( USHORT uiRow, USHORT uiCol )
|
||||
void hb_gt_SetPos( SHORT iRow, SHORT iCol )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hu, %hu)", uiRow, uiCol));
|
||||
SHORT iCount;
|
||||
SHORT iDevRow = s_iRow;
|
||||
SHORT iDevCol = s_iCol;
|
||||
|
||||
s_iCol = ( SHORT ) uiCol;
|
||||
s_iRow = ( SHORT ) uiRow;
|
||||
char * szCrLf = hb_consoleGetNewLine();
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hd, %hd)", iRow, iCol));
|
||||
|
||||
if( iRow < iDevRow || iCol < iDevCol )
|
||||
{
|
||||
fputs( hb_consoleGetNewLine(), stdout );
|
||||
iDevCol = 0;
|
||||
iDevRow++;
|
||||
}
|
||||
else if( iRow > iDevRow )
|
||||
iDevCol = 0;
|
||||
|
||||
for( iCount = iDevRow; iCount < iRow; iCount++ )
|
||||
fputs( hb_consoleGetNewLine(), stdout );
|
||||
for( iCount = iDevCol; iCount < iCol; iCount++ )
|
||||
fputc( ' ', stdout );
|
||||
|
||||
fflush( stdout );
|
||||
|
||||
s_iRow = iRow;
|
||||
s_iCol = iCol;
|
||||
}
|
||||
|
||||
USHORT hb_gt_Col( void )
|
||||
SHORT hb_gt_Col( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Col()"));
|
||||
|
||||
return s_iCol;
|
||||
}
|
||||
|
||||
USHORT hb_gt_Row( void )
|
||||
SHORT hb_gt_Row( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Row()"));
|
||||
|
||||
|
||||
@@ -257,14 +257,14 @@ USHORT hb_gt_GetScreenHeight( void )
|
||||
return max( csbi.dwSize.Y, 25 );
|
||||
}
|
||||
|
||||
void hb_gt_SetPos( USHORT uiRow, USHORT uiCol )
|
||||
void hb_gt_SetPos( SHORT iRow, SHORT iCol )
|
||||
{
|
||||
COORD dwCursorPosition;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hu, %hu)", uiRow, uiCol));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_SetPos(%hd, %hd)", iRow, iCol));
|
||||
|
||||
dwCursorPosition.X = ( SHORT ) uiCol;
|
||||
dwCursorPosition.Y = ( SHORT ) uiRow;
|
||||
dwCursorPosition.X = iCol;
|
||||
dwCursorPosition.Y = iRow;
|
||||
|
||||
SetConsoleCursorPosition( s_HActive, dwCursorPosition );
|
||||
}
|
||||
@@ -459,7 +459,7 @@ void hb_gt_SetAttribute( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT ui
|
||||
}
|
||||
}
|
||||
|
||||
USHORT hb_gt_Col( void )
|
||||
SHORT hb_gt_Col( void )
|
||||
{
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||
|
||||
@@ -470,7 +470,7 @@ USHORT hb_gt_Col( void )
|
||||
return csbi.dwCursorPosition.X;
|
||||
}
|
||||
|
||||
USHORT hb_gt_Row( void )
|
||||
SHORT hb_gt_Row( void )
|
||||
{
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||
|
||||
|
||||
@@ -34,9 +34,8 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* GTAPI.C: Generic Terminal for Harbour
|
||||
* ChangeLog:
|
||||
*
|
||||
* Latest mods:
|
||||
* 1.83 19991006 ptucker Enable dispbegin/end calls in gtBox
|
||||
* 1.81 19991005 dholm Made the hb_gtWrite(), hb_gtWriteAt(), and
|
||||
* hb_gtWriteCon() functions and the cursor
|
||||
@@ -153,6 +152,7 @@ void hb_gtInit( void )
|
||||
|
||||
hb_gt_Init();
|
||||
hb_gtSetColorStr( hb_set.HB_SET_COLOR );
|
||||
|
||||
s_iCurrentRow = hb_gt_Row();
|
||||
s_iCurrentCol = hb_gt_Col();
|
||||
}
|
||||
@@ -285,12 +285,12 @@ USHORT hb_gtBox( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight, B
|
||||
|
||||
USHORT hb_gtBoxD( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight )
|
||||
{
|
||||
return hb_gtBox( uiTop, uiLeft, uiBottom, uiRight, ( BYTE * ) B_DOUBLE );
|
||||
return hb_gtBox( uiTop, uiLeft, uiBottom, uiRight, ( BYTE * ) _B_DOUBLE );
|
||||
}
|
||||
|
||||
USHORT hb_gtBoxS( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight )
|
||||
{
|
||||
return hb_gtBox( uiTop, uiLeft, uiBottom, uiRight, ( BYTE * ) B_SINGLE );
|
||||
return hb_gtBox( uiTop, uiLeft, uiBottom, uiRight, ( BYTE * ) _B_SINGLE );
|
||||
}
|
||||
|
||||
USHORT hb_gtColorSelect( USHORT uiColorIndex )
|
||||
@@ -670,7 +670,7 @@ USHORT hb_gtGetPos( SHORT * piRow, SHORT * piCol )
|
||||
|
||||
USHORT hb_gtSetPos( SHORT iRow, SHORT iCol )
|
||||
{
|
||||
BOOL set_cursor = TRUE;
|
||||
BOOL set_cursor;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gtSetPos(%hd, %hd)", iRow, iCol));
|
||||
|
||||
@@ -681,6 +681,8 @@ USHORT hb_gtSetPos( SHORT iRow, SHORT iCol )
|
||||
hb_gt_SetCursorStyle( SC_NONE );
|
||||
set_cursor = FALSE;
|
||||
}
|
||||
else
|
||||
set_cursor = TRUE;
|
||||
|
||||
if( set_cursor ) hb_gt_SetPos( iRow, iCol );
|
||||
|
||||
@@ -805,7 +807,7 @@ USHORT hb_gtSetSnowFlag( BOOL bNoSnow )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gtSetSnowFlag(%d)", (int) bNoSnow));
|
||||
|
||||
/* COMMENT: This is a compatibility function.
|
||||
/* NOTE: This is a compatibility function.
|
||||
If you're running on a CGA and snow is a problem
|
||||
speak up!
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user