2009-10-07 09:11 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/source/rtl/gtwvt/gtwvt.h
  * harbour/source/rtl/gtwvt/gtwvt.c
    * use dynamic line buffers - now WVT_MAX_{ROW,COL} macros can be
      simply removed
This commit is contained in:
Przemyslaw Czerpak
2009-10-07 07:11:28 +00:00
parent 42f86bb31e
commit e61cf04b21
3 changed files with 33 additions and 10 deletions

View File

@@ -17,6 +17,12 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-10-07 09:11 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
* use dynamic line buffers - now WVT_MAX_{ROW,COL} macros can be
simply removed
2009-10-07 08:09 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* config/global.mk
* config/detect.mk

View File

@@ -236,6 +236,12 @@ static void hb_gt_wvt_Free( PHB_GTWVT pWVT )
if( pWVT->hIcon && pWVT->bIconToFree )
DestroyIcon( pWVT->hIcon );
if( pWVT->TextLine )
hb_xfree( pWVT->TextLine );
if( pWVT->FixedSize )
hb_xfree( pWVT->FixedSize );
hb_xfree( pWVT );
}
@@ -263,6 +269,9 @@ static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT, HINSTANCE hInstance, int iCmdShow )
pWVT->ROWS = WVT_DEFAULT_ROWS;
pWVT->COLS = WVT_DEFAULT_COLS;
pWVT->TextLine = ( TCHAR * ) hb_xgrab( pWVT->COLS * sizeof( TCHAR ) );
pWVT->FixedSize = ( int * ) hb_xgrab( pWVT->COLS * sizeof( int ) );
pWVT->COLORS[ 0] = BLACK;
pWVT->COLORS[ 1] = BLUE;
pWVT->COLORS[ 2] = GREEN;
@@ -897,12 +906,19 @@ static BOOL hb_gt_wvt_GetWindowTitle( HWND hWnd, char ** title )
return FALSE;
}
static BOOL hb_gt_wvt_SetWindowSize( PHB_GTWVT pWVT, int iRow, int iCol )
static BOOL hb_gt_wvt_SetWindowSize( PHB_GTWVT pWVT, int iRows, int iCols )
{
if( HB_GTSELF_RESIZE( pWVT->pGT, iRow, iCol ) )
if( HB_GTSELF_RESIZE( pWVT->pGT, iRows, iCols ) )
{
pWVT->ROWS = iRow;
pWVT->COLS = iCol;
if( pWVT->COLS != iCols )
{
pWVT->TextLine = ( TCHAR * ) hb_xrealloc( pWVT->TextLine,
iCols * sizeof( TCHAR ) );
pWVT->FixedSize = ( int * ) hb_xrealloc( pWVT->FixedSize,
iCols * sizeof( int ) );
}
pWVT->ROWS = iRows;
pWVT->COLS = iCols;
return TRUE;
}
@@ -1539,7 +1555,6 @@ static void hb_gt_wvt_PaintText( PHB_GTWVT pWVT, RECT updateRect )
HFONT hFont, hOldFont = NULL;
#endif
USHORT usChar;
TCHAR text[ WVT_MAX_COLS ];
hdc = BeginPaint( pWVT->hWnd, &ps );
#if defined( UNICODE )
@@ -1570,7 +1585,7 @@ static void hb_gt_wvt_PaintText( PHB_GTWVT pWVT, RECT updateRect )
}
else if( iColor != iOldColor )
{
hb_gt_wvt_TextOut( pWVT, hdc, startCol, iRow, iOldColor, text, ( UINT ) len );
hb_gt_wvt_TextOut( pWVT, hdc, startCol, iRow, iOldColor, pWVT->TextLine, ( UINT ) len );
iOldColor = iColor;
startCol = iCol;
len = 0;
@@ -1589,7 +1604,7 @@ static void hb_gt_wvt_PaintText( PHB_GTWVT pWVT, RECT updateRect )
}
else if( iColor != iOldColor || hFont != hOldFont )
{
hb_gt_wvt_TextOut( pWVT, hdc, startCol, iRow, iOldColor, text, ( UINT ) len );
hb_gt_wvt_TextOut( pWVT, hdc, startCol, iRow, iOldColor, pWVT->TextLine, ( UINT ) len );
if( hFont != hOldFont )
{
SelectObject( hdc, hFont );
@@ -1600,11 +1615,11 @@ static void hb_gt_wvt_PaintText( PHB_GTWVT pWVT, RECT updateRect )
len = 0;
}
#endif
text[ len++ ] = ( TCHAR ) usChar;
pWVT->TextLine[ len++ ] = ( TCHAR ) usChar;
iCol++;
}
if( len > 0 )
hb_gt_wvt_TextOut( pWVT, hdc, startCol, iRow, iOldColor, text, ( UINT ) len );
hb_gt_wvt_TextOut( pWVT, hdc, startCol, iRow, iOldColor, pWVT->TextLine, ( UINT ) len );
}
EndPaint( pWVT->hWnd, &ps );

View File

@@ -118,6 +118,8 @@ typedef struct
int ROWS; /* number of displayable rows in window */
int COLS; /* number of displayable columns in window */
TCHAR * TextLine; /* buffer for text line */
COLORREF COLORS[ 16 ]; /* colors */
BOOL CaretExist; /* TRUE if a caret has been created */
@@ -135,7 +137,7 @@ typedef struct
POINT PTEXTSIZE; /* size of the fixed width font */
BOOL FixedFont; /* TRUE if current font is a fixed font */
int FixedSize[ WVT_MAX_COLS ]; /* buffer for ExtTextOut() to emulate fixed pitch when Proportional font selected */
int * FixedSize; /* buffer for ExtTextOut() to emulate fixed pitch when Proportional font selected */
int fontHeight; /* requested font height */
int fontWidth; /* requested font width */
int fontWeight; /* Bold level */