diff options
Diffstat (limited to 'src/render/RenderModel.cpp')
| -rw-r--r-- | src/render/RenderModel.cpp | 83 |
1 files changed, 81 insertions, 2 deletions
diff --git a/src/render/RenderModel.cpp b/src/render/RenderModel.cpp index ef0f656..65f4a89 100644 --- a/src/render/RenderModel.cpp +++ b/src/render/RenderModel.cpp @@ -16,22 +16,77 @@ void RenderModel::AddObserver(RenderView * observer) { observers.push_back(observer); observer->NotifyRendererChanged(this); + observer->NotifyRenderChanged(this); + observer->NotifyDisplayChanged(this); + observer->NotifyColourChanged(this); } void RenderModel::SetRenderMode(unsigned int renderMode) { - renderer->AddRenderMode(renderMode); + if(renderer) + renderer->AddRenderMode(renderMode); + notifyRenderChanged(); } void RenderModel::UnsetRenderMode(unsigned int renderMode) { - renderer->RemoveRenderMode(renderMode); + if(renderer) + renderer->RemoveRenderMode(renderMode); + notifyRenderChanged(); +} + +unsigned int RenderModel::GetRenderMode() +{ + if(renderer) + return renderer->render_mode; + else + return 0; +} + +void RenderModel::SetDisplayMode(unsigned int displayMode) +{ + if(renderer) + renderer->AddDisplayMode(displayMode); + notifyDisplayChanged(); +} + +void RenderModel::UnsetDisplayMode(unsigned int displayMode) +{ + if(renderer) + renderer->RemoveDisplayMode(displayMode); + notifyDisplayChanged(); +} + +unsigned int RenderModel::GetDisplayMode() +{ + if(renderer) + return renderer->display_mode; + else + return 0; +} + +void RenderModel::SetColourMode(unsigned int colourMode) +{ + if(renderer) + renderer->SetColourMode(colourMode); + notifyColourChanged(); +} + +unsigned int RenderModel::GetColourMode() +{ + if(renderer) + return renderer->colour_mode; + else + return 0; } void RenderModel::SetRenderer(Renderer * ren) { renderer = ren; notifyRendererChanged(); + notifyRenderChanged(); + notifyDisplayChanged(); + notifyColourChanged(); } Renderer * RenderModel::GetRenderer() @@ -47,6 +102,30 @@ void RenderModel::notifyRendererChanged() } } +void RenderModel::notifyRenderChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + observers[i]->NotifyRenderChanged(this); + } +} + +void RenderModel::notifyDisplayChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + observers[i]->NotifyDisplayChanged(this); + } +} + +void RenderModel::notifyColourChanged() +{ + for(int i = 0; i < observers.size(); i++) + { + observers[i]->NotifyColourChanged(this); + } +} + RenderModel::~RenderModel() { // TODO Auto-generated destructor stub } |
