diff --git a/src/Sampler.cpp b/src/Sampler.cpp index 43160854e..0d1c5bb4e 100644 --- a/src/Sampler.cpp +++ b/src/Sampler.cpp @@ -24,6 +24,8 @@ #include "Sampler.h" +#include + #include "Context.h" #include "Implementation/State.h" #include "Implementation/TextureState.h" @@ -58,4 +60,45 @@ Float Sampler::maxSupportedAnisotropy() { } #endif +Debug operator<<(Debug debug, const Sampler::Filter value) { + switch(value) { + #define _c(value) case Sampler::Filter::value: return debug << "Sampler::Filter::" #value; + _c(Nearest) + _c(Linear) + #undef _c + } + + return debug << "Sampler::Filter::(invalid)"; +} + +Debug operator<<(Debug debug, const Sampler::Mipmap value) { + switch(value) { + #define _c(value) case Sampler::Mipmap::value: return debug << "Sampler::Mipmap::" #value; + _c(Base) + _c(Nearest) + _c(Linear) + #undef _c + } + + return debug << "Sampler::Mipmap::(invalid)"; +} + +Debug operator<<(Debug debug, const Sampler::Wrapping value) { + switch(value) { + #define _c(value) case Sampler::Wrapping::value: return debug << "Sampler::Wrapping::" #value; + _c(Repeat) + _c(MirroredRepeat) + _c(ClampToEdge) + #ifndef MAGNUM_TARGET_GLES3 + _c(ClampToBorder) + #endif + #ifndef MAGNUM_TARGET_GLES + _c(MirrorClampToEdge) + #endif + #undef _c + } + + return debug << "Sampler::Wrapping::(invalid)"; +} + } diff --git a/src/Sampler.h b/src/Sampler.h index 0c771b4f1..54780efd4 100644 --- a/src/Sampler.h +++ b/src/Sampler.h @@ -28,8 +28,9 @@ * @brief Class Magnum::Sampler */ -#include "Types.h" +#include "Magnum.h" #include "OpenGL.h" +#include "magnumVisibility.h" namespace Magnum { @@ -147,6 +148,15 @@ class Sampler { #endif }; +/** @debugoperator{Magnum::Sampler} */ +Debug MAGNUM_EXPORT operator<<(Debug debug, Sampler::Filter value); + +/** @debugoperator{Magnum::Sampler} */ +Debug MAGNUM_EXPORT operator<<(Debug debug, Sampler::Mipmap value); + +/** @debugoperator{Magnum::Sampler} */ +Debug MAGNUM_EXPORT operator<<(Debug debug, Sampler::Wrapping value); + } #endif diff --git a/src/Test/CMakeLists.txt b/src/Test/CMakeLists.txt index ca308059b..89f08d701 100644 --- a/src/Test/CMakeLists.txt +++ b/src/Test/CMakeLists.txt @@ -32,6 +32,7 @@ corrade_add_test(ImageTest ImageTest.cpp LIBRARIES Magnum) corrade_add_test(MeshTest MeshTest.cpp LIBRARIES Magnum) corrade_add_test(RendererTest RendererTest.cpp LIBRARIES Magnum) corrade_add_test(ResourceManagerTest ResourceManagerTest.cpp LIBRARIES MagnumTestLib) +corrade_add_test(SamplerTest SamplerTest.cpp LIBRARIES Magnum) corrade_add_test(SwizzleTest SwizzleTest.cpp LIBRARIES MagnumMathTestLib) if(BUILD_GL_TESTS) diff --git a/src/Test/SamplerTest.cpp b/src/Test/SamplerTest.cpp new file mode 100644 index 000000000..961b16f1c --- /dev/null +++ b/src/Test/SamplerTest.cpp @@ -0,0 +1,70 @@ +/* + This file is part of Magnum. + + Copyright © 2010, 2011, 2012, 2013 Vladimír Vondruš + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +#include +#include + +#include "Sampler.h" + +namespace Magnum { namespace Test { + +class SamplerTest: public TestSuite::Tester { + public: + explicit SamplerTest(); + + void debugFilter(); + void debugMipmap(); + void debugWrapping(); +}; + +SamplerTest::SamplerTest() { + addTests({&SamplerTest::debugFilter, + &SamplerTest::debugMipmap, + &SamplerTest::debugWrapping}); +} + +void SamplerTest::debugFilter() { + std::ostringstream out; + + Debug(&out) << Sampler::Filter::Linear; + CORRADE_COMPARE(out.str(), "Sampler::Filter::Linear\n"); +} + +void SamplerTest::debugMipmap() { + std::ostringstream out; + + Debug(&out) << Sampler::Mipmap::Base; + CORRADE_COMPARE(out.str(), "Sampler::Mipmap::Base\n"); +} + +void SamplerTest::debugWrapping() { + std::ostringstream out; + + Debug(&out) << Sampler::Wrapping::ClampToEdge; + CORRADE_COMPARE(out.str(), "Sampler::Wrapping::ClampToEdge\n"); +} + +}} + +CORRADE_TEST_MAIN(Magnum::Test::SamplerTest)