eliot/wxwin/gfxboard.h

116 lines
3.4 KiB
C
Raw Normal View History

2004-04-08 11:43:06 +02:00
/* Eliot */
/* Copyright (C) 1999 Antoine Fraboulet */
/* */
/* This file is part of Eliot. */
/* */
/* Eliot is free software; you can redistribute it and/or modify */
2004-04-08 11:43:06 +02:00
/* 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. */
/* */
/* Eliot is distributed in the hope that it will be useful, */
2004-04-08 11:43:06 +02:00
/* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
2004-04-08 11:43:06 +02:00
/**
* \file gfxboard.h
* \brief Game board graphical view
* \author Antoine Fraboulet
* \date 2002
*/
2004-04-08 11:43:06 +02:00
#ifndef _GFXBOARD_H
#define _GFXBOARD_H
/**
* gfxboard is a wxWindow widget that draws a Scrabble board
2004-04-08 11:43:06 +02:00
*/
class GfxBoard : public wxWindow
{
private:
/**
* reference on the played game
*/
Game &m_game;
/**
* paintedboard_char is the matrix of played tiles
*/
wxChar paintedboard_char[BOARD_DIM][BOARD_DIM];
2004-04-08 11:43:06 +02:00
/**
* paintedboard_attr is the matrix of special attributes for tiles, for
* instance it can store if a tile is a test tile (placed but not played).
*/
char paintedboard_attr[BOARD_DIM][BOARD_DIM];
/**
* size in pixels for the board.
* board_size = min(width,height)
*/
int board_size;
/**
* tile_size = size in pixels of a tile
*/
int tile_size;
/**
* there is a bug when doing an OnSize under windows : the window
* has to be fully refreshed (UpdateRegion does not seem to work).
*/
#if defined(MSW_RESIZE_BUG)
bool just_resized;
2004-04-08 11:43:06 +02:00
#endif
/**
* top left point used to draw the lines, used to keep the board
* centered horizontally and vertically
*/
wxPoint TopLeft;
/**
* Board bitmap, created by CreateBMP
*/
wxBitmap *bmp;
void CreateBMP();
void DrawTileBack(wxDC*,int,int,int, bool testtile);
void DrawTile(wxDC*,wxString&,int,int,bool testtile = false, bool drawtileback = false);
void DrawBoard(wxDC*);
void RefreshSquare(wxRect&);
ConfigDB config;
public:
GfxBoard(wxFrame* parent, Game& game);
~GfxBoard(void);
void OnPaint (wxPaintEvent& event);
void OnSize (wxSizeEvent& event);
typedef enum {
BOARD_REFRESH,
BOARD_FORCE_REFRESH
} board_refresh_t;
void Refresh (board_refresh_t force = BOARD_REFRESH);
DECLARE_EVENT_TABLE()
};
#endif
2004-04-08 11:43:06 +02:00
/// Local Variables:
/// mode: hs-minor
/// c-basic-offset: 4
/// End: