From ce85e67a42c6f520844ce4cf73266ba50e9377df Mon Sep 17 00:00:00 2001 From: stojce Date: Wed, 9 Apr 2014 18:54:59 +0200 Subject: [PATCH] Modify icons in Interface "mirror" --- interface/resources/images/audio-box.svg | 12 +++ interface/resources/images/body.png | Bin 4801 -> 0 bytes interface/resources/images/close.png | Bin 3817 -> 0 bytes interface/resources/images/close.svg | 26 +++-- interface/resources/images/head.png | Bin 4453 -> 0 bytes interface/resources/images/mic-mute.svg | 115 +++++++++++++++++++++ interface/resources/images/mic.svg | 121 +++++++++++++++++++---- interface/resources/images/minus.svg | 11 +++ interface/resources/images/mute.svg | 20 ---- interface/resources/images/plus.svg | 12 +++ interface/src/Application.cpp | 25 +++-- interface/src/Audio.cpp | 69 ++++++++----- interface/src/Audio.h | 3 +- interface/src/ui/RearMirrorTools.cpp | 31 +++--- 14 files changed, 348 insertions(+), 97 deletions(-) create mode 100644 interface/resources/images/audio-box.svg delete mode 100644 interface/resources/images/body.png delete mode 100644 interface/resources/images/close.png delete mode 100644 interface/resources/images/head.png create mode 100644 interface/resources/images/mic-mute.svg create mode 100644 interface/resources/images/minus.svg delete mode 100644 interface/resources/images/mute.svg create mode 100644 interface/resources/images/plus.svg diff --git a/interface/resources/images/audio-box.svg b/interface/resources/images/audio-box.svg new file mode 100644 index 0000000000..0c0db4f51f --- /dev/null +++ b/interface/resources/images/audio-box.svg @@ -0,0 +1,12 @@ + + + Slice 1 + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + \ No newline at end of file diff --git a/interface/resources/images/body.png b/interface/resources/images/body.png deleted file mode 100644 index dda65bad07774cab5372349673b487775b22baa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4801 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 D(=uVu diff --git a/interface/resources/images/close.png b/interface/resources/images/close.png deleted file mode 100644 index 8090e3d3d090a60ec2e8b0591b6e088baef2db03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3817 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 f;4| - - - - - - - - - + + + Slice 1 + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + \ No newline at end of file diff --git a/interface/resources/images/head.png b/interface/resources/images/head.png deleted file mode 100644 index d21b453beef1d2cb597665bfb4abc647be1de990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4453 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 + + +image/svg+xml + + + + + + + + Mic + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/interface/resources/images/mic.svg b/interface/resources/images/mic.svg index a6dee50740..3329f19647 100644 --- a/interface/resources/images/mic.svg +++ b/interface/resources/images/mic.svg @@ -1,20 +1,105 @@ - - Mic - Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - - - - - - - - - - - + + +image/svg+xml + + + + + + + + Mic + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + + + + + + + \ No newline at end of file diff --git a/interface/resources/images/minus.svg b/interface/resources/images/minus.svg new file mode 100644 index 0000000000..463b24aa4c --- /dev/null +++ b/interface/resources/images/minus.svg @@ -0,0 +1,11 @@ + + + Slice 1 + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + \ No newline at end of file diff --git a/interface/resources/images/mute.svg b/interface/resources/images/mute.svg deleted file mode 100644 index 1f1b238463..0000000000 --- a/interface/resources/images/mute.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - mute - Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/interface/resources/images/plus.svg b/interface/resources/images/plus.svg new file mode 100644 index 0000000000..6efaa31abc --- /dev/null +++ b/interface/resources/images/plus.svg @@ -0,0 +1,12 @@ + + + Slice 1 + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + + + \ No newline at end of file diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d54cceb245..deaab1ac10 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2503,20 +2503,19 @@ void Application::displayOverlay() { // Audio VU Meter and Mute Icon const int MUTE_ICON_SIZE = 24; const int AUDIO_METER_INSET = 2; - const int AUDIO_METER_WIDTH = MIRROR_VIEW_WIDTH - MUTE_ICON_SIZE - AUDIO_METER_INSET; + const int MUTE_ICON_PADDING = 10; + const int AUDIO_METER_WIDTH = MIRROR_VIEW_WIDTH - MUTE_ICON_SIZE - AUDIO_METER_INSET - MUTE_ICON_PADDING; const int AUDIO_METER_SCALE_WIDTH = AUDIO_METER_WIDTH - 2 * AUDIO_METER_INSET; const int AUDIO_METER_HEIGHT = 8; - const int AUDIO_METER_Y_GAP = 8; - const int AUDIO_METER_X = MIRROR_VIEW_LEFT_PADDING + MUTE_ICON_SIZE + AUDIO_METER_INSET; + const int AUDIO_METER_GAP = 5; + const int AUDIO_METER_X = MIRROR_VIEW_LEFT_PADDING + MUTE_ICON_SIZE + AUDIO_METER_INSET + AUDIO_METER_GAP; int audioMeterY; if (Menu::getInstance()->isOptionChecked(MenuOption::Mirror)) { - audioMeterY = MIRROR_VIEW_HEIGHT + AUDIO_METER_Y_GAP; + audioMeterY = MIRROR_VIEW_HEIGHT + AUDIO_METER_GAP + MUTE_ICON_PADDING; } else { - audioMeterY = AUDIO_METER_Y_GAP; + audioMeterY = AUDIO_METER_GAP + MUTE_ICON_PADDING; } - _audio.renderMuteIcon(MIRROR_VIEW_LEFT_PADDING, audioMeterY); - const float AUDIO_METER_BLUE[] = {0.0, 0.0, 1.0}; const float AUDIO_METER_GREEN[] = {0.0, 1.0, 0.0}; @@ -2545,18 +2544,27 @@ void Application::displayOverlay() { bool isClipping = ((_audio.getTimeSinceLastClip() > 0.f) && (_audio.getTimeSinceLastClip() < CLIPPING_INDICATOR_TIME)); + _audio.renderToolBox(MIRROR_VIEW_LEFT_PADDING + AUDIO_METER_GAP, + audioMeterY, + Menu::getInstance()->isOptionChecked(MenuOption::Mirror)); + glBegin(GL_QUADS); if (isClipping) { glColor3f(1, 0, 0); } else { - glColor3f(0, 0, 0); + glColor3f(0.475f, 0.475f, 0.475f); } + + audioMeterY += AUDIO_METER_HEIGHT; + + glColor3f(0, 0, 0); // Draw audio meter background Quad glVertex2i(AUDIO_METER_X, audioMeterY); glVertex2i(AUDIO_METER_X + AUDIO_METER_WIDTH, audioMeterY); glVertex2i(AUDIO_METER_X + AUDIO_METER_WIDTH, audioMeterY + AUDIO_METER_HEIGHT); glVertex2i(AUDIO_METER_X, audioMeterY + AUDIO_METER_HEIGHT); + if (audioLevel > AUDIO_RED_START) { if (!isClipping) { glColor3fv(AUDIO_METER_RED); @@ -2596,6 +2604,7 @@ void Application::displayOverlay() { glVertex2i(AUDIO_METER_X + AUDIO_METER_INSET, audioMeterY + AUDIO_METER_HEIGHT - AUDIO_METER_INSET); glEnd(); + if (Menu::getInstance()->isOptionChecked(MenuOption::HeadMouse)) { _myAvatar->renderHeadMouse(); } diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index 63c683dbb0..4843b2f462 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -86,7 +86,8 @@ Audio::Audio(Oscilloscope* scope, int16_t initialJitterBufferSamples, QObject* p void Audio::init(QGLWidget *parent) { _micTextureId = parent->bindTexture(QImage(Application::resourcesPath() + "images/mic.svg")); - _muteTextureId = parent->bindTexture(QImage(Application::resourcesPath() + "images/mute.svg")); + _muteTextureId = parent->bindTexture(QImage(Application::resourcesPath() + "images/mic-mute.svg")); + _boxTextureId = parent->bindTexture(QImage(Application::resourcesPath() + "images/audio-box.svg")); } void Audio::reset() { @@ -817,13 +818,52 @@ void Audio::handleAudioByteArray(const QByteArray& audioByteArray) { // or send to the mixer and use delayed loopback } -void Audio::renderMuteIcon(int x, int y) { +void Audio::renderToolBox(int x, int y, bool boxed) { - _iconBounds = QRect(x, y, MUTE_ICON_SIZE, MUTE_ICON_SIZE); glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, _micTextureId); - glColor3f(.93f, .93f, .93f); + if (boxed) { + + bool isClipping = ((getTimeSinceLastClip() > 0.f) && (getTimeSinceLastClip() < 1.f)); + const int BOX_LEFT_PADDING = 5; + const int BOX_TOP_PADDING = 10; + const int BOX_WIDTH = 266; + const int BOX_HEIGHT = 44; + + QRect boxBounds = QRect(x - BOX_LEFT_PADDING, y - BOX_TOP_PADDING, BOX_WIDTH, BOX_HEIGHT); + + glBindTexture(GL_TEXTURE_2D, _boxTextureId); + + if (isClipping) { + glColor3f(1.f,0.f,0.f); + } else { + glColor3f(.41f,.41f,.41f); + } + glBegin(GL_QUADS); + + glTexCoord2f(1, 1); + glVertex2f(boxBounds.left(), boxBounds.top()); + + glTexCoord2f(0, 1); + glVertex2f(boxBounds.right(), boxBounds.top()); + + glTexCoord2f(0, 0); + glVertex2f(boxBounds.right(), boxBounds.bottom()); + + glTexCoord2f(1, 0); + glVertex2f(boxBounds.left(), boxBounds.bottom()); + + glEnd(); + } + + _iconBounds = QRect(x, y, MUTE_ICON_SIZE, MUTE_ICON_SIZE); + if (!_muted) { + glBindTexture(GL_TEXTURE_2D, _micTextureId); + } else { + glBindTexture(GL_TEXTURE_2D, _muteTextureId); + } + + glColor3f(1,1,1); glBegin(GL_QUADS); glTexCoord2f(1, 1); @@ -840,25 +880,6 @@ void Audio::renderMuteIcon(int x, int y) { glEnd(); - if (_muted) { - glBindTexture(GL_TEXTURE_2D, _muteTextureId); - glBegin(GL_QUADS); - - glTexCoord2f(1, 1); - glVertex2f(_iconBounds.left(), _iconBounds.top()); - - glTexCoord2f(0, 1); - glVertex2f(_iconBounds.right(), _iconBounds.top()); - - glTexCoord2f(0, 0); - glVertex2f(_iconBounds.right(), _iconBounds.bottom()); - - glTexCoord2f(1, 0); - glVertex2f(_iconBounds.left(), _iconBounds.bottom()); - - glEnd(); - } - glDisable(GL_TEXTURE_2D); } diff --git a/interface/src/Audio.h b/interface/src/Audio.h index 88488922f3..c6a3619865 100644 --- a/interface/src/Audio.h +++ b/interface/src/Audio.h @@ -69,7 +69,7 @@ public: void init(QGLWidget *parent = 0); bool mousePressEvent(int x, int y); - void renderMuteIcon(int x, int y); + void renderToolBox(int x, int y, bool boxed); int getNetworkSampleRate() { return SAMPLE_RATE; } int getNetworkBufferLengthSamplesPerChannel() { return NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL; } @@ -161,6 +161,7 @@ private: bool _localEcho; GLuint _micTextureId; GLuint _muteTextureId; + GLuint _boxTextureId; QRect _iconBounds; // Audio callback in class context. diff --git a/interface/src/ui/RearMirrorTools.cpp b/interface/src/ui/RearMirrorTools.cpp index 314fd7157b..07503c8cb2 100644 --- a/interface/src/ui/RearMirrorTools.cpp +++ b/interface/src/ui/RearMirrorTools.cpp @@ -18,9 +18,8 @@ const char SETTINGS_GROUP_NAME[] = "Rear View Tools"; const char ZOOM_LEVEL_SETTINGS[] = "ZoomLevel"; -const int ICON_SIZE = 20; +const int ICON_SIZE = 24; const int ICON_PADDING = 5; -const int MID_ICON_PADDING = 70; RearMirrorTools::RearMirrorTools(QGLWidget* parent, QRect& bounds, QSettings* settings) : _parent(parent), @@ -29,16 +28,19 @@ RearMirrorTools::RearMirrorTools(QGLWidget* parent, QRect& bounds, QSettings* se _fullScreen(false) { _zoomLevel = HEAD; - _closeTextureId = _parent->bindTexture(QImage(Application::resourcesPath() + "images/close.png")); - _resetTextureId = _parent->bindTexture(QImage(Application::resourcesPath() + "images/reset.png")); - _zoomHeadTextureId = _parent->bindTexture(QImage(Application::resourcesPath() + "images/head.png")); - _zoomBodyTextureId = _parent->bindTexture(QImage(Application::resourcesPath() + "images/body.png")); + _closeTextureId = _parent->bindTexture(QImage(Application::resourcesPath() + "images/close.svg")); + + // Disabled for now https://worklist.net/19548 + // _resetTextureId = _parent->bindTexture(QImage(Application::resourcesPath() + "images/reset.png")); + + _zoomHeadTextureId = _parent->bindTexture(QImage(Application::resourcesPath() + "images/plus.svg")); + _zoomBodyTextureId = _parent->bindTexture(QImage(Application::resourcesPath() + "images/minus.svg")); _shrinkIconRect = QRect(ICON_PADDING, ICON_PADDING, ICON_SIZE, ICON_SIZE); _closeIconRect = QRect(_bounds.left() + ICON_PADDING, _bounds.top() + ICON_PADDING, ICON_SIZE, ICON_SIZE); _resetIconRect = QRect(_bounds.width() - ICON_SIZE - ICON_PADDING, _bounds.top() + ICON_PADDING, ICON_SIZE, ICON_SIZE); - _bodyZoomIconRect = QRect(_bounds.width() - MID_ICON_PADDING - ICON_SIZE, _bounds.bottom() - ICON_PADDING - ICON_SIZE, ICON_SIZE, ICON_SIZE); - _headZoomIconRect = QRect(_bounds.left() + MID_ICON_PADDING, _bounds.bottom() - ICON_PADDING - ICON_SIZE, ICON_SIZE, ICON_SIZE); + _bodyZoomIconRect = QRect(_bounds.width() - ICON_SIZE - ICON_PADDING, _bounds.bottom() - ICON_PADDING - ICON_SIZE, ICON_SIZE, ICON_SIZE); + _headZoomIconRect = QRect(_bounds.left() + ICON_PADDING, _bounds.bottom() - ICON_PADDING - ICON_SIZE, ICON_SIZE, ICON_SIZE); settings->beginGroup(SETTINGS_GROUP_NAME); _zoomLevel = loadSetting(settings, ZOOM_LEVEL_SETTINGS, 0) == HEAD ? HEAD : BODY; @@ -55,7 +57,10 @@ void RearMirrorTools::render(bool fullScreen) { _windowed = _bounds.contains(mousePosition.x(), mousePosition.y()); if (_windowed) { displayIcon(_bounds, _closeIconRect, _closeTextureId); - displayIcon(_bounds, _resetIconRect, _resetTextureId); + + // Disabled for now https://worklist.net/19548 + // displayIcon(_bounds, _resetIconRect, _resetTextureId); + displayIcon(_bounds, _headZoomIconRect, _zoomHeadTextureId, _zoomLevel == HEAD); displayIcon(_bounds, _bodyZoomIconRect, _zoomBodyTextureId, _zoomLevel == BODY); } @@ -69,11 +74,13 @@ bool RearMirrorTools::mousePressEvent(int x, int y) { emit closeView(); return true; } - + + /* Disabled for now https://worklist.net/19548 if (_resetIconRect.contains(x, y)) { emit resetView(); return true; } + */ if (_headZoomIconRect.contains(x, y)) { _zoomLevel = HEAD; @@ -84,7 +91,7 @@ bool RearMirrorTools::mousePressEvent(int x, int y) { _zoomLevel = BODY; return true; } - + if (_bounds.contains(x, y)) { _windowed = false; emit restoreView(); @@ -120,7 +127,7 @@ void RearMirrorTools::displayIcon(QRect bounds, QRect iconBounds, GLuint texture glEnable(GL_TEXTURE_2D); if (selected) { - glColor3f(1, 1, 0); + glColor3f(.5f, .5f, .5f); } else { glColor3f(1, 1, 1); }