| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        life.h
 
- // Purpose:     The game of Life, created by J. H. Conway
 
- // Author:      Guillermo Rodriguez Garcia, <guille@iies.es>
 
- // Modified by:
 
- // Created:     Jan/2000
 
- // Copyright:   (c) 2000, Guillermo Rodriguez Garcia
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _LIFE_APP_H_
 
- #define _LIFE_APP_H_
 
- #include "wx/minifram.h"
 
- #include "game.h"
 
- // --------------------------------------------------------------------------
 
- // LifeCanvas
 
- // --------------------------------------------------------------------------
 
- // Note that in LifeCanvas, all cell coordinates are
 
- // named i, j, while screen coordinates are named x, y.
 
- class LifeCanvas : public wxWindow
 
- {
 
- public:
 
-     // ctor and dtor
 
-     LifeCanvas(wxWindow* parent, Life* life, bool interactive = true);
 
-     virtual ~LifeCanvas();
 
-     // view management
 
-     int  GetCellSize() const { return m_cellsize; };
 
-     void SetCellSize(int cellsize);
 
-     void Recenter(wxInt32 i, wxInt32 j);
 
-     // drawing
 
-     void DrawChanged();
 
-     void DrawCell(wxInt32 i, wxInt32 j, bool alive);
 
- private:
 
-     // any class wishing to process wxWidgets events must use this macro
 
-     DECLARE_EVENT_TABLE()
 
-     // draw a cell (parametrized by DC)
 
-     void DrawCell(wxInt32 i, wxInt32 j, wxDC &dc);
 
-     // event handlers
 
-     void OnPaint(wxPaintEvent& event);
 
-     void OnMouse(wxMouseEvent& event);
 
-     void OnSize(wxSizeEvent& event);
 
-     void OnScroll(wxScrollWinEvent& event);
 
-     void OnEraseBackground(wxEraseEvent& event);
 
-     // conversion between cell and screen coordinates
 
-     inline wxInt32 XToCell(wxCoord x) const { return (x / m_cellsize) + m_viewportX; };
 
-     inline wxInt32 YToCell(wxCoord y) const { return (y / m_cellsize) + m_viewportY; };
 
-     inline wxCoord CellToX(wxInt32 i) const { return (i - m_viewportX) * m_cellsize; };
 
-     inline wxCoord CellToY(wxInt32 j) const { return (j - m_viewportY) * m_cellsize; };
 
-     // what is the user doing?
 
-     enum MouseStatus
 
-     {
 
-         MOUSE_NOACTION,
 
-         MOUSE_DRAWING,
 
-         MOUSE_ERASING
 
-     };
 
-     Life        *m_life;            // Life object
 
-     int          m_cellsize;        // current cell size, in pixels
 
-     bool         m_interactive;     // is this canvas interactive?
 
-     MouseStatus  m_status;          // what is the user doing?
 
-     wxInt32      m_viewportX;       // first visible cell (x coord)
 
-     wxInt32      m_viewportY;       // first visible cell (y coord)
 
-     wxInt32      m_viewportW;       // number of visible cells (w)
 
-     wxInt32      m_viewportH;       // number of visible cells (h)
 
-     int          m_thumbX;          // horiz. scrollbar thumb position
 
-     int          m_thumbY;          // vert. scrollbar thumb position
 
-     wxInt32      m_mi, m_mj;        // last mouse position
 
- };
 
- // --------------------------------------------------------------------------
 
- // LifeNavigator
 
- // --------------------------------------------------------------------------
 
- class LifeNavigator : public wxMiniFrame
 
- {
 
- public:
 
-     // ctor
 
-     LifeNavigator(wxWindow *parent);
 
- private:
 
-     // any class wishing to process wxWidgets events must use this macro
 
-     DECLARE_EVENT_TABLE()
 
-     // event handlers
 
-     void OnClose(wxCloseEvent& event);
 
- };
 
- // --------------------------------------------------------------------------
 
- // LifeFrame
 
- // --------------------------------------------------------------------------
 
- class LifeFrame : public wxFrame
 
- {
 
- public:
 
-     // ctor and dtor
 
-     LifeFrame();
 
-     virtual ~LifeFrame();
 
-     // member functions
 
-     void UpdateInfoText();
 
-     void UpdateUI();
 
- private:
 
-     // any class wishing to process wxWidgets events must use this macro
 
-     DECLARE_EVENT_TABLE()
 
-     // event handlers
 
-     void OnMenu(wxCommandEvent& event);
 
-     void OnOpen(wxCommandEvent& event);
 
-     void OnSamples(wxCommandEvent& event);
 
-     void OnNavigate(wxCommandEvent& event);
 
-     void OnZoom(wxCommandEvent& event);
 
-     void OnSlider(wxScrollEvent& event);
 
-     void OnTimer(wxTimerEvent& event);
 
-     void OnClose(wxCloseEvent& event);
 
-     // event handler helpers
 
-     void OnStart();
 
-     void OnStop();
 
-     void OnStep();
 
-     Life           *m_life;
 
-     LifeCanvas     *m_canvas;
 
-     LifeNavigator  *m_navigator;
 
-     wxStaticText   *m_text;
 
-     wxTimer        *m_timer;
 
-     bool            m_running;
 
-     bool            m_topspeed;
 
-     long            m_interval;
 
-     long            m_tics;
 
- };
 
- // --------------------------------------------------------------------------
 
- // LifeApp
 
- // --------------------------------------------------------------------------
 
- class LifeApp : public wxApp
 
- {
 
- public:
 
-     virtual bool OnInit();
 
- };
 
- #endif  // _LIFE_APP_H_
 
 
  |