GUI::Canvas Class Reference

Draws and manipulate the matrix on the screen. More...

#include <Canvas.h>

List of all members.

Public Types

 MOUSE_NOACTION
 MOUSE_INSERTING
 MOUSE_ERASING
enum  MouseStatus { MOUSE_NOACTION, MOUSE_INSERTING, MOUSE_ERASING }
 What is the user doing? More...

Public Member Functions

 Canvas (wxWindow *parent, Matrix *m, const ConfigCanvas &config, const wxSize &winSize=wxDefaultSize, bool interact=true, bool isSimulationSaved=false)
 Constructor.
 ~Canvas ()
 Destructor.
void Redraw ()
 Redraws the scene.
int GetCellSize () const
 Returns current cell size.
void SetCellSize (int cs)
 Sets new cell size.
void Recenter (wxInt32 i, wxInt32 j)
 Recenter scene.
void SetCurrentObjectConfig (Object::Config *coc)
 Sets current object config.
void SetMouseStatus (MouseStatus ms)
 Sets mouse status (cursor).
ConfigCanvasGetConfigCanvas () const
 Returns ConfigCanvas (containing canvas configuration).
void LoadFromConfig (const ConfigCanvas &config, bool fullLoad=true)
 Loads simulation state (attributes etc.) from the selected config.
long GetInterval () const
 Returns current interval (mean time between two simulation steps).
void SetInterval (long newInterval)
 Sets new interval (mean time between two simulation steps).
bool IsSimulationSaved () const
 Returns current simulation state (whether it was saved or not).
void SetSimulationSavedStatus (bool newStatus)
 Sets new simulation state (whether it was saved or not).
string GetSimulationName () const
 Returns the name of the current simulation.
void SetSavedSimulationFileName (string newSimulationSavedFileName)
 Sets new simulation saved file name.
string GetSavedSimulationFileName () const
 Returns name of the saved simulation file.
void SetInteractive (bool si)
 Sets if it is possible to work with the scene.
void SetNotHoldingObject ()
 Sets holding object flag to false (no object is currently in holding).
virtual bool ProcessEvent (wxEvent &event)
 Processes an event, searching event tables and calling zero or more suitable event handler function(s).

Private Member Functions

void OnPaint (wxPaintEvent &event)
void OnMouseMotion (wxMouseEvent &event)
void OnMouseLeftDown (wxMouseEvent &event)
void OnMouseRightDown (wxMouseEvent &event)
void OnMouseMiddleDown (wxMouseEvent &event)
void OnSize (wxSizeEvent &event)
void OnScroll (wxScrollWinEvent &event)
wxInt32 XToCell (wxCoord x) const
 Conversion between cell and screen coordinates.
wxInt32 YToCell (wxCoord y) const
 Conversion between cell and screen coordinates.
wxCoord CellToX (wxInt32 i) const
 Conversion between cell and screen coordinates.
wxCoord CellToY (wxInt32 j) const
 Conversion between cell and screen coordinates.

Private Attributes

Matrixmatrix
 Pointer to matrix = source of our information.
int cellsize
 Current cell size, in pixels.
bool interactive
 Is canvas interactive?
long interval
 Whats the time interval between alarm.
MouseStatus status
 What is the user doing.
wxInt32 viewportX
 First visible cell (x coord).
wxInt32 viewportY
 First visible cell (y coord).
wxInt32 viewportW
 Number of visible cells (w).
wxInt32 viewportH
 Number of visible cells (h).
int thumbX
 Horizontal scrollbar thumb position.
int thumbY
 Vertical scrollbar thumb position.
wxInt32 mi
 Last mouse position.
wxInt32 mj
Object::ConfigCurrentObjectConfig
 Current config.
MouseStatus mouseStatus
 Mouse status.
bool simulationWasSaved
 Was the simulation saved?
string simulationName
 Name of the simulation.
string savedSimulationFileName
 Name of the saved simulation file (empty if the simulation was not saved or loaded).

Classes

class  HoldingObject
 Keeps info about current holding object (when moving objects on the scene). More...


Detailed Description

Draws and manipulate the matrix on the screen.

Object of this class will hold all information needed to draw the whole matrix on the screen (current size etc.). It also allows user to work with Matrix (add/delete objects in the Matrix).


Member Enumeration Documentation

enum GUI::Canvas::MouseStatus

What is the user doing?

Enumerator:
MOUSE_NOACTION 
MOUSE_INSERTING 
MOUSE_ERASING 


Constructor & Destructor Documentation

GUI::Canvas::Canvas ( wxWindow *  parent,
Matrix m,
const ConfigCanvas config,
const wxSize &  winSize = wxDefaultSize,
bool  interact = true,
bool  isSimulationSaved = false 
)

Constructor.

Parameters:
parent Parent of this window
m Our essential source of information - matrix
config Configuration of the Canvas
winSize Size of the window
interact Mode in which we start this object
isSimulationSaved Is simulation saved when creating the scene?

GUI::Canvas::~Canvas (  ) 

Destructor.


Member Function Documentation

wxCoord GUI::Canvas::CellToX ( wxInt32  i  )  const [inline, private]

Conversion between cell and screen coordinates.

wxCoord GUI::Canvas::CellToY ( wxInt32  j  )  const [inline, private]

Conversion between cell and screen coordinates.

int GUI::Canvas::GetCellSize (  )  const [inline]

Returns current cell size.

ConfigCanvas * GUI::Canvas::GetConfigCanvas (  )  const

Returns ConfigCanvas (containing canvas configuration).

Warning: Returned config is allocated on the heap and you have to delete it explicitly after you don't need it.

long GUI::Canvas::GetInterval (  )  const [inline]

Returns current interval (mean time between two simulation steps).

string GUI::Canvas::GetSavedSimulationFileName (  )  const [inline]

Returns name of the saved simulation file.

Returns empty string if the simulation has not been saved yet.

string GUI::Canvas::GetSimulationName (  )  const [inline]

Returns the name of the current simulation.

bool GUI::Canvas::IsSimulationSaved (  )  const [inline]

Returns current simulation state (whether it was saved or not).

void GUI::Canvas::LoadFromConfig ( const ConfigCanvas config,
bool  fullLoad = true 
)

Loads simulation state (attributes etc.) from the selected config.

Parameters:
config Canvas config
fullLoad Should canvas load all data from the config, or only some?
If fullLoad is true, canvas will load all data from the config. If it's false, only some data will be loaded (only simulation name in this case).

void GUI::Canvas::OnMouseLeftDown ( wxMouseEvent &  event  )  [private]

void GUI::Canvas::OnMouseMiddleDown ( wxMouseEvent &  event  )  [private]

void GUI::Canvas::OnMouseMotion ( wxMouseEvent &  event  )  [private]

void GUI::Canvas::OnMouseRightDown ( wxMouseEvent &  event  )  [private]

void GUI::Canvas::OnPaint ( wxPaintEvent &  event  )  [private]

void GUI::Canvas::OnScroll ( wxScrollWinEvent &  event  )  [private]

void GUI::Canvas::OnSize ( wxSizeEvent &  event  )  [private]

bool GUI::Canvas::ProcessEvent ( wxEvent &  event  )  [virtual]

Processes an event, searching event tables and calling zero or more suitable event handler function(s).

Parameters:
event Event to process
1st-level exception handling: we overload ProcessEvent() to be able to catch exceptions which occur in Canvas methods here.

void GUI::Canvas::Recenter ( wxInt32  i,
wxInt32  j 
)

Recenter scene.

Parameters:
i Width of the scene (width of the matrix)
j Height of the scene (height of the matrix)

void GUI::Canvas::Redraw (  ) 

Redraws the scene.

void GUI::Canvas::SetCellSize ( int  cs  ) 

Sets new cell size.

Parameters:
cs Cell size that has to be put

void GUI::Canvas::SetCurrentObjectConfig ( Object::Config coc  )  [inline]

Sets current object config.

Parameters:
coc Current object config

void GUI::Canvas::SetInteractive ( bool  si  )  [inline]

Sets if it is possible to work with the scene.

Parameters:
si Set interactive (true/false)

void GUI::Canvas::SetInterval ( long  newInterval  )  [inline]

Sets new interval (mean time between two simulation steps).

Parameters:
newInterval New interval value

void GUI::Canvas::SetMouseStatus ( MouseStatus  ms  ) 

Sets mouse status (cursor).

Parameters:
ms Mouse status that has to be set

void GUI::Canvas::SetNotHoldingObject (  )  [inline]

Sets holding object flag to false (no object is currently in holding).

There may be various reasons, for example user clicks on the menu or on the toolbar etc.

void GUI::Canvas::SetSavedSimulationFileName ( string  newSimulationSavedFileName  )  [inline]

Sets new simulation saved file name.

Parameters:
newSimulationSavedFileName New simulation file name to be set

void GUI::Canvas::SetSimulationSavedStatus ( bool  newStatus  )  [inline]

Sets new simulation state (whether it was saved or not).

Parameters:
newStatus New status that should be set

wxInt32 GUI::Canvas::XToCell ( wxCoord  x  )  const [inline, private]

Conversion between cell and screen coordinates.

wxInt32 GUI::Canvas::YToCell ( wxCoord  y  )  const [inline, private]

Conversion between cell and screen coordinates.


Member Data Documentation

int GUI::Canvas::cellsize [private]

Current cell size, in pixels.

Object::Config* GUI::Canvas::CurrentObjectConfig [private]

Current config.

bool GUI::Canvas::interactive [private]

Is canvas interactive?

long GUI::Canvas::interval [private]

Whats the time interval between alarm.

Matrix* GUI::Canvas::matrix [private]

Pointer to matrix = source of our information.

wxInt32 GUI::Canvas::mi [private]

Last mouse position.

wxInt32 GUI::Canvas::mj [private]

MouseStatus GUI::Canvas::mouseStatus [private]

Mouse status.

string GUI::Canvas::savedSimulationFileName [private]

Name of the saved simulation file (empty if the simulation was not saved or loaded).

string GUI::Canvas::simulationName [private]

Name of the simulation.

bool GUI::Canvas::simulationWasSaved [private]

Was the simulation saved?

MouseStatus GUI::Canvas::status [private]

What is the user doing.

int GUI::Canvas::thumbX [private]

Horizontal scrollbar thumb position.

int GUI::Canvas::thumbY [private]

Vertical scrollbar thumb position.

wxInt32 GUI::Canvas::viewportH [private]

Number of visible cells (h).

wxInt32 GUI::Canvas::viewportW [private]

Number of visible cells (w).

wxInt32 GUI::Canvas::viewportX [private]

First visible cell (x coord).

wxInt32 GUI::Canvas::viewportY [private]

First visible cell (y coord).


The documentation for this class was generated from the following files:
Generated on Sun Apr 29 11:46:11 2007 for IPP/ICP2007 by  doxygen 1.4.7