2008-06-07 09:39 UTC+0100 Viktor Szakats (harbour.01 syenar hu)

* source/rtl/gtwvt/gtwvt.c
     ! Fixed cursor width to be synced properly after 
       a font change.
     ! Fixed cursor SC_NORMAL height to be calculated 
       from the font height, instead of being a static 
       number. [RC1_TOMERGE]

   * contrib/hbcurl/hbcurl.c
     + Added RTEs when wrong parameter was passed 
       to the remaining functions:
       CURL_EASY_STRERROR()
       CURL_SHARE_STRERROR()
       CURL_MULTI_STRERROR()
       CURL_GETDATE()
This commit is contained in:
Viktor Szakats
2008-06-07 07:44:51 +00:00
parent 0f7aa38d7d
commit a6e805095c
3 changed files with 140 additions and 108 deletions

View File

@@ -8,6 +8,22 @@
2008-12-31 13:59 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2008-06-07 09:39 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* source/rtl/gtwvt/gtwvt.c
! Fixed cursor width to be synced properly after
a font change.
! Fixed cursor SC_NORMAL height to be calculated
from the font height, instead of being a static
number. [RC1_TOMERGE]
* contrib/hbcurl/hbcurl.c
+ Added RTEs when wrong parameter was passed
to the remaining functions:
CURL_EASY_STRERROR()
CURL_SHARE_STRERROR()
CURL_MULTI_STRERROR()
CURL_GETDATE()
2008-06-06 23:30 UTC+0800 Pritpal Bedi (pritpal@vouchcac.com
* harbour/source/rtl/gtwvt/gtwvt.c
! hb_gt_wvt_Info()

View File

@@ -1673,23 +1673,36 @@ HB_FUNC( CURL_VERSION_INFO )
HB_FUNC( CURL_EASY_STRERROR )
{
hb_retc( curl_easy_strerror( ( CURLcode ) hb_parnl( 1 ) ) );
if( ISNUM( 1 ) )
hb_retc( curl_easy_strerror( ( CURLcode ) hb_parnl( 1 ) ) );
else
hb_errRT_BASE( EG_ARG, 2010, NULL, "CURL_EASY_STRERROR", HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( CURL_SHARE_STRERROR )
{
hb_retc( curl_share_strerror( ( CURLSHcode ) hb_parnl( 1 ) ) );
if( ISNUM( 1 ) )
hb_retc( curl_share_strerror( ( CURLSHcode ) hb_parnl( 1 ) ) );
else
hb_errRT_BASE( EG_ARG, 2010, NULL, "CURL_SHARE_STRERROR", HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( CURL_MULTI_STRERROR )
{
hb_retc( curl_multi_strerror( ( CURLMcode ) hb_parnl( 1 ) ) );
if( ISNUM( 1 ) )
hb_retc( curl_multi_strerror( ( CURLMcode ) hb_parnl( 1 ) ) );
else
hb_errRT_BASE( EG_ARG, 2010, NULL, "CURL_MULTI_STRERROR", HB_ERR_ARGS_BASEPARAMS );
}
#endif
/* NOTE: This returns the number of seconds since January 1st 1970 in the UTC time zone. */
/* TODO: Add support for second curl_getdate() parameter: 'time_t * now' */
HB_FUNC( CURL_GETDATE )
{
hb_retnint( ( HB_LONG ) curl_getdate( hb_parcx( 1 ), NULL ) );
if( ISCHAR( 1 ) )
hb_retnint( ( HB_LONG ) curl_getdate( hb_parcx( 1 ), NULL ) );
else
hb_errRT_BASE( EG_ARG, 2010, NULL, "CURL_GETDATE", HB_ERR_ARGS_BASEPARAMS );
}

View File

@@ -193,17 +193,6 @@ static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT )
pWVT->COLORS[14] = YELLOW;
pWVT->COLORS[15] = BRIGHT_WHITE;
pWVT->CaretExist = FALSE;
pWVT->CaretHidden = FALSE;
pWVT->CaretSize = 4;
pWVT->MousePos.x = 0;
pWVT->MousePos.y = 0;
pWVT->MouseMove = TRUE;
pWVT->hWnd = NULL;
pWVT->keyPointerIn = 0;
pWVT->keyPointerOut = 0;
pWVT->keyLast = 0;
/* THEESE are the default font parameters, if not changed by user */
pWVT->PTEXTSIZE.x = WVT_DEFAULT_FONT_WIDTH;
pWVT->PTEXTSIZE.y = WVT_DEFAULT_FONT_HEIGHT;
@@ -213,6 +202,17 @@ static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT )
pWVT->fontQuality = DEFAULT_QUALITY;
hb_strncpy( pWVT->fontFace, WVT_DEFAULT_FONT_NAME, sizeof( pWVT->fontFace ) - 1 );
pWVT->CaretExist = FALSE;
pWVT->CaretHidden = FALSE;
pWVT->CaretSize = max( ( pWVT->PTEXTSIZE.y >> 2 ) - 1, 1 );
pWVT->MousePos.x = 0;
pWVT->MousePos.y = 0;
pWVT->MouseMove = TRUE;
pWVT->hWnd = NULL;
pWVT->keyPointerIn = 0;
pWVT->keyPointerOut = 0;
pWVT->keyLast = 0;
pWVT->CentreWindow = TRUE; /* Default is to always display window in centre of screen */
pWVT->CodePage = OEM_CHARSET; /* GetACP(); - set code page to default system */
@@ -520,6 +520,94 @@ static HFONT hb_gt_wvt_GetFont( char * pszFace, int iHeight, int iWidth, int iWe
return hFont;
}
static POINT hb_gt_wvt_GetXYFromColRow( PHB_GTWVT pWVT, USHORT col, USHORT row )
{
POINT xy;
xy.x = col * pWVT->PTEXTSIZE.x;
xy.y = row * pWVT->PTEXTSIZE.y;
return xy;
}
static RECT hb_gt_wvt_GetXYFromColRowRect( PHB_GTWVT pWVT, RECT colrow )
{
RECT xy;
xy.left = colrow.left * pWVT->PTEXTSIZE.x;
xy.top = colrow.top * pWVT->PTEXTSIZE.y;
xy.right = ( colrow.right + 1 ) * pWVT->PTEXTSIZE.x;
xy.bottom = ( colrow.bottom + 1 ) * pWVT->PTEXTSIZE.y;
return xy;
}
static void hb_gt_wvt_UpdateCaret( PHB_GTWVT pWVT )
{
int iRow, iCol, iStyle, iCaretSize;
HB_GTSELF_GETSCRCURSOR( pWVT->pGT, &iRow, &iCol, &iStyle );
if( iRow < 0 || iCol < 0 || iRow >= pWVT->ROWS || iCol >= pWVT->COLS )
{
iCaretSize = 0;
}
else switch( iStyle )
{
case SC_INSERT:
iCaretSize = pWVT->PTEXTSIZE.y >> 1;
break;
case SC_SPECIAL1:
iCaretSize = pWVT->PTEXTSIZE.y;
break;
case SC_SPECIAL2:
iCaretSize = - ( pWVT->PTEXTSIZE.y >> 1 );
break;
case SC_NORMAL:
iCaretSize = max( ( pWVT->PTEXTSIZE.y >> 2 ) - 1, 1 );
break;
default:
iCaretSize = 0;
break;
}
if( iCaretSize == 0 )
{
if( pWVT->CaretExist && !pWVT->CaretHidden )
{
HideCaret( pWVT->hWnd );
pWVT->CaretHidden = TRUE;
}
}
else
{
if( iCaretSize != pWVT->CaretSize || !pWVT->CaretExist )
{
pWVT->CaretSize = iCaretSize;
pWVT->CaretExist = CreateCaret( pWVT->hWnd, ( HBITMAP ) NULL, pWVT->PTEXTSIZE.x,
pWVT->CaretSize < 0 ? - pWVT->CaretSize : pWVT->CaretSize );
}
if( pWVT->CaretExist )
{
POINT xy;
xy = hb_gt_wvt_GetXYFromColRow( pWVT, ( SHORT ) iCol, ( SHORT ) iRow );
SetCaretPos( xy.x, pWVT->CaretSize < 0 ?
xy.y : xy.y + pWVT->PTEXTSIZE.y - pWVT->CaretSize );
ShowCaret( pWVT->hWnd );
pWVT->CaretHidden = FALSE;
}
}
}
static void hb_gt_wvt_KillCaret( PHB_GTWVT pWVT )
{
if( pWVT->CaretExist )
{
DestroyCaret();
pWVT->CaretExist = FALSE;
}
}
static void hb_gt_wvt_ResetWindowSize( PHB_GTWVT pWVT )
{
HDC hdc;
@@ -579,6 +667,9 @@ static void hb_gt_wvt_ResetWindowSize( PHB_GTWVT pWVT )
width += ( USHORT ) ( wi.right - wi.left - ci.right );
height += ( USHORT ) ( wi.bottom - wi.top - ci.bottom );
hb_gt_wvt_KillCaret( pWVT );
hb_gt_wvt_UpdateCaret( pWVT );
/*
* Centre the window within the CLIENT area on the screen
* but only if pWVT->CentreWindow == TRUE
@@ -654,28 +745,6 @@ static RECT hb_gt_wvt_GetColRowFromXYRect( PHB_GTWVT pWVT, RECT xy )
return colrow;
}
static POINT hb_gt_wvt_GetXYFromColRow( PHB_GTWVT pWVT, USHORT col, USHORT row )
{
POINT xy;
xy.x = col * pWVT->PTEXTSIZE.x;
xy.y = row * pWVT->PTEXTSIZE.y;
return xy;
}
static RECT hb_gt_wvt_GetXYFromColRowRect( PHB_GTWVT pWVT, RECT colrow )
{
RECT xy;
xy.left = colrow.left * pWVT->PTEXTSIZE.x;
xy.top = colrow.top * pWVT->PTEXTSIZE.y;
xy.right = ( colrow.right + 1 ) * pWVT->PTEXTSIZE.x;
xy.bottom = ( colrow.bottom + 1 ) * pWVT->PTEXTSIZE.y;
return xy;
}
/*
* functions for handling the input queues for the mouse and keyboard
*/
@@ -1247,72 +1316,6 @@ static void hb_gt_wvt_PaintText( PHB_GTWVT pWVT, RECT updateRect )
EndPaint( pWVT->hWnd, &ps );
}
static void hb_gt_wvt_UpdateCaret( PHB_GTWVT pWVT )
{
int iRow, iCol, iStyle, iCaretSize;
HB_GTSELF_GETSCRCURSOR( pWVT->pGT, &iRow, &iCol, &iStyle );
if( iRow < 0 || iCol < 0 || iRow >= pWVT->ROWS || iCol >= pWVT->COLS )
{
iCaretSize = 0;
}
else switch( iStyle )
{
case SC_INSERT:
iCaretSize = pWVT->PTEXTSIZE.y >> 1;
break;
case SC_SPECIAL1:
iCaretSize = pWVT->PTEXTSIZE.y;
break;
case SC_SPECIAL2:
iCaretSize = - ( pWVT->PTEXTSIZE.y >> 1 );
break;
case SC_NORMAL:
iCaretSize = 4;
break;
default:
iCaretSize = 0;
break;
}
if( iCaretSize == 0 )
{
if( pWVT->CaretExist && !pWVT->CaretHidden )
{
HideCaret( pWVT->hWnd );
pWVT->CaretHidden = TRUE;
}
}
else
{
if( iCaretSize != pWVT->CaretSize || !pWVT->CaretExist )
{
pWVT->CaretSize = iCaretSize;
pWVT->CaretExist = CreateCaret( pWVT->hWnd, ( HBITMAP ) NULL, pWVT->PTEXTSIZE.x,
pWVT->CaretSize < 0 ? - pWVT->CaretSize : pWVT->CaretSize );
}
if( pWVT->CaretExist )
{
POINT xy;
xy = hb_gt_wvt_GetXYFromColRow( pWVT, ( SHORT ) iCol, ( SHORT ) iRow );
SetCaretPos( xy.x, pWVT->CaretSize < 0 ?
xy.y : xy.y + pWVT->PTEXTSIZE.y - pWVT->CaretSize );
ShowCaret( pWVT->hWnd );
pWVT->CaretHidden = FALSE;
}
}
}
static void hb_gt_wvt_KillCaret( PHB_GTWVT pWVT )
{
if( pWVT->CaretExist )
{
DestroyCaret();
pWVT->CaretExist = FALSE;
}
}
static LRESULT CALLBACK hb_gt_wvt_WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
PHB_GTWVT pWVT = hb_gt_wvt_Find( hWnd );
@@ -1563,13 +1566,13 @@ static void hb_gt_wvt_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStd
if( ! hb_winmainArgGet( &s_hInstance, &s_hPrevInstance, &s_iCmdShow ) )
{
hb_errInternal( 10001, "It's not a window GUI program.", "", "" );
hb_errInternal( 10001, "It's not a window GUI program.", NULL, NULL );
}
pWVT = hb_gt_wvt_New( pGT );
if( !pWVT )
{
hb_errInternal( 10001, "Cannot allocate new window", "", "" );
hb_errInternal( 10001, "Cannot allocate new window", NULL, NULL );
}
HB_GTLOCAL( pGT ) = ( void * ) pWVT;
@@ -1580,7 +1583,7 @@ static void hb_gt_wvt_Init( PHB_GT pGT, FHANDLE hFilenoStdin, FHANDLE hFilenoStd
if( !pWVT->hWnd )
{
/* hb_errRT_TERM( EG_CREATE, 10001, "WINAPI CreateWindow() failed", "hb_gt_wvt_Init()", 0, 0 ); */
hb_errInternal( 10001, "WINAPI CreateWindow() failed", "", "" );
hb_errInternal( 10001, "WINAPI CreateWindow() failed", NULL, NULL );
}
hb_gt_wvt_InitWindow( pWVT, WVT_DEFAULT_ROWS, WVT_DEFAULT_COLS );
@@ -1984,7 +1987,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
if( hb_gt_wvt_GetWindowTitle( pWVT->hWnd, &szTitle ) )
pInfo->pResult = hb_itemPutCPtr( pInfo->pResult, szTitle, strlen( szTitle ) );
else
pInfo->pResult = hb_itemPutC( pInfo->pResult, "" );
pInfo->pResult = hb_itemPutC( pInfo->pResult, NULL );
if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING )
hb_gt_wvt_SetWindowTitle( pWVT->hWnd, hb_itemGetCPtr( pInfo->pNewVal ) );
break;
@@ -2077,7 +2080,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
}
else
{
pInfo->pResult = hb_itemPutC( pInfo->pResult, "" );
pInfo->pResult = hb_itemPutC( pInfo->pResult, NULL );
}
}
break;