From 299ee6432090a98ee05c837b89161e77b341e827 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sun, 7 Apr 2013 23:11:11 -0300 Subject: [PATCH] Added Image:isCompressed() --HG-- branch : image-CompressedData --- src/modules/graphics/opengl/Image.cpp | 19 ++++++++++++------- src/modules/graphics/opengl/Image.h | 8 +++++++- src/modules/graphics/opengl/wrap_Image.cpp | 8 ++++++++ src/modules/graphics/opengl/wrap_Image.h | 1 + 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/modules/graphics/opengl/Image.cpp b/src/modules/graphics/opengl/Image.cpp index 7f0080daf..53bba53a7 100644 --- a/src/modules/graphics/opengl/Image.cpp +++ b/src/modules/graphics/opengl/Image.cpp @@ -43,7 +43,7 @@ Image::Image(love::image::ImageData *data) , texture(0) , mipmapSharpness(defaultMipmapSharpness) , mipmapsCreated(false) - , isCompressed(false) + , compressed(false) { data->retain(); this->data = data; @@ -57,7 +57,7 @@ Image::Image(love::image::CompressedData *cdata) , texture(0) , mipmapSharpness(defaultMipmapSharpness) , mipmapsCreated(false) - , isCompressed(true) + , compressed(true) { cdata->retain(); this->cdata = cdata; @@ -146,7 +146,7 @@ void Image::drawq(love::graphics::Quad *quad, float x, float y, float angle, flo void Image::uploadCompressedMipmaps() { - if (!isCompressed || !cdata || !hasCompressedTextureSupport(cdata->getType())) + if (!isCompressed() || !cdata || !hasCompressedTextureSupport(cdata->getType())) return; bind(); @@ -236,7 +236,7 @@ void Image::checkMipmapsCreated() if (mipmapsCreated || filter.mipmap == FILTER_NONE) return; - if (isCompressed && cdata && hasCompressedTextureSupport(cdata->getType())) + if (isCompressed() && cdata && hasCompressedTextureSupport(cdata->getType())) uploadCompressedMipmaps(); else if (data) createMipmaps(); @@ -340,7 +340,7 @@ void Image::unload() bool Image::loadVolatile() { - if (isCompressed && cdata && !hasCompressedTextureSupport(cdata->getType())) + if (isCompressed() && cdata && !hasCompressedTextureSupport(cdata->getType())) { const char *str; if (image::CompressedData::getConstant(cdata->getType(), str)) @@ -381,7 +381,7 @@ bool Image::loadVolatilePOT() while (glGetError() != GL_NO_ERROR); // clear errors - if (isCompressed && cdata) + if (isCompressed() && cdata) { if (s < 1.0f || t < 1.0f) { @@ -442,7 +442,7 @@ bool Image::loadVolatileNPOT() while (glGetError() != GL_NO_ERROR); // clear errors - if (isCompressed && cdata) + if (isCompressed() && cdata) { GLenum format = getCompressedFormat(cdata->getType()); glCompressedTexImage2DARB(GL_TEXTURE_2D, @@ -527,6 +527,11 @@ Image::FilterMode Image::getDefaultMipmapFilter() return defaultMipmapFilter; } +bool Image::isCompressed() const +{ + return compressed; +} + GLenum Image::getCompressedFormat(image::CompressedData::TextureType type) const { switch (type) diff --git a/src/modules/graphics/opengl/Image.h b/src/modules/graphics/opengl/Image.h index 1cf3c933f..b10f530e0 100644 --- a/src/modules/graphics/opengl/Image.h +++ b/src/modules/graphics/opengl/Image.h @@ -115,6 +115,11 @@ public: void setMipmapSharpness(float sharpness); float getMipmapSharpness() const; + /** + * Whether this Image is using a compressed texture (via CompressedData). + **/ + bool isCompressed() const; + void bind() const; bool load(); @@ -170,7 +175,8 @@ private: // True if mipmaps have been created for this Image. bool mipmapsCreated; - bool isCompressed; + // Whether this Image is using a compressed texture. + bool compressed; // The image's filter mode Image::Filter filter; diff --git a/src/modules/graphics/opengl/wrap_Image.cpp b/src/modules/graphics/opengl/wrap_Image.cpp index 70d947393..dc541db74 100644 --- a/src/modules/graphics/opengl/wrap_Image.cpp +++ b/src/modules/graphics/opengl/wrap_Image.cpp @@ -175,6 +175,13 @@ int w_Image_getWrap(lua_State *L) return 2; } +int w_Image_isCompressed(lua_State *L) +{ + Image *i = luax_checkimage(L, 1); + luax_pushboolean(L, i->isCompressed()); + return 1; +} + static const luaL_Reg functions[] = { { "getWidth", w_Image_getWidth }, @@ -186,6 +193,7 @@ static const luaL_Reg functions[] = { "getWrap", w_Image_getWrap }, { "setMipmapFilter", w_Image_setMipmapFilter }, { "getMipmapFilter", w_Image_getMipmapFilter }, + { "isCompressed", w_Image_isCompressed }, { 0, 0 } }; diff --git a/src/modules/graphics/opengl/wrap_Image.h b/src/modules/graphics/opengl/wrap_Image.h index 8a60914de..d81a623c2 100644 --- a/src/modules/graphics/opengl/wrap_Image.h +++ b/src/modules/graphics/opengl/wrap_Image.h @@ -42,6 +42,7 @@ int w_Image_setMipmapFilter(lua_State *L); int w_Image_getMipmapFilter(lua_State *L); int w_Image_setWrap(lua_State *L); int w_Image_getWrap(lua_State *L); +int w_Image_isCompressed(lua_State *L); extern "C" int luaopen_image(lua_State *L); } // opengl