2009-01-19 19:34 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/contrib/hbct/ctwin.c
  * harbour/contrib/hbct/ctwin.h
  * harbour/contrib/hbct/ctwfunc.c
    + added support for window shadows which clears highlight attributes
      instead of using fixed shadow color attribute
This commit is contained in:
Przemyslaw Czerpak
2009-01-19 18:30:49 +00:00
parent de50c76fca
commit eea5355ce8
4 changed files with 36 additions and 11 deletions

View File

@@ -8,6 +8,13 @@
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2009-01-19 19:34 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/hbct/ctwin.c
* harbour/contrib/hbct/ctwin.h
* harbour/contrib/hbct/ctwfunc.c
+ added support for window shadows which clears highlight attributes
instead of using fixed shadow color attribute
2009-01-19 13:10 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/hbmzip/hbmzip.c
! added missing nInternalAttr and nExternalAttr parameters decoding in

View File

@@ -116,7 +116,7 @@ HB_FUNC( GETCLEARB )
HB_FUNC( WSETSHADOW )
{
hb_retni( hb_ctwSetShadowAttr( hb_ctColorParam( 1, -2 ) ) );
hb_retni( hb_ctwSetShadowAttr( hb_ctColorParam( 1, HB_CTW_SHADOW_UNDEF ) ) );
}
HB_FUNC( WSETMOVE )
@@ -385,7 +385,7 @@ HB_FUNC( WSHADOW )
{
int iAttr;
iAttr = ISNUM( 1 ) ? hb_parni( 1 ) : -2;
iAttr = ISNUM( 1 ) ? hb_parni( 1 ) : HB_CTW_SHADOW_UNDEF;
hb_retni( hb_ctwSetWindowShadow( hb_ctwCurrentWindow(), iAttr ) );
}

View File

@@ -224,7 +224,7 @@ static void hb_ctw_WindowMap( PHB_GTCTW pCTW, int iWindow, BOOL fExpose )
hb_ctw_SetMap( pCTW, pCTW->pShadowMap, 0,
pWnd->iFirstRow, pWnd->iFirstCol,
iLastRow, iLastCol );
if( pWnd->iShadowAttr >= 0 &&
if( pWnd->iShadowAttr != HB_CTW_SHADOW_OFF &&
iLastRow >= pCTW->iBoardTop && iLastCol >= pCTW->iBoardLeft &&
pWnd->iFirstRow <= pCTW->iBoardBottom && pWnd->iFirstCol <= pCTW->iBoardRight )
{
@@ -264,7 +264,9 @@ static int hb_ctw_SetShadowAttr( PHB_GTCTW pCTW, int iAttr )
HB_TRACE(HB_TR_DEBUG, ("hb_ctw_SetShadowAttr(%p,%d)", pCTW, iAttr));
iOldAttr = pCTW->iShadowAttr;
if( iAttr >= -1 )
if( iAttr >= 0 ||
iAttr == HB_CTW_SHADOW_OFF ||
iAttr == HB_CTW_SHADOW_EXT )
pCTW->iShadowAttr = iAttr;
return iOldAttr;
@@ -493,7 +495,10 @@ static int hb_ctw_SetWindowShadow( PHB_GTCTW pCTW, int iWindow, int iAttr )
PHB_CT_WND pWnd = pCTW->windows[ iWindow ];
iResult = pWnd->iShadowAttr;
if( iAttr >= -1 && pWnd->iShadowAttr != iAttr )
if( ( iAttr >= 0 ||
iAttr == HB_CTW_SHADOW_OFF ||
iAttr == HB_CTW_SHADOW_EXT ) &&
pWnd->iShadowAttr != iAttr )
{
pWnd->iShadowAttr = iAttr;
if( !pWnd->fHidden )
@@ -1553,6 +1558,15 @@ static BOOL hb_ctw_gt_GetScrChar( PHB_GT pGT, int iRow, int iCol,
PHB_CT_WND pWnd = pCTW->windows[ iShadow ];
if( pWnd->iShadowAttr >= 0 )
*pbColor = ( BYTE ) pWnd->iShadowAttr;
else if( pWnd->iShadowAttr == HB_CTW_SHADOW_EXT )
{
if( ( *pbColor & 0x80 ) == 0 )
*pbColor &= 0x0F;
if( ( *pbColor & 0x08 ) == 0 )
*pbColor &= 0xF0;
if( ( *pbColor &= 0x77 ) == 0 )
*pbColor = 0x07;
}
*pbAttr |= HB_GT_ATTR_SHADOW;
}

View File

@@ -53,13 +53,17 @@
#ifndef HB_CTWIN_H_
#define HB_CTWIN_H_
#define HB_CTW_UNDEF -1
#define HB_CTW_HIDDEN 0
#define HB_CTW_VISIBLE 1
#define HB_CTW_UNDEF -1
#define HB_CTW_HIDDEN 0
#define HB_CTW_VISIBLE 1
#define HB_CTW_BOTTOM 0
#define HB_CTW_DEFAULT 1
#define HB_CTW_TOP 2
#define HB_CTW_SHADOW_OFF -1
#define HB_CTW_SHADOW_EXT -2
#define HB_CTW_SHADOW_UNDEF -3
#define HB_CTW_BOTTOM 0
#define HB_CTW_DEFAULT 1
#define HB_CTW_TOP 2
HB_EXTERN_BEGIN