From 8e3e7c1537fcde32970069e3b7898783e8e19f33 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 11 Feb 2014 17:18:24 -0800 Subject: [PATCH] first experimental cut at overlay image --- interface/src/Application.cpp | 6 +++ interface/src/Application.h | 4 ++ interface/src/ui/ImageOverlay.cpp | 69 +++++++++++++++++++++++++++++ interface/src/ui/ImageOverlay.h | 73 +++++++++++++++++++++++++++++++ 4 files changed, 152 insertions(+) create mode 100644 interface/src/ui/ImageOverlay.cpp create mode 100644 interface/src/ui/ImageOverlay.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 004b71074b..aca67ffe5a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1870,6 +1870,9 @@ void Application::init() { _audio.init(_glWidget); + _testOverlayA.init(_glWidget, QString("./resources/images/hifi-interface-tools.svg"), QRect(100,100,62,40), QRect(0,0,62,40)); + _testOverlayB.init(_glWidget, QString("./resources/images/hifi-interface-tools.svg"), QRect(170,100,62,40), QRect(0,80,62,40)); + _rearMirrorTools = new RearMirrorTools(_glWidget, _mirrorViewRect, _settings); connect(_rearMirrorTools, SIGNAL(closeView()), SLOT(closeMirrorView())); connect(_rearMirrorTools, SIGNAL(restoreView()), SLOT(restoreMirrorView())); @@ -2997,6 +3000,9 @@ void Application::displayOverlay() { _pieMenu.render(); } + _testOverlayA.render(); // + _testOverlayB.render(); // + glPopMatrix(); } diff --git a/interface/src/Application.h b/interface/src/Application.h index ff6e08758b..4cecc1f7d6 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -71,6 +71,7 @@ #include "FileLogger.h" #include "ParticleTreeRenderer.h" #include "ControllerScriptingInterface.h" +#include "ui/ImageOverlay.h" class QAction; @@ -490,6 +491,9 @@ private: void takeSnapshot(); TouchEvent _lastTouchEvent; + + ImageOverlay _testOverlayA; + ImageOverlay _testOverlayB; }; #endif /* defined(__interface__Application__) */ diff --git a/interface/src/ui/ImageOverlay.cpp b/interface/src/ui/ImageOverlay.cpp new file mode 100644 index 0000000000..33c139089d --- /dev/null +++ b/interface/src/ui/ImageOverlay.cpp @@ -0,0 +1,69 @@ +#include "ImageOverlay.h" + +#include +#include +#include +#include + +ImageOverlay::ImageOverlay() : + _parent(NULL), + _textureID(0) +{ +} + +void ImageOverlay::init(QGLWidget* parent, const QString& filename, const QRect& drawAt, const QRect& fromImage) { + _parent = parent; + qDebug() << "ImageOverlay::init()... filename=" << filename; + _bounds = drawAt; + _fromImage = fromImage; + _textureImage = QImage(filename); + _textureID = _parent->bindTexture(_textureImage); +} + + +ImageOverlay::~ImageOverlay() { + if (_parent && _textureID) { + // do we need to call this? + //_parent->deleteTexture(_textureID); + } +} + + +void ImageOverlay::render() { +qDebug() << "ImageOverlay::render _textureID=" << _textureID << "_bounds=" << _bounds; + + + bool renderImage = false; + if (renderImage) { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, _textureID); + } + glColor4f(1.0f, 0.0f, 0.0f, 0.7f); // ??? + + float imageWidth = _textureImage.width(); + float imageHeight = _textureImage.height(); + float x = _fromImage.x() / imageWidth; + float y = _fromImage.y() / imageHeight; + float w = _fromImage.width() / imageWidth; // ?? is this what we want? not sure + float h = _fromImage.height() / imageHeight; + + qDebug() << "ImageOverlay::render x=" << x << "y=" << y << "w="<