diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-23 11:44:20 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-23 11:44:20 (GMT) |
| commit | 27755b2f277f14a5428219fe2b7eceddcdfc17fe (patch) | |
| tree | bad17fcea3fec6132374f783acc8fc9cce92c6fd /src/render | |
| parent | 8a65c395f490baea3b55f1418207c4ee172a2b3a (diff) | |
| download | powder-27755b2f277f14a5428219fe2b7eceddcdfc17fe.zip powder-27755b2f277f14a5428219fe2b7eceddcdfc17fe.tar.gz | |
Render options
Diffstat (limited to 'src/render')
| -rw-r--r-- | src/render/RenderController.cpp | 24 | ||||
| -rw-r--r-- | src/render/RenderController.h | 26 | ||||
| -rw-r--r-- | src/render/RenderModel.cpp | 42 | ||||
| -rw-r--r-- | src/render/RenderModel.h | 30 | ||||
| -rw-r--r-- | src/render/RenderView.cpp | 38 | ||||
| -rw-r--r-- | src/render/RenderView.h | 29 |
6 files changed, 189 insertions, 0 deletions
diff --git a/src/render/RenderController.cpp b/src/render/RenderController.cpp new file mode 100644 index 0000000..6f7f72e --- /dev/null +++ b/src/render/RenderController.cpp @@ -0,0 +1,24 @@ +/* + * RenderController.cpp + * + * Created on: Jan 23, 2012 + * Author: Simon + */ + +#include "RenderController.h" + +RenderController::RenderController(Renderer * ren) { + renderView = new RenderView(); + renderModel = new RenderModel(); + + renderView->AttachController(this); + renderModel->AddObserver(renderView); + + renderModel->SetRenderer(ren); +} + +RenderController::~RenderController() { + delete renderView; + delete renderModel; +} + diff --git a/src/render/RenderController.h b/src/render/RenderController.h new file mode 100644 index 0000000..1c574c1 --- /dev/null +++ b/src/render/RenderController.h @@ -0,0 +1,26 @@ +/* + * RenderController.h + * + * Created on: Jan 23, 2012 + * Author: Simon + */ + +#ifndef RENDERCONTROLLER_H_ +#define RENDERCONTROLLER_H_ + +#include "RenderView.h" +#include "RenderModel.h" +#include "Renderer.h" + +class RenderView; +class RenderModel; +class RenderController { + RenderView * renderView; + RenderModel * renderModel; +public: + RenderController(Renderer * ren); + RenderView * GetView() { return renderView; } + virtual ~RenderController(); +}; + +#endif /* RENDERCONTROLLER_H_ */ diff --git a/src/render/RenderModel.cpp b/src/render/RenderModel.cpp new file mode 100644 index 0000000..6bd9bdd --- /dev/null +++ b/src/render/RenderModel.cpp @@ -0,0 +1,42 @@ +/* + * RenderModel.cpp + * + * Created on: Jan 23, 2012 + * Author: Simon + */ + +#include "RenderModel.h" + +RenderModel::RenderModel() { + // TODO Auto-generated constructor stub + +} + +void RenderModel::AddObserver(RenderView * observer) +{ + observers.push_back(observer); + observer->NotifyRendererChanged(this); +} + +void RenderModel::SetRenderer(Renderer * ren) +{ + renderer = ren; + notifyRendererChanged(); +} + +Renderer * RenderModel::GetRenderer() +{ + return renderer; +} + +void RenderModel::notifyRendererChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + observers[i]->NotifyRendererChanged(this); + } +} + +RenderModel::~RenderModel() { + // TODO Auto-generated destructor stub +} diff --git a/src/render/RenderModel.h b/src/render/RenderModel.h new file mode 100644 index 0000000..b4f9ee8 --- /dev/null +++ b/src/render/RenderModel.h @@ -0,0 +1,30 @@ +/* + * RenderModel.h + * + * Created on: Jan 23, 2012 + * Author: Simon + */ + +#ifndef RENDERMODEL_H_ +#define RENDERMODEL_H_ + +#include <vector> +#include "RenderView.h" +#include "Renderer.h" + +using namespace std; + +class RenderView; +class RenderModel { + vector<RenderView*> observers; + Renderer * renderer; + void notifyRendererChanged(); +public: + RenderModel(); + Renderer * GetRenderer(); + void AddObserver(RenderView * observer); + void SetRenderer(Renderer * ren); + virtual ~RenderModel(); +}; + +#endif /* RENDERMODEL_H_ */ diff --git a/src/render/RenderView.cpp b/src/render/RenderView.cpp new file mode 100644 index 0000000..93c0dec --- /dev/null +++ b/src/render/RenderView.cpp @@ -0,0 +1,38 @@ +/* + * RenderView.cpp + * + * Created on: Jan 23, 2012 + * Author: Simon + */ + +#include "RenderView.h" +#include "Graphics.h" + +RenderView::RenderView(): + ui::Window(ui::Point(0, 0), ui::Point(XRES, YRES+MENUSIZE)), + ren(NULL) +{ + // TODO Auto-generated constructor stub + +} + +void RenderView::NotifyRendererChanged(RenderModel * sender) +{ + ren = sender->GetRenderer(); +} + +void RenderView::OnDraw() +{ + Graphics * g = ui::Engine::Ref().g; + g->clearrect(0, 0, XRES, YRES+MENUSIZE); + g->draw_line(XRES-1, 0, XRES-1, YRES+MENUSIZE, 255, 255, 255, XRES+BARSIZE); + if(ren) + { + ren->render_parts(); + ren->render_fire(); + } +} + +RenderView::~RenderView() { + // TODO Auto-generated destructor stub +} diff --git a/src/render/RenderView.h b/src/render/RenderView.h new file mode 100644 index 0000000..37f023a --- /dev/null +++ b/src/render/RenderView.h @@ -0,0 +1,29 @@ +/* + * RenderView.h + * + * Created on: Jan 23, 2012 + * Author: Simon + */ + +#ifndef RENDERVIEW_H_ +#define RENDERVIEW_H_ + +#include "interface/Window.h" +#include "RenderController.h" +#include "RenderModel.h" +#include "Renderer.h" + +class RenderController; +class RenderModel; +class RenderView: public ui::Window { + RenderController * c; + Renderer * ren; +public: + RenderView(); + void NotifyRendererChanged(RenderModel * sender); + void AttachController(RenderController * c_) { c = c_; } + virtual void OnDraw(); + virtual ~RenderView(); +}; + +#endif /* RENDERVIEW_H_ */ |
