*** empty log message ***

This commit is contained in:
Paul Tucker
1999-08-09 17:43:13 +00:00
parent 3c1d376903
commit d6a5a6ee25
3 changed files with 232 additions and 42 deletions

View File

@@ -1,3 +1,12 @@
19990809-13:10 EDT Paul Tucker <ptucker@sympatico.ca>
* source/rtl/gt_tpl.c
+ added a number of TODO comments
* from Chen Kedem <niki@actcom.co.il>
* source/rtl/gt/gtos2.c
+ support for:
hb_gt_Get/SetBlink
hb_gt_Get/SetCursorStyle
Mon Aug 09 11:53:18 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
* source/Makefile:

View File

@@ -13,46 +13,121 @@
void hb_gt_Init(void)
{
/* TODO: Is anything required to initialize the video subsystem? */
}
void hb_gt_Done(void)
{
/* TODO: */
}
int hb_gt_IsColor(void)
{
/* TODO: How to detect this? */
return 1;
}
char hb_gt_GetScreenWidth(void)
{
/* TODO: How many columns on screen? */
return (char)0;
}
char hb_gt_GetScreenHeight(void)
{
/* TODO: How many rows on screen? */
return (char)0;
}
void hb_gt_SetPos(char x, char y)
{
/* TODO: How to reposition the cursor? */
}
char hb_gt_Col(void)
{
/* TODO: What Column is the cursor on? */
return 0;
}
char hb_gt_Row(void)
{
/* TODO: What Row is the cursor on? */
return 0;
}
static void hb_gt_GetCursorSize(char *start, char *end)
{
/* TODO: if your system supports the concept of cursor scan lines,
fill this in */
*start = 0;
*end = 0;
}
int hb_gt_GetCursorStyle(void)
{
return(0);
/* TODO: What shape is the cursor? */
int rc=0;
/*
char start, end
if ( !visible )
{
rc=SC_NONE;
}
else
{
/* example from the dos driver */
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;
}
}
*/
return(rc);
}
void hb_gt_SetCursorStyle(int style)
{
/* TODO: How to set the shape of the cursor? */
/* see ..\..\..\tests\working\cursrtst.prg for an explanation */
switch(style)
{
case SC_NONE:
/* TODO: turn it off */
break;
case SC_NORMAL:
break;
case SC_INSERT:
break;
case SC_SPECIAL1:
break;
case SC_SPECIAL2:
break;
default:
break;
}
}
void hb_gt_Puts(char x, char y, char attr, char *str, int len)
@@ -69,10 +144,15 @@ void hb_gt_PutText(char x1, char y1, char x2, char y2, char *srce)
void hb_gt_SetAttribute( char cTop, char cLeft, char cBottom, char cRight, char attribute )
{
/* 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_DrawShadow( char cTop, char cLeft, char cBottom, char cRight, char attribute )
{
/* TODO: similar to above - see gtwin.c for an idea */
}
void hb_gt_Scroll( char cTop, char cLeft, char cBottom, char cRight, char attribute, char vert, char horiz )
@@ -81,25 +161,43 @@ void hb_gt_Scroll( char cTop, char cLeft, char cBottom, char cRight, char attrib
void hb_gt_DispBegin(void)
{
/* 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()
{
/* TODO: here we flush the buffer, and restore normal screen writes */
}
void hb_gt_SetMode( USHORT uiRows, USHORT uiCols )
{
/* TODO: How to change the size of the screen? */
}
void hb_gt_Replicate( char c, DWORD nLength )
{
/* 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()
{
RETURN FALSE;
/* 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 )
{
/* TODO: set the bit if it's supported */
}

View File

@@ -5,8 +5,8 @@
/*
* GTOS2.C: Video subsystem for OS/2 compilers.
*
* This module is based on VIDMGR by Andrew Clarke and modified for
* the Harbour project
* This module is partially based on VIDMGR by Andrew Clarke and modified
* for the Harbour project
*
* User programs should never call this layer directly!
*/
@@ -19,29 +19,30 @@
#include <os2.h>
#include "gtapi.h"
#ifndef KBDTRF_FINAL_CHAR_IN
#define KBDTRF_FINAL_CHAR_IN FINAL_CHAR_IN
#endif
static void hb_gt_SetCursorSize(char start, char end);
static char hb_gt_GetCellSize(void);
static void hb_gt_SetCursorSize(char start, char end, int visible);
static void hb_gt_GetCursorSize(char *start, char *end);
void hb_gt_Init(void)
{
/* TODO: Is anything required to initialize the video subsystem? */
}
void hb_gt_Done(void)
{
/* TODO: */
}
int hb_gt_IsColor(void)
{
/* TODO: How to detect this? */
return TRUE;
}
char hb_gt_GetScreenWidth(void)
{
VIOMODEINFO vi;
vi.cb = sizeof(VIOMODEINFO);
VioGetMode(&vi, 0);
return vi.col;
@@ -50,6 +51,7 @@ char hb_gt_GetScreenWidth(void)
char hb_gt_GetScreenHeight(void)
{
VIOMODEINFO vi;
vi.cb = sizeof(VIOMODEINFO);
VioGetMode(&vi, 0);
return vi.row;
@@ -63,6 +65,7 @@ void hb_gt_SetPos(char cRow, char cCol)
char hb_gt_Row(void)
{
USHORT x, y;
VioGetCurPos(&y, &x, 0);
return x;
}
@@ -70,58 +73,92 @@ char hb_gt_Row(void)
char hb_gt_Col(void)
{
USHORT x, y;
VioGetCurPos(&y, &x, 0);
return y;
}
/* QUESTION: not been used, do we need this function ? */
/* Answer: In the dos version, this gets called by hb_gt_GetCursorStyle()
as that function is written below, we don't need this */
/*
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)
static void hb_gt_SetCursorSize(char start, char end, int visible)
{
/* Chen Kedem <niki@actcom.co.il> */
VIOCURSORINFO vi;
vi.yStart = start;
vi.cEnd = end;
vi.cx = 0;
vi.attr = 0;
vi.attr = ( visible ? 0 : -1 );
VioSetCurType(&vi, 0);
}
static char hb_gt_GetCellSize()
{
/* Chen Kedem <niki@actcom.co.il> */
char rc ;
VIOMODEINFO vi;
vi.cb = sizeof(VIOMODEINFO);
VioGetMode(&vi, 0);
rc = (char)(vi.row ? (vi.vres / vi.row)-1 : 0 );
return rc;
}
int hb_gt_GetCursorStyle(void)
{
char start, end;
/* Chen Kedem <niki@actcom.co.il> */
int rc;
char cellsize;
VIOCURSORINFO vi;
hb_gt_GetCursorSize(&start, &end);
VioGetCurType(&vi, 0);
if((start == 32) && (end == 32))
if ( vi.attr )
{
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;
cellsize = hb_gt_GetCellSize();
if ( vi.yStart == 0 && vi.cEnd == 0 )
{
rc=SC_NONE;
}
else if ( ( vi.yStart == cellsize-1 || vi.yStart == cellsize-2 ) && vi.cEnd == cellsize )
{
rc=SC_NORMAL;
}
else if ( vi.yStart == cellsize/2 && vi.cEnd == cellsize )
{
rc=SC_INSERT;
}
else if ( vi.yStart == 0 && vi.cEnd == cellsize )
{
rc=SC_SPECIAL1;
}
else if ( vi.yStart == 0 && vi.cEnd == cellsize/2 )
{
rc=SC_SPECIAL2;
}
else
{
rc=SC_NONE;
}
}
return(rc);
@@ -129,26 +166,31 @@ int hb_gt_GetCursorStyle(void)
void hb_gt_SetCursorStyle(int style)
{
/* Chen Kedem <niki@actcom.co.il> */
char cellsize;
VIOCURSORINFO vi;
cellsize = hb_gt_GetCellSize();
switch(style)
{
case SC_NONE:
hb_gt_SetCursorSize(32, 32);
hb_gt_SetCursorSize( 0, 0, 0);
break;
case SC_NORMAL:
hb_gt_SetCursorSize(6, 7);
hb_gt_SetCursorSize(cellsize-1, cellsize, 1);
break;
case SC_INSERT:
hb_gt_SetCursorSize(4, 7);
hb_gt_SetCursorSize(cellsize/2, cellsize, 1);
break;
case SC_SPECIAL1:
hb_gt_SetCursorSize(0, 7);
hb_gt_SetCursorSize(0, cellsize, 1);
break;
case SC_SPECIAL2:
hb_gt_SetCursorSize(0, 3);
hb_gt_SetCursorSize(0, cellsize/2, 1);
break;
default:
@@ -165,6 +207,7 @@ void hb_gt_GetText(char cTop, char cLeft, char cBottom, char cRight, char *dest)
{
USHORT width;
char y;
width = (USHORT) ((cRight - cLeft + 1) * 2);
for (y = cTop; y <= cBottom; y++)
{
@@ -177,6 +220,7 @@ void hb_gt_PutText(char cTop, char cLeft, char cBottom, char cRight, char *srce)
{
USHORT width;
char y;
width = (USHORT) ((cRight - cLeft + 1) * 2);
for (y = cTop; y <= cBottom; y++)
{
@@ -187,36 +231,75 @@ void hb_gt_PutText(char cTop, char cLeft, char cBottom, char cRight, char *srce)
void hb_gt_SetAttribute( char cTop, char cLeft, char cBottom, char cRight, char attribute )
{
/* 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_DrawShadow( char cTop, char cLeft, char cBottom, char cRight, char attribute )
{
}
void hb_gt_SetMode( USHORT uiRows, USHORT uiCols )
{
uiRows=uiCols=0;
/* TODO: similar to above - either use gtwin.c as a template, or
leave it and I will extrapolate from above function.
*/
}
void hb_gt_DispBegin(void)
{
/* 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(void)
{
/* TODO: here we flush the buffer, and restore normal screen writes */
}
void hb_gt_SetMode( USHORT uiRows, USHORT uiCols )
{
int rc;
VIOMODEINFO vi;
VioGetMode(&vi, 0); /* fill structure with current settings */
vi.row = uiRows;
vi.col = uiCols;
rc = VioSetMode(&vi, 0); /* 0 = Ok, other = Fail */
/* return rc */ /* TODO: set a return value for this function */
}
void hb_gt_Replicate(char c, DWORD nLength)
{
/* 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.
*/
c= ' ';
nLength = 0;
}
BOOL hb_gt_GetBlink()
{
return FALSE;
/* Chen Kedem <niki@actcom.co.il> */
VIOINTENSITY vi;
vi.cb = sizeof(VIOINTENSITY); /* 6 */
vi.type = 2; /* get intensity/blink toggle */
VioGetState(&vi, 0);
return (vi.fs == 0); /* 0 = blink, 1 = intens */
}
void hb_gt_SetBlink( BOOL bBlink )
{
/* Chen Kedem <niki@actcom.co.il> */
VIOINTENSITY vi;
vi.cb = sizeof(VIOINTENSITY); /* 6 */
vi.type = 2; /* set intensity/blink toggle */
vi.fs = (bBlink ? 0 : 1); /* 0 = blink, 1 = intens */
VioSetState(&vi, 0);
}