diff --git a/src/modules/graphics/opengl/Image.cpp b/src/modules/graphics/opengl/Image.cpp index e31fa7fbb..7cd954b25 100644 --- a/src/modules/graphics/opengl/Image.cpp +++ b/src/modules/graphics/opengl/Image.cpp @@ -1,14 +1,14 @@ /** * Copyright (c) 2006-2010 LOVE Development Team -* +* * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. -* +* * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: -* +* * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be @@ -106,7 +106,7 @@ namespace opengl void Image::draw(float x, float y, float angle, float sx, float sy, float ox, float oy) const { static Matrix t; - + t.setTransformation(x, y, angle, sx, sy, ox, oy); drawv(t, vertices); } @@ -165,7 +165,7 @@ namespace opengl glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &gmag); Image::Filter f; - + switch(gmin) { case GL_NEAREST: @@ -272,7 +272,7 @@ namespace opengl void Image::unload() { - unloadVolatile(); + return unloadVolatile(); } bool Image::loadVolatile() @@ -285,21 +285,26 @@ namespace opengl glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexImage2D(GL_TEXTURE_2D, - 0, - GL_RGBA8, - (GLsizei)width, - (GLsizei)height, - 0, - GL_RGBA, - GL_UNSIGNED_BYTE, + glTexImage2D(GL_TEXTURE_2D, + 0, + GL_RGBA8, + (GLsizei)width, + (GLsizei)height, + 0, + GL_RGBA, + GL_UNSIGNED_BYTE, data->getData()); + setFilter(settings.filter); + setWrap(settings.wrap); + return true; } void Image::unloadVolatile() { + settings.filter = getFilter(); + settings.wrap = getWrap(); // Delete the hardware texture. if(texture != 0) { diff --git a/src/modules/graphics/opengl/Image.h b/src/modules/graphics/opengl/Image.h index 89c8b9338..9d5482e62 100644 --- a/src/modules/graphics/opengl/Image.h +++ b/src/modules/graphics/opengl/Image.h @@ -1,14 +1,14 @@ /** * Copyright (c) 2006-2010 LOVE Development Team -* +* * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. -* +* * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: -* +* * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be @@ -39,11 +39,11 @@ namespace graphics { namespace opengl { - + /** * A drawable image based on OpenGL-textures. This class takes ImageData - * objects and create textures on the GPU for fast drawing. - * + * objects and create textures on the GPU for fast drawing. + * * @author Anders Ruud **/ class Image : public love::graphics::Image @@ -53,7 +53,7 @@ namespace opengl // The ImageData from which the texture is created. love::image::ImageData * data; - // Width and height of the hardware texture. + // Width and height of the hardware texture. float width, height; // OpenGL texture identifier. @@ -62,16 +62,23 @@ namespace opengl // The source vertices of the image. vertex vertices[4]; + // The settings we need to save when reloading. + struct + { + Image::Filter filter; + Image::Wrap wrap; + } settings; + public: /** * Creates a new Image. Not that anything is ready to use * before load is called. - * + * * @param file The file from which to load the image. **/ Image(love::image::ImageData * data); - + /** * Destructor. Deletes the hardware texture and other resources. **/ @@ -81,15 +88,15 @@ namespace opengl float getHeight() const; const vertex * getVertices() const; - + love::image::ImageData * getData() const; /** * Generate vertices according to a subimage. - * - * Note: out-of-range values will be clamped. + * + * Note: out-of-range values will be clamped. * Note: the vertex colors will not be changed. - * + * * @param x The top-left corner of the subimage along the x-axis. * @param y The top-left corner of the subimage along the y-axis. * @param w The width of the subimage. @@ -131,14 +138,14 @@ namespace opengl // Implements Volatile. bool loadVolatile(); - void unloadVolatile(); + void unloadVolatile(); private: void drawv(const Matrix & t, const vertex * v) const; }; // Image - + } // opengl } // graphics } // love diff --git a/src/modules/sound/lullaby/VorbisDecoder.cpp b/src/modules/sound/lullaby/VorbisDecoder.cpp index 8844ab58e..a5e0991f7 100644 --- a/src/modules/sound/lullaby/VorbisDecoder.cpp +++ b/src/modules/sound/lullaby/VorbisDecoder.cpp @@ -1,14 +1,14 @@ /** * Copyright (c) 2006-2010 LOVE Development Team -* +* * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. -* +* * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: -* +* * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be @@ -39,9 +39,9 @@ namespace lullaby return 1; } - size_t vorbisRead(void * ptr /* ptr to the data that the vorbis files need*/, - size_t byteSize /* how big a byte is*/, - size_t sizeToRead /* How much we can read*/, + size_t vorbisRead(void * ptr /* ptr to the data that the vorbis files need*/, + size_t byteSize /* how big a byte is*/, + size_t sizeToRead /* How much we can read*/, void * datasource /* this is a pointer to the data we passed into ov_open_callbacks (our SOggFile struct*/) { size_t spaceToEOF; // How much more we can read till we hit the EOF marker @@ -56,8 +56,8 @@ namespace lullaby if ((sizeToRead*byteSize) < spaceToEOF) actualSizeToRead = (sizeToRead*byteSize); else - actualSizeToRead = spaceToEOF; - + actualSizeToRead = spaceToEOF; + // A simple copy of the data from memory to the datastruct that the vorbis libs will use if (actualSizeToRead) { @@ -100,7 +100,7 @@ namespace lullaby if (offset < spaceToEOF) actualOffset = (offset); else - actualOffset = spaceToEOF; + actualOffset = spaceToEOF; // Seek from our currrent location vorbisData->dataRead += (int)actualOffset; break; @@ -133,7 +133,7 @@ namespace lullaby vorbisCallbacks.seek_func = vorbisSeek; vorbisCallbacks.read_func = vorbisRead; vorbisCallbacks.tell_func = vorbisTell; - + // Check endianness #ifdef LOVE_BIG_ENDIAN endian = 1; @@ -149,7 +149,7 @@ namespace lullaby // Open Vorbis handle if(ov_open_callbacks(&oggFile, &handle, NULL, 0, vorbisCallbacks) < 0) throw love::Exception("Could not read Ogg bitstream"); - + // Get info and comments vorbisInfo = ov_info(&handle, -1); vorbisComment = ov_comment(&handle, -1);