2008-10-12 13:19 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/include/hbthread.h
    * casting cleanup

  * harbour/include/hbapigt.h
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/scroll.c
  * harbour/source/rtl/console.c
  * harbour/source/rtl/box.c
    * changed hb_gtDrawBox() and hb_gtPutText() to operate on color
      number (index in some GTs) instead of color string
    * use int as color number (index) in hb_gtScrollEx() hb_gtBoxEx()

  * harbour/source/rtl/box.c
    % changed DISPBOX() with color and frame string to work as one
      GT atomic operation

  * harbour/source/vm/classes.c
    ! fixed profiler usage
This commit is contained in:
Przemyslaw Czerpak
2008-10-12 11:19:42 +00:00
parent efdb02f17c
commit 5d69653985
8 changed files with 131 additions and 76 deletions

View File

@@ -8,6 +8,26 @@
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2008-10-12 13:19 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
* casting cleanup
* harbour/include/hbapigt.h
* harbour/source/rtl/gtapi.c
* harbour/source/rtl/scroll.c
* harbour/source/rtl/console.c
* harbour/source/rtl/box.c
* changed hb_gtDrawBox() and hb_gtPutText() to operate on color
number (index in some GTs) instead of color string
* use int as color number (index) in hb_gtScrollEx() hb_gtBoxEx()
* harbour/source/rtl/box.c
% changed DISPBOX() with color and frame string to work as one
GT atomic operation
* harbour/source/vm/classes.c
! fixed profiler usage
2008-10-11 21:49 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* bin/bld.bat
* bin/bld_os2.cmd

View File

@@ -147,7 +147,7 @@ extern HB_EXPORT ERRCODE hb_gtUnlock( void );
extern HB_EXPORT ERRCODE hb_gtBox( SHORT uiTop, SHORT uiLeft, SHORT uiBottom, SHORT uiRight, BYTE * pbyFrame );
extern HB_EXPORT ERRCODE hb_gtBoxD( SHORT uiTop, SHORT uiLeft, SHORT uiBottom, SHORT uiRight );
extern HB_EXPORT ERRCODE hb_gtBoxS( SHORT uiTop, SHORT uiLeft, SHORT uiBottom, SHORT uiRight );
extern HB_EXPORT ERRCODE hb_gtDrawBox( SHORT uiTop, SHORT uiLeft, SHORT uiBottom, SHORT uiRight, BYTE * pbyFrame, const char * pszColor );
extern HB_EXPORT ERRCODE hb_gtDrawBox( SHORT uiTop, SHORT uiLeft, SHORT uiBottom, SHORT uiRight, BYTE * pbyFrame, int iColor );
extern HB_EXPORT ERRCODE hb_gtColorSelect( USHORT uiColorIndex );
extern HB_EXPORT int hb_gtColorToN( const char * szColorString );
extern HB_EXPORT ERRCODE hb_gtColorsToString( int * pColors, int iColorCount, char * pszColorString, int iBufSize );
@@ -189,7 +189,7 @@ extern HB_EXPORT ERRCODE hb_gtTone( double dFrequency, double dDuration );
extern HB_EXPORT ERRCODE hb_gtWrite( BYTE * pbyStr, ULONG ulLen );
extern HB_EXPORT ERRCODE hb_gtWriteAt( USHORT uiRow, USHORT uiCol, BYTE * pbyStr, ULONG ulLen );
extern HB_EXPORT ERRCODE hb_gtWriteCon( BYTE * pbyStr, ULONG ulLen );
extern HB_EXPORT ERRCODE hb_gtPutText( USHORT uiRow, USHORT uiCol, BYTE * pStr, ULONG ulLength, const char * pszColor );
extern HB_EXPORT ERRCODE hb_gtPutText( USHORT uiRow, USHORT uiCol, BYTE * pStr, ULONG ulLength, int iColor );
extern HB_EXPORT const char * hb_gtVersion( int iType );
extern HB_EXPORT ERRCODE hb_gtOutStd( BYTE * pbyStr, ULONG ulLen );
extern HB_EXPORT ERRCODE hb_gtOutErr( BYTE * pbyStr, ULONG ulLen );
@@ -207,8 +207,8 @@ extern HB_EXPORT ERRCODE hb_gtGetScrChar( int iRow, int iCol, BYTE * pbColor, BY
extern HB_EXPORT ERRCODE hb_gtPutScrChar( int iRow, int iCol, BYTE bColor, BYTE bAttr, USHORT usChar );
extern HB_EXPORT ERRCODE hb_gtFlush( void );
extern HB_EXPORT ERRCODE hb_gtGetPosEx( int * piRow, int * piCol );
extern HB_EXPORT ERRCODE hb_gtScrollEx( int iTop, int iLeft, int iBottom, int iRight, BYTE bColor, BYTE bChar, int iRows, int iCols );
extern HB_EXPORT ERRCODE hb_gtBoxEx( int iTop, int iLeft, int iBottom, int iRight, BYTE * pbyFrame, BYTE bColor );
extern HB_EXPORT ERRCODE hb_gtScrollEx( int iTop, int iLeft, int iBottom, int iRight, int iColor, int iChar, int iRows, int iCols );
extern HB_EXPORT ERRCODE hb_gtBoxEx( int iTop, int iLeft, int iBottom, int iRight, BYTE * pbyFrame, int iColor );
extern HB_EXPORT int hb_gtGfxPrimitive( int iType, int iTop, int iLeft, int iBottom, int iRight, int iColor );
extern HB_EXPORT ERRCODE hb_gtGfxText( int iTop, int iLeft, const char * szText, int iColor, int iSize, int iWidth );

View File

@@ -103,7 +103,7 @@ HB_EXTERN_BEGIN
# define HB_CRITICAL_NEED_INIT
# endif
# define HB_CRITICAL_GET(v) ( &( (v)->critical ) )
# define HB_CRITICAL_INITVAL { ( HB_RAWCRITICAL_T ) 0 }
# define HB_CRITICAL_INITVAL { }
# endif
# if defined( PTHREAD_COND_INITIALIZER ) && !defined( HB_COND_NEED_INIT )
@@ -116,7 +116,7 @@ HB_EXTERN_BEGIN
# define HB_COND_NEED_INIT
# endif
# define HB_COND_GET(v) ( &( (v)->cond ) )
# define HB_COND_INITVAL ( ( HB_RAWCOND_T ) 0 )
# define HB_COND_INITVAL { }
# endif
#elif defined( HB_OS_WIN_32 ) && ! defined( HB_WINCE )

View File

@@ -65,35 +65,49 @@ HB_FUNC( DISPBOX )
{
const char * pszBox = hb_parc( 5 );
const char * pszColor = hb_parc( 6 );
char szOldColor[ HB_CLRSTR_LEN ];
if( pszColor )
{
hb_gtGetColorStr( szOldColor );
hb_gtSetColorStr( pszColor );
}
if( pszBox )
hb_gtBox( ( SHORT ) hb_itemGetNI( pTop ),
( SHORT ) hb_itemGetNI( pLeft),
( SHORT ) hb_itemGetNI( pBottom ),
( SHORT ) hb_itemGetNI( pRight ),
( BYTE * ) ( *pszBox ? pszBox : " " ) );
else if( hb_parni( 5 ) == 2 )
hb_gtBoxD( ( SHORT ) hb_itemGetNI( pTop ),
( SHORT ) hb_itemGetNI( pLeft),
( SHORT ) hb_itemGetNI( pBottom ),
( SHORT ) hb_itemGetNI( pRight ) );
{
int iColor;
if( pszColor )
iColor = hb_gtColorToN( pszColor );
else if( ISNUM( 6 ) )
iColor = hb_parni( 6 );
else
iColor = -1;
hb_gtDrawBox( ( SHORT ) hb_itemGetNI( pTop ),
( SHORT ) hb_itemGetNI( pLeft),
( SHORT ) hb_itemGetNI( pBottom ),
( SHORT ) hb_itemGetNI( pRight ),
( BYTE * ) ( *pszBox ? pszBox : " " ),
iColor );
}
else
hb_gtBoxS( ( SHORT ) hb_itemGetNI( pTop ),
( SHORT ) hb_itemGetNI( pLeft),
( SHORT ) hb_itemGetNI( pBottom ),
( SHORT ) hb_itemGetNI( pRight ) );
{
char szOldColor[ HB_CLRSTR_LEN ];
if( pszColor )
hb_gtSetColorStr( szOldColor );
if( pszColor )
{
hb_gtGetColorStr( szOldColor );
hb_gtSetColorStr( pszColor );
}
if( hb_parni( 5 ) == 2 )
hb_gtBoxD( ( SHORT ) hb_itemGetNI( pTop ),
( SHORT ) hb_itemGetNI( pLeft),
( SHORT ) hb_itemGetNI( pBottom ),
( SHORT ) hb_itemGetNI( pRight ) );
else
hb_gtBoxS( ( SHORT ) hb_itemGetNI( pTop ),
( SHORT ) hb_itemGetNI( pLeft),
( SHORT ) hb_itemGetNI( pBottom ),
( SHORT ) hb_itemGetNI( pRight ) );
if( pszColor )
hb_gtSetColorStr( szOldColor );
}
}
}
@@ -106,14 +120,23 @@ HB_FUNC( HB_DISPBOX )
if( pTop && pLeft && pBottom && pRight )
{
const char * pszColor = hb_parc( 6 );
const char * pszBox = hb_parc( 5 );
const char * pszColor = hb_parc( 6 );
int iColor;
if( pszColor )
iColor = hb_gtColorToN( pszColor );
else if( ISNUM( 6 ) )
iColor = hb_parni( 6 );
else
iColor = -1;
hb_gtDrawBox( ( SHORT ) hb_itemGetNI( pTop ),
( SHORT ) hb_itemGetNI( pLeft),
( SHORT ) hb_itemGetNI( pBottom ),
( SHORT ) hb_itemGetNI( pRight ),
( BYTE * ) ( *pszBox ? pszBox : " " ),
pszColor );
iColor );
}
}

View File

@@ -579,10 +579,18 @@ HB_FUNC( HB_DISPOUTAT )
char * pszString;
ULONG ulLen;
BOOL bFreeReq;
int iColor;
pszString = hb_itemStringCon( hb_param( 3, HB_IT_ANY ), &ulLen, &bFreeReq );
hb_gtPutText( ( USHORT ) hb_parni( 1 ), ( USHORT ) hb_parni( 2 ), ( BYTE * ) pszString, ulLen, hb_parc( 4 ) );
if( ISCHAR( 4 ) )
iColor = hb_gtColorToN( hb_parc( 4 ) );
else if( ISNUM( 6 ) )
iColor = hb_parni( 6 );
else
iColor = -1;
hb_gtPutText( ( USHORT ) hb_parni( 1 ), ( USHORT ) hb_parni( 2 ), ( BYTE * ) pszString, ulLen, iColor );
if( bFreeReq )
hb_xfree( pszString );

View File

@@ -243,24 +243,16 @@ HB_EXPORT ERRCODE hb_gtBoxS( SHORT Top, SHORT Left, SHORT Bottom, SHORT Right )
return FAILURE;
}
HB_EXPORT ERRCODE hb_gtDrawBox( SHORT Top, SHORT Left, SHORT Bottom, SHORT Right, BYTE * pbyFrame, const char * pszColor )
HB_EXPORT ERRCODE hb_gtDrawBox( SHORT Top, SHORT Left, SHORT Bottom, SHORT Right, BYTE * pbyFrame, int iColor )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_gtBox(%hd, %hd, %hd, %hd, %p, %s)", Top, Left, Bottom, Right, pbyFrame, pszColor));
HB_TRACE(HB_TR_DEBUG, ("hb_gtDrawBox(%hd, %hd, %hd, %hd, %p, %d)", Top, Left, Bottom, Right, pbyFrame, iColor));
pGT = hb_gt_Base();
if( pGT )
{
int iColor;
if( pszColor )
{
iColor = HB_GTSELF_COLORNUM( pGT, pszColor );
if( iColor == -1 )
iColor = HB_GTSELF_COLORNUM( pGT, "W/N" );
}
else
if( iColor == -1 )
iColor = HB_GTSELF_GETCOLOR( pGT );
HB_GTSELF_BOX( pGT, Top, Left, Bottom, Right, pbyFrame, iColor );
@@ -781,27 +773,19 @@ HB_EXPORT ERRCODE hb_gtSetMode( USHORT uiRows, USHORT uiCols )
HB_EXPORT ERRCODE hb_gtPutText( USHORT uiRow, USHORT uiCol,
BYTE * pStr, ULONG ulLength,
const char * pszColor )
int iColor )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_gtPutText(%hu, %hu, %p, %lu, %s)", uiRow, uiCol, pStr, ulLength, pszColor));
HB_TRACE(HB_TR_DEBUG, ("hb_gtPutText(%hu, %hu, %p, %lu, %d)", uiRow, uiCol, pStr, ulLength, iColor));
pGT = hb_gt_Base();
if( pGT )
{
int iColor;
if( pszColor )
{
iColor = HB_GTSELF_COLORNUM( pGT, pszColor );
if( iColor == -1 )
iColor = HB_GTSELF_COLORNUM( pGT, "W/N" );
}
else
if( iColor == -1 )
iColor = HB_GTSELF_GETCOLOR( pGT );
HB_GTSELF_PUTTEXT( pGT, uiRow, uiCol, ( BYTE ) iColor, pStr, ulLength );
HB_GTSELF_PUTTEXT( pGT, uiRow, uiCol, iColor, pStr, ulLength );
HB_GTSELF_FLUSH( pGT );
hb_gt_BaseFree( pGT );
@@ -1267,17 +1251,21 @@ HB_EXPORT ERRCODE hb_gtGetPosEx( int * piRow, int * piCol )
return FAILURE;
}
HB_EXPORT ERRCODE hb_gtScrollEx( int iTop, int iLeft, int iBottom, int iRight, BYTE bColor, BYTE bChar, int iRows, int iCols )
HB_EXPORT ERRCODE hb_gtScrollEx( int iTop, int iLeft, int iBottom, int iRight, int iColor, int iChar, int iRows, int iCols )
{
HB_TRACE(HB_TR_DEBUG, ("hb_gtScrollEx(%d, %d, %d, %d, %d, %hd, %d, %d)", iTop, iLeft, iBottom, iRight, bColor, bChar, iRows, iCols));
HB_TRACE(HB_TR_DEBUG, ("hb_gtScrollEx(%d, %d, %d, %d, %d, %hd, %d, %d)", iTop, iLeft, iBottom, iRight, iColor, iChar, iRows, iCols));
if( iTop <= iBottom && iLeft <= iRight )
{
PHB_GT pGT = hb_gt_Base();
if( pGT )
{
if( iColor == -1 )
iColor = HB_GTSELF_GETCOLOR( pGT );
if( iChar < 0 )
iChar = HB_GTSELF_GETCLEARCHAR( pGT );
HB_GTSELF_SCROLL( pGT, iTop, iLeft, iBottom, iRight,
bColor, bChar, iRows, iCols );
iColor, iChar, iRows, iCols );
HB_GTSELF_FLUSH( pGT );
hb_gt_BaseFree( pGT );
return SUCCESS;
@@ -1286,16 +1274,18 @@ HB_EXPORT ERRCODE hb_gtScrollEx( int iTop, int iLeft, int iBottom, int iRight, B
return FAILURE;
}
HB_EXPORT ERRCODE hb_gtBoxEx( int iTop, int iLeft, int iBottom, int iRight, BYTE * pbyFrame, BYTE bColor )
HB_EXPORT ERRCODE hb_gtBoxEx( int iTop, int iLeft, int iBottom, int iRight, BYTE * pbyFrame, int iColor )
{
PHB_GT pGT;
HB_TRACE(HB_TR_DEBUG, ("hb_gtBoxEx(%d, %d, %d, %d, %p, %d)", iTop, iLeft, iBottom, iRight, pbyFrame, bColor));
HB_TRACE(HB_TR_DEBUG, ("hb_gtBoxEx(%d, %d, %d, %d, %p, %d)", iTop, iLeft, iBottom, iRight, pbyFrame, iColor));
pGT = hb_gt_Base();
if( pGT )
{
HB_GTSELF_BOX( pGT, iTop, iLeft, iBottom, iRight, pbyFrame, bColor );
if( iColor == -1 )
iColor = HB_GTSELF_GETCOLOR( pGT );
HB_GTSELF_BOX( pGT, iTop, iLeft, iBottom, iRight, pbyFrame, iColor );
HB_GTSELF_SETPOS( pGT, iTop + 1, iLeft + 1 );
HB_GTSELF_FLUSH( pGT );
hb_gt_BaseFree( pGT );

View File

@@ -160,27 +160,23 @@ HB_FUNC( HB_SCROLL )
if( ISNUM( 7 ) )
iColor = hb_parni( 7 );
else if( ISCHAR( 7 ) )
{
iColor = hb_gtColorToN( hb_parc( 7 ) );
if( iColor == -1 )
iColor = hb_gtColorToN( "W/N" );
}
else
iColor = hb_gtGetClearColor();
iColor = -1;
if( ISNUM( 8 ) )
iChar = hb_parni( 8 );
else if( ISCHAR( 8 ) )
iChar = ( UCHAR ) hb_parc( 8 )[0];
else
iChar = hb_gtGetClearChar();
iChar = -1;
hb_gtScrollEx( iTop,
iLeft,
iBottom,
iRight,
( BYTE ) iColor,
( BYTE ) iChar,
iColor,
iChar,
hb_parni( 5 ), /* Defaults to zero on bad type */
hb_parni( 6 ) ); /* Defaults to zero on bad type */
}

View File

@@ -4505,13 +4505,31 @@ static HARBOUR hb___msgNull( void )
#ifndef HB_NO_PROFILER
void hb_mthAddTime( ULONG ulClockTicks )
{
PMETHOD pMethod = s_pClasses[ hb_objGetClassH( hb_stackSelfItem() ) ]->
pMethods;
if( pMethod )
PHB_ITEM pObject = hb_stackSelfItem();
PCLASS pClass = s_pClasses[ hb_objGetClassH( pObject ) ];
if( pClass )
{
pMethod += hb_stackBaseItem()->item.asSymbol.stackstate->uiMethod;
pMethod->ulCalls++;
pMethod->ulTime += ulClockTicks;
PMETHOD pMethod = pClass->pMethods;
if( pMethod )
{
pMethod += hb_stackBaseItem()->item.asSymbol.stackstate->uiMethod;
pMethod->ulCalls++;
pMethod->ulTime += ulClockTicks;
return;
}
}
if( HB_IS_BLOCK( pObject ) )
{
PHB_SYMB pSym = hb_stackBaseItem()->item.asSymbol.value;
if( pSym == &hb_symEval || pSym->pDynSym == hb_symEval.pDynSym )
{
pSym->pDynSym->ulCalls++;
if( --pSym->pDynSym->ulRecurse == 0 )
pSym->pDynSym->ulTime += ulClockTicks;
}
}
}
#endif