From a8ae50df94c4630053ffb4ad30e4518a10a48ca2 Mon Sep 17 00:00:00 2001 From: Michael Lemaire Date: Wed, 12 Aug 2015 22:53:54 +0200 Subject: [PATCH] Removed unused preview renderers --- src/paysages.pro | 1 - .../AtmosphereColorPreviewRenderer.cpp | 193 --- .../preview/AtmosphereColorPreviewRenderer.h | 26 - src/render/preview/Base2dPreviewRenderer.cpp | 39 - src/render/preview/Base2dPreviewRenderer.h | 33 - src/render/preview/BasePreview.cpp | 1072 ----------------- src/render/preview/BasePreview.h | 144 --- .../preview/CloudsAspectPreviewRenderer.cpp | 133 -- .../preview/CloudsAspectPreviewRenderer.h | 27 - .../preview/CloudsCoveragePreviewRenderer.cpp | 73 -- .../preview/CloudsCoveragePreviewRenderer.h | 32 - src/render/preview/DrawingWidget.cpp | 23 - src/render/preview/DrawingWidget.h | 29 - src/render/preview/PreviewOsd.cpp | 86 -- src/render/preview/PreviewOsd.h | 33 - src/render/preview/PreviewOsdItem.cpp | 52 - src/render/preview/PreviewOsdItem.h | 34 - .../preview/SceneryTopDownPreviewRenderer.cpp | 97 -- .../preview/SceneryTopDownPreviewRenderer.h | 37 - .../preview/TerrainShapePreviewRenderer.cpp | 74 -- .../preview/TerrainShapePreviewRenderer.h | 34 - .../TextureLayerAspectPreviewRenderer.cpp | 51 - .../TextureLayerAspectPreviewRenderer.h | 32 - .../TextureLayerCoveragePreviewRenderer.cpp | 59 - .../TextureLayerCoveragePreviewRenderer.h | 33 - .../preview/TexturesMixPreviewRenderer.cpp | 58 - .../preview/TexturesMixPreviewRenderer.h | 33 - .../preview/WaterAspectPreviewRenderer.cpp | 160 --- .../preview/WaterAspectPreviewRenderer.h | 36 - .../preview/WaterCoveragePreviewRenderer.cpp | 63 - .../preview/WaterCoveragePreviewRenderer.h | 34 - src/render/preview/preview.pro | 79 -- src/render/preview/preview_global.h | 33 - 33 files changed, 2943 deletions(-) delete mode 100644 src/render/preview/AtmosphereColorPreviewRenderer.cpp delete mode 100644 src/render/preview/AtmosphereColorPreviewRenderer.h delete mode 100644 src/render/preview/Base2dPreviewRenderer.cpp delete mode 100644 src/render/preview/Base2dPreviewRenderer.h delete mode 100644 src/render/preview/BasePreview.cpp delete mode 100644 src/render/preview/BasePreview.h delete mode 100644 src/render/preview/CloudsAspectPreviewRenderer.cpp delete mode 100644 src/render/preview/CloudsAspectPreviewRenderer.h delete mode 100644 src/render/preview/CloudsCoveragePreviewRenderer.cpp delete mode 100644 src/render/preview/CloudsCoveragePreviewRenderer.h delete mode 100644 src/render/preview/DrawingWidget.cpp delete mode 100644 src/render/preview/DrawingWidget.h delete mode 100644 src/render/preview/PreviewOsd.cpp delete mode 100644 src/render/preview/PreviewOsd.h delete mode 100644 src/render/preview/PreviewOsdItem.cpp delete mode 100644 src/render/preview/PreviewOsdItem.h delete mode 100644 src/render/preview/SceneryTopDownPreviewRenderer.cpp delete mode 100644 src/render/preview/SceneryTopDownPreviewRenderer.h delete mode 100644 src/render/preview/TerrainShapePreviewRenderer.cpp delete mode 100644 src/render/preview/TerrainShapePreviewRenderer.h delete mode 100644 src/render/preview/TextureLayerAspectPreviewRenderer.cpp delete mode 100644 src/render/preview/TextureLayerAspectPreviewRenderer.h delete mode 100644 src/render/preview/TextureLayerCoveragePreviewRenderer.cpp delete mode 100644 src/render/preview/TextureLayerCoveragePreviewRenderer.h delete mode 100644 src/render/preview/TexturesMixPreviewRenderer.cpp delete mode 100644 src/render/preview/TexturesMixPreviewRenderer.h delete mode 100644 src/render/preview/WaterAspectPreviewRenderer.cpp delete mode 100644 src/render/preview/WaterAspectPreviewRenderer.h delete mode 100644 src/render/preview/WaterCoveragePreviewRenderer.cpp delete mode 100644 src/render/preview/WaterCoveragePreviewRenderer.h delete mode 100644 src/render/preview/preview.pro delete mode 100644 src/render/preview/preview_global.h diff --git a/src/paysages.pro b/src/paysages.pro index 666f3a9..312b2ab 100644 --- a/src/paysages.pro +++ b/src/paysages.pro @@ -6,7 +6,6 @@ SUBDIRS = \ basics \ definition \ render/software \ - render/preview \ render/opengl \ interface/commandline \ interface/modeler diff --git a/src/render/preview/AtmosphereColorPreviewRenderer.cpp b/src/render/preview/AtmosphereColorPreviewRenderer.cpp deleted file mode 100644 index aa273be..0000000 --- a/src/render/preview/AtmosphereColorPreviewRenderer.cpp +++ /dev/null @@ -1,193 +0,0 @@ -#include "AtmosphereColorPreviewRenderer.h" - -#include "SoftwareRenderer.h" -#include "AtmosphereRenderer.h" -#include "AtmosphereResult.h" -#include "CameraDefinition.h" -#include "SurfaceMaterial.h" -#include "Scenery.h" -#include "BasePreview.h" - -/* - * Atmosphere previews. - */ - -typedef struct -{ - Vector3 location; - double size; -} Mount; - -#define MOUNTS_COUNT 11 -static Mount MOUNTS[MOUNTS_COUNT] = { - { - {2.0, 0.0, -6.0}, 4.0 - }, - { - {-1.5, 0.0, -8.0}, 4.0 - }, - { - {3.0, 0.0, -10.0}, 6.0 - }, - { - {-8.0, 0.0, -15.0}, 6.0 - }, - { - {10.0, 0.0, -20.0}, 6.0 - }, - { - {-6.0, 0.0, -30.0}, 8.0 - }, - { - {15.0, 0.0, -40.0}, 8.0 - }, - { - {-20.0, 0.0, -50.0}, 8.0 - }, - { - {10.0, 0.0, -60.0}, 10.0 - }, - { - {-5.0, 0.0, -80.0}, 10.0 - }, - { - {30.0, 0.0, -100.0}, 10.0 - }, -}; - -static SurfaceMaterial MOUNT_MATERIAL(Color(0.4, 0.4, 0.4, 1.0)); - -static inline int _rayIntersectsTriangle(Vector3 p, Vector3 d, Vector3 v0, Vector3 v1, Vector3 v2, Vector3* hit) -{ - Vector3 e1, e2, h, s, q; - double a, f, u, v, t; - - e1 = v1.sub(v0); - e2 = v2.sub(v0); - - h = d.crossProduct(e2); - a = e1.dotProduct(h); - - if (a > -0.00001 && a < 0.00001) - { - return 0; - } - - f = 1.0 / a; - s = p.sub(v0); - u = f * s.dotProduct(h); - - if (u < 0.0 || u > 1.0) - { - return 0; - } - - q = s.crossProduct(e1); - v = f * d.dotProduct(q); - - if (v < 0.0 || u + v > 1.0) - { - return 0; - } - - t = f * e2.dotProduct(q); - - if (t > 0.00001) - { - *hit = p.add(d.scale(t)); - return 1; - } - else - { - return 0; - } -} - -static inline int _checkHitMountain(Vector3 eye, Vector3 direction, Mount mount, Vector3* hit) -{ - Vector3 v0 = mount.location; - Vector3 v1 = mount.location; - Vector3 v2 = mount.location; - v0.x -= mount.size; - v1.x += mount.size; - v2.y += mount.size; - return _rayIntersectsTriangle(eye, direction, v0, v1, v2, hit); -} - -static inline int _checkHitGround(Vector3 eye, Vector3 direction, Vector3* hit) -{ - if (direction.y > -0.0001) - { - return 0; - } - else - { - hit->x = eye.x - direction.x * eye.y / direction.y; - hit->y = 0.0; - hit->z = eye.z - direction.z * eye.y / direction.y; - return 1; - } -} - -static inline int _checkHit(Vector3 eye, Vector3 direction, Vector3* hit, Vector3* normal) -{ - int i; - for (i = 0; i < MOUNTS_COUNT; i++) - { - if (_checkHitMountain(eye, direction, MOUNTS[i], hit)) - { - *normal = VECTOR_SOUTH; - return 1; - } - } - - *normal = VECTOR_UP; - return _checkHitGround(eye, direction, hit); -} - -AtmosphereColorPreviewRenderer::AtmosphereColorPreviewRenderer(AtmosphereDefinition* definition, double heading): - definition(definition), heading(heading) -{ - getScenery()->getCamera()->setLocation(Vector3(0.0, 7.0, 0.0)); - render_camera->setLocation(Vector3(0.0, 7.0, 0.0)); - - disableClouds(); -} - -void AtmosphereColorPreviewRenderer::bindEvent(BasePreview* preview) -{ - preview->configHdrToneMapping(true); - preview->configScaling(0.5, 5.0, 0.5, 2.5); -} -void AtmosphereColorPreviewRenderer::updateEvent() -{ - getScenery()->setAtmosphere(definition); - prepare(); -} - -Color AtmosphereColorPreviewRenderer::getColor2D(double x, double y, double) -{ - Vector3 eye(0.0, 7.0, 0.0); - Vector3 direction = Vector3(x, -y, -1.0).normalize(); - Vector3 hit, normal; - Matrix4 rotation; - - rotation = Matrix4::newRotateY(heading); - - if (_checkHit(eye, direction, &hit, &normal)) - { - Color color; - - normal = rotation.transform(normal); - hit = rotation.transform(hit); - - color = applyLightingToSurface(hit, normal, MOUNT_MATERIAL); - return applyMediumTraversal(hit, color); - } - else - { - direction = rotation.transform(direction); - - return getAtmosphereRenderer()->getSkyColor(direction).final; - } -} diff --git a/src/render/preview/AtmosphereColorPreviewRenderer.h b/src/render/preview/AtmosphereColorPreviewRenderer.h deleted file mode 100644 index fceb391..0000000 --- a/src/render/preview/AtmosphereColorPreviewRenderer.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef ATMOSPHERECOLORPREVIEWRENDERER_H -#define ATMOSPHERECOLORPREVIEWRENDERER_H - -#include "Base2dPreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT AtmosphereColorPreviewRenderer:public Base2dPreviewRenderer -{ -public: - AtmosphereColorPreviewRenderer(AtmosphereDefinition* definition, double heading); - - void bindEvent(BasePreview* preview) override; - void updateEvent() override; - virtual Color getColor2D(double x, double y, double scaling) override; - -private: - AtmosphereDefinition* definition; - double heading; -}; - -} -} - -#endif // ATMOSPHERECOLORPREVIEWRENDERER_H diff --git a/src/render/preview/Base2dPreviewRenderer.cpp b/src/render/preview/Base2dPreviewRenderer.cpp deleted file mode 100644 index 0ae5adc..0000000 --- a/src/render/preview/Base2dPreviewRenderer.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "Base2dPreviewRenderer.h" - -#include "Scenery.h" -#include "SoftwareRenderer.h" - -Base2dPreviewRenderer::Base2dPreviewRenderer(): - SoftwareRenderer() -{ -} - -Base2dPreviewRenderer::~Base2dPreviewRenderer() -{ -} - -void Base2dPreviewRenderer::bindEvent(BasePreview*) -{ -} - -void Base2dPreviewRenderer::toggleChangeEvent(const std::string &, bool) -{ -} - -void Base2dPreviewRenderer::choiceChangeEvent(const std::string &, int) -{ -} - -void Base2dPreviewRenderer::updateEvent() -{ - prepare(); -} - -void Base2dPreviewRenderer::cameraEvent(double, double, double) -{ -} - -Color Base2dPreviewRenderer::getColor2D(double, double, double) -{ - return COLOR_BLACK; -} diff --git a/src/render/preview/Base2dPreviewRenderer.h b/src/render/preview/Base2dPreviewRenderer.h deleted file mode 100644 index 6058af9..0000000 --- a/src/render/preview/Base2dPreviewRenderer.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef BASE2DPREVIEWRENDERER_H -#define BASE2DPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "SoftwareRenderer.h" - -#include "Color.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT Base2dPreviewRenderer: protected SoftwareRenderer -{ - -public: - Base2dPreviewRenderer(); - virtual ~Base2dPreviewRenderer(); - - virtual void bindEvent(BasePreview* preview); - - virtual void toggleChangeEvent(const std::string &key, bool value); - virtual void choiceChangeEvent(const std::string &key, int position); - - virtual void updateEvent(); - virtual void cameraEvent(double x, double y, double scaling); - virtual Color getColor2D(double x, double y, double scaling); -}; - -} -} - -#endif // BASE2DPREVIEWRENDERER_H diff --git a/src/render/preview/BasePreview.cpp b/src/render/preview/BasePreview.cpp deleted file mode 100644 index bbac1c1..0000000 --- a/src/render/preview/BasePreview.cpp +++ /dev/null @@ -1,1072 +0,0 @@ -#include "BasePreview.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "System.h" -#include "PackStream.h" -#include "Base2dPreviewRenderer.h" -#include "PreviewOsd.h" -#include "ColorProfile.h" - -/*************** PreviewChunk ***************/ -class PreviewChunk -{ -public: - - PreviewChunk(BasePreview* preview, int xstart, int ystart, int xsize, int ysize) - { - _preview = preview; - _xstart = xstart; - _ystart = ystart; - _xsize = xsize; - _ysize = ysize; - - _need_render = true; - _rendering = false; - _alive = true; - _priority = xstart; - } - - inline BasePreview* preview() - { - return _preview; - } - - inline int priority() - { - return _priority; - } - - inline bool isOnFront() - { - return _preview->isVisible();// && _preview->window()->isActiveWindow(); - } - - bool isFrom(BasePreview* preview) - { - return _preview == preview; - } - - void interrupt() - { - _alive = false; - } - - void update() - { - _priority = _xstart; - _need_render = true; - } - - bool render() - { - bool changed = false; - int revision; - - if (_rendering) - { - return false; - } - - _rendering = true; - _alive = true; - - if (_need_render) - { - if (!isOnFront()) - { - _priority = -1; - _rendering = false; - return false; - } - - _need_render = false; - - QImage pixbuf = _preview->startChunkTransaction(_xstart, _ystart, _xsize, _ysize, &revision); - - for (int x = 0; x < _xsize; x++) - { - for (int y = 0; y < _ysize; y++) - { - QRgb col = pixbuf.pixel(x, y); - if (!_alive) - { - _need_render = true; - _preview->rollbackChunkTransaction(); - _rendering = false; - return true; - } - if (qAlpha(col) < 255) - { - QColor newcol = _preview->getPixelColor(_xstart + x, _ystart + y); - newcol.setAlpha(255); - - pixbuf.setPixel(x, y, newcol.rgb()); - - changed = true; - } - } - } - - if (changed) - { - _need_render = not _preview->commitChunkTransaction(pixbuf, _xstart, _ystart, _xsize, _ysize, revision); - } - else - { - _preview->rollbackChunkTransaction(); - } - } - - if (not _need_render) - { - _priority = -1; - } - - _rendering = false; - return _need_render; - } -private: - BasePreview* _preview; - int _priority; - bool _alive; - bool _need_render; - bool _rendering; - int _xstart; - int _ystart; - int _xsize; - int _ysize; -}; - -class PreviewDrawingThread; -class PreviewDrawingManager -{ -public: - PreviewDrawingManager(); - void startThreads(); - void stopThreads(); - void addChunk(PreviewChunk* chunk); - void removeChunks(BasePreview* preview); - void updateChunks(BasePreview* preview); - void suspendChunks(BasePreview* preview); - void updateAllChunks(); - void performOneThreadJob(); - int chunkCount(); - -private: - int _thread_count; - QVector _threads; - QVector _chunks; - QList _updateQueue; - QMutex _lock; -}; - -static PreviewDrawingManager* _drawing_manager = NULL; - -/*************** PreviewDrawingThread ***************/ -class PreviewDrawingThread : public QThread -{ -public: - PreviewDrawingThread(); - void askStop(); - - static inline void usleep(int us) - { - QThread::usleep(us); - } - -protected: - void run(); - -private: - bool _running; -}; - -PreviewDrawingThread::PreviewDrawingThread() : -QThread() -{ - _running = false; -} - -void PreviewDrawingThread::askStop() -{ - _running = false; -} - -void PreviewDrawingThread::run() -{ - _running = true; - while (_running) - { - _drawing_manager->performOneThreadJob(); - QThread::usleep(5000); - } -} - -/*************** PreviewDrawingManager ***************/ -PreviewDrawingManager::PreviewDrawingManager() -{ - _thread_count = System::getCoreCount(); -} - -void PreviewDrawingManager::startThreads() -{ - for (int i = 0; i < _thread_count; i++) - { - PreviewDrawingThread* thread = new PreviewDrawingThread(); - _threads.append(thread); - thread->start(); - } -} - -void PreviewDrawingManager::stopThreads() -{ - qDebug("[Previews] Stopping all render threads"); - for (int i = 0; i < _threads.size(); i++) - { - _threads.at(i)->askStop(); - } - for (int i = 0; i < _chunks.size(); i++) - { - _chunks.at(i)->interrupt(); - } - for (int i = 0; i < _threads.size(); i++) - { - _threads.at(i)->wait(); - } -} - -void PreviewDrawingManager::addChunk(PreviewChunk* chunk) -{ - _lock.lock(); - _chunks.append(chunk); - _updateQueue.append(chunk); - _lock.unlock(); -} - -void PreviewDrawingManager::removeChunks(BasePreview* preview) -{ - int removed = 0; - for (int i = 0; i < _chunks.size(); i++) - { - PreviewChunk* chunk; - chunk = _chunks.at(i); - if (chunk->isFrom(preview)) - { - _lock.lock(); - _chunks.remove(i); - _updateQueue.removeAll(chunk); - _lock.unlock(); - - removed++; - i--; - } - } - - qDebug("[Previews] %d chunks removed, %d remaining", removed, _chunks.size()); -} - -void PreviewDrawingManager::suspendChunks(BasePreview* preview) -{ - _lock.lock(); - for (int i = 0; i < _updateQueue.size(); i++) - { - PreviewChunk* chunk; - chunk = _updateQueue.at(i); - if (chunk->isFrom(preview)) - { - _updateQueue.takeAt(i); - i--; - } - } - for (int i = 0; i < _chunks.size(); i++) - { - _chunks.at(i)->interrupt(); - } - _lock.unlock(); -} - -void PreviewDrawingManager::updateChunks(BasePreview* preview) -{ - for (int i = 0; i < _chunks.size(); i++) - { - PreviewChunk* chunk; - chunk = _chunks.at(i); - if (chunk->isFrom(preview)) - { - chunk->update(); - _lock.lock(); - if (!_updateQueue.contains(chunk)) - { - _updateQueue.prepend(chunk); - } - _lock.unlock(); - } - } -} - -void PreviewDrawingManager::updateAllChunks() -{ - qDebug("[Previews] Reviving all %d preview chunks", _chunks.size()); - for (int i = 0; i < _chunks.size(); i++) - { - PreviewChunk* chunk; - chunk = _chunks.at(i); - if (chunk->isOnFront()) - { - chunk->update(); - _lock.lock(); - if (!_updateQueue.contains(chunk)) - { - _updateQueue.prepend(chunk); - } - _lock.unlock(); - } - } -} - -static bool _cmpChunkPriority(const PreviewChunk* chunk1, const PreviewChunk* chunk2) -{ - return ((PreviewChunk*)chunk1)->priority() < ((PreviewChunk*)chunk2)->priority(); -} - - -void PreviewDrawingManager::performOneThreadJob() -{ - PreviewChunk* chunk; - - chunk = NULL; - _lock.lock(); - if (!_updateQueue.isEmpty()) - { - qSort(_updateQueue.begin(), _updateQueue.end(), _cmpChunkPriority); - chunk = _updateQueue.takeFirst(); - } - _lock.unlock(); - - if (chunk) - { - if (chunk->render()) - { - _lock.lock(); - if (!_updateQueue.contains(chunk)) - { - _updateQueue.append(chunk); - } - _lock.unlock(); - } - } -} - -int PreviewDrawingManager::chunkCount() -{ - return _chunks.size(); -} - -/*************** BasePreview ***************/ -BasePreview::BasePreview(QWidget* parent) : -DrawingWidget(parent) -{ - this->_lock_drawing = new QMutex(); - - this->conf_scroll_xmin = 0.0; - this->conf_scroll_xmax = 0.0; - this->conf_scroll_xinit = 0.0; - this->conf_scroll_ymin = 0.0; - this->conf_scroll_ymax = 0.0; - this->conf_scroll_yinit = 0.0; - this->conf_scale_min = 1.0; - this->conf_scale_max = 1.0; - this->conf_scale_init = 1.0; - this->conf_scale_step = 0.0; - this->conf_scroll_logarithmic = false; - this->scaling = 1.0; - this->scalingbase = 1.0; - this->xoffset = 0.0; - this->yoffset = 0.0; - this->_pixbuf = new QImage(this->size(), QImage::Format_ARGB32); - this->_pixbuf->fill(0x00000000); - _width = width(); - _height = height(); - _revision = 0; - _transactions_count = 0; - _redraw_requested = false; - - _renderer = NULL; - - _info = new QLabel(this); - _info->setVisible(false); - _info->setStyleSheet("QLabel { background-color: white; color: black; }"); - - _hdr_enabled = false; - _hdr_profile = new ColorProfile; - - this->alive = true; - - QObject::connect(this, SIGNAL(contentChange()), this, SLOT(update())); - - setMinimumSize(10, 10); - - startTimer(50); -} - -BasePreview::~BasePreview() -{ - alive = false; - - delete _hdr_profile; - - _drawing_manager->removeChunks(this); - - delete _info; - delete _pixbuf; - delete _lock_drawing; -} - -void BasePreview::setRenderer(Base2dPreviewRenderer* renderer) -{ - _renderer = renderer; - _renderer->bindEvent(this); -} - -void BasePreview::configHdrToneMapping(bool active) -{ - _hdr_enabled = active; - redraw(); -} - -void BasePreview::addOsd(QString name) -{ - _osd.append(PreviewOsd::getInstance(name)); - setMouseTracking(true); -} - -void BasePreview::savePack(PackStream* stream) -{ - stream->write(&this->xoffset); - stream->write(&this->yoffset); - stream->write(&this->scalingbase); - - // TODO Save choices and toggles -} - -void BasePreview::loadPack(PackStream* stream) -{ - stream->read(&this->xoffset); - stream->read(&this->yoffset); - stream->read(&this->scalingbase); - - // TODO Save choices and toggles - - updateScaling(); - emit contentChange(); -} - -void BasePreview::initDrawers() -{ - _drawing_manager = new PreviewDrawingManager(); - _drawing_manager->startThreads(); -} - -void BasePreview::stopDrawers() -{ - _drawing_manager->stopThreads(); -} - -void BasePreview::reviveAll() -{ - _drawing_manager->updateAllChunks(); -} - -void BasePreview::updateData() -{ - if (_renderer) - { - _renderer->updateEvent(); - } -} - -void BasePreview::cameraEvent() -{ - if (_renderer) - { - _renderer->cameraEvent(xoffset, yoffset, scaling); - } -} - -Color BasePreview::getColor(double x, double y) -{ - if (_renderer) - { - return _renderer->getColor2D(x, y, scaling); - } - else - { - return COLOR_BLACK; - } -} - -void BasePreview::configScaling(double min, double max, double step, double init, bool logarithmic) -{ - double size = (double) width(); - - if (size >= 1.0) - { - conf_scale_min = min / size; - conf_scale_max = max / size; - conf_scale_step = step / size; - conf_scale_init = init / size; - conf_scroll_logarithmic = logarithmic; - scalingbase = init / size; - if (conf_scroll_logarithmic && conf_scale_max - conf_scale_min > 0.0000001) - { - scalingbase = pow((scalingbase - conf_scale_min) / (conf_scale_max - conf_scale_min), 0.5) * (conf_scale_max - conf_scale_min) + conf_scale_min; - } - - updateScaling(); - redraw(); - } -} - -void BasePreview::configScrolling(double xmin, double xmax, double xinit, double ymin, double ymax, double yinit) -{ - conf_scroll_xmin = xmin; - conf_scroll_xmax = xmax; - conf_scroll_xinit = xinit; - conf_scroll_ymin = ymin; - conf_scroll_ymax = ymax; - conf_scroll_yinit = yinit; - xoffset = xinit; - yoffset = yinit; - redraw(); -} - -void BasePreview::addChoice(const QString &key, const QString &title, const QStringList &choices, int init_value) -{ - _ContextChoice choice; - choice.title = title; - choice.items << choices; - choice.current = init_value; - - _choices.insert(key, choice); - - choiceChangeEvent(key, init_value); -} - -void BasePreview::choiceChangeEvent(const QString &key, int position) -{ - if (_renderer) - { - _renderer->choiceChangeEvent(key.toStdString(), position); - } - redraw(); -} - -void BasePreview::addToggle(const QString &key, const QString &text, bool init_value) -{ - _ContextToggle toggle; - toggle.title = text; - toggle.value = init_value; - - _toggles.insert(key, toggle); - - toggleChangeEvent(key, init_value); -} - -void BasePreview::toggleChangeEvent(const QString &key, bool value) -{ - if (_renderer) - { - _renderer->toggleChangeEvent(key.toStdString(), value); - } - redraw(); -} - -void BasePreview::redraw() -{ - _drawing_manager->suspendChunks(this); - _redraw_requested = true; -} - -QImage BasePreview::startChunkTransaction(int x, int y, int w, int h, int* revision) -{ - QImage result; - - _lock_drawing->lock(); - - *revision = _revision; - result = _pixbuf->copy(x, y, w, h); - _transactions_count++; - - _lock_drawing->unlock(); - - return result; -} - -bool BasePreview::commitChunkTransaction(const QImage &chunk, int x, int y, int w, int h, int revision) -{ - bool result; - - _lock_drawing->lock(); - - if (revision == _revision) - { - QPainter painter(_pixbuf); - painter.drawImage(x, y, chunk, 0, 0, w, h); - emit contentChange(); - result = true; - } - else - { - result = false; - } - - _transactions_count--; - - _lock_drawing->unlock(); - - return result; -} - -void BasePreview::rollbackChunkTransaction() -{ - _lock_drawing->lock(); - - _transactions_count--; - - _lock_drawing->unlock(); -} - -QColor BasePreview::getPixelColor(int x, int y) -{ - Color col = getColor((double) (x - _width / 2) * scaling + xoffset, (double) (y - _height / 2) * scaling + yoffset); - if (_hdr_enabled) - { - col = _hdr_profile->apply(col); - } - col.normalize(); - return QColor::fromRgbF(col.r, col.g, col.b, col.a); -} - -void BasePreview::timerEvent(QTimerEvent*) -{ - _lock_drawing->lock(); - - if (_redraw_requested && _transactions_count == 0) - { - updateData(); - invalidatePixbuf(128); - _redraw_requested = false; - } - - _lock_drawing->unlock(); -} - -void BasePreview::choiceSelected(QAction* action) -{ - switch (action->property("mode").toInt()) - { - case 1: - { - QString key = action->property("key").toString(); - int value = action->property("value").toInt(); - - _choices[key].current = value; - - choiceChangeEvent(key, value); - break; - } - case 2: - { - QString key = action->property("key").toString(); - bool value = action->property("value").toBool(); - - _toggles[key].value = value; - - toggleChangeEvent(key, value); - break; - } - default: - ; - } -} - -void BasePreview::showEvent(QShowEvent*) -{ - updateChunks(); -} - -void BasePreview::resizeEvent(QResizeEvent* event) -{ - QImage* image; - int added = 0; - - this->_lock_drawing->lock(); - - image = this->_pixbuf; - - _width = event->size().width(); - _height = event->size().height(); - - this->_pixbuf = new QImage(this->size(), QImage::Format_ARGB32); - - this->_pixbuf->fill(0x00000000); - - _drawing_manager->removeChunks(this); - for (int x = 0; x < _width; x += 32) - { - for (int y = 0; y < _height; y += 32) - { - _drawing_manager->addChunk(new PreviewChunk(this, x, y, x + 32 > _width ? _width - x : 32, y + 32 > _height ? _height - y : 32)); - added++; - } - } - qDebug("[Previews] %d chunks added, %d total", added, _drawing_manager->chunkCount()); - - delete image; - - _revision++; - - this->_lock_drawing->unlock(); -} - -void BasePreview::doDrawing(QPainter* painter) -{ - if (isEnabled()) - { - painter->drawImage(0, 0, *this->_pixbuf); - - QImage osd(_pixbuf->size(), _pixbuf->format()); - osd.fill(0x00000000); - for (int i = 0; i < _osd.size(); i++) - { - _osd[i]->apply(&osd, xoffset, yoffset, scaling); - } - painter->drawImage(0, 0, osd); - } - else - { - painter->fillRect(rect(), QColor(100, 100, 100)); - } -} - -void BasePreview::updateScaling() -{ - if (conf_scroll_logarithmic && conf_scale_max - conf_scale_min > 0.0000001) - { - scaling = pow((scalingbase - conf_scale_min) / (conf_scale_max - conf_scale_min), 2.0) * (conf_scale_max - conf_scale_min) + conf_scale_min; - } - else - { - scaling = scalingbase; - } -} - -void BasePreview::updateChunks() -{ - cameraEvent(); - _drawing_manager->updateChunks(this); - _revision++; -} - -void BasePreview::invalidatePixbuf(int value) -{ - for (int ix = 0; ix < _width; ix++) - { - for (int iy = 0; iy < _height; iy++) - { - QRgb col = _pixbuf->pixel(ix, iy); - if (qAlpha(col) == 255) - { - _pixbuf->setPixel(ix, iy, qRgba(qRed(col), qGreen(col), qBlue(col), value)); - } - } - } - updateChunks(); -} - -void BasePreview::contextMenuEvent(QContextMenuEvent* event) -{ - QMenu menu(this); - - // TODO Get menu items from OSDs - - // Fill with choices - QHashIterator iter1(_choices); - while (iter1.hasNext()) - { - if (not menu.isEmpty()) - { - menu.addSeparator(); - } - - iter1.next(); - menu.addAction(QString(" %1 ").arg(iter1.value().title))->setDisabled(true); - - QStringList list = iter1.value().items; - for (int i = 0; i < list.count(); i++) - { - QAction* action = menu.addAction(list[i]); - action->setProperty("mode", 1); - action->setProperty("key", iter1.key()); - action->setProperty("value", i); - if (i == iter1.value().current) - { - action->setIcon(QIcon(":/images/choice_on.png")); - action->setIconVisibleInMenu(true); - } - } - } - - // Fill with toggles - QHashIterator iter2(_toggles); - while (iter2.hasNext()) - { - if (not menu.isEmpty() and not iter2.hasPrevious()) - { - menu.addSeparator(); - } - - iter2.next(); - - QAction* action = menu.addAction(iter2.value().title); - action->setProperty("mode", 2); - action->setProperty("key", iter2.key()); - action->setProperty("value", not iter2.value().value); - if (iter2.value().value) - { - action->setIcon(QIcon(":/images/toggle_on.png")); - action->setIconVisibleInMenu(true); - } - } - - if (not menu.isEmpty()) - { - connect(&menu, SIGNAL(triggered(QAction*)), this, SLOT(choiceSelected(QAction*))); - - menu.exec(event->globalPos()); - event->accept(); - } -} - -void BasePreview::mousePressEvent(QMouseEvent* event) -{ - if (event->button() == Qt::LeftButton) - { - mousex = event->x(); - mousey = event->y(); - } -} - -void BasePreview::mouseMoveEvent(QMouseEvent* event) -{ - int width, height; - - width = this->width(); - height = this->height(); - - if (event->buttons() & Qt::LeftButton) - { - int dx, dy; - int ndx, ndy; - - dx = event->x() - mousex; - dy = event->y() - mousey; - - ndx = dx; - ndy = dy; - if (xoffset - dx * scaling > conf_scroll_xmax) - { - ndx = (int) floor((conf_scroll_xmax - xoffset) / scaling); - } - if (xoffset - dx * scaling < conf_scroll_xmin) - { - ndx = (int) floor((conf_scroll_xmin - xoffset) / scaling); - } - if (yoffset - dy * scaling > conf_scroll_ymax) - { - ndy = (int) floor((conf_scroll_ymax - yoffset) / scaling); - } - if (yoffset - dy * scaling < conf_scroll_ymin) - { - ndy = (int) floor((conf_scroll_ymin - yoffset) / scaling); - } - if (ndx != 0 || ndy != 0) - { - if (ndx <= -width || ndx >= width || ndy <= -height || ndy >= height) - { - xoffset -= (double) ndx * scaling; - yoffset -= (double) ndy * scaling; - - _lock_drawing->lock(); - _pixbuf->fill(0x00000000); - updateChunks(); - _lock_drawing->unlock(); - } - else - { - int xstart, xsize, ystart, ysize; - - _lock_drawing->lock(); - - xoffset -= (double) ndx * scaling; - yoffset -= (double) ndy * scaling; - - if (ndx < 0) - { - xstart = -ndx; - xsize = width + ndx; - } - else - { - xstart = 0; - xsize = width - ndx; - } - if (ndy < 0) - { - ystart = -ndy; - ysize = height + ndy; - } - else - { - ystart = 0; - ysize = height - ndy; - } - - QImage part = _pixbuf->copy(xstart, ystart, xsize, ysize); - _pixbuf->fill(0x00000000); - QPainter painter(_pixbuf); - painter.drawImage(xstart + ndx, ystart + ndy, part); - - updateChunks(); - _lock_drawing->unlock(); - - emit contentChange(); - } - } - - mousex = event->x(); - mousey = event->y(); - } - else - { - // Get text info from OSD - bool found = false; - for (int i = 0; i < _osd.size(); i++) - { - double x = xoffset + (event->x() - width / 2) * scaling; - double y = yoffset + (event->y() - height / 2) * scaling; - QString info = _osd[i]->getToolTip(x, y, scaling); - if (not info.isEmpty()) - { - _info->setText(info); - _info->setVisible(true); - found = true; - break; - } - } - if (not found) - { - _info->setVisible(false); - } - } -} - -void BasePreview::wheelEvent(QWheelEvent* event) -{ - double factor; - double old_scaling; - int width, height; - int new_width, new_height; - - if (event->modifiers() & Qt::ShiftModifier) - { - factor = 5.0; - } - else if (event->modifiers() & Qt::ControlModifier) - { - factor = 0.2; - } - else - { - factor = 1.0; - } - - if (event->orientation() == Qt::Vertical) - { - if (event->delta() > 0 && scalingbase > conf_scale_min) - { - scalingbase -= factor * conf_scale_step; - if (scalingbase < conf_scale_min) - { - scalingbase = conf_scale_min; - } - } - else if (event->delta() < 0 && scalingbase < conf_scale_max) - { - scalingbase += factor * conf_scale_step; - if (scalingbase > conf_scale_max) - { - scalingbase = conf_scale_max; - } - } - else - { - event->ignore(); - return; - } - } - else - { - event->ignore(); - return; - } - - old_scaling = scaling; - updateScaling(); - - width = _pixbuf->width(); - height = _pixbuf->height(); - - if (scaling < old_scaling) - { - _lock_drawing->lock(); - new_width = (int) floor(((double) width) * scaling / old_scaling); - new_height = (int) floor(((double) height) * scaling / old_scaling); - QImage part = _pixbuf->copy((width - new_width) / 2, (height - new_height) / 2, new_width, new_height).scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - _pixbuf->fill(0x00000000); - QPainter painter(_pixbuf); - painter.drawImage(0, 0, part); - invalidatePixbuf(254); - _lock_drawing->unlock(); - - emit contentChange(); - } - else if (scaling > old_scaling) - { - _lock_drawing->lock(); - QImage part = _pixbuf->scaled((int) floor(((double) width) * old_scaling / scaling), (int) floor(((double) height) * old_scaling / scaling), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - _pixbuf->fill(0x00000000); - QPainter painter(_pixbuf); - painter.drawImage((width - part.width()) / 2, (height - part.height()) / 2, part); - invalidatePixbuf(254); - _lock_drawing->unlock(); - - emit contentChange(); - } - - event->accept(); -} - -void BasePreview::leaveEvent(QEvent*) -{ - _info->setVisible(false); -} diff --git a/src/render/preview/BasePreview.h b/src/render/preview/BasePreview.h deleted file mode 100644 index d182ed7..0000000 --- a/src/render/preview/BasePreview.h +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef BASEPREVIEW_H -#define BASEPREVIEW_H - -#include "preview_global.h" - -#include "DrawingWidget.h" -#include -#include -class QPainter; -class QMutex; -class QLabel; - -namespace paysages { -namespace preview { - -class _ContextChoice -{ -public: - QString title; - QStringList items; - int current; -}; - -class _ContextToggle -{ -public: - QString title; - bool value; -}; - -class PREVIEWSHARED_EXPORT BasePreview : public DrawingWidget -{ - Q_OBJECT - -public: - BasePreview(QWidget* parent); - ~BasePreview(); - - void setRenderer(Base2dPreviewRenderer* renderer); - - virtual void savePack(PackStream* stream); - virtual void loadPack(PackStream* stream); - - static void initDrawers(); - static void stopDrawers(); - static void reviveAll(); - - void redraw(); - - QImage startChunkTransaction(int x, int y, int w, int h, int* revision); - bool commitChunkTransaction(const QImage &chunk, int x, int y, int w, int h, int revision); - void rollbackChunkTransaction(); - - QColor getPixelColor(int x, int y); - - void addOsd(QString name); - - void configHdrToneMapping(bool active); - void configScaling(double min, double max, double step, double init, bool logarithmic = true); - void configScrolling(double xmin, double xmax, double xinit, double ymin, double ymax, double yinit); - - void addChoice(const QString &key, const QString &title, const QStringList &choices, int init_value); - virtual void choiceChangeEvent(const QString &key, int position); - - void addToggle(const QString &key, const QString &text, bool init_value); - virtual void toggleChangeEvent(const QString &key, bool value); - -protected: - virtual void updateData(); - virtual void cameraEvent(); - virtual Color getColor(double x, double y); - - double xoffset; - double yoffset; - double scaling; - -private: - void updateScaling(); - void updateChunks(); - void invalidatePixbuf(int value); - - void timerEvent(QTimerEvent* event); - void showEvent(QShowEvent* event); - void resizeEvent(QResizeEvent* event); - - void doDrawing(QPainter* painter); - - void contextMenuEvent(QContextMenuEvent* event); - void mousePressEvent(QMouseEvent* event); - void mouseMoveEvent(QMouseEvent* event); - void wheelEvent(QWheelEvent* event); - void leaveEvent(QEvent* event); - - QMutex* _lock_drawing; - QImage* _pixbuf; - QVector _osd; - QHash _choices; - QHash _toggles; - - QLabel* _info; - - Base2dPreviewRenderer* _renderer; - - int _width; - int _height; - - int _revision; - int _transactions_count; - bool _redraw_requested; - - int mousex; - int mousey; - - double scalingbase; - - bool alive; - bool _hdr_enabled; - ColorProfile* _hdr_profile; - - double conf_scroll_xmin; - double conf_scroll_xmax; - double conf_scroll_xinit; - double conf_scroll_ymin; - double conf_scroll_ymax; - double conf_scroll_yinit; - - double conf_scale_min; - double conf_scale_max; - double conf_scale_init; - double conf_scale_step; - bool conf_scroll_logarithmic; - -signals: - void contentChange(); - void redrawRequested(); - -private slots: - void choiceSelected(QAction* action); -}; - -} -} - -#endif // BASEPREVIEW_H diff --git a/src/render/preview/CloudsAspectPreviewRenderer.cpp b/src/render/preview/CloudsAspectPreviewRenderer.cpp deleted file mode 100644 index d6a803e..0000000 --- a/src/render/preview/CloudsAspectPreviewRenderer.cpp +++ /dev/null @@ -1,133 +0,0 @@ -#include "CloudsAspectPreviewRenderer.h" - -#include "BasePreview.h" -#include "Scenery.h" -#include "clouds/BaseCloudsModel.h" -#include "CloudsDefinition.h" -#include "CloudLayerDefinition.h" -#include "CloudsRenderer.h" -#include "LightStatus.h" -#include "LightComponent.h" -#include "AtmosphereResult.h" - -class FakeCloudModel:public BaseCloudsModel -{ -public: - FakeCloudModel(BaseCloudsModel* real_model): - BaseCloudsModel(real_model->getLayer()), real_model(real_model) - { - } - - virtual ~FakeCloudModel() - { - delete real_model; - } - - virtual void update() - { - real_model->update(); - } - - virtual void getAltitudeRange(double *min_altitude, double *max_altitude) const - { - real_model->getAltitudeRange(min_altitude, max_altitude); - } - - virtual void getDetailRange(double *min_step, double *max_step) const - { - real_model->getDetailRange(min_step, max_step); - *min_step *= 0.4; - *max_step *= 0.4; - } - - virtual double getProbability(const Vector3 &location, double radius) const - { - return real_model->getProbability(location, radius); - } - - virtual Color filterLight(const Color &light, double length, double density) const - { - return real_model->filterLight(light, length, density); - } - - virtual Color applyLightExit(const Color &light, const Vector3 &light_direction, const Vector3 &direction_to_eye) const - { - return real_model->applyLightExit(light, light_direction, direction_to_eye); - } - - virtual double getDensity(const Vector3 &location) const override - { - Vector3 location_ext(location.x * 0.5, location.y, location.z * 0.5); - double ymin, ymax, thickness; - getAltitudeRange(&ymin, &ymax); - thickness = ymax - ymin; - - Vector3 center(0.0, ymin + thickness * 0.5, 0.0); - double distance = 2.0 * location_ext.sub(center).getNorm() / thickness; - double fallout = 0.7; - if (distance > 1.0) - { - return 0.0; - } - else if (distance < 1.0 - fallout) - { - return 1.0; - } - else - { - double factor = (1.0 - distance) / fallout; - return real_model->getDensity(location_ext) * (1.0 - factor) + factor; - } - } - -private: - BaseCloudsModel* real_model; -}; - -CloudsAspectPreviewRenderer::CloudsAspectPreviewRenderer(CloudLayerDefinition* layer): - layer(layer) -{ - CloudsDefinition* clouds = getScenery()->getClouds(); - clouds->clear(); - clouds->addLayer(); - - render_quality = 6; -} - -void CloudsAspectPreviewRenderer::bindEvent(BasePreview* preview) -{ - preview->configScaling(0.5, 2.0, 0.1, 2.0); - preview->configHdrToneMapping(true); -} - -void CloudsAspectPreviewRenderer::updateEvent() -{ - CloudLayerDefinition* preview_layer = getScenery()->getClouds()->getCloudLayer(0); - layer->copy(preview_layer); - preview_layer->coverage = 0.5; - - prepare(); - - disableAtmosphere(); - BaseCloudsModel* real_model = getCloudsRenderer()->getLayerModel(0); - getCloudsRenderer()->setLayerModel(0, new FakeCloudModel(real_model), false); -} - -Color CloudsAspectPreviewRenderer::getColor2D(double x, double y, double) -{ - Vector3 start, end; - BaseCloudsModel* model = getCloudsRenderer()->getLayerModel(0); - double ymin, ymax, thickness; - model->getAltitudeRange(&ymin, &ymax); - thickness = ymax - ymin; - - start.x = x * thickness; - start.y = ymin + (1.0 - y) * thickness * 0.5; - start.z = thickness; - - end.x = start.x; - end.y = start.y; - end.z = -start.z; - - return getCloudsRenderer()->getColor(start, end, COLOR_BLUE); -} diff --git a/src/render/preview/CloudsAspectPreviewRenderer.h b/src/render/preview/CloudsAspectPreviewRenderer.h deleted file mode 100644 index de1842a..0000000 --- a/src/render/preview/CloudsAspectPreviewRenderer.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef CLOUDSASPECTPREVIEWRENDERER_H -#define CLOUDSASPECTPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "Base2dPreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT CloudsAspectPreviewRenderer : public Base2dPreviewRenderer -{ -public: - CloudsAspectPreviewRenderer(CloudLayerDefinition* layer); - - virtual void bindEvent(BasePreview* preview) override; - virtual void updateEvent() override; - virtual Color getColor2D(double x, double y, double scaling) override; - -private: - CloudLayerDefinition* layer; -}; - -} -} - -#endif // CLOUDSASPECTPREVIEWRENDERER_H diff --git a/src/render/preview/CloudsCoveragePreviewRenderer.cpp b/src/render/preview/CloudsCoveragePreviewRenderer.cpp deleted file mode 100644 index 289ae49..0000000 --- a/src/render/preview/CloudsCoveragePreviewRenderer.cpp +++ /dev/null @@ -1,73 +0,0 @@ -#include "CloudsCoveragePreviewRenderer.h" - -#include "BasePreview.h" -#include "Scenery.h" -#include "CloudsDefinition.h" -#include "CloudLayerDefinition.h" -#include "CloudsRenderer.h" - -CloudsCoveragePreviewRenderer::CloudsCoveragePreviewRenderer(CloudLayerDefinition* layer): - layer(layer) -{ - perspective = true; - - render_quality = 6; - - CloudsDefinition* clouds = getScenery()->getClouds(); - clouds->clear(); - clouds->addLayer(); -} - -void CloudsCoveragePreviewRenderer::bindEvent(BasePreview* preview) -{ - preview->addToggle("3d", "Perspective", perspective); - preview->configScaling(100.0, 1000.0, 20.0, 200.0); -} - -void CloudsCoveragePreviewRenderer::updateEvent() -{ - layer->copy(getScenery()->getClouds()->getCloudLayer(0)); - prepare(); -} - -Color CloudsCoveragePreviewRenderer::getColor2D(double x, double y, double scaling) -{ - if (perspective) - { - Vector3 eye, look; - - eye.x = 0.0; - eye.y = scaling; - eye.z = -10.0 * scaling; - look.x = x * 0.01 / scaling; - look.y = -(y * 0.01 - 0.3) / scaling; - look.z = 1.0; - look = look.normalize(); - - return getCloudsRenderer()->getColor(eye, eye.add(look.scale(1000.0)), COLOR_BLUE); - } - else - { - Vector3 start, end; - - start.x = end.x = x; - start.z = end.z = y; - start.y = 1000.0; - end.y = -1000.0; - - return getCloudsRenderer()->getColor(start, end, COLOR_BLUE); - } -} - -void CloudsCoveragePreviewRenderer::toggleChangeEvent(const std::string &key, bool value) -{ - if (key == "3d") - { - perspective = value; - } -} - -Color CloudsCoveragePreviewRenderer::applyLightingToSurface(const Vector3 &, const Vector3 &, const SurfaceMaterial &) -{ - return COLOR_WHITE; -} diff --git a/src/render/preview/CloudsCoveragePreviewRenderer.h b/src/render/preview/CloudsCoveragePreviewRenderer.h deleted file mode 100644 index 10c4975..0000000 --- a/src/render/preview/CloudsCoveragePreviewRenderer.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef CLOUDSCOVERAGEPREVIEWRENDERER_H -#define CLOUDSCOVERAGEPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "Base2dPreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT CloudsCoveragePreviewRenderer : public Base2dPreviewRenderer -{ -public: - CloudsCoveragePreviewRenderer(CloudLayerDefinition* layer); - - virtual void bindEvent(BasePreview* preview) override; - virtual void updateEvent() override; - virtual Color getColor2D(double x, double y, double scaling) override; - - virtual void toggleChangeEvent(const std::string &key, bool value) override; - - virtual Color applyLightingToSurface(const Vector3 &location, const Vector3 &normal, const SurfaceMaterial &material) override; - -private: - bool perspective; - CloudLayerDefinition* layer; -}; - -} -} - -#endif // CLOUDSCOVERAGEPREVIEWRENDERER_H diff --git a/src/render/preview/DrawingWidget.cpp b/src/render/preview/DrawingWidget.cpp deleted file mode 100644 index b31be41..0000000 --- a/src/render/preview/DrawingWidget.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "DrawingWidget.h" - -#include -#include - -DrawingWidget::DrawingWidget(QWidget* parent) : -QWidget(parent) -{ -} - -void DrawingWidget::paintEvent(QPaintEvent*) -{ - QPainter painter(this); - - QPainterPath mask; - mask.addRoundedRect(rect(), 8.0, 8.0); - - painter.setRenderHint(QPainter::Antialiasing, true); - painter.setClipPath(mask); - painter.setRenderHint(QPainter::Antialiasing, false); - - doDrawing(&painter); -} diff --git a/src/render/preview/DrawingWidget.h b/src/render/preview/DrawingWidget.h deleted file mode 100644 index fbe6d61..0000000 --- a/src/render/preview/DrawingWidget.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef DRAWINGWIDGET_H -#define DRAWINGWIDGET_H - -#include "preview_global.h" - -#include - -class QPaintEvent; -class QPainter; - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT DrawingWidget : public QWidget -{ - Q_OBJECT -public: - explicit DrawingWidget(QWidget* parent = 0); -protected: - virtual void doDrawing(QPainter* painter) = 0; -private: - virtual void paintEvent(QPaintEvent* event); -}; - -} -} - -#endif /* DRAWINGWIDGET_H */ - diff --git a/src/render/preview/PreviewOsd.cpp b/src/render/preview/PreviewOsd.cpp deleted file mode 100644 index ef702e3..0000000 --- a/src/render/preview/PreviewOsd.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "PreviewOsd.h" - -#include -#include -#include -#include "PreviewOsdItem.h" - -static QHash _instances; - -/*************** PreviewOsd ***************/ -PreviewOsd::PreviewOsd() -{ -} - -PreviewOsd::~PreviewOsd() -{ - for (int i = 0; i < _items.size(); i++) - { - delete _items[i]; - } -} - -PreviewOsd* PreviewOsd::getInstance(QString name) -{ - if (_instances.contains(name)) - { - return _instances[name]; - } - else - { - PreviewOsd* instance = new PreviewOsd(); - _instances.insert(name, instance); - return instance; - } -} - -void PreviewOsd::clearItems() -{ - for (int i = 0; i < _items.size(); i++) - { - delete _items[i]; - } - _items.clear(); -} - -PreviewOsdItem* PreviewOsd::newItem(int width, int height) -{ - PreviewOsdItem* item = new PreviewOsdItem(width, height); - _items.append(item); - return item; -} - -PreviewOsdItem* PreviewOsd::newItem(const QImage &image) -{ - PreviewOsdItem* item = newItem(image.width(), image.height()); - QPainter painter(item); - painter.drawImage(0, 0, image); - return item; -} - -void PreviewOsd::apply(QImage *mask, double xoffset, double yoffset, double scaling) -{ - QPainter painter(mask); - - for (int i = 0; i < _items.size(); i++) - { - PreviewOsdItem* item = _items[i]; - int x = (int) (mask->width() / 2 - (xoffset - item->xlocation()) / scaling - item->width() / 2); - int y = (int) (mask->height() / 2 - (yoffset - item->ylocation()) / scaling - item->height() / 2); - painter.drawImage(x, y, *item); - } -} - -QString PreviewOsd::getToolTip(double x, double y, double scaling) -{ - for (int i = 0; i < _items.size(); i++) - { - PreviewOsdItem* item = _items[i]; - QString tooltip = item->getToolTip(x, y, scaling); - if (not tooltip.isEmpty()) - { - return tooltip; - } - } - return QString(); -} diff --git a/src/render/preview/PreviewOsd.h b/src/render/preview/PreviewOsd.h deleted file mode 100644 index c92f701..0000000 --- a/src/render/preview/PreviewOsd.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef PREVIEWOSD_H -#define PREVIEWOSD_H - -#include "preview_global.h" - -#include -class QImage; - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT PreviewOsd -{ -public: - PreviewOsd(); - ~PreviewOsd(); - - static PreviewOsd* getInstance(QString name); - - void clearItems(); - PreviewOsdItem* newItem(int width, int height); - PreviewOsdItem* newItem(const QImage& image); - void apply(QImage* mask, double xoffset, double yoffset, double scaling); - QString getToolTip(double x, double y, double scaling); - -private: - QVector _items; -}; - -} -} - -#endif diff --git a/src/render/preview/PreviewOsdItem.cpp b/src/render/preview/PreviewOsdItem.cpp deleted file mode 100644 index 366a392..0000000 --- a/src/render/preview/PreviewOsdItem.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include "PreviewOsdItem.h" - -#include -#include "Vector3.h" -#include "CameraDefinition.h" - -PreviewOsdItem::PreviewOsdItem(int width, int height) : QImage(width, height, QImage::Format_ARGB32) -{ - _xlocation = 0.0; - _ylocation = 0.0; - fill(0x00000000); -} - -void PreviewOsdItem::setLocation(double x, double y) -{ - _xlocation = x; - _ylocation = y; -} - -void PreviewOsdItem::drawCamera(CameraDefinition* camera) -{ - Vector3 camera_location = camera->getLocation(); - VectorSpherical camera_direction = camera->getDirectionSpherical(); - int w2 = width() / 2; - int h2 = height() / 2; - - _xlocation = camera_location.x; - _ylocation = camera_location.z; - - QPainter painter(this); - painter.setPen(QPen(Qt::red, 2)); - painter.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing, true); - painter.drawLine(w2, h2, w2 + w2 * cos(camera_direction.phi - M_PI_4), h2 - h2 * sin(camera_direction.phi - M_PI_4)); - painter.drawLine(w2, h2, w2 + w2 * cos(camera_direction.phi + M_PI_4), h2 - h2 * sin(camera_direction.phi + M_PI_4)); -} - -void PreviewOsdItem::setToolTip(QString text) -{ - _tooltip = text; -} - -QString PreviewOsdItem::getToolTip(double x, double y, double scaling) -{ - if (_tooltip.isEmpty() or (x > _xlocation - (width() / 2) * scaling and x < _xlocation + (width() / 2) * scaling and y > _ylocation - (height() / 2) * scaling and y < _ylocation + (height() / 2) * scaling)) - { - return _tooltip; - } - else - { - return QString(); - } -} diff --git a/src/render/preview/PreviewOsdItem.h b/src/render/preview/PreviewOsdItem.h deleted file mode 100644 index 8ab29ae..0000000 --- a/src/render/preview/PreviewOsdItem.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef PREVIEWOSDITEM_H -#define PREVIEWOSDITEM_H - -#include "preview_global.h" - -#include - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT PreviewOsdItem:public QImage -{ -public: - PreviewOsdItem(int width, int height); - - void setLocation(double x, double y); - inline double xlocation() {return _xlocation;} - inline double ylocation() {return _ylocation;} - - void setToolTip(QString text); - QString getToolTip(double x, double y, double scaling); - - void drawCamera(CameraDefinition* camera); - -private: - double _xlocation; - double _ylocation; - QString _tooltip; -}; - -} -} - -#endif // PREVIEWOSDITEM_H diff --git a/src/render/preview/SceneryTopDownPreviewRenderer.cpp b/src/render/preview/SceneryTopDownPreviewRenderer.cpp deleted file mode 100644 index a5b71a6..0000000 --- a/src/render/preview/SceneryTopDownPreviewRenderer.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include "SceneryTopDownPreviewRenderer.h" - -#include "CloudsDefinition.h" -#include "BasePreview.h" -#include "Scenery.h" -#include "TerrainRenderer.h" -#include "WaterRenderer.h" -#include "CloudsRenderer.h" -#include "LightingManager.h" - -SceneryTopDownPreviewRenderer::SceneryTopDownPreviewRenderer(Scenery* scenery): - scenery(scenery) -{ - clouds_enabled = true; - render_quality = 3; -} - -void SceneryTopDownPreviewRenderer::bindEvent(BasePreview* preview) -{ - no_clouds = new CloudsDefinition(NULL); - clouds_enabled = true; - - // TODO Translation - preview->addOsd("geolocation"); - preview->addToggle("clouds", "Clouds", false); - preview->addToggle("specularity", "Light reflection", false); - - preview->configHdrToneMapping(true); - preview->configScaling(0.5, 200.0, 3.0, 50.0); - preview->configScrolling(-1000.0, 1000.0, 0.0, -1000.0, 1000.0, 0.0); -} - -void SceneryTopDownPreviewRenderer::updateEvent() -{ - setScenery(scenery); - - if (not clouds_enabled) - { - getScenery()->getClouds()->clear(); - } - getLightingManager()->setSpecularity(specularity_enabled); - - prepare(); -} - -Color SceneryTopDownPreviewRenderer::getColor2D(double x, double y, double scaling) -{ - Vector3 location; - double height = getTerrainRenderer()->getHeight(x, y, true); - - if (height < getWaterRenderer()->getHeightInfo().max_height) - { - return getWaterRenderer()->getResult(x, y).final; - } - else - { - location.x = x; - location.y = height; - location.z = y; - return getTerrainRenderer()->getFinalColor(location, scaling); - } -} - -void SceneryTopDownPreviewRenderer::toggleChangeEvent(const std::string &key, bool value) -{ - if (key == "clouds") - { - clouds_enabled = value; - } - else if (key == "specularity") - { - specularity_enabled = value; - } -} - -double SceneryTopDownPreviewRenderer::getPrecision(const Vector3 &) -{ - return 0.0000001; -} - -Vector3 SceneryTopDownPreviewRenderer::getCameraLocation(const Vector3 &target) -{ - return target.add(VECTOR_UP.scale(50.0)); -} - -Color SceneryTopDownPreviewRenderer::applyMediumTraversal(Vector3 location, Color color) -{ - if (clouds_enabled) - { - return getCloudsRenderer()->getColor(getCameraLocation(location), location, color); - } - else - { - return color; - } -} - diff --git a/src/render/preview/SceneryTopDownPreviewRenderer.h b/src/render/preview/SceneryTopDownPreviewRenderer.h deleted file mode 100644 index 5168cae..0000000 --- a/src/render/preview/SceneryTopDownPreviewRenderer.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef SCENERYTOPDOWNPREVIEWRENDERER_H -#define SCENERYTOPDOWNPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "Base2dPreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT SceneryTopDownPreviewRenderer : public Base2dPreviewRenderer -{ -public: - SceneryTopDownPreviewRenderer(Scenery* scenery); - -protected: - virtual void bindEvent(BasePreview* preview) override; - virtual void updateEvent() override; - virtual Color getColor2D(double x, double y, double scaling) override; - - virtual void toggleChangeEvent(const std::string &key, bool value) override; - - virtual double getPrecision(const Vector3 &location) override; - virtual Vector3 getCameraLocation(const Vector3 &target) override; - virtual Color applyMediumTraversal(Vector3 location, Color color) override; - -private: - Scenery* scenery; - bool clouds_enabled; - bool specularity_enabled; - CloudsDefinition* no_clouds; -}; - -} -} - -#endif // SCENERYTOPDOWNPREVIEWRENDERER_H diff --git a/src/render/preview/TerrainShapePreviewRenderer.cpp b/src/render/preview/TerrainShapePreviewRenderer.cpp deleted file mode 100644 index 9e5c940..0000000 --- a/src/render/preview/TerrainShapePreviewRenderer.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include "TerrainShapePreviewRenderer.h" - -#include "TexturesDefinition.h" -#include "TextureLayerDefinition.h" -#include "Zone.h" -#include "SurfaceMaterial.h" -#include "NoiseGenerator.h" -#include "BasePreview.h" -#include "Scenery.h" -#include "LightComponent.h" -#include "LightStatus.h" -#include "TerrainRenderer.h" - -TerrainShapePreviewRenderer::TerrainShapePreviewRenderer(TerrainDefinition* terrain) -{ - _terrain = terrain; - - render_quality = 3; - - disableClouds(); - - getScenery()->getTextures()->clear(); - getScenery()->getTextures()->addLayer(); - TextureLayerDefinition* layer = getScenery()->getTextures()->getTextureLayer(0); - layer->terrain_zone->clear(); - layer->displacement_height = 0.0; - layer->material->base = colorToHSL(COLOR_WHITE); - layer->material->reflection = 0.05; - layer->material->shininess = 2.0; - layer->validate(); - layer->_detail_noise->clearLevels(); -} - -Vector3 TerrainShapePreviewRenderer::getCameraLocation(const Vector3 &target) -{ - return target.add(Vector3(-10.0, 15.0, 10.0)); -} - -void TerrainShapePreviewRenderer::bindEvent(BasePreview* preview) -{ - preview->addOsd(QString("geolocation")); - - preview->configScaling(20.0, 1000.0, 20.0, 200.0); - preview->configScrolling(-1000.0, 1000.0, 0.0, -1000.0, 1000.0, 0.0); -} - -void TerrainShapePreviewRenderer::updateEvent() -{ - getScenery()->setTerrain(_terrain); - - prepare(); - - disableAtmosphere(); -} - -Color TerrainShapePreviewRenderer::getColor2D(double x, double y, double scaling) -{ - double height; - - height = getTerrainRenderer()->getHeight(x, y, true); - if (height > 0.0) - { - return getTerrainRenderer()->getFinalColor(Vector3(x, height, y), 0.000001); - } - else - { - return getWaterColor(x, y, scaling); - } -} - -Color TerrainShapePreviewRenderer::getWaterColor(double, double, double) -{ - return COLOR_BLUE; -} diff --git a/src/render/preview/TerrainShapePreviewRenderer.h b/src/render/preview/TerrainShapePreviewRenderer.h deleted file mode 100644 index 1f4d574..0000000 --- a/src/render/preview/TerrainShapePreviewRenderer.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef TERRAINSHAPEPREVIEWRENDERER_H -#define TERRAINSHAPEPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "Base2dPreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT TerrainShapePreviewRenderer : public Base2dPreviewRenderer -{ -public: - explicit TerrainShapePreviewRenderer(TerrainDefinition* terrain); - -protected: - virtual Vector3 getCameraLocation(const Vector3 &target) override; - - virtual void bindEvent(BasePreview* preview) override; - virtual void updateEvent() override; - virtual Color getColor2D(double x, double y, double scaling) override; - - virtual Color getWaterColor(double x, double y, double scaling); - - TerrainDefinition* _terrain; - -private: - double _water_height; -}; - -} -} - -#endif // TERRAINSHAPEPREVIEWRENDERER_H diff --git a/src/render/preview/TextureLayerAspectPreviewRenderer.cpp b/src/render/preview/TextureLayerAspectPreviewRenderer.cpp deleted file mode 100644 index b99329f..0000000 --- a/src/render/preview/TextureLayerAspectPreviewRenderer.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "TextureLayerAspectPreviewRenderer.h" - -#include "Scenery.h" -#include "BasePreview.h" -#include "TexturesRenderer.h" - -TextureLayerAspectPreviewRenderer::TextureLayerAspectPreviewRenderer(): - Base2dPreviewRenderer() -{ - textures = NULL; - - render_quality = 3; -} - -void TextureLayerAspectPreviewRenderer::setTextures(TexturesDefinition* textures) -{ - this->textures = textures; -} - -void TextureLayerAspectPreviewRenderer::setLayer(int layer) -{ - this->layer = layer; -} - -void TextureLayerAspectPreviewRenderer::bindEvent(BasePreview* preview) -{ - preview->addOsd(QString("geolocation")); - - preview->configScaling(20.0, 1000.0, 20.0, 200.0); - preview->configScrolling(-1000.0, 1000.0, 0.0, -1000.0, 1000.0, 0.0); -} - -void TextureLayerAspectPreviewRenderer::updateEvent() -{ - Base2dPreviewRenderer::updateEvent(); - - if (textures) - { - getScenery()->setTextures(textures); - } - - disableAtmosphere(); - disableClouds(); -} - -Color TextureLayerAspectPreviewRenderer::getColor2D(double x, double y, double) -{ - TexturesRenderer* textures_renderer = getTexturesRenderer(); - - return textures_renderer->applyToTerrain(x, y).final_color; -} diff --git a/src/render/preview/TextureLayerAspectPreviewRenderer.h b/src/render/preview/TextureLayerAspectPreviewRenderer.h deleted file mode 100644 index 9e7ac59..0000000 --- a/src/render/preview/TextureLayerAspectPreviewRenderer.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef TEXTURELAYERASPECTPREVIEWRENDERER_H -#define TEXTURELAYERASPECTPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "Base2dPreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT TextureLayerAspectPreviewRenderer: public Base2dPreviewRenderer -{ -public: - TextureLayerAspectPreviewRenderer(); - - void setTextures(TexturesDefinition* textures); - void setLayer(int layer); - -protected: - virtual void bindEvent(BasePreview* preview); - virtual void updateEvent(); - virtual Color getColor2D(double x, double y, double scaling); - -private: - TexturesDefinition* textures; - int layer; -}; - -} -} - -#endif // TEXTURELAYERASPECTPREVIEWRENDERER_H diff --git a/src/render/preview/TextureLayerCoveragePreviewRenderer.cpp b/src/render/preview/TextureLayerCoveragePreviewRenderer.cpp deleted file mode 100644 index 217b62b..0000000 --- a/src/render/preview/TextureLayerCoveragePreviewRenderer.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "TextureLayerCoveragePreviewRenderer.h" - -#include "Scenery.h" -#include "BasePreview.h" -#include "TexturesRenderer.h" - -TextureLayerCoveragePreviewRenderer::TextureLayerCoveragePreviewRenderer(): - Base2dPreviewRenderer() -{ - textures = NULL; - - render_quality = 3; -} - -void TextureLayerCoveragePreviewRenderer::setTextures(TexturesDefinition* textures) -{ - this->textures = textures; -} - -void TextureLayerCoveragePreviewRenderer::setTerrain(TerrainDefinition *terrain) -{ - getScenery()->setTerrain(terrain); -} - -void TextureLayerCoveragePreviewRenderer::setLayer(int layer) -{ - this->layer = layer; -} - -void TextureLayerCoveragePreviewRenderer::bindEvent(BasePreview* preview) -{ - preview->addOsd(QString("geolocation")); - - preview->configScaling(20.0, 1000.0, 20.0, 200.0); - preview->configScrolling(-1000.0, 1000.0, 0.0, -1000.0, 1000.0, 0.0); -} - -void TextureLayerCoveragePreviewRenderer::updateEvent() -{ - Base2dPreviewRenderer::updateEvent(); - - if (textures) - { - getScenery()->setTextures(textures); - } - - disableAtmosphere(); - disableClouds(); -} - -Color TextureLayerCoveragePreviewRenderer::getColor2D(double x, double y, double) -{ - TexturesRenderer* textures_renderer = getTexturesRenderer(); - TerrainRenderer* terrain_renderer = getTerrainRenderer(); - - double presence = textures_renderer->getBasePresence(layer, terrain_renderer->getResult(x, y, true, false)); - - return Color(presence, presence, presence); -} diff --git a/src/render/preview/TextureLayerCoveragePreviewRenderer.h b/src/render/preview/TextureLayerCoveragePreviewRenderer.h deleted file mode 100644 index 7382c18..0000000 --- a/src/render/preview/TextureLayerCoveragePreviewRenderer.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef TEXTURELAYERCOVERAGEPREVIEWRENDERER_H -#define TEXTURELAYERCOVERAGEPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "Base2dPreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT TextureLayerCoveragePreviewRenderer: public Base2dPreviewRenderer -{ -public: - TextureLayerCoveragePreviewRenderer(); - - void setTextures(TexturesDefinition* textures); - void setTerrain(TerrainDefinition* terrain); - void setLayer(int layer); - -protected: - virtual void bindEvent(BasePreview* preview); - virtual void updateEvent(); - virtual Color getColor2D(double x, double y, double scaling); - -private: - TexturesDefinition* textures; - int layer; -}; - -} -} - -#endif // TEXTURELAYERCOVERAGEPREVIEWRENDERER_H diff --git a/src/render/preview/TexturesMixPreviewRenderer.cpp b/src/render/preview/TexturesMixPreviewRenderer.cpp deleted file mode 100644 index 9802c4d..0000000 --- a/src/render/preview/TexturesMixPreviewRenderer.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "TexturesMixPreviewRenderer.h" - -#include "Scenery.h" -#include "BasePreview.h" -#include "TerrainRenderer.h" - -TexturesMixPreviewRenderer::TexturesMixPreviewRenderer(): - Base2dPreviewRenderer() -{ - textures = NULL; - - render_quality = 3; -} - -void TexturesMixPreviewRenderer::setTextures(TexturesDefinition* textures) -{ - this->textures = textures; -} - -void TexturesMixPreviewRenderer::setTerrain(TerrainDefinition *terrain) -{ - getScenery()->setTerrain(terrain); -} - -void TexturesMixPreviewRenderer::setLayer(int layer) -{ - this->layer = layer; -} - -void TexturesMixPreviewRenderer::bindEvent(BasePreview* preview) -{ - preview->addOsd(QString("geolocation")); - - preview->configHdrToneMapping(true); - - preview->configScaling(20.0, 1000.0, 20.0, 200.0); - preview->configScrolling(-1000.0, 1000.0, 0.0, -1000.0, 1000.0, 0.0); -} - -void TexturesMixPreviewRenderer::updateEvent() -{ - Base2dPreviewRenderer::updateEvent(); - - if (textures) - { - getScenery()->setTextures(textures); - } - - disableAtmosphere(); - disableClouds(); -} - -Color TexturesMixPreviewRenderer::getColor2D(double x, double y, double scaling) -{ - TerrainRenderer* terrain_renderer = getTerrainRenderer(); - Vector3 location(x, terrain_renderer->getHeight(x, y, true), y); - return terrain_renderer->getFinalColor(location, scaling); -} diff --git a/src/render/preview/TexturesMixPreviewRenderer.h b/src/render/preview/TexturesMixPreviewRenderer.h deleted file mode 100644 index 3fafbb8..0000000 --- a/src/render/preview/TexturesMixPreviewRenderer.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef TEXTURESMIXPREVIEWRENDERER_H -#define TEXTURESMIXPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "Base2dPreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT TexturesMixPreviewRenderer:public Base2dPreviewRenderer -{ -public: - TexturesMixPreviewRenderer(); - - void setTextures(TexturesDefinition* textures); - void setTerrain(TerrainDefinition* terrain); - void setLayer(int layer); - -protected: - virtual void bindEvent(BasePreview* preview) override; - virtual void updateEvent() override; - virtual Color getColor2D(double x, double y, double scaling) override; - -private: - int layer; - TexturesDefinition* textures; -}; - -} -} - -#endif // TEXTURESMIXPREVIEWRENDERER_H diff --git a/src/render/preview/WaterAspectPreviewRenderer.cpp b/src/render/preview/WaterAspectPreviewRenderer.cpp deleted file mode 100644 index abedac3..0000000 --- a/src/render/preview/WaterAspectPreviewRenderer.cpp +++ /dev/null @@ -1,160 +0,0 @@ -#include "WaterAspectPreviewRenderer.h" - -#include "BasePreview.h" -#include "Scenery.h" -#include "WaterDefinition.h" -#include "CameraDefinition.h" -#include "WaterRenderer.h" -#include "LightComponent.h" - -WaterAspectPreviewRenderer::WaterAspectPreviewRenderer(WaterDefinition* definition): - definition(definition) -{ - lighting = true; - background = 2; - - render_quality = 3; - - customData[0] = &lighting; - customData[1] = &background; -} - -void WaterAspectPreviewRenderer::bindEvent(BasePreview* preview) -{ - preview->configScaling(10.0, 1000.0, 10.0, 250.0); - //configScrolling(-30.0, 30.0, 0.0, -20.0, 20.0, 0.0); - - // TODO Translation - preview->addChoice("bg", "Background", QStringList("None") << "Grid" << "Sinusoid", 2); - preview->addToggle("light", "Light reflection", true); - - //preview->configHdrToneMapping(true); -} - -void WaterAspectPreviewRenderer::updateEvent() -{ - getScenery()->setWater(definition); - getScenery()->getCamera()->setTarget(VECTOR_ZERO); - prepare(); - - LightComponent light; - std::vector lights; - light.color = COLOR_WHITE; - light.direction.x = 0.0; - light.direction.y = -0.4794; - light.direction.z = -0.8776; - light.altered = 0; - if (lighting) - { - light.reflection = 1.0; - } - else - { - light.reflection = 0.0; - } - lights.push_back(light); - disableAtmosphere(lights); -} - -void WaterAspectPreviewRenderer::cameraEvent(double, double, double scaling) -{ - Vector3 camera_location(0.0, scaling, -10.0 * scaling); - getScenery()->getCamera()->setLocation(camera_location); - render_camera->setLocation(camera_location); -} - -Color WaterAspectPreviewRenderer::getColor2D(double x, double y, double scaling) -{ - Vector3 eye, look; - double target_x, target_z; - - eye = render_camera->getLocation(); - look = Vector3(x * 0.01 / scaling, -y * 0.01 / scaling - 0.3, 1.0).normalize(); - - if (look.y > -0.0001) - { - return rayWalking(eye, look, 0, 0, 0, 0).hit_color; - } - - target_x = eye.x - look.x * eye.y / look.y; - target_z = eye.z - look.z * eye.y / look.y; - - if (target_z > 0.0) - { - return rayWalking(eye, look, 0, 0, 0, 0).hit_color; - } - - return getWaterRenderer()->getResult(target_x, target_z).final; -} - -void WaterAspectPreviewRenderer::toggleChangeEvent(const std::string &key, bool value) -{ - if (key == "light") - { - lighting = value; - } -} - -void WaterAspectPreviewRenderer::choiceChangeEvent(const std::string &key, int position) -{ - if (key == "bg") - { - background = position; - } -} - -double WaterAspectPreviewRenderer::getPrecision(const Vector3 &) -{ - return 0.000001; -} - -RayCastingResult WaterAspectPreviewRenderer::rayWalking(const Vector3 &location, const Vector3 &direction, int, int, int, int) -{ - RayCastingResult result; - double x, y; - - result.hit = 1; - if (direction.z < 0.0001) - { - result.hit_color = COLOR_WHITE; - result.hit_location = location; - } - else - { - x = location.x + direction.x * (0.0 - location.z) / direction.z; - y = location.y + direction.y * (0.0 - location.z) / direction.z; - - switch (background) - { - case 1: - result.hit_color = (((int) ceil(x * 0.2) % 2 == 0) ^ ((int) ceil(y * 0.2 - 0.5) % 2 == 0)) ? COLOR_WHITE : COLOR_BLACK; - break; - case 2: - result.hit_color = (y * 0.1 > x * 0.03 + sin(x - M_PI_2)) ? COLOR_WHITE : COLOR_BLACK; - break; - default: - result.hit_color = COLOR_WHITE; - } - result.hit_location.x = x; - result.hit_location.y = y; - result.hit_location.z = 0.0; - - if (result.hit_location.y < 0.0) - { - double lighting_depth = getScenery()->getWater()->lighting_depth; - if (result.hit_location.y < -lighting_depth) - { - result.hit_color = COLOR_BLACK; - } - else - { - double attenuation = -result.hit_location.y / lighting_depth; - result.hit_color.r *= 1.0 - attenuation; - result.hit_color.g *= 1.0 - attenuation; - result.hit_color.b *= 1.0 - attenuation; - } - } - } - - return result; -} diff --git a/src/render/preview/WaterAspectPreviewRenderer.h b/src/render/preview/WaterAspectPreviewRenderer.h deleted file mode 100644 index 2a9d569..0000000 --- a/src/render/preview/WaterAspectPreviewRenderer.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef WATERASPECTPREVIEWRENDERER_H -#define WATERASPECTPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "Base2dPreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT WaterAspectPreviewRenderer : public Base2dPreviewRenderer -{ -public: - WaterAspectPreviewRenderer(WaterDefinition* definition); - - virtual void bindEvent(BasePreview* preview) override; - virtual void updateEvent() override; - virtual void cameraEvent(double x, double y, double scaling) override; - virtual Color getColor2D(double x, double y, double scaling) override; - - virtual void toggleChangeEvent(const std::string &key, bool value) override; - virtual void choiceChangeEvent(const std::string &key, int position) override; - - virtual double getPrecision(const Vector3 &location) override; - virtual RayCastingResult rayWalking(const Vector3 &location, const Vector3 &direction, int terrain, int water, int sky, int clouds) override; - -private: - WaterDefinition* definition; - bool lighting; - int background; -}; - -} -} - -#endif // WATERASPECTPREVIEWRENDERER_H diff --git a/src/render/preview/WaterCoveragePreviewRenderer.cpp b/src/render/preview/WaterCoveragePreviewRenderer.cpp deleted file mode 100644 index 0f37815..0000000 --- a/src/render/preview/WaterCoveragePreviewRenderer.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "WaterCoveragePreviewRenderer.h" - -#include "BasePreview.h" -#include "Scenery.h" -#include "TerrainDefinition.h" -#include "WaterRenderer.h" - -WaterCoveragePreviewRenderer::WaterCoveragePreviewRenderer(WaterDefinition* definition): - TerrainShapePreviewRenderer(new TerrainDefinition(NULL)), definition(definition) -{ - highlight = true; -} - -WaterCoveragePreviewRenderer::~WaterCoveragePreviewRenderer() -{ - delete TerrainShapePreviewRenderer::_terrain; -} - -void WaterCoveragePreviewRenderer::setTerrain(TerrainDefinition *terrain) -{ - terrain->copy(TerrainShapePreviewRenderer::_terrain); - getScenery()->setTerrain(terrain); -} - -void WaterCoveragePreviewRenderer::bindEvent(BasePreview* preview) -{ - TerrainShapePreviewRenderer::bindEvent(preview); - - // TODO Translation - preview->addToggle("highlight", "Coverage highlight", true); - - // TODO Keep camera above center (for reflections) -} - -void WaterCoveragePreviewRenderer::toggleChangeEvent(const std::string &key, bool value) -{ - if (key == "highlight") - { - highlight = value; - } -} - -void WaterCoveragePreviewRenderer::updateEvent() -{ - getScenery()->setWater(definition); - - TerrainShapePreviewRenderer::updateEvent(); -} - -Color WaterCoveragePreviewRenderer::getWaterColor(double x, double y, double) -{ - Color base; - - base = getWaterRenderer()->getResult(x, y).final; - - if (highlight) - { - Color mask = {0.5, 0.5, 1.0, 0.5}; - base.mask(mask); - } - - return base; -} diff --git a/src/render/preview/WaterCoveragePreviewRenderer.h b/src/render/preview/WaterCoveragePreviewRenderer.h deleted file mode 100644 index a472843..0000000 --- a/src/render/preview/WaterCoveragePreviewRenderer.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef WATERCOVERAGEPREVIEWRENDERER_H -#define WATERCOVERAGEPREVIEWRENDERER_H - -#include "preview_global.h" - -#include "TerrainShapePreviewRenderer.h" - -namespace paysages { -namespace preview { - -class PREVIEWSHARED_EXPORT WaterCoveragePreviewRenderer : public TerrainShapePreviewRenderer -{ -public: - WaterCoveragePreviewRenderer(WaterDefinition* definition); - virtual ~WaterCoveragePreviewRenderer(); - - void setTerrain(TerrainDefinition* terrain); - - virtual void bindEvent(BasePreview* preview) override; - virtual void updateEvent() override; - - virtual Color getWaterColor(double x, double y, double scaling) override; - - virtual void toggleChangeEvent(const std::string &key, bool value) override; - -private: - WaterDefinition* definition; - bool highlight; -}; - -} -} - -#endif // WATERCOVERAGEPREVIEWRENDERER_H diff --git a/src/render/preview/preview.pro b/src/render/preview/preview.pro deleted file mode 100644 index f06940d..0000000 --- a/src/render/preview/preview.pro +++ /dev/null @@ -1,79 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2013-11-11T17:56:07 -# -#------------------------------------------------- - -TARGET = paysages_render_preview -TEMPLATE = lib -QT += gui widgets - -DEFINES += PREVIEW_LIBRARY - -include(../../common.pri) - -SOURCES += Base2dPreviewRenderer.cpp \ - AtmosphereColorPreviewRenderer.cpp \ - BasePreview.cpp \ - PreviewOsd.cpp \ - DrawingWidget.cpp \ - PreviewOsdItem.cpp \ - CloudsCoveragePreviewRenderer.cpp \ - CloudsAspectPreviewRenderer.cpp \ - WaterCoveragePreviewRenderer.cpp \ - WaterAspectPreviewRenderer.cpp \ - TerrainShapePreviewRenderer.cpp \ - SceneryTopDownPreviewRenderer.cpp \ - TexturesMixPreviewRenderer.cpp \ - TextureLayerCoveragePreviewRenderer.cpp \ - TextureLayerAspectPreviewRenderer.cpp - -HEADERS += Base2dPreviewRenderer.h\ - preview_global.h \ - AtmosphereColorPreviewRenderer.h \ - BasePreview.h \ - PreviewOsd.h \ - DrawingWidget.h \ - PreviewOsdItem.h \ - CloudsCoveragePreviewRenderer.h \ - CloudsAspectPreviewRenderer.h \ - WaterCoveragePreviewRenderer.h \ - WaterAspectPreviewRenderer.h \ - TerrainShapePreviewRenderer.h \ - SceneryTopDownPreviewRenderer.h \ - TexturesMixPreviewRenderer.h \ - TextureLayerCoveragePreviewRenderer.h \ - TextureLayerAspectPreviewRenderer.h - -unix:!symbian { - maemo5 { - target.path = /opt/usr/lib - } else { - target.path = /usr/lib - } - INSTALLS += target -} - -win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../system/release/ -lpaysages_system -else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../system/debug/ -lpaysages_system -else:unix: LIBS += -L$$OUT_PWD/../../system/ -lpaysages_system -INCLUDEPATH += $$PWD/../../system -DEPENDPATH += $$PWD/../../system - -win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../basics/release/ -lpaysages_basics -else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../basics/debug/ -lpaysages_basics -else:unix: LIBS += -L$$OUT_PWD/../../basics/ -lpaysages_basics -INCLUDEPATH += $$PWD/../../basics -DEPENDPATH += $$PWD/../../basics - -win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../definition/release/ -lpaysages_definition -else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../definition/debug/ -lpaysages_definition -else:unix: LIBS += -L$$OUT_PWD/../../definition/ -lpaysages_definition -INCLUDEPATH += $$PWD/../../definition -DEPENDPATH += $$PWD/../../definition - -win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../software/release/ -lpaysages_render_software -else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../software/debug/ -lpaysages_render_software -else:unix: LIBS += -L$$OUT_PWD/../software/ -lpaysages_render_software -INCLUDEPATH += $$PWD/../software -DEPENDPATH += $$PWD/../software diff --git a/src/render/preview/preview_global.h b/src/render/preview/preview_global.h deleted file mode 100644 index cc589b5..0000000 --- a/src/render/preview/preview_global.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef PREVIEW_GLOBAL_H -#define PREVIEW_GLOBAL_H - -#include - -#if defined(PREVIEW_LIBRARY) -# define PREVIEWSHARED_EXPORT Q_DECL_EXPORT -#else -# define PREVIEWSHARED_EXPORT Q_DECL_IMPORT -#endif - -#include "software_global.h" - -namespace paysages { -namespace preview { - class PreviewOsd; - class PreviewOsdItem; - class BasePreview; - class Base2dPreviewRenderer; - class AtmosphereColorPreviewRenderer; - class CloudsCoveragePreviewRenderer; - class CloudsAspectPreviewRenderer; - class WaterCoveragePreviewRenderer; - class WaterAspectPreviewRenderer; - class TerrainShapePreviewRenderer; - class TexturesMixPreviewRenderer; - class TextureLayerCoveragePreviewRenderer; - class TextureLayerAspectPreviewRenderer; -} -} -using namespace paysages::preview; - -#endif // PREVIEW_GLOBAL_H