diff --git a/harbour/ChangeLog b/harbour/ChangeLog index adccfa6d8b..d3d098e83a 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,23 @@ +19990808-15:00 EDT Paul Tucker + * makefile.vc + + source/rtl/tbrowse.prg + + source/rtl/tbcolumn.prg + + source/debug/debugger.prg + + tests/working/testbrw.prg + * source/rtl/gtapi.c + -hb_gt_ScreenBuffer + * include/gtapi.h + -hb_gt_ScreenBuffer + * source/rtl/gt/gtwin.c source/rtl/gtdos.c + + Improved or added Dispbegin/end support + * minor corrections in gtdos + * source/rtl/gt_tpl.c + + dummy hb_gt_Set/GetBlink hb_gt_replicate + * source/rtl/gtos2.c + + dummy hb_gt_Set/GetBlink hb_gt_replicate + * corrected parameter order as reported by Davig G. Holme + NOTE: cursor sizes are not correct in this version. + 19990807-19:34 GMT+1 Antonio Linares * source/rtl/tbrowse.prg * improved diff --git a/harbour/include/gtapi.h b/harbour/include/gtapi.h index 6444965f17..0fb0f661a8 100644 --- a/harbour/include/gtapi.h +++ b/harbour/include/gtapi.h @@ -101,7 +101,8 @@ extern void hb_gt_SetAttribute( char cTop, char cLeft, char cBottom, char cRig extern void hb_gt_DrawShadow( char cTop, char cLeft, char cBottom, char cRight, char attribute ); extern void hb_gt_DispBegin( void ); extern void hb_gt_DispEnd( void ); -extern ULONG hb_gt_ScreenBuffer( ULONG buffer ); extern void hb_gt_SetMode( USHORT uiRows, USHORT uiCols ); +extern BOOL hb_gt_GetBlink(void); +extern void hb_gt_SetBlink(BOOL bBlink); #endif /* HB_GTAPI_H_ */ diff --git a/harbour/makefile.vc b/harbour/makefile.vc index 304e7780db..3f14d4e671 100644 --- a/harbour/makefile.vc +++ b/harbour/makefile.vc @@ -18,6 +18,7 @@ RTL_DIR=source\rtl RDD_DIR=source\rdd HBPP_DIR=source\hbpp TOOLS_DIR=source\tools +DEBUG_DIR=source\debug VM_DIR=source\vm INCLUDE_DIR=include BIN_DIR=bin @@ -90,6 +91,8 @@ HARBOUR_LIB_OBJS = \ $(OBJ_DIR)\setcolor.obj \ $(OBJ_DIR)\setkey.obj \ $(OBJ_DIR)\strings.obj \ + $(OBJ_DIR)\tbcolumn.obj \ + $(OBJ_DIR)\tbrowse.obj \ $(OBJ_DIR)\tclass.obj \ $(OBJ_DIR)\tget.obj \ $(OBJ_DIR)\tgetlist.obj \ @@ -401,6 +404,18 @@ $(OBJ_DIR)\setkey.obj : $(RTL_DIR)\setkey.c $(OBJ_DIR)\strings.obj : $(RTL_DIR)\strings.c $(CC) $(CLIBFLAGS) -Fo$@ $** +$(RTL_DIR)\tbcolumn.c : $(RTL_DIR)\tbcolumn.prg + $(HARBOUR_EXE) $** $(HARBOURFLAGS) -o$(**D) + +$(OBJ_DIR)\tbcolumn.obj : $(RTL_DIR)\tbcolumn.c + $(CC) $(CLIBFLAGS) -Fo$@ $** + +$(RTL_DIR)\tbrowse.c : $(RTL_DIR)\tbrowse.prg + $(HARBOUR_EXE) $** $(HARBOURFLAGS) -o$(**D) + +$(OBJ_DIR)\tbrowse.obj : $(RTL_DIR)\tbrowse.c + $(CC) $(CLIBFLAGS) -Fo$@ $** + $(RTL_DIR)\tclass.c : $(RTL_DIR)\tclass.prg $(HARBOUR_EXE) $** $(HARBOURFLAGS) -o$(**D) @@ -422,6 +437,16 @@ $(OBJ_DIR)\tgetlist.obj : $(RTL_DIR)\tgetlist.c $(OBJ_DIR)\transfrm.obj : $(RTL_DIR)\transfrm.c $(CC) $(CLIBFLAGS) -Fo$@ $** +# +# Debugger source dependencies below. Add as needed +# + +$(DEBUG_DIR)\debugger.c : $(DEBUG_DIR)\debugger.prg + $(HARBOUR_EXE) $** $(HARBOURFLAGS) -o$(**D) + +$(OBJ_DIR)\debugger.obj : $(DEBUG_DIR)\debugger.c + $(CC) $(CLIBFLAGS) -Fo$@ $** + # # VM source dependencies below. Add as needed # diff --git a/harbour/source/rtl/gt/gt_tpl.c b/harbour/source/rtl/gt/gt_tpl.c index 14fb8114ba..2905733542 100644 --- a/harbour/source/rtl/gt/gt_tpl.c +++ b/harbour/source/rtl/gt/gt_tpl.c @@ -46,15 +46,15 @@ char hb_gt_Row(void) { } -void hb_gt_SetCursorStyle(int style) -{ -} - int hb_gt_GetCursorStyle(void) { return(0); } +void hb_gt_SetCursorStyle(int style) +{ +} + void hb_gt_Puts(char x, char y, char attr, char *str, int len) { } @@ -94,3 +94,12 @@ void hb_gt_SetMode( USHORT uiRows, USHORT uiCols ) void hb_gt_Replicate( char c, DWORD nLength ) { } + +BOOL hb_gt_GetBlink() +{ + RETURN FALSE; +} + +void hb_gt_SetBlink( BOOL bBlink ) +{ +} diff --git a/harbour/source/rtl/gt/gtdos.c b/harbour/source/rtl/gt/gtdos.c index 46cc6406aa..7951bb0c0d 100644 --- a/harbour/source/rtl/gt/gtdos.c +++ b/harbour/source/rtl/gt/gtdos.c @@ -7,6 +7,8 @@ * * This module is based on VIDMGR by Andrew Clarke and modified for * the Harbour project + * + * User programs should never call this layer directly! */ #include @@ -36,8 +38,17 @@ static char hb_gt_GetScreenMode(void); static void hb_gt_SetCursorSize(char start, char end); static void hb_gt_GetCursorSize(char *start, char *end); +#if defined(__WATCOMC__) && defined(__386__) +#define FAR +#endif +static char FAR *scrnPtr; +static char FAR *scrnStealth; +static char FAR *hb_gt_ScreenAddress(void); + void hb_gt_Init(void) { + scrnStealth = (char *)-1; + scrnPtr = hb_gt_ScreenAddress(); } void hb_gt_Done(void) @@ -49,11 +60,12 @@ int hb_gt_IsColor(void) return hb_gt_GetScreenMode() != 7; } -#if defined(__WATCOMC__) && defined(__386__) - -char *hb_gt_ScreenPtr(char cRow, char cCol) +static char FAR *hb_gt_ScreenAddress() { - char *ptr; + + char FAR *ptr; + +#if defined(__WATCOMC__) && defined(__386__) if (hb_gt_IsColor()) { ptr = (char *)(0xB800 << 4); @@ -62,14 +74,7 @@ char *hb_gt_ScreenPtr(char cRow, char cCol) { ptr = (char *)(0xB000 << 4); } - return ptr + (cRow * hb_gt_GetScreenWidth() * 2) + (cCol * 2); -} - #else - -char FAR *hb_gt_ScreenPtr(char cRow, char cCol) -{ - char FAR *ptr; if (hb_gt_IsColor()) { ptr = (char FAR *)MK_FP(0xB800, 0x0000); @@ -78,10 +83,15 @@ char FAR *hb_gt_ScreenPtr(char cRow, char cCol) { ptr = (char FAR *)MK_FP(0xB000, 0x0000); } - return ptr + (cRow * hb_gt_GetScreenWidth() * 2) + (cCol * 2); +#endif + + return ptr; } -#endif +char FAR *hb_gt_ScreenPtr(char cRow, char cCol) +{ + return scrnPtr + (cRow * hb_gt_GetScreenWidth() * 2) + (cCol * 2); +} static char hb_gt_GetScreenMode(void) { @@ -115,8 +125,8 @@ void hb_gt_SetPos(char cRow, char cCol) #if defined(__TURBOC__) _AH = 0x02; _BH = 0; - _DH = cRow - _DL = cCol + _DH = cRow; + _DL = cCol; geninterrupt(0x10); #else union REGS regs; @@ -268,10 +278,11 @@ void hb_gt_Puts(char cRow, char cCol, char attr, char *str, int len) } } -void hb_gt_GetText(char cTop, char cLeft, char cBottom, char right, char *dest) +void hb_gt_GetText(char cTop, char cLeft, char cBottom, char cRight, char *dest) { char x, y; - for (y = cTop; y <= cBottom, y++ ) + + for (y = cTop; y <= cBottom; y++ ) { for (x = cLeft; x <= cRight; x++) { @@ -284,6 +295,7 @@ void hb_gt_GetText(char cTop, char cLeft, char cBottom, char right, char *dest) void hb_gt_PutText(char cTop, char cLeft, char cBottom, char cRight, char *srce) { char x, y; + for (y = cTop; y <= cBottom; y++) { for (x = cLeft; x <= cRight; x++) @@ -294,25 +306,52 @@ void hb_gt_PutText(char cTop, char cLeft, char cBottom, char cRight, char *srce) } } -void SetAttribute( char cTop, char cLeft, char cBottom, char cRight, char attribute ) +void hb_gt_SetAttribute( char cTop, char cLeft, char cBottom, char cRight, char attribute ) { + char x, y; + char attr, ch; + + for (y = cTop; y <= cBottom; y++) + { + for (x = cLeft; x <= cRight; x++) + { + hb_gt_xGetXY( y, x, &attr, &ch ); + hb_gt_xPutch( y, x, attribute, ch); + } + } } void hb_gt_DrawShadow( char cTop, char cLeft, char cBottom, char cRight, char attribute ) { + char x, y; + char attr, ch; + + for (y = cTop; y <= cBottom; y++) + { + + hb_gt_xGetXY( y, cRight, &attr, &ch ); + hb_gt_xPutch( y, cRight, attribute, ch); + + if( y == cBottom ) + for (x = cLeft; x <= cRight; x++) + { + hb_gt_xGetXY( y, x, &attr, &ch ); + hb_gt_xPutch( y, x, attribute, ch ); + } + + } } - /* returns col */ char hb_gt_Col(void) { #if defined(__TURBOC__) _AH = 0x03; _BH = 0; geninterrupt(0x10); - return _DH; + return _DL; #else union REGS regs; - regs.h.ah = 0x02; + regs.h.ah = 0x03; regs.h.bh = 0; #if defined(__WATCOMC__) && defined(__386__) int386(0x10, ®s, ®s); @@ -323,7 +362,6 @@ char hb_gt_Col(void) #endif } - /* returns row */ char hb_gt_Row(void) { #if defined(__TURBOC__) @@ -333,7 +371,7 @@ char hb_gt_Row(void) return _DH; #else union REGS regs; - regs.h.ah = 0x02; + regs.h.ah = 0x03; regs.h.bh = 0; #if defined(__WATCOMC__) && defined(__386__) int386(0x10, ®s, ®s); @@ -344,15 +382,78 @@ char hb_gt_Row(void) #endif } +void hb_gt_DispBegin(void) +{ + if( hb_gtDispCount() == 1 ) + { + char FAR *ptr; + ULONG nSize; + + nSize = hb_gt_GetScreenWidth() * hb_gt_GetScreenHeight() * 2; + + ptr = scrnPtr; + if( (scrnPtr = scrnStealth) == (char *)-1) + scrnPtr = (char FAR *)hb_xgrab( nSize ); + scrnStealth = ptr; + memcpy( (void *)scrnPtr, (void *)ptr, nSize ); + } +} + +void hb_gt_DispEnd(void) +{ + if( hb_gtDispCount() == 0 ) + { + char FAR *ptr; + ULONG nSize; + + nSize = hb_gt_GetScreenWidth() * hb_gt_GetScreenHeight() * 2; + + ptr = scrnPtr; + scrnPtr = scrnStealh; + scrnStealth = ptr; + memcpy( (void *)scrnPtr, (void *)ptr, nSize ); + } +} + void hb_gt_SetMode( USHORT uiRows, USHORT uiCols ) { uiRows=uiCols=0; } -void hb_gt_DispBegin(void) +void hb_gt_Replicate(char c, DWORD nLength) { + c= ' '; + nLength = 0; + } -void hb_gt_DispEnd(void) +BOOL hb_gt_GetBlink() { +#if defined(__WATCOMC__) && defined(__386__) + return *((char *)0x0465) & 0x10; +#else + return *((char FAR *)MK_FP(0x0040, 0x0065)) &0x10; +#endif +} + +void hb_gt_SetBlink( BOOL bBlink ) +{ +#if defined(__TURBOC__) + _AX = 0x1003; + _BX = bBlink; + geninterrupt(0x10); + return; +#else + union REGS regs; + regs.h.ah = 0x10; + regs.h.al = 0x03; + regs.h.bh = 0; + regs.h.bl = bBlink; +#if defined(__WATCOMC__) && defined(__386__) + int386(0x10, ®s, ®s); +#else + int86(0x10, ®s, ®s); +#endif + return; +#endif } diff --git a/harbour/source/rtl/gt/gtos2.c b/harbour/source/rtl/gt/gtos2.c index 92db0fe9a3..453226a1f7 100644 --- a/harbour/source/rtl/gt/gtos2.c +++ b/harbour/source/rtl/gt/gtos2.c @@ -7,6 +7,8 @@ * * This module is based on VIDMGR by Andrew Clarke and modified for * the Harbour project + * + * User programs should never call this layer directly! */ #define INCL_KBD @@ -72,6 +74,14 @@ char hb_gt_Col(void) return y; } +static void hb_gt_GetCursorSize(char *start, char *end) +{ + VIOCURSORINFO vi; + VioGetCurType(&vi, 0); + *start = vi.yStart; + *end = vi.cEnd; +} + static void hb_gt_SetCursorSize(char start, char end) { VIOCURSORINFO vi; @@ -82,25 +92,68 @@ static void hb_gt_SetCursorSize(char start, char end) VioSetCurType(&vi, 0); } -static void hb_gt_GetCursorSize(char *start, char *end) +int hb_gt_GetCursorStyle(void) { - VIOCURSORINFO vi; - VioGetCurType(&vi, 0); - *start = vi.yStart; - *end = vi.cEnd; + char start, end; + int rc; + + hb_gt_GetCursorSize(&start, &end); + + if((start == 32) && (end == 32)) + { + rc=SC_NONE; + } + else if((start == 6) && (end == 7)) + { + rc=SC_NORMAL; + } + else if((start == 4) && (end == 7)) + { + rc=SC_INSERT; + } + else if((start == 0) && (end == 7)) + { + rc=SC_SPECIAL1; + } + else if((start == 0) && (end == 3)) + { + rc=SC_SPECIAL2; + } + else + { + rc=SC_NONE; + } + + return(rc); } void hb_gt_SetCursorStyle(int style) { - /* TODO: need to implement this */ -} + switch(style) + { + case SC_NONE: + hb_gt_SetCursorSize(32, 32); + break; -int hb_gt_GetCursorStyle(void) -{ - /* TODO: need to implement this */ - int rc=0; + case SC_NORMAL: + hb_gt_SetCursorSize(6, 7); + break; - return(rc); + case SC_INSERT: + hb_gt_SetCursorSize(4, 7); + break; + + case SC_SPECIAL1: + hb_gt_SetCursorSize(0, 7); + break; + + case SC_SPECIAL2: + hb_gt_SetCursorSize(0, 3); + break; + + default: + break; + } } void hb_gt_Puts(char cRow, char cCol, char attr, char *str, int len) @@ -152,3 +205,18 @@ void hb_gt_DispBegin(void) void hb_gt_DispEnd(void) { } + +void hb_gt_Replicate(char c, DWORD nLength) +{ + c= ' '; + nLength = 0; + +} +BOOL hb_gt_GetBlink() +{ + return FALSE; +} + +void hb_gt_SetBlink( BOOL bBlink ) +{ +} diff --git a/harbour/source/rtl/gt/gtwin.c b/harbour/source/rtl/gt/gtwin.c index 8eced11f22..774d79f579 100644 --- a/harbour/source/rtl/gt/gtwin.c +++ b/harbour/source/rtl/gt/gtwin.c @@ -31,6 +31,8 @@ typedef WORD far *LPWORD; static HANDLE HInput = INVALID_HANDLE_VALUE; static HANDLE HOutput = INVALID_HANDLE_VALUE; +static HANDLE HStealth = INVALID_HANDLE_VALUE; /* DispBegin buffer */ +static HANDLE HOriginal; static HANDLE HCursor; /* When DispBegin is in effect, all cursor related functions must refer to the original handle! Otherwise turds are left on the screen when @@ -56,16 +58,61 @@ void hb_gt_Init(void) { LOG("Initializing"); HInput = GetStdHandle(STD_INPUT_HANDLE); - HOutput = HCursor = GetStdHandle(STD_OUTPUT_HANDLE); - hb_gt_ScreenBuffer((ULONG)HOutput); + HOriginal = HOutput = HCursor = GetStdHandle(STD_OUTPUT_HANDLE); } void hb_gt_Done(void) { + /* because the current screen may not be the one that was active + when the app started, we need to restore that screen and update + it with the current image before quiting. + */ + + if( HOutput != HOriginal ) + { + COORD coDest = {0, 0}; + COORD coBuf; /* the size of the buffer to read into */ + CHAR_INFO *pCharInfo; /* buffer to store info from ReadConsoleOutput */ + SMALL_RECT srWin; /* source rectangle to read from */ + CONSOLE_SCREEN_BUFFER_INFO csbi; + + srWin.Top = srWin.Left = 0; + srWin.Bottom = (coBuf.Y = hb_gt_GetScreenHeight()) -1; + srWin.Right = (coBuf.X = hb_gt_GetScreenWidth()) -1; + + /* allocate a buffer for the screen rectangle */ + pCharInfo = (CHAR_INFO *)hb_xgrab(coBuf.X * coBuf.Y * sizeof(CHAR_INFO)); + + /* read the screen rectangle into the buffer */ + ReadConsoleOutput(HOutput, /* current screen handle */ + pCharInfo, /* transfer area */ + coBuf, /* size of destination buffer */ + coDest, /* upper-left cell to write data to */ + &srWin); /* screen buffer rectangle to read from */ + + GetConsoleScreenBufferInfo(HOutput, &csbi); + HOutput = HOriginal; + SetConsoleScreenBufferSize(HOutput, coBuf); + SetConsoleCursorPosition(HOutput, csbi.dwCursorPosition); + + WriteConsoleOutput(HOutput, /* output handle */ + pCharInfo, /* data to write */ + coBuf, /* col/row size of source buffer */ + coDest, /* upper-left cell to write data from in src */ + &srWin); /* screen buffer rect to write data to */ + + hb_xfree(pCharInfo); + + SetConsoleActiveScreenBuffer(HOutput); + } CloseHandle(HInput); HInput = INVALID_HANDLE_VALUE; CloseHandle(HOutput); HOutput = INVALID_HANDLE_VALUE; + CloseHandle(HStealth); + HStealth = INVALID_HANDLE_VALUE; + CloseHandle(HOriginal); + HOriginal = INVALID_HANDLE_VALUE; LOG("Ending"); } @@ -366,19 +413,16 @@ void hb_gt_DispBegin(void) COORD coBuf; /* the size of the buffer to read into */ CHAR_INFO *pCharInfo; /* buffer to store info from ReadConsoleOutput */ SMALL_RECT srWin; /* source rectangle to read from */ - USHORT uiCount; - if( ( uiCount = hb_gtDispCount() ) == 1) + if( hb_gtDispCount() == 1 ) { srWin.Top = srWin.Left = 0; - srWin.Right = (coBuf.X = hb_gt_GetScreenWidth()) -1; srWin.Bottom = (coBuf.Y = hb_gt_GetScreenHeight()) -1; + srWin.Right = (coBuf.X = hb_gt_GetScreenWidth()) -1; /* allocate a buffer for the screen rectangle */ pCharInfo = (CHAR_INFO *)hb_xgrab(coBuf.X * coBuf.Y * sizeof(CHAR_INFO)); - hb_gt_ScreenBuffer( (ULONG)HOutput ); /* store current handle */ - /* read the screen rectangle into the buffer */ ReadConsoleOutput(HOutput, /* current screen handle */ pCharInfo, /* transfer area */ @@ -386,14 +430,19 @@ void hb_gt_DispBegin(void) coDest, /* upper-left cell to write data to */ &srWin); /* screen buffer rectangle to read from */ - HOutput = CreateConsoleScreenBuffer( - GENERIC_READ | GENERIC_WRITE, /* Access flag */ - FILE_SHARE_READ | FILE_SHARE_WRITE, /* Buffer share mode */ - NULL, /* Security attribute ptr */ - CONSOLE_TEXTMODE_BUFFER, /* Type of buffer */ - NULL); /* reserved */ + /* store current handle */ + if( HStealth = INVALID_HANDLE_VALUE ) + { + HStealth = CreateConsoleScreenBuffer( + GENERIC_READ | GENERIC_WRITE, /* Access flag */ + FILE_SHARE_READ | FILE_SHARE_WRITE, /* Buffer share mode */ + NULL, /* Security attribute */ + CONSOLE_TEXTMODE_BUFFER, /* Type of buffer */ + NULL); /* reserved */ - SetConsoleScreenBufferSize(HOutput, coBuf); + SetConsoleScreenBufferSize(HStealth, coBuf); + } + HOutput = HStealth; WriteConsoleOutput(HOutput, /* output handle */ pCharInfo, /* data to write */ @@ -408,39 +457,16 @@ void hb_gt_DispBegin(void) void hb_gt_DispEnd(void) { /* ptucker */ - COORD coDest = {0, 0}; - COORD coBuf; /* the size of the buffer to read into */ - CHAR_INFO *pCharInfo; /* buffer to store info from ReadConsoleOutput */ - SMALL_RECT srWin; /* source rectangle to read from */ - USHORT uiCount; - if( ( uiCount = hb_gtDispCount() ) == 1 ) + if( hb_gtDispCount() == 0 ) { - srWin.Top = srWin.Left = 0; - srWin.Right = (coBuf.X = hb_gt_GetScreenWidth()) -1; - srWin.Bottom = (coBuf.Y = hb_gt_GetScreenHeight()) -1; + CONSOLE_CURSOR_INFO cci; + GetConsoleCursorInfo(HCursor, &cci); + SetConsoleCursorInfo(HOutput, &cci); + SetConsoleActiveScreenBuffer(HOutput); + HStealth = HCursor; + HCursor = HOutput; - /* allocate a buffer for the screen rectangle */ - pCharInfo = (CHAR_INFO *)hb_xgrab(coBuf.X * coBuf.Y * sizeof(CHAR_INFO)); - - /* read the screen rectangle into the buffer */ - ReadConsoleOutput(HOutput, /* current screen buffer */ - pCharInfo, /* transfer area */ - coBuf, /* col/row size of destination buffer */ - coDest, /* upper-left cell to write data to in dest */ - &srWin); /* screen buffer rectangle to read from */ - - CloseHandle( HOutput ); - - HOutput = (HANDLE)hb_gt_ScreenBuffer( 0 ); /* get previous handle */ - - WriteConsoleOutput(HOutput, /* output buffer */ - pCharInfo, /* buffer with data to write */ - coBuf, /* col/row size of source buffer */ - coDest, /* upper-left cell to write data from in src */ - &srWin); /* screen buffer rect to write data to */ - - hb_xfree(pCharInfo); } } @@ -490,8 +516,17 @@ void hb_gt_Replicate(char c, DWORD nLength) c, /* character to write */ nLength, /* number of cells to write */ coBuf, /* coordinates of first cell */ - &nWritten /* receives actual number written */ + &nWritten /* receives actual number written */ ); } +BOOL hb_gt_GetBlink() +{ + return FALSE; +} + +void hb_gt_SetBlink( BOOL bBlink ) +{ + +} diff --git a/harbour/source/rtl/gtapi.c b/harbour/source/rtl/gtapi.c index 571608a91b..48c5aff6f6 100644 --- a/harbour/source/rtl/gtapi.c +++ b/harbour/source/rtl/gtapi.c @@ -6,6 +6,7 @@ * GTAPI.C: Generic Terminal for Harbour * * Latest mods: + * 1.53 19990807 ptucker Modified Dispbegin/end support * 1.47 19990802 ptucker DispBegin/End and SetMode for gtWin * 1.46 19990801 ptucker simplified hb_gtScroll if gtWin * 1.44 19990730 ptucker simplified gtputs and gtSetAttribute @@ -81,14 +82,11 @@ int *_Color; /* masks: 0x0007 Foreground */ int _ColorCount; -ULONG *_ScrnBuffer; - /* gt API functions */ void hb_gtInit(void) { /* ptucker */ - _ScrnBuffer = (ULONG *)hb_xgrab( sizeof( ULONG ) ); _Color = (int *)hb_xgrab(5*sizeof( int ) ); _ColorCount = 5; hb_gt_Init(); @@ -105,20 +103,6 @@ void hb_gtExit(void) hb_xfree( _Color ); while( s_uiDispCount ) hb_gtDispEnd(); - hb_xfree( _ScrnBuffer ); -} - -/* this gets called from gtwin/gtdos, etc. */ -/* otherwise it has to be duplicated in each driver */ -ULONG hb_gt_ScreenBuffer( ULONG NewBuffer) -{ -/* ptucker */ - ULONG Previous = _ScrnBuffer[s_uiDispCount]; - - if( NewBuffer ) - _ScrnBuffer[s_uiDispCount] = NewBuffer; - - return Previous; } int hb_gtBox (USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight, char* pbyFrame) @@ -173,7 +157,7 @@ int hb_gtBox (USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight, char /* Draw the box or line as specified */ height = uiBottom - uiTop + 1; width = uiRight - uiLeft + 1; -// hb_gtDispBegin(); +/* hb_gtDispBegin(); */ if( height > 1 && width > 1 ) { @@ -213,7 +197,7 @@ int hb_gtBox (USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight, char } /* speed issue for now */ -// hb_gtDispEnd(); +/* hb_gtDispEnd(); */ hb_gtSetPos(uiTopBak + 1, uiLeftBak + 1); @@ -248,7 +232,6 @@ int hb_gtDispBegin(void) { /* ptucker */ ++s_uiDispCount; - _ScrnBuffer = (ULONG *)hb_xrealloc( _ScrnBuffer, sizeof( ULONG ) * (s_uiDispCount+1) ); hb_gt_DispBegin(); return(0); } @@ -261,9 +244,8 @@ USHORT hb_gtDispCount(void) int hb_gtDispEnd(void) { /* ptucker */ - hb_gt_DispEnd(); --s_uiDispCount; - _ScrnBuffer = (ULONG *)hb_xrealloc( _ScrnBuffer, sizeof( ULONG ) * (s_uiDispCount+1) ); + hb_gt_DispEnd(); return(0); } @@ -585,14 +567,14 @@ int hb_gtScrDim(USHORT * uipHeight, USHORT * uipWidth) int hb_gtGetBlink(BOOL * bBlink) { - *bBlink = FALSE; + *bBlink = hb_gt_GetBlink(); - return ( 0 ); + return(0); } int hb_gtSetBlink(BOOL bBlink) { - HB_SYMBOL_UNUSED( bBlink ); + hb_gt_SetBlink( bBlink ); return(0); }