From 7bbaf026f3d5ded6b039545bc0d2ae5649e2e574 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Thu, 18 Jun 2015 13:33:37 -0700 Subject: [PATCH 1/4] use a monospace font on all platforms --- interface/resources/qml/Stats.qml | 4 ++-- interface/src/ui/Stats.cpp | 3 +++ interface/src/ui/Stats.h | 7 ++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml index c77ab8ec27..e52c07dda3 100644 --- a/interface/resources/qml/Stats.qml +++ b/interface/resources/qml/Stats.qml @@ -239,8 +239,8 @@ Hifi.Stats { x: 4; y: 4 id: perfText color: root.fontColor - font.family: "Lucida Console" - text: "-------------------------------------------------------- Function " + + font.family: root.monospaceFont + text: "-------------------------------------------------------- Function " + "------------------------------------------------------- --msecs- -calls--\n" + root.timingStats; } diff --git a/interface/src/ui/Stats.cpp b/interface/src/ui/Stats.cpp index f541357486..c1d77b5fc2 100644 --- a/interface/src/ui/Stats.cpp +++ b/interface/src/ui/Stats.cpp @@ -14,6 +14,7 @@ #include "Stats.h" #include +#include #include #include @@ -50,6 +51,8 @@ Stats* Stats::getInstance() { Stats::Stats(QQuickItem* parent) : QQuickItem(parent) { INSTANCE = this; + const QFont font = QFontDatabase::systemFont(QFontDatabase::FixedFont); + _monospaceFont = font.family(); } bool Stats::includeTimingRecord(const QString& name) { diff --git a/interface/src/ui/Stats.h b/interface/src/ui/Stats.h index efe340ed18..58d920d9a5 100644 --- a/interface/src/ui/Stats.h +++ b/interface/src/ui/Stats.h @@ -32,6 +32,8 @@ class Stats : public QQuickItem { HIFI_QML_DECL Q_PROPERTY(bool expanded READ isExpanded WRITE setExpanded NOTIFY expandedChanged) Q_PROPERTY(bool timingExpanded READ isTimingExpanded NOTIFY timingExpandedChanged) + Q_PROPERTY(QString monospaceFont READ monospaceFont) + STATS_PROPERTY(int, serverCount, 0) STATS_PROPERTY(int, framerate, 0) STATS_PROPERTY(int, avatarCount, 0) @@ -79,7 +81,9 @@ public: Stats(QQuickItem* parent = nullptr); bool includeTimingRecord(const QString& name); void setRenderDetails(const RenderDetails& details); - + const QString& monospaceFont() { + return _monospaceFont; + } void updateStats(); bool isExpanded() { return _expanded; } @@ -141,6 +145,7 @@ private: bool _resetRecentMaxPacketsSoon{ true }; bool _expanded{ false }; bool _timingExpanded{ false }; + QString _monospaceFont; }; #endif // hifi_Stats_h From 100f7acddc89e8e003c9dfc017b2a33692ca8bc6 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Thu, 18 Jun 2015 13:46:27 -0700 Subject: [PATCH 2/4] Working on tooltip placement --- interface/resources/qml/Tooltip.qml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/Tooltip.qml b/interface/resources/qml/Tooltip.qml index f1504317e2..0ad3efc5a5 100644 --- a/interface/resources/qml/Tooltip.qml +++ b/interface/resources/qml/Tooltip.qml @@ -6,8 +6,9 @@ import "styles" Hifi.Tooltip { id: root HifiConstants { id: hifi } - x: lastMousePosition.x - y: lastMousePosition.y + // FIXME adjust position based on the edges of the screen + x: lastMousePosition.x + 20 + y: lastMousePosition.y + 5 implicitWidth: border.implicitWidth implicitHeight: border.implicitHeight From 1bae1d6065ef96b67bfe07393c16257da2c476f7 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Thu, 18 Jun 2015 13:59:48 -0700 Subject: [PATCH 3/4] Changing font size for timings --- interface/resources/qml/Stats.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/resources/qml/Stats.qml b/interface/resources/qml/Stats.qml index e52c07dda3..eb1cb1d337 100644 --- a/interface/resources/qml/Stats.qml +++ b/interface/resources/qml/Stats.qml @@ -240,6 +240,7 @@ Hifi.Stats { id: perfText color: root.fontColor font.family: root.monospaceFont + font.pixelSize: 10 text: "-------------------------------------------------------- Function " + "------------------------------------------------------- --msecs- -calls--\n" + root.timingStats; From 96ac5070f67d1a3ac8a4f6d2eb9c8e6ad1a965c8 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Thu, 18 Jun 2015 14:00:17 -0700 Subject: [PATCH 4/4] Adding some more protection to the viewport --- interface/src/ui/ApplicationOverlay.cpp | 51 +++++++++---------------- 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/interface/src/ui/ApplicationOverlay.cpp b/interface/src/ui/ApplicationOverlay.cpp index 46264730c2..e278820195 100644 --- a/interface/src/ui/ApplicationOverlay.cpp +++ b/interface/src/ui/ApplicationOverlay.cpp @@ -92,11 +92,14 @@ ApplicationOverlay::~ApplicationOverlay() { // Renders the overlays either to a texture or to the screen void ApplicationOverlay::renderOverlay(RenderArgs* renderArgs) { PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings), "ApplicationOverlay::displayOverlay()"); + + // TODO move to Application::idle()? + Stats::getInstance()->updateStats(); buildFramebufferObject(); // First render the mirror to the mirror FBO - renderRearViewToFbo(renderArgs); + // renderRearViewToFbo(renderArgs); // Execute the batch into our framebuffer _overlayFramebuffer->bind(); @@ -104,12 +107,15 @@ void ApplicationOverlay::renderOverlay(RenderArgs* renderArgs) { fboViewport(_overlayFramebuffer); // Now render the overlay components together into a single texture - //renderOverlays(renderArgs); + renderOverlays(renderArgs); + fboViewport(_overlayFramebuffer); //renderAudioMeter(renderArgs); //renderCameraToggle(renderArgs); + fboViewport(_overlayFramebuffer); renderStatsAndLogs(renderArgs); - renderRearView(renderArgs); - + fboViewport(_overlayFramebuffer); + // renderRearView(renderArgs); + // fboViewport(_overlayFramebuffer); renderDomainConnectionStatusBorder(renderArgs); renderQmlUi(renderArgs); @@ -153,6 +159,7 @@ void ApplicationOverlay::renderOverlays(RenderArgs* renderArgs) { glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); + fboViewport(_overlayFramebuffer); } void ApplicationOverlay::renderCameraToggle(RenderArgs* renderArgs) { @@ -171,6 +178,7 @@ void ApplicationOverlay::renderCameraToggle(RenderArgs* renderArgs) { } DependencyManager::get()->render(MIRROR_VIEW_LEFT_PADDING + AUDIO_METER_GAP, audioMeterY, boxed); + fboViewport(_overlayFramebuffer); } void ApplicationOverlay::renderAudioMeter(RenderArgs* renderArgs) { @@ -287,6 +295,7 @@ void ApplicationOverlay::renderAudioMeter(RenderArgs* renderArgs) { audioLevel, AUDIO_METER_HEIGHT, quadColor, _audioBlueQuad); } + fboViewport(_overlayFramebuffer); } void ApplicationOverlay::renderRearViewToFbo(RenderArgs* renderArgs) { @@ -296,16 +305,9 @@ void ApplicationOverlay::renderRearViewToFbo(RenderArgs* renderArgs) { float fov = MIRROR_FIELD_OF_VIEW; MyAvatar* myAvatar = DependencyManager::get()->getMyAvatar(); // bool eyeRelativeCamera = false; - bool billboard = false; - if (billboard) { - fov = BILLBOARD_FIELD_OF_VIEW; // degees - _mirrorCamera.setPosition(myAvatar->getPosition() + - myAvatar->getOrientation() * glm::vec3(0.0f, 0.0f, -1.0f) * BILLBOARD_DISTANCE * myAvatar->getScale()); - - } else if (RearMirrorTools::rearViewZoomLevel.get() == BODY) { + if (RearMirrorTools::rearViewZoomLevel.get() == BODY) { _mirrorCamera.setPosition(myAvatar->getChestPosition() + myAvatar->getOrientation() * glm::vec3(0.0f, 0.0f, -1.0f) * MIRROR_REARVIEW_BODY_DISTANCE * myAvatar->getScale()); - } else { // HEAD zoom level // FIXME note that the positioing of the camera relative to the avatar can suffer limited // precision as the user's position moves further away from the origin. Thus at @@ -330,14 +332,7 @@ void ApplicationOverlay::renderRearViewToFbo(RenderArgs* renderArgs) { _mirrorCamera.setRotation(myAvatar->getWorldAlignedOrientation() * glm::quat(glm::vec3(0.0f, PI, 0.0f))); // set the bounds of rear mirror view - if (billboard) { - //QSize size = DependencyManager::get()->getFrameBufferSize(); - //glViewport(region.x(), size.height() - region.y() - region.height(), region.width(), region.height()); - //glScissor(region.x(), size.height() - region.y() - region.height(), region.width(), region.height()); - } else { - auto mirrorSize = _mirrorFramebuffer->size(); - fboViewport(_mirrorFramebuffer); - } + fboViewport(_mirrorFramebuffer); _mirrorFramebuffer->bind(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -351,23 +346,14 @@ void ApplicationOverlay::renderRearViewToFbo(RenderArgs* renderArgs) { glLoadMatrixf(glm::value_ptr(glm::mat4_cast(_mirrorCamera.getOrientation()) * glm::translate(glm::mat4(), _mirrorCamera.getPosition()))); { renderArgs->_context->syncCache(); - qApp->displaySide(renderArgs, _mirrorCamera, true, billboard); + qApp->displaySide(renderArgs, _mirrorCamera, true, false); } glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); _mirrorFramebuffer->release(); - - // if (!billboard) { - // _rearMirrorTools->render(renderArgs, false, _glWidget->mapFromGlobal(QCursor::pos())); - // } - - // // reset Viewport and projection matrix - // glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); - // glDisable(GL_SCISSOR_TEST); - // updateProjectionMatrix(_myCamera, updateViewFrustum); - //} + fboViewport(_overlayFramebuffer); } void ApplicationOverlay::renderRearView(RenderArgs* renderArgs) { @@ -399,7 +385,7 @@ void ApplicationOverlay::renderStatsAndLogs(RenderArgs* renderArgs) { // Display stats and log text onscreen // Determine whether to compute timing details - Stats::getInstance()->updateStats(); + /* // Show on-screen msec timer @@ -425,6 +411,7 @@ void ApplicationOverlay::renderStatsAndLogs(RenderArgs* renderArgs) { glEnable(GL_LIGHTING); glEnable(GL_BLEND); glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_CONSTANT_ALPHA, GL_ONE); + fboViewport(_overlayFramebuffer); */ }