DPF

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

commit 716be94bfc5e5937bb3fe7586a92cb1d8522572c
parent db1ec7ea5282bfaa0c12634d512acd9c417725c9
Author: falkTX <falktx@gmail.com>
Date:   Tue,  6 May 2014 20:15:05 +0200

Minor API changes that make sense; Cleanup

Diffstat:
Mdgl/Image.hpp | 6++----
Mdgl/src/Geometry.cpp | 50+++++++++++++++++++++++++++++++++-----------------
Mdgl/src/Image.cpp | 46+++++++++++++++++-----------------------------
Mdgl/src/ImageButton.cpp | 2+-
Mdgl/src/ImageSlider.cpp | 2+-
Mexamples/images.cpp | 22++++++++++------------
Mexamples/nekobi-ui_src/NekoWidget.hpp | 2+-
7 files changed, 65 insertions(+), 65 deletions(-)

diff --git a/dgl/Image.hpp b/dgl/Image.hpp @@ -46,8 +46,8 @@ public: GLenum getType() const noexcept; void draw(); - void draw(int x, int y); - void draw(const Point<int>& pos); + void drawAt(int x, int y); + void drawAt(const Point<int>& pos); Image& operator=(const Image& image) noexcept; bool operator==(const Image& image) const noexcept; @@ -59,8 +59,6 @@ private: GLenum fFormat; GLenum fType; GLuint fTextureId; - - DISTRHO_PREVENT_HEAP_ALLOCATION }; // ----------------------------------------------------------------------- diff --git a/dgl/src/Geometry.cpp b/dgl/src/Geometry.cpp @@ -443,22 +443,41 @@ bool Rectangle<T>::containsY(const T& y) const noexcept template<typename T> void Rectangle<T>::draw() { - // TODO - use glVexter2 d/f/i/s according to T type + 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; + } glBegin(GL_QUADS); { glTexCoord2f(0.0f, 0.0f); - glVertex2i(fPos.fX, fPos.fY); + glVextex2fn(fPos.fX, fPos.fY); glTexCoord2f(1.0f, 0.0f); - glVertex2i(fPos.fX+fSize.fWidth, fPos.fY); + glVextex2fn(fPos.fX+fSize.fWidth, fPos.fY); glTexCoord2f(1.0f, 1.0f); - glVertex2i(fPos.fX+fSize.fWidth, fPos.fY+fSize.fHeight); + glVextex2fn(fPos.fX+fSize.fWidth, fPos.fY+fSize.fHeight); glTexCoord2f(0.0f, 1.0f); - glVertex2i(fPos.fX, fPos.fY+fSize.fHeight); + glVextex2fn(fPos.fX, fPos.fY+fSize.fHeight); } glEnd(); @@ -503,23 +522,20 @@ bool Rectangle<T>::operator!=(const Rectangle<T>& rect) const noexcept // ----------------------------------------------------------------------- // Possible template data types -template class Point<short>; -template class Point<int>; -template class Point<long>; -template class Point<float>; template class Point<double>; +template class Point<float>; +template class Point<int>; +template class Point<short>; -template class Size<short>; -template class Size<int>; -template class Size<long>; -template class Size<float>; template class Size<double>; +template class Size<float>; +template class Size<int>; +template class Size<short>; -template class Rectangle<short>; -template class Rectangle<int>; -template class Rectangle<long>; -template class Rectangle<float>; template class Rectangle<double>; +template class Rectangle<float>; +template class Rectangle<int>; +template class Rectangle<short>; // ----------------------------------------------------------------------- diff --git a/dgl/src/Image.cpp b/dgl/src/Image.cpp @@ -80,7 +80,7 @@ void Image::loadFromMemory(const char* rawData, const Size<int>& size, GLenum fo bool Image::isValid() const noexcept { - return (fRawData != nullptr && getWidth() > 0 && getHeight() > 0); + return (fRawData != nullptr && fSize.getWidth() > 0 && fSize.getHeight() > 0); } int Image::getWidth() const noexcept @@ -115,63 +115,51 @@ GLenum Image::getType() const noexcept void Image::draw() { - draw(0, 0); + drawAt(0, 0); } -void Image::draw(int x, int y) +void Image::drawAt(int x, int y) +{ + drawAt(Point<int>(x, y)); +} + +void Image::drawAt(const Point<int>& pos) { if (! isValid()) return; + if (fTextureId == 0) glGenTextures(1, &fTextureId); + if (fTextureId == 0) { // invalidate image fSize = Size<int>(0, 0); + // TODO print GL error return; } glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, fTextureId); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_PACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWidth(), getHeight(), 0, fFormat, fType, fRawData); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, fSize.getWidth(), fSize.getHeight(), 0, fFormat, fType, fRawData); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); - float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f }; + static const float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f }; glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, trans); - const int width = getWidth(); - const int height = getHeight(); - - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); - glVertex2i(x, y); - - glTexCoord2f(1.0f, 0.0f); - glVertex2i(x+width, y); - - glTexCoord2f(1.0f, 1.0f); - glVertex2i(x+width, y+height); - - glTexCoord2f(0.0f, 1.0f); - glVertex2i(x, y+height); - glEnd(); + Rectangle<int>(pos, fSize).draw(); glBindTexture(GL_TEXTURE_2D, 0); glDisable(GL_TEXTURE_2D); } -void Image::draw(const Point<int>& pos) -{ - draw(pos.getX(), pos.getY()); -} - // ----------------------------------------------------------------------- Image& Image::operator=(const Image& image) noexcept @@ -185,12 +173,12 @@ Image& Image::operator=(const Image& image) noexcept bool Image::operator==(const Image& image) const noexcept { - return (fRawData == image.fRawData); + return (fRawData == image.fRawData && fSize == image.fSize); } bool Image::operator!=(const Image& image) const noexcept { - return (fRawData != image.fRawData); + return !operator==(image); } // ----------------------------------------------------------------------- diff --git a/dgl/src/ImageButton.cpp b/dgl/src/ImageButton.cpp @@ -93,7 +93,7 @@ void ImageButton::setCallback(Callback* callback) void ImageButton::onDisplay() { - fCurImage->draw(getPos()); + fCurImage->drawAt(getPos()); } bool ImageButton::onMouse(int button, bool press, int x, int y) diff --git a/dgl/src/ImageSlider.cpp b/dgl/src/ImageSlider.cpp @@ -194,7 +194,7 @@ void ImageSlider::onDisplay() y = fStartPos.getY() + static_cast<int>(normValue*static_cast<float>(fEndPos.getY()-fStartPos.getY())); } - fImage.draw(x, y); + fImage.drawAt(x, y); } bool ImageSlider::onMouse(int button, bool press, int x, int y) diff --git a/examples/images.cpp b/examples/images.cpp @@ -59,9 +59,7 @@ public: fImg3rev(true), fImg1(CatPics::cat1Data, CatPics::cat1Width, CatPics::cat1Height, GL_BGR), fImg2(CatPics::cat2Data, CatPics::cat2Width, CatPics::cat2Height, GL_BGR), - fImg3(CatPics::cat3Data, CatPics::cat3Width, CatPics::cat3Height, GL_BGR) - { - } + fImg3(CatPics::cat3Data, CatPics::cat3Width, CatPics::cat3Height, GL_BGR) {} private: void idleCallback() override @@ -131,39 +129,39 @@ private: switch (fImgTop3rd) { case 1: - fImg1.draw(fImg1x, kImg1y); + fImg1.drawAt(fImg1x, kImg1y); break; case 2: - fImg2.draw(fImg2x, kImg2y); + fImg2.drawAt(fImg2x, kImg2y); break; case 3: - fImg3.draw(kImg3x, fImg3y); + fImg3.drawAt(kImg3x, fImg3y); break; }; switch (fImgTop2nd) { case 1: - fImg1.draw(fImg1x, kImg1y); + fImg1.drawAt(fImg1x, kImg1y); break; case 2: - fImg2.draw(fImg2x, kImg2y); + fImg2.drawAt(fImg2x, kImg2y); break; case 3: - fImg3.draw(kImg3x, fImg3y); + fImg3.drawAt(kImg3x, fImg3y); break; }; switch (fImgTop1st) { case 1: - fImg1.draw(fImg1x, kImg1y); + fImg1.drawAt(fImg1x, kImg1y); break; case 2: - fImg2.draw(fImg2x, kImg2y); + fImg2.drawAt(fImg2x, kImg2y); break; case 3: - fImg3.draw(kImg3x, fImg3y); + fImg3.drawAt(kImg3x, fImg3y); break; }; } diff --git a/examples/nekobi-ui_src/NekoWidget.hpp b/examples/nekobi-ui_src/NekoWidget.hpp @@ -75,7 +75,7 @@ public: y += 12; } - fCurImage->draw(x, y); + fCurImage->drawAt(x, y); } // returns true if needs repaint