xwords/wince/cemain.h
ehouse 2bc132627f Set aside portion of scrollbar rect above and below it and color that
with focus color when the scrollbar has keyboard focus.  This should
help users figure out how one-handed nav works.  Better would be to
override background color of the scrollbar and draw it full-sized, but
I havne't figured out how.  This is good enough for beta.
2008-10-01 08:31:43 +00:00

189 lines
5 KiB
C
Executable file

/* -*-mode: C; fill-column: 78; c-basic-offset: 4;-*- */
/*
* Copyright 2000-2008 by Eric House (xwords@eehouse.org). All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _CEMAIN_H_
#define _CEMAIN_H_
#ifdef _WIN32_WCE
# include <aygshell.h>
#endif
#include "draw.h"
#include "game.h"
#include "util.h"
#include "mempool.h"
#include "cesockwr.h"
#define CE_GAMEFILE_VERSION 0x01 /* means draw gets to save/restore */
#ifdef _WIN32_WCE
typedef enum {
WINCE_UNKNOWN
, WINCE_PPC_V1
, WINCE_PPC_2003
, WINCE_PPC_2005
, _LAST_PPC /* so can test for PPC */
, WINCE_SMARTPHONE_V1
, WINCE_SMARTPHONE_2003
, WINCE_SMARTPHONE_2005
} XW_WinceVersion;
# define IS_SMARTPHONE(g) ((g)->winceVersion > _LAST_PPC)
#else
# define IS_SMARTPHONE(g) ((g) != (g)) /* make compiler warnings go away */
#endif
enum { CE_BONUS1_COLOR,
CE_BONUS2_COLOR,
CE_BONUS3_COLOR,
CE_BONUS4_COLOR,
CE_BKG_COLOR,
CE_TILEBACK_COLOR,
CE_FOCUS_COLOR,
CE_USER_COLOR1,
CE_USER_COLOR2,
CE_USER_COLOR3,
CE_USER_COLOR4,
CE_BLACK_COLOR, /* not editable by users */
CE_WHITE_COLOR,
CE_NUM_COLORS /* last */
};
#define CUR_CE_PREFS_FLAGS 0x0003 /* adds CE_FOCUS_COLOR */
/* This is what CEAppPrefs looked like for CUR_CE_PREFS_FLAGS == 0x0002 */
typedef struct CEAppPrefs0002 {
XP_U16 versionFlags;
CommonPrefs cp;
COLORREF colors[12]; /* CE_FOCUS_COLOR wasn't there */
XP_Bool showColors;
} CEAppPrefs0002;
typedef struct CEAppPrefs {
XP_U16 versionFlags;
CommonPrefs cp;
COLORREF colors[CE_NUM_COLORS];
XP_Bool showColors;
XP_Bool fullScreen;
} CEAppPrefs;
enum { OWNED_RECT_LEFT
,OWNED_RECT_RIGHT
,N_OWNED_RECTS
};
typedef struct CEAppGlobals {
HINSTANCE hInst;
HDC hdc; /* to pass drawing ctxt to draw code */
HWND hWnd;
#if defined TARGET_OS_WINCE
HWND hwndCB;
#endif
#ifdef _WIN32_WCE
SHACTIVATEINFO sai;
XW_WinceVersion winceVersion;
#else
/* Store location of dummy button */
HMENU dummyMenu;
XP_U16 dummyPos;
#endif
XP_U16 softKeyId; /* id of item now on left button */
struct CEDrawCtx* draw;
XWGame game;
CurGameInfo gameInfo;
XP_UCHAR* curGameName; /* path to storage for current game */
XW_UtilCtxt util;
VTableMgr* vtMgr;
XP_U16* bonusInfo;
XP_U32 timerIDs[NUM_TIMERS_PLUS_ONE];
XWTimerProc timerProcs[NUM_TIMERS_PLUS_ONE];
void* timerClosures[NUM_TIMERS_PLUS_ONE];
XP_U32 timerWhens[NUM_TIMERS_PLUS_ONE];
RECT ownedRects[N_OWNED_RECTS];
XP_U16 flags; /* bits defined below */
XP_U16 cellHt; /* how tall is a cell given current layout */
#ifdef CEFEATURE_CANSCROLL
HWND scrollHandle;
WNDPROC oldScrollProc;
RECT scrollRects[2]; /* above and below the scroller */
XP_Bool scrollerHasFocus;
#endif
CeSocketWrapper* socketWrap;
CEAppPrefs appPrefs;
XP_Bool isNewGame;
XP_Bool penDown;
XP_Bool hintPending;
XP_Bool doGlobalPrefs;
#if defined DEBUG && !defined _WIN32_WCE
int dbWidth, dbHeight;
#endif
#ifdef XWFEATURE_SEARCHLIMIT
XP_Bool askTrayLimits;
#endif
MPSLOT
} CEAppGlobals;
/* No longer used, but may need to keep set for backwards compatibility */
# define FLAGS_BIT_SHOWN_NEWDICTLOC 0x0001
#define GAME_IN_PROGRESS(g) ((g)->gameInfo.dictName != 0)
enum {
XWWM_TIME_RQST = WM_APP
,XWWM_PACKET_ARRIVED
};
#define CE_NUM_EDITABLE_COLORS CE_BLACK_COLOR
int messageBoxChar( CEAppGlobals* globals, XP_UCHAR* str, wchar_t* title,
XP_U16 buttons );
XP_Bool queryBoxChar( CEAppGlobals* globals, const XP_UCHAR* msg );
/* These allow LISTBOX and COMBOBOX to be used by the same code */
#define INSERTSTRING(g) (IS_SMARTPHONE(g)?LB_INSERTSTRING:CB_INSERTSTRING)
#define SETCURSEL(g) (IS_SMARTPHONE(g)?LB_SETCURSEL:CB_SETCURSEL)
#define GETCURSEL(g) (IS_SMARTPHONE(g)?LB_GETCURSEL:CB_GETCURSEL)
#define ADDSTRING(g) (IS_SMARTPHONE(g)?LB_ADDSTRING:CB_ADDSTRING)
#define GETLBTEXT(g) (IS_SMARTPHONE(g)?LB_GETTEXT:CB_GETLBTEXT)
#define GETLBTEXTLEN(g) (IS_SMARTPHONE(g)?LB_GETTEXTLEN:CB_GETLBTEXTLEN)
#define FINDSTRINGEXACT(g) \
(IS_SMARTPHONE(g)?LB_FINDSTRINGEXACT:CB_FINDSTRINGEXACT)
#define LB_IF_PPC(g,id) (IS_SMARTPHONE(g)?id:(id+2))
#endif /* _CEMAIN_H_ */