diff --git a/drape_head/drape_surface.cpp b/drape_head/drape_surface.cpp index 8888c8672b..28a553e57f 100644 --- a/drape_head/drape_surface.cpp +++ b/drape_head/drape_surface.cpp @@ -1,39 +1,16 @@ #include "drape_head/drape_surface.hpp" #include "drape_frontend/viewport.hpp" -#include "drape_frontend/map_data_provider.hpp" -#include "platform/platform.hpp" - -#include "drape/shader_def.hpp" - -#include "base/stl_add.hpp" #include "base/logging.hpp" -#include "std/bind.hpp" -#include "std/cmath.hpp" - -#include - - DrapeSurface::DrapeSurface() - : m_dragState(false) - , m_contextFactory(nullptr) + : m_contextFactory(nullptr) { setSurfaceType(QSurface::OpenGLSurface); QObject::connect(this, SIGNAL(heightChanged(int)), this, SLOT(sizeChanged(int))); QObject::connect(this, SIGNAL(widthChanged(int)), this, SLOT(sizeChanged(int))); - - ///{ Temporary initialization - m_model.InitClassificator(); - // Platform::FilesList maps; - // Platform & pl = GetPlatform(); - // pl.GetFilesByExt(pl.WritableDir(), DATA_FILE_EXTENSION, maps); - - // for_each(maps.begin(), maps.end(), bind(&model::FeaturesFetcher::RegisterMap, &m_model, _1)); - // ///} - // /// } DrapeSurface::~DrapeSurface() @@ -50,95 +27,20 @@ void DrapeSurface::exposeEvent(QExposeEvent *e) { if (m_contextFactory.IsNull()) { - dp::ThreadSafeFactory * factory = new dp::ThreadSafeFactory(new QtOGLContextFactory(this)); + dp::ThreadSafeFactory * factory = new dp::ThreadSafeFactory(new QtOGLContextFactory(this), false); m_contextFactory = dp::MasterPointer(factory); CreateEngine(); - UpdateCoverage(); } } } -void DrapeSurface::mousePressEvent(QMouseEvent * e) -{ - QWindow::mousePressEvent(e); - if (!isExposed()) - return; - - if (e->button() == Qt::LeftButton) - { - m2::PointF p = GetDevicePosition(e->pos()); - m_navigator.StartDrag(p, 0); - UpdateCoverage(); - m_dragState = true; - } -} - -void DrapeSurface::mouseMoveEvent(QMouseEvent * e) -{ - QWindow::mouseMoveEvent(e); - if (!isExposed()) - return; - - if (m_dragState) - { - m2::PointF p = GetDevicePosition(e->pos()); - m_navigator.DoDrag(p, 0); - UpdateCoverage(); - } -} - -void DrapeSurface::mouseReleaseEvent(QMouseEvent * e) -{ - QWindow::mouseReleaseEvent(e); - if (!isExposed()) - return; - - if (m_dragState) - { - m2::PointF p = GetDevicePosition(e->pos()); - m_navigator.StopDrag(p, 0, false); - UpdateCoverage(); - m_dragState = false; - } -} - -void DrapeSurface::wheelEvent(QWheelEvent * e) -{ - if (!m_dragState) - { - m_navigator.ScaleToPoint(GetDevicePosition(e->pos()), exp(e->delta() / 360.0), 0); - UpdateCoverage(); - } -} - void DrapeSurface::CreateEngine() { dp::RefPointer f(m_contextFactory.GetRefPointer()); float pixelRatio = devicePixelRatio(); - typedef df::MapDataProvider::TReadIDsFn TReadIDsFn; - typedef df::MapDataProvider::TReadFeaturesFn TReadFeaturesFn; - typedef df::MapDataProvider::TReadIdCallback TReadIdCallback; - typedef df::MapDataProvider::TReadFeatureCallback TReadFeatureCallback; - - TReadIDsFn idReadFn = [this](TReadIdCallback const & fn, m2::RectD const & r, int scale) - { - m_model.ForEachFeatureID(r, fn, scale); - }; - - TReadFeaturesFn featureReadFn = [this](TReadFeatureCallback const & fn, vector const & ids) - { - m_model.ReadFeatures(fn, ids); - }; - - m_drapeEngine = TEnginePrt(new df::DrapeEngine(f, df::Viewport(0, 0, pixelRatio * width(), pixelRatio * height()), - df::MapDataProvider(idReadFn, featureReadFn), pixelRatio)); -} - -void DrapeSurface::UpdateCoverage() -{ - m_drapeEngine->UpdateCoverage(m_navigator.Screen()); + m_drapeEngine = TEnginePrt(new df::TestingEngine(f, df::Viewport(0, 0, pixelRatio * width(), pixelRatio * height()), pixelRatio)); } void DrapeSurface::sizeChanged(int) @@ -148,14 +50,6 @@ void DrapeSurface::sizeChanged(int) float vs = devicePixelRatio(); int w = width() * vs; int h = height() * vs; - m_navigator.OnSize(0, 0, w, h); m_drapeEngine->Resize(w, h); - UpdateCoverage(); } } - -m2::PointF DrapeSurface::GetDevicePosition(QPoint const & p) -{ - qreal const ratio = devicePixelRatio(); - return m2::PointF(p.x() * ratio, p.y() * ratio); -} diff --git a/drape_head/drape_surface.hpp b/drape_head/drape_surface.hpp index 44857c3fcc..8f705c586e 100644 --- a/drape_head/drape_surface.hpp +++ b/drape_head/drape_surface.hpp @@ -1,24 +1,9 @@ #pragma once #include "drape_head/qtoglcontextfactory.hpp" - -#include "map/feature_vec_model.hpp" -#include "map/navigator.hpp" - -#include "drape/batcher.hpp" -#include "drape/gpu_program_manager.hpp" -#include "drape/uniform_values_storage.hpp" - -#define USE_TESTING_ENGINE -#if defined(USE_TESTING_ENGINE) #include "drape_head/testing_engine.hpp" -#define DrapeEngine TestingEngine -#else -#include "drape_frontend/drape_engine.hpp" -#endif #include -#include class DrapeSurface : public QWindow { @@ -30,28 +15,15 @@ public: protected: void exposeEvent(QExposeEvent * e); - void mousePressEvent(QMouseEvent * e); - void mouseMoveEvent(QMouseEvent * e); - void mouseReleaseEvent(QMouseEvent * e); - void wheelEvent(QWheelEvent * e); private: void CreateEngine(); - void UpdateCoverage(); Q_SLOT void sizeChanged(int); -private: - m2::PointF GetDevicePosition(QPoint const & p); - - bool m_dragState; - - model::FeaturesFetcher m_model; - Navigator m_navigator; - private: typedef dp::MasterPointer TContextFactoryPtr; - typedef dp::MasterPointer TEnginePrt; + typedef dp::MasterPointer TEnginePrt; TContextFactoryPtr m_contextFactory; TEnginePrt m_drapeEngine; }; diff --git a/drape_head/testing_engine.cpp b/drape_head/testing_engine.cpp index 0aa1b55f01..46032037dc 100644 --- a/drape_head/testing_engine.cpp +++ b/drape_head/testing_engine.cpp @@ -252,7 +252,6 @@ private: TestingEngine::TestingEngine(dp::RefPointer oglcontextfactory, Viewport const & viewport, - MapDataProvider const & model, double vs) : m_contextFactory(oglcontextfactory) , m_viewport(viewport) @@ -352,11 +351,6 @@ void TestingEngine::Resize(int w, int h) Draw(); } -void TestingEngine::DragStarted(m2::PointF const & p) {} -void TestingEngine::Drag(m2::PointF const & p) {} -void TestingEngine::DragEnded(m2::PointF const & p) {} -void TestingEngine::Scale(m2::PointF const & p, double factor) {} - void TestingEngine::timerEvent(QTimerEvent * e) { if (e->timerId() == m_timerId) diff --git a/drape_head/testing_engine.hpp b/drape_head/testing_engine.hpp index 5d046cb7ec..2bf5a56451 100644 --- a/drape_head/testing_engine.hpp +++ b/drape_head/testing_engine.hpp @@ -23,17 +23,11 @@ class TestingEngine : public QObject public: TestingEngine(dp::RefPointer oglcontextfactory, Viewport const & viewport, - MapDataProvider const & model, double vs); ~TestingEngine(); void Draw(); void Resize(int w, int h); - void DragStarted(m2::PointF const & p); - void Drag(m2::PointF const & p); - void DragEnded(m2::PointF const & p); - void Scale(m2::PointF const & p, double factor); - void UpdateCoverage(ScreenBase const & s){}; protected: void timerEvent(QTimerEvent * e); diff --git a/qt/mainwindow.cpp b/qt/mainwindow.cpp index 5fb5a30083..4a157b4093 100644 --- a/qt/mainwindow.cpp +++ b/qt/mainwindow.cpp @@ -60,13 +60,13 @@ MainWindow::MainWindow() : m_locationService(CreateDesktopLocationService(*this) format.setGreenBufferSize(8); format.setRedBufferSize(8); format.setStencilBufferSize(0); - format.setSamples(0); + format.setSamples(8); format.setSwapBehavior(QSurfaceFormat::DoubleBuffer); format.setSwapInterval(1); format.setDepthBufferSize(16); format.setProfile(QSurfaceFormat::CompatibilityProfile); - format.setOption(QSurfaceFormat::DebugContext); + //format.setOption(QSurfaceFormat::DebugContext); m_pDrawWidget->setFormat(format); QWidget * w = QWidget::createWindowContainer(m_pDrawWidget, this); w->setMouseTracking(true);