]> git.saurik.com Git - wxWidgets.git/blame - demos/life/life.h
fixed false error report with helpfiles without index
[wxWidgets.git] / demos / life / life.h
CommitLineData
2480be69
GRG
1/////////////////////////////////////////////////////////////////////////////
2// Name: life.h
3// Purpose: The game of life, created by J. H. Conway
4// Author: Guillermo Rodriguez Garcia, <guille@iies.es>
5// Modified by:
6// Created: Jan/2000
7// RCS-ID: $Id$
8// Copyright: (c) 2000, Guillermo Rodriguez Garcia
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _LIFE_APP_H_
13#define _LIFE_APP_H_
14
15#ifdef __GNUG__
16 #pragma interface "life.h"
17#endif
18
19// for compilers that support precompilation, includes "wx/wx.h"
20#include "wx/wxprec.h"
21
22#ifdef __BORLANDC__
23 #pragma hdrstop
24#endif
25
26// for all others, include the necessary headers
27#ifndef WX_PRECOMP
28 #include "wx/wx.h"
29#endif
30
31#include "game.h"
32
33// --------------------------------------------------------------------------
34// LifeCanvas
35// --------------------------------------------------------------------------
36
37class LifeCanvas : public wxScrolledWindow
38{
39public:
40 // ctor and dtor
41 LifeCanvas(wxWindow* parent, Life* life, bool interactive = TRUE);
42 ~LifeCanvas();
43
44 // member functions
45 void Reset();
46 void DrawEverything(bool force = FALSE);
47 void DrawCell(Cell c);
48 void DrawCell(Cell c, wxDC &dc);
49 inline int CellToCoord(int i) const { return (i * m_cellsize); };
50 inline int CoordToCell(int x) const { return ((x >= 0)? (x / m_cellsize) : -1); };
51
52 // event handlers
53 void OnPaint(wxPaintEvent& event);
54 void OnMouse(wxMouseEvent& event);
55 void OnSize(wxSizeEvent& event);
56
57private:
58 // any class wishing to process wxWindows events must use this macro
59 DECLARE_EVENT_TABLE()
60
61 enum MouseStatus
62 {
63 MOUSE_NOACTION,
64 MOUSE_DRAWING,
65 MOUSE_ERASING
66 };
67
68 Life *m_life;
69 wxBitmap *m_bmp;
70 int m_height;
71 int m_width;
72 int m_cellsize;
73 wxCoord m_xoffset;
74 wxCoord m_yoffset;
75 MouseStatus m_status;
76 bool m_interactive;
77};
78
79// --------------------------------------------------------------------------
80// LifeTimer
81// --------------------------------------------------------------------------
82
83// Life timer
84class LifeTimer : public wxTimer
85{
86public:
87 void Notify();
88};
89
90// --------------------------------------------------------------------------
91// LifeFrame
92// --------------------------------------------------------------------------
93
94class LifeFrame : public wxFrame
95{
96public:
97 // ctor and dtor
98 LifeFrame();
99 ~LifeFrame();
100
101 // member functions
102 void UpdateInfoText();
103
104 // event handlers
105 void OnMenu(wxCommandEvent& event);
106 void OnNewGame(wxCommandEvent& event);
107 void OnSamples(wxCommandEvent& event);
108 void OnStart();
109 void OnStop();
110 void OnTimer();
111 void OnSlider(wxScrollEvent& event);
112
113private:
114 // any class wishing to process wxWindows events must use this macro
115 DECLARE_EVENT_TABLE()
116
117 Life *m_life;
118 LifeTimer *m_timer;
119 LifeCanvas *m_canvas;
120 wxStaticText *m_text;
121 bool m_running;
122 long m_interval;
123 long m_tics;
124};
125
126// --------------------------------------------------------------------------
127// LifeApp
128// --------------------------------------------------------------------------
129
130class LifeApp : public wxApp
131{
132public:
133 virtual bool OnInit();
134};
135
136#endif // _LIFE_APP_H_