summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorSimon 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)
commit1c971e4b4210359e400511ad61b8e4eff2f7a79a (patch)
tree024dc6cbbb4d15095c5409cb77c5db05607e173c /src/render
parentebd80c73de6b02e1fcf731aa0f377b6085128e57 (diff)
downloadpowder-1c971e4b4210359e400511ad61b8e4eff2f7a79a.zip
powder-1c971e4b4210359e400511ad61b8e4eff2f7a79a.tar.gz
Functional checkbox on render options screen
Diffstat (limited to 'src/render')
-rw-r--r--src/render/RenderController.cpp10
-rw-r--r--src/render/RenderController.h2
-rw-r--r--src/render/RenderModel.cpp10
-rw-r--r--src/render/RenderModel.h2
-rw-r--r--src/render/RenderView.cpp26
-rw-r--r--src/render/RenderView.h1
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_; }