From 1c8a8ad1c016567e412c19678b35f3c7a784c350 Mon Sep 17 00:00:00 2001 From: Dmitry Kunin Date: Fri, 27 Dec 2013 17:28:05 +0300 Subject: [PATCH] DrapeEngine. --- drape_frontend/drape_engine.cpp | 32 ++++++++++++++++++++++++++++++++ drape_frontend/drape_engine.hpp | 27 +++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 drape_frontend/drape_engine.cpp create mode 100644 drape_frontend/drape_engine.hpp diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp new file mode 100644 index 0000000000..d4b67e5f27 --- /dev/null +++ b/drape_frontend/drape_engine.cpp @@ -0,0 +1,32 @@ +#include "drape_engine.hpp" + +#include "message_subclasses.hpp" + +namespace df +{ + +DrapeEngine::DrapeEngine(RefPointer contextfactory, double vs, int w, int h) +{ + m_threadCommutator = MasterPointer(new ThreadsCommutator()); + + m_frontend = MasterPointer( + new FrontendRenderer(m_threadCommutator.GetRefPointer(), contextfactory, w, h)); + + m_backend = MasterPointer( + new BackendRenderer(m_threadCommutator.GetRefPointer(), contextfactory, vs, w, h)); +} + +void DrapeEngine::OnSizeChanged(int x0, int y0, int w, int h) +{ + m_backend->Resize(x0, y0, w, h); + m_threadCommutator->PostMessage(ThreadsCommutator::RenderThread + ,MovePointer(new ResizeMessage(x0, y0, w, h))); +} + +void DrapeEngine::SetAngle(float radians) +{ + m_threadCommutator->PostMessage(ThreadsCommutator::RenderThread + , MovePointer(new RotateMessage(radians))); +} + +} diff --git a/drape_frontend/drape_engine.hpp b/drape_frontend/drape_engine.hpp new file mode 100644 index 0000000000..bb4731116a --- /dev/null +++ b/drape_frontend/drape_engine.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include "frontend_renderer.hpp" +#include "backend_renderer.hpp" +#include "../drape/pointers.hpp" +#include "threads_commutator.hpp" +#include "../drape/oglcontextfactory.hpp" + +namespace df +{ + +class DrapeEngine +{ +public: + DrapeEngine(RefPointer oglcontextfactory, double vs, int w, int h); + + void OnSizeChanged(int x0, int y0, int w, int h); + void SetAngle(float radians); + +private: + MasterPointer m_frontend; + MasterPointer m_backend; + + MasterPointer m_threadCommutator; +}; + +}