diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-27 11:05:26 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-27 11:05:26 (GMT) |
| commit | 1c971e4b4210359e400511ad61b8e4eff2f7a79a (patch) | |
| tree | 024dc6cbbb4d15095c5409cb77c5db05607e173c /src/render | |
| parent | ebd80c73de6b02e1fcf731aa0f377b6085128e57 (diff) | |
| download | powder-1c971e4b4210359e400511ad61b8e4eff2f7a79a.zip powder-1c971e4b4210359e400511ad61b8e4eff2f7a79a.tar.gz | |
Functional checkbox on render options screen
Diffstat (limited to 'src/render')
| -rw-r--r-- | src/render/RenderController.cpp | 10 | ||||
| -rw-r--r-- | src/render/RenderController.h | 2 | ||||
| -rw-r--r-- | src/render/RenderModel.cpp | 10 | ||||
| -rw-r--r-- | src/render/RenderModel.h | 2 | ||||
| -rw-r--r-- | src/render/RenderView.cpp | 26 | ||||
| -rw-r--r-- | src/render/RenderView.h | 1 |
6 files changed, 49 insertions, 2 deletions
diff --git a/src/render/RenderController.cpp b/src/render/RenderController.cpp index 01a5d4e..8477245 100644 --- a/src/render/RenderController.cpp +++ b/src/render/RenderController.cpp @@ -20,6 +20,16 @@ RenderController::RenderController(Renderer * ren, ControllerCallback * callback this->callback = callback; } +void RenderController::SetRenderMode(unsigned int renderMode) +{ + renderModel->SetRenderMode(renderMode); +} + +void RenderController::UnsetRenderMode(unsigned int renderMode) +{ + renderModel->UnsetRenderMode(renderMode); +} + void RenderController::Exit() { if(ui::Engine::Ref().GetWindow() == renderView) diff --git a/src/render/RenderController.h b/src/render/RenderController.h index 704d6d4..95a1bcc 100644 --- a/src/render/RenderController.h +++ b/src/render/RenderController.h @@ -25,6 +25,8 @@ public: void Exit(); RenderView * GetView() { return renderView; } virtual ~RenderController(); + void SetRenderMode(unsigned int renderMode); + void UnsetRenderMode(unsigned int renderMode); }; #endif /* RENDERCONTROLLER_H_ */ diff --git a/src/render/RenderModel.cpp b/src/render/RenderModel.cpp index 6bd9bdd..ef0f656 100644 --- a/src/render/RenderModel.cpp +++ b/src/render/RenderModel.cpp @@ -18,6 +18,16 @@ void RenderModel::AddObserver(RenderView * observer) observer->NotifyRendererChanged(this); } +void RenderModel::SetRenderMode(unsigned int renderMode) +{ + renderer->AddRenderMode(renderMode); +} + +void RenderModel::UnsetRenderMode(unsigned int renderMode) +{ + renderer->RemoveRenderMode(renderMode); +} + void RenderModel::SetRenderer(Renderer * ren) { renderer = ren; diff --git a/src/render/RenderModel.h b/src/render/RenderModel.h index b4f9ee8..048cfc5 100644 --- a/src/render/RenderModel.h +++ b/src/render/RenderModel.h @@ -24,6 +24,8 @@ public: Renderer * GetRenderer(); void AddObserver(RenderView * observer); void SetRenderer(Renderer * ren); + void SetRenderMode(unsigned int renderMode); + void UnsetRenderMode(unsigned int renderMode); virtual ~RenderModel(); }; diff --git a/src/render/RenderView.cpp b/src/render/RenderView.cpp index 8412126..5551615 100644 --- a/src/render/RenderView.cpp +++ b/src/render/RenderView.cpp @@ -5,16 +5,38 @@ * Author: Simon */ -#include "RenderView.h" +#include "simulation/ElementGraphics.h" #include "Graphics.h" +#include "Renderer.h" +#include "RenderView.h" + +class RenderView::RenderModeAction: public ui::CheckboxAction +{ + RenderView * v; + unsigned int renderMode; +public: + RenderModeAction(RenderView * v_, unsigned int renderMode_) + { + v = v_; + renderMode = renderMode_; + } + virtual void ActionCallback(ui::Checkbox * sender) + { + if(sender->IsChecked()) + v->c->SetRenderMode(renderMode); + else + v->c->UnsetRenderMode(renderMode); + } +}; RenderView::RenderView(): ui::Window(ui::Point(0, 0), ui::Point(XRES, YRES+MENUSIZE)), ren(NULL) { ui::Checkbox * tCheckbox; - tCheckbox = new ui::Checkbox(ui::Point(0, YRES+5), ui::Point(100, 16), "Thing"); + tCheckbox = new ui::Checkbox(ui::Point(0, YRES+5), ui::Point(100, 16), "Blob"); renderModes.push_back(tCheckbox); + tCheckbox->SetActionCallback(new RenderModeAction(this, RENDER_BLOB)); AddComponent(tCheckbox); } diff --git a/src/render/RenderView.h b/src/render/RenderView.h index 362bfb4..cdf0488 100644 --- a/src/render/RenderView.h +++ b/src/render/RenderView.h @@ -23,6 +23,7 @@ class RenderView: public ui::Window { Renderer * ren; std::vector<ui::Checkbox*> renderModes; public: + class RenderModeAction; RenderView(); void NotifyRendererChanged(RenderModel * sender); void AttachController(RenderController * c_) { c = c_; } |
