DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit fb9ff8db59eee96220df5ebbb6559bf02064ee1a
parent 6051bb2c1dc4368389f18e13b1a4275435460280
Author: falkTX <falktx@gmail.com>
Date:   Wed, 14 May 2014 00:01:12 +0100

Add Rectangle::drawOutline()

Diffstat:
Mdgl/Geometry.hpp | 7+++++++
Mdgl/src/Geometry.cpp | 67++++++++++++++++++++++++++++---------------------------------------
2 files changed, 35 insertions(+), 39 deletions(-)

diff --git a/dgl/Geometry.hpp b/dgl/Geometry.hpp @@ -458,6 +458,11 @@ public: */ void draw(); + /** + Draw lines (outline of this rectangle) using the current OpenGL state. + */ + void drawOutline(); + Rectangle<T>& operator=(const Rectangle<T>& rect) noexcept; Rectangle<T>& operator*=(const T& m) noexcept; Rectangle<T>& operator/=(const T& d) noexcept; @@ -467,6 +472,8 @@ public: private: Point<T> fPos; Size<T> fSize; + + void _draw(const bool isOutline); }; // ----------------------------------------------------------------------- diff --git a/dgl/src/Geometry.cpp b/dgl/src/Geometry.cpp @@ -621,46 +621,13 @@ bool Rectangle<T>::containsY(const T& y) const noexcept template<typename T> void Rectangle<T>::draw() { -#if 0 - typedef void (*glVextex2Func)(T x, T y); - - static bool needsSetup = true; - static glVextex2Func glVextex2fn = (glVextex2Func)glVertex2i; - - if (needsSetup) - { -#if 0 - // TODO - - if (0) - glVextex2fn = (glVextex2Func)glVertex2d; - else if (0) - glVextex2fn = (glVextex2Func)glVertex2f; - else if (0) - glVextex2fn = (glVextex2Func)glVertex2s; -#endif - - needsSetup = false; - } -#endif - - glBegin(GL_QUADS); - - { - glTexCoord2f(0.0f, 0.0f); - glVertex2i(fPos.fX, fPos.fY); - - glTexCoord2f(1.0f, 0.0f); - glVertex2i(fPos.fX+fSize.fWidth, fPos.fY); - - glTexCoord2f(1.0f, 1.0f); - glVertex2i(fPos.fX+fSize.fWidth, fPos.fY+fSize.fHeight); - - glTexCoord2f(0.0f, 1.0f); - glVertex2i(fPos.fX, fPos.fY+fSize.fHeight); - } + _draw(false); +} - glEnd(); +template<typename T> +void Rectangle<T>::drawOutline() +{ + _draw(true); } template<typename T> @@ -699,6 +666,28 @@ bool Rectangle<T>::operator!=(const Rectangle<T>& rect) const noexcept return !operator==(rect); } +template<typename T> +void Rectangle<T>::_draw(const bool isOutline) +{ + glBegin(isOutline ? GL_LINE_LOOP : GL_QUADS); + + { + glTexCoord2f(0.0f, 0.0f); + glVertex2i(fPos.fX, fPos.fY); + + glTexCoord2f(1.0f, 0.0f); + glVertex2i(fPos.fX+fSize.fWidth, fPos.fY); + + glTexCoord2f(1.0f, 1.0f); + glVertex2i(fPos.fX+fSize.fWidth, fPos.fY+fSize.fHeight); + + glTexCoord2f(0.0f, 1.0f); + glVertex2i(fPos.fX, fPos.fY+fSize.fHeight); + } + + glEnd(); +} + // ----------------------------------------------------------------------- // Possible template data types