mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2024-12-28 09:58:30 +01:00
Since there's now a flag indicating whether to show the value of a
tile, make value unsigned. Adjust/fix platforms. Add cmdline flag to linux apps for hiding values.
This commit is contained in:
parent
fa4adbfcea
commit
227a58d115
9 changed files with 59 additions and 43 deletions
|
@ -171,13 +171,13 @@ typedef struct DrawCtxVTable {
|
|||
/* at least 1 of these two will be null*/
|
||||
const XP_UCHAR* text,
|
||||
const XP_Bitmap bitmap,
|
||||
XP_S16 val, CellFlags flags );
|
||||
XP_U16 val, CellFlags flags );
|
||||
#ifdef POINTER_SUPPORT
|
||||
void DRAW_VTABLE_NAME(drawTileMidDrag) ( DrawCtx* dctx, const XP_Rect* rect,
|
||||
/* at least 1 of these two will be null*/
|
||||
const XP_UCHAR* text,
|
||||
const XP_Bitmap bitmap,
|
||||
XP_S16 val, XP_U16 owner,
|
||||
XP_U16 val, XP_U16 owner,
|
||||
CellFlags flags );
|
||||
#endif
|
||||
void DRAW_VTABLE_NAME(drawTileBack) ( DrawCtx* dctx, const XP_Rect* rect,
|
||||
|
|
|
@ -392,7 +392,7 @@ curses_stringInTile( CursesDrawCtx* dctx, const XP_Rect* rect,
|
|||
static void
|
||||
curses_draw_drawTile( DrawCtx* p_dctx, const XP_Rect* rect,
|
||||
const XP_UCHAR* textP, XP_Bitmap XP_UNUSED(bitmap),
|
||||
XP_S16 val, CellFlags flags )
|
||||
XP_U16 val, CellFlags flags )
|
||||
{
|
||||
char numbuf[5];
|
||||
char letterbuf[5];
|
||||
|
@ -403,7 +403,7 @@ curses_draw_drawTile( DrawCtx* p_dctx, const XP_Rect* rect,
|
|||
if ( (flags&CELL_ISEMPTY) == 0 ) {
|
||||
letterbuf[0] = !!textP? *textP: '_'; /* BLANK or bitmap */
|
||||
letterbuf[1] = '\0';
|
||||
if ( val >= 0 ) {
|
||||
if ( (flags&CELL_VALHIDDEN) == 0 ) {
|
||||
sprintf( numbuf, "%.2d", val );
|
||||
if ( numbuf[0] == '0' ) {
|
||||
numbuf[0] = ' ';
|
||||
|
|
|
@ -1349,6 +1349,7 @@ cursesmain( XP_Bool isServer, LaunchParams* params )
|
|||
|
||||
g_globals.cp.showBoardArrow = XP_TRUE;
|
||||
g_globals.cp.showRobotScores = params->showRobotScores;
|
||||
g_globals.cp.hideTileValues = params->hideValues;
|
||||
|
||||
dict = params->dict;
|
||||
|
||||
|
|
|
@ -534,7 +534,7 @@ gtk_draw_trayBegin( DrawCtx* p_dctx, const XP_Rect* XP_UNUSED(rect),
|
|||
|
||||
static void
|
||||
gtkDrawTileImpl( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* textP,
|
||||
XP_Bitmap bitmap, XP_S16 val, CellFlags flags,
|
||||
XP_Bitmap bitmap, XP_U16 val, CellFlags flags,
|
||||
XP_Bool clearBack )
|
||||
{
|
||||
XP_UCHAR numbuf[3];
|
||||
|
@ -542,25 +542,28 @@ gtkDrawTileImpl( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* textP,
|
|||
GtkDrawCtx* dctx = (GtkDrawCtx*)p_dctx;
|
||||
XP_Rect insetR = *rect;
|
||||
XP_Bool isCursor = (flags & CELL_ISCURSOR) != 0;
|
||||
XP_Bool valHidden = (flags & CELL_VALHIDDEN) != 0;
|
||||
XP_Bool notEmpty = (flags & CELL_ISEMPTY) == 0;
|
||||
|
||||
if ( clearBack ) {
|
||||
gtkEraseRect( dctx, &insetR );
|
||||
}
|
||||
|
||||
if ( isCursor || (val >= 0) ) {
|
||||
if ( isCursor || notEmpty ) {
|
||||
GdkColor* foreground = &dctx->playerColors[dctx->trayOwner];
|
||||
XP_Rect formatRect = insetR;
|
||||
|
||||
gtkInsetRect( &insetR, 1 );
|
||||
|
||||
if ( clearBack ) {
|
||||
gtkFillRect( dctx, &insetR, isCursor? &dctx->cursor:&dctx->tileBack );
|
||||
gtkFillRect( dctx, &insetR,
|
||||
isCursor ? &dctx->cursor : &dctx->tileBack );
|
||||
}
|
||||
|
||||
if ( val >= 0 ) {
|
||||
formatRect.left += 3;
|
||||
formatRect.width -= 6;
|
||||
|
||||
if ( notEmpty ) {
|
||||
if ( !!textP ) {
|
||||
if ( *textP != LETTER_NONE ) { /* blank */
|
||||
draw_string_at( dctx, NULL, textP, formatRect.height>>1,
|
||||
|
@ -572,12 +575,15 @@ gtkDrawTileImpl( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* textP,
|
|||
drawBitmapFromLBS( dctx, bitmap, &insetR );
|
||||
}
|
||||
|
||||
if ( !valHidden ) {
|
||||
sprintf( numbuf, "%d", val );
|
||||
len = strlen( numbuf );
|
||||
|
||||
draw_string_at( dctx, NULL, numbuf, formatRect.height>>2,
|
||||
&formatRect, XP_GTK_JUST_BOTTOMRIGHT,
|
||||
foreground, NULL );
|
||||
}
|
||||
}
|
||||
|
||||
/* frame the tile */
|
||||
gdk_gc_set_foreground( dctx->drawGC, &dctx->black );
|
||||
|
@ -595,12 +601,11 @@ gtkDrawTileImpl( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* textP,
|
|||
insetR.width, insetR.height);
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* gtkDrawTileImpl */
|
||||
|
||||
static void
|
||||
gtk_draw_drawTile( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* textP,
|
||||
XP_Bitmap bitmap, XP_S16 val, CellFlags flags )
|
||||
XP_Bitmap bitmap, XP_U16 val, CellFlags flags )
|
||||
{
|
||||
gtkDrawTileImpl( p_dctx, rect, textP, bitmap, val, flags, XP_TRUE );
|
||||
}
|
||||
|
@ -609,7 +614,7 @@ gtk_draw_drawTile( DrawCtx* p_dctx, const XP_Rect* rect, const XP_UCHAR* textP,
|
|||
static void
|
||||
gtk_draw_drawTileMidDrag( DrawCtx* p_dctx, const XP_Rect* rect,
|
||||
const XP_UCHAR* textP, XP_Bitmap bitmap,
|
||||
XP_S16 val, XP_U16 owner, CellFlags flags )
|
||||
XP_U16 val, XP_U16 owner, CellFlags flags )
|
||||
{
|
||||
gtk_draw_trayBegin( p_dctx, rect, owner, DFS_NONE );
|
||||
gtkDrawTileImpl( p_dctx, rect, textP, bitmap, val,
|
||||
|
|
|
@ -1844,6 +1844,7 @@ gtkmain( LaunchParams* params, int argc, char *argv[] )
|
|||
#endif
|
||||
|
||||
globals.cp.showBoardArrow = XP_TRUE;
|
||||
globals.cp.hideTileValues = params->hideValues;
|
||||
globals.cp.showRobotScores = params->showRobotScores;
|
||||
|
||||
setupGtkUtilCallbacks( &globals, params->util );
|
||||
|
|
|
@ -195,6 +195,7 @@ usage( char* appName, char* msg )
|
|||
"\t [-n name]* # same-process player (no network used)\n"
|
||||
"\t [-w pwd]* # passwd for matching local player\n"
|
||||
"\t [-v] # put scoreboard in vertical mode\n"
|
||||
"\t [-V] # hide values in tray\n"
|
||||
"\t [-m] # make the robot duMb (smart is default)\n"
|
||||
"\t [-l] # disallow hints\n"
|
||||
"\t [-c] # explain robot scores after each move\n"
|
||||
|
@ -725,7 +726,7 @@ main( int argc, char** argv )
|
|||
#if defined PLATFORM_GTK
|
||||
"h:I"
|
||||
#endif
|
||||
"kKf:ln:Nsd:e:r:b:q:w:Sit:Umvc"
|
||||
"kKf:ln:Nsd:e:r:b:q:w:Sit:UmvcV"
|
||||
#ifdef XWFEATURE_SMS
|
||||
"M:"
|
||||
#endif
|
||||
|
@ -864,6 +865,9 @@ main( int argc, char** argv )
|
|||
btaddr = optarg;
|
||||
break;
|
||||
#endif
|
||||
case 'V':
|
||||
mainParams.hideValues = XP_TRUE;
|
||||
break;
|
||||
case 'v':
|
||||
mainParams.verticalScore = XP_TRUE;
|
||||
break;
|
||||
|
|
|
@ -57,6 +57,7 @@ typedef struct LaunchParams {
|
|||
XP_Bool printHistory;
|
||||
XP_Bool undoWhenDone;
|
||||
XP_Bool verticalScore;
|
||||
XP_Bool hideValues;
|
||||
// XP_Bool mainParams;
|
||||
XP_Bool skipWarnings;
|
||||
XP_Bool showRobotScores;
|
||||
|
|
|
@ -677,7 +677,7 @@ smallBoldStringAt( const char* str, XP_U16 len, XP_S16 x, XP_U16 y )
|
|||
static void
|
||||
palm_draw_drawTile( DrawCtx* p_dctx, const XP_Rect* rect,
|
||||
const XP_UCHAR* letters, XP_Bitmap bitmap,
|
||||
XP_S16 val, CellFlags flags )
|
||||
XP_U16 val, CellFlags flags )
|
||||
{
|
||||
PalmDrawCtx* dctx = (PalmDrawCtx*)p_dctx;
|
||||
char valBuf[3];
|
||||
|
@ -716,7 +716,7 @@ palm_draw_drawTile( DrawCtx* p_dctx, const XP_Rect* rect,
|
|||
/* Draw the number before the letter. Some PalmOS version don't
|
||||
honor the winOverlay flag and erase. Better to erase the value
|
||||
than the letter. */
|
||||
if ( val >= 0 ) {
|
||||
if ( (flags & CELL_VALHIDDEN) == 0 ) {
|
||||
(void)StrPrintF( valBuf, "%d", val );
|
||||
len = XP_STRLEN((const char*)valBuf);
|
||||
|
||||
|
@ -769,7 +769,7 @@ palm_draw_drawTile( DrawCtx* p_dctx, const XP_Rect* rect,
|
|||
static void
|
||||
palm_draw_drawTileMidDrag( DrawCtx* p_dctx, const XP_Rect* rect,
|
||||
const XP_UCHAR* letters, XP_Bitmap bitmap,
|
||||
XP_S16 val, XP_U16 owner, CellFlags flags )
|
||||
XP_U16 val, XP_U16 owner, CellFlags flags )
|
||||
{
|
||||
/* let trayBegin code take care of pushing color env changes. */
|
||||
draw_trayBegin( p_dctx, rect, owner, DFS_NONE );
|
||||
|
@ -781,8 +781,8 @@ palm_draw_drawTileMidDrag( DrawCtx* p_dctx, const XP_Rect* rect,
|
|||
static void
|
||||
palm_draw_drawTileBack( DrawCtx* p_dctx, const XP_Rect* rect, CellFlags flags )
|
||||
{
|
||||
palm_draw_drawTile( p_dctx, rect, (unsigned char*)"?", (XP_Bitmap)NULL,
|
||||
-1, flags & CELL_ISCURSOR );
|
||||
palm_draw_drawTile( p_dctx, rect, "?", (XP_Bitmap)NULL,
|
||||
0, (flags & CELL_ISCURSOR) | CELL_VALHIDDEN );
|
||||
} /* palm_draw_drawTileBack */
|
||||
|
||||
static void
|
||||
|
|
|
@ -59,6 +59,7 @@ typedef enum { NO_FOCUS, SINGLE_FOCUS, TOP_FOCUS } CeFocusLevel;
|
|||
|
||||
typedef enum {
|
||||
RFONTS_TRAY
|
||||
,RFONTS_TRAYNOVAL
|
||||
,RFONTS_TRAYVAL
|
||||
,RFONTS_CELL
|
||||
,RFONTS_REM
|
||||
|
@ -127,6 +128,7 @@ RFI2Str( RFIndex rfi )
|
|||
# define CASE_STR(c) case c: str = #c; break
|
||||
switch( rfi ) {
|
||||
CASE_STR( RFONTS_TRAY );
|
||||
CASE_STR( RFONTS_TRAYNOVAL );
|
||||
CASE_STR( RFONTS_TRAYVAL );
|
||||
CASE_STR( RFONTS_CELL );
|
||||
CASE_STR( RFONTS_REM );
|
||||
|
@ -277,6 +279,7 @@ makeTestBuf( CEDrawCtx* dctx, XP_UCHAR* buf, XP_U16 bufLen, RFIndex index )
|
|||
{
|
||||
switch( index ) {
|
||||
case RFONTS_TRAY:
|
||||
case RFONTS_TRAYNOVAL:
|
||||
case RFONTS_CELL: {
|
||||
Tile tile;
|
||||
Tile blank = (Tile)-1;
|
||||
|
@ -948,7 +951,7 @@ DRAW_FUNC_NAME(trayBegin)( DrawCtx* p_dctx, const XP_Rect* XP_UNUSED(rect),
|
|||
|
||||
static void
|
||||
drawDrawTileGuts( DrawCtx* p_dctx, const XP_Rect* xprect,
|
||||
const XP_UCHAR* letters, XP_S16 val, CellFlags flags )
|
||||
const XP_UCHAR* letters, XP_U16 val, CellFlags flags )
|
||||
{
|
||||
CEDrawCtx* dctx = (CEDrawCtx*)p_dctx;
|
||||
CEAppGlobals* globals = dctx->globals;
|
||||
|
@ -1013,7 +1016,8 @@ drawDrawTileGuts( DrawCtx* p_dctx, const XP_Rect* xprect,
|
|||
}
|
||||
|
||||
if ( !!letters ) {
|
||||
fce = ceGetSizedFont( dctx, charHt, 0, RFONTS_TRAY );
|
||||
fce = ceGetSizedFont( dctx, charHt, 0,
|
||||
valHidden ? RFONTS_TRAYNOVAL:RFONTS_TRAY );
|
||||
HFONT oldFont = SelectObject( hdc, fce->setFont );
|
||||
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, letters, -1,
|
||||
widebuf, VSIZE(widebuf) );
|
||||
|
@ -1025,7 +1029,7 @@ drawDrawTileGuts( DrawCtx* p_dctx, const XP_Rect* xprect,
|
|||
SelectObject( hdc, oldFont );
|
||||
}
|
||||
|
||||
if ( val >= 0 && !valHidden ) {
|
||||
if ( !valHidden ) {
|
||||
fce = ceGetSizedFont( dctx, valHt, 0, RFONTS_TRAYVAL );
|
||||
HFONT oldFont = SelectObject( hdc, fce->setFont );
|
||||
swprintf( widebuf, L"%d", val );
|
||||
|
@ -1043,7 +1047,7 @@ drawDrawTileGuts( DrawCtx* p_dctx, const XP_Rect* xprect,
|
|||
DLSTATIC void
|
||||
DRAW_FUNC_NAME(drawTile)( DrawCtx* p_dctx, const XP_Rect* xprect,
|
||||
const XP_UCHAR* letters, XP_Bitmap XP_UNUSED(bitmap),
|
||||
XP_S16 val, CellFlags flags )
|
||||
XP_U16 val, CellFlags flags )
|
||||
{
|
||||
drawDrawTileGuts( p_dctx, xprect, letters, val, flags );
|
||||
} /* ce_draw_drawTile */
|
||||
|
@ -1053,7 +1057,7 @@ DLSTATIC void
|
|||
DRAW_FUNC_NAME(drawTileMidDrag)( DrawCtx* p_dctx, const XP_Rect* xprect,
|
||||
const XP_UCHAR* letters,
|
||||
XP_Bitmap XP_UNUSED(bitmap),
|
||||
XP_S16 val, XP_U16 owner, CellFlags flags )
|
||||
XP_U16 val, XP_U16 owner, CellFlags flags )
|
||||
{
|
||||
draw_trayBegin( p_dctx, xprect, owner, DFS_NONE );
|
||||
drawDrawTileGuts( p_dctx, xprect, letters, val, flags );
|
||||
|
@ -1064,7 +1068,7 @@ DLSTATIC void
|
|||
DRAW_FUNC_NAME(drawTileBack)( DrawCtx* p_dctx, const XP_Rect* xprect,
|
||||
CellFlags flags )
|
||||
{
|
||||
drawDrawTileGuts( p_dctx, xprect, "?", -1, flags );
|
||||
drawDrawTileGuts( p_dctx, xprect, "?", 0, flags | CELL_VALHIDDEN );
|
||||
} /* ce_draw_drawTileBack */
|
||||
|
||||
DLSTATIC void
|
||||
|
|
Loading…
Reference in a new issue