summaryrefslogtreecommitdiff
path: root/src/imports/location/mapnode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/location/mapnode.cpp')
-rw-r--r--src/imports/location/mapnode.cpp247
1 files changed, 0 insertions, 247 deletions
diff --git a/src/imports/location/mapnode.cpp b/src/imports/location/mapnode.cpp
deleted file mode 100644
index 3c557d35..00000000
--- a/src/imports/location/mapnode.cpp
+++ /dev/null
@@ -1,247 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QtLocation module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "mapnode_p.h"
-#include "qgeomap_p.h"
-#include <Qt3D/qglpainter.h>
-#include <Qt3D/QGLFramebufferObjectSurface>
-#include <QtGui/QOpenGLFramebufferObject>
-#include <QtQuick/private/qsgtexture_p.h>
-
-#ifndef GL_MULTISAMPLE
-#define GL_MULTISAMPLE 0x809D
-#endif
-
-MapNode::MapNode(QGeoMap *map): QSGGeometryNode(),
- m_fbo(0),
- m_fboSurface(0),
- m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4),
- m_texture(0),
- m_map(map),
- m_initialized(false),
- m_dirtyFBO(false)
-{
- setMaterial(&m_material);
- setOpaqueMaterial(&m_opaqueMaterial);
- setGeometry(&m_geometry);
- // setFlag(UsePreprocess);
-}
-
-MapNode::~MapNode()
-{
- delete m_fboSurface;
- delete m_fbo;
-}
-
-void MapNode::saveRenderState()
-{
- //TODO: implement me
-}
-
-void MapNode::restoreRenderState()
-{
- //TODO: implement me
-}
-
-void
-MapNode::preprocess()
-{
- restoreRenderState();
- //TODO: implement me , texture update
- saveRenderState();
-}
-
-void MapNode::update()
-{
- restoreRenderState();
-
- if (!m_initialized)
- init();
-
- if (m_dirtyFBO)
- updateFBO();
-
- saveRenderState();
-}
-
-void MapNode::updateFBO()
-{
- QGLPainter painter;
-
- if (!painter.begin()) {
- qWarning() << "GL graphics system is not active, can not update FBO for map";
- return;
- }
-
- painter.pushSurface(m_fboSurface);
-
- glClearColor(0.9, 0.9, 0.9, 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
- painter.disableEffect();
-#ifdef GL_RESCALE_NORMAL
- // Scale normals by a scale factor derived from modelview matrix.
- // Note: normals need to be unit length.
- glEnable(GL_RESCALE_NORMAL);
-#endif
-
-#if !defined(QT_OPENGL_ES_2)
- glShadeModel(GL_SMOOTH);
- glEnable(GL_MULTISAMPLE);
-#endif
-
- // Set the default effect for the scene.
- painter.setStandardEffect(QGL::LitMaterial);
- painter.setFaceColor(QGL::AllFaces, Qt::white);
-
-#if defined(QT_OPENGL_ES)
- glClearDepthf(1);
-#else
- glClearDepth(1);
-#endif
-
-#if defined(GL_LINE_SMOOTH) && defined(GL_LINE_SMOOTH_HINT)
- glEnable(GL_LINE_SMOOTH);
- glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
-#endif
-
-#ifdef QSGSHADEREFFECTSOURCE_AVAILABLE
- // Update any map objects that may have dirty textures
- for (int i = 0; i < mapItems_.count(); ++i) {
- mapItems_.at(i)->updateItem();
- }
-#endif
-
- // No stereo rendering, set the eye as neutral
- painter.setEye(QGL::NoEye);
- // TODO this needs to be figured out (or confirmed as invalid thing).
- // Currently applied transforms for this Map3D object - how to get/apply current transforms?
- // QTransform transform = painter->combinedTransform();
- // Then we get the rectangle that is gotten by applying the QTransform on the rect
- // --> this is the viewport for Map3D
- // QRect viewport = transform.mapRect(boundingRect()).toRect();
-
- // boundingRect is in local coordinates. We need to map it to the scene coordinates
- // in order to render to correct area.
-
- if (m_map->glCamera()) {
- painter.setCamera(m_map->glCamera());
- } else {
- QGLCamera defCamera;
- painter.setCamera(&defCamera);
- }
- m_map->paintGL(&painter);
-
- restoreDefaults(&painter);
-
- // Draw the children items
- painter.popSurface();
- // QSG does not expect anyone to alter gl context state; restore defaults.
- // Default heaps of things, because we cannot be sure what the Qt3D internally
- // sets.
-
-#if defined(QT_OPENGL_ES)
- glClearDepthf(0);
-#else
- glClearDepth(0);
-#endif
-
- painter.end();
-
- QSGGeometry::updateTexturedRectGeometry(&m_geometry,
- QRectF(QPointF(0, m_fbo->size().height()), QPointF(m_fbo->size().width(), 0)),
- QRectF(0, 0, 1, 1));
- delete m_texture;
- m_texture = new QSGPlainTexture();
- m_texture->setOwnsTexture(false);
- m_texture->setTextureSize(m_fbo->size());
- m_texture->setTextureId(m_fbo->texture());
- m_opaqueMaterial.setTexture(m_texture);
- m_material.setTexture(m_texture);
-
- markDirty(DirtyMaterial);
-}
-
-void MapNode::setSize(const QSize &size)
-{
- if (size == m_size)
- return;
- m_size = size;
- m_dirtyFBO = true;
- m_initialized = false;
- markDirty(DirtyGeometry);
-}
-
-void MapNode::init()
-{
- delete m_fboSurface;
- delete m_fbo;
- m_fbo = new QOpenGLFramebufferObject(m_size.width(), m_size.height());
- m_fboSurface = new QGLFramebufferObjectSurface(m_fbo);
- m_initialized = true;
-}
-
-void MapNode::restoreDefaults(QGLPainter *painter)
-{
- // Disable the effect to return control to the GL paint engine.
- painter->disableEffect();
-
- // Try to restore the default options
- glDisable(GL_CULL_FACE);
- glDisable(GL_DEPTH_TEST);
- // Set the default depth buffer options.
- glDepthFunc(GL_LESS);
- glDepthMask(GL_TRUE);
-#if defined(QT_OPENGL_ES)
- glDepthRangef(0.0f, 1.0f);
-#else
- glDepthRange(0.0f, 1.0f);
-#endif
- // Set the default blend options.
- glDisable(GL_BLEND);
- if (painter->hasOpenGLFeature(QOpenGLFunctions::BlendColor))
- painter->glBlendColor(0, 0, 0, 0);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- if (painter->hasOpenGLFeature(QOpenGLFunctions::BlendEquation))
- painter->glBlendEquation(GL_FUNC_ADD);
- else if (painter->hasOpenGLFeature(QOpenGLFunctions::BlendEquationSeparate))
- painter->glBlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD);
-}
-