From 2636e834c25a42bb2dd01c3c61d075b666dee3bf Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Sun, 25 Dec 2011 16:18:49 +0100 Subject: base: moved Image and Texture to more appropriate locations --- src/base/image.cpp | 86 ----------------------------- src/base/image.hpp | 68 ----------------------- src/base/texture.cpp | 114 --------------------------------------- src/base/texture.hpp | 91 ------------------------------- src/base/texture_colorized.cpp | 32 ----------- src/base/texture_colorized.hpp | 52 ------------------ src/base/texture_transparent.cpp | 32 ----------- src/base/texture_transparent.hpp | 53 ------------------ src/menu/texture.cpp | 114 +++++++++++++++++++++++++++++++++++++++ src/menu/texture.hpp | 91 +++++++++++++++++++++++++++++++ src/menu/texture_colorized.cpp | 32 +++++++++++ src/menu/texture_colorized.hpp | 52 ++++++++++++++++++ src/menu/texture_transparent.cpp | 32 +++++++++++ src/menu/texture_transparent.hpp | 53 ++++++++++++++++++ src/utils/image.cpp | 86 +++++++++++++++++++++++++++++ src/utils/image.hpp | 68 +++++++++++++++++++++++ test/base/image.cpp | 109 ------------------------------------- test/utils/image.cpp | 109 +++++++++++++++++++++++++++++++++++++ 18 files changed, 637 insertions(+), 637 deletions(-) delete mode 100644 src/base/image.cpp delete mode 100644 src/base/image.hpp delete mode 100644 src/base/texture.cpp delete mode 100644 src/base/texture.hpp delete mode 100644 src/base/texture_colorized.cpp delete mode 100644 src/base/texture_colorized.hpp delete mode 100644 src/base/texture_transparent.cpp delete mode 100644 src/base/texture_transparent.hpp create mode 100644 src/menu/texture.cpp create mode 100644 src/menu/texture.hpp create mode 100644 src/menu/texture_colorized.cpp create mode 100644 src/menu/texture_colorized.hpp create mode 100644 src/menu/texture_transparent.cpp create mode 100644 src/menu/texture_transparent.hpp create mode 100644 src/utils/image.cpp create mode 100644 src/utils/image.hpp delete mode 100644 test/base/image.cpp create mode 100644 test/utils/image.cpp diff --git a/src/base/image.cpp b/src/base/image.cpp deleted file mode 100644 index 1eb09ac1..00000000 --- a/src/base/image.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* - * UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#include "image.hpp" -#include -#include "utils/binary_file.hpp" - -namespace usdx -{ - log4cpp::Category& Image::log = - log4cpp::Category::getInstance("usdx.base.Image"); - - ImageLoadException::ImageLoadException(std::string error) : - error(error) - { - } - - ImageLoadException::~ImageLoadException() throw() - { - } - - const char* ImageLoadException::what() const throw() - { - return error.c_str(); - } - - Image::Image(boost::filesystem::wpath filename) : - filename(filename), surface(NULL) - { - } - - Image::~Image() - { - if (surface != NULL) { - SDL_FreeSurface(surface); - surface = NULL; - } - } - - void Image::load(void) - { - BinaryFile file(filename); - - SDL_RWops* source = SDL_RWFromConstMem(file.get_content(), - file.get_filesize()); - surface = IMG_Load_RW(source, 1); - - if (surface == NULL) { - log << log4cpp::Priority::ERROR << - "Error loading image: " << filename; - throw ImageLoadException(IMG_GetError()); - } - } - - SDL_Surface* Image::get_surface(void) - { - if (surface == NULL) { - load(); - } - - return surface; - } -}; diff --git a/src/base/image.hpp b/src/base/image.hpp deleted file mode 100644 index 4c9d911e..00000000 --- a/src/base/image.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#ifndef IMAGE_HPP -#define IMAGE_HPP - -#include -#include -#include -#include -#include - -namespace usdx -{ - class ImageLoadException : public std::exception - { - private: - std::string error; - - public: - ImageLoadException(std::string error); - ~ImageLoadException() throw(); - const char* what() const throw(); - }; - - - class Image - { - private: - static log4cpp::Category& log; - - boost::filesystem::wpath filename; - SDL_Surface* surface; - - void load(void); - - public: - Image(boost::filesystem::wpath filename); - virtual ~Image(); - - SDL_Surface* get_surface(void); - }; -}; - -#endif diff --git a/src/base/texture.cpp b/src/base/texture.cpp deleted file mode 100644 index cf24b9ce..00000000 --- a/src/base/texture.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#include "texture.hpp" - -namespace usdx -{ - log4cpp::Category& Texture::log = - log4cpp::Category::getInstance("usdx.base.texture"); - - Texture::Texture(boost::filesystem::wpath filename) : - filename(filename), texture(0), size(0, 0), rotation(0) - { - Image image(filename); - - size.set_width(image.get_surface()->w); - size.set_height(image.get_surface()->h); - - // // Check that the image dimensions are a power of 2 - // if ((image.get_surface()->w & (image.get_surface()->w - 1)) != 0 ) { - // LOG4CXX_ERROR(log, "" << filename << " has a width of " << image.get_surface()->w << " that is not a power of 2"); - // throw TextureSizeException(size); - // } - - // if ((image.get_surface()->h & (image.get_surface()->h - 1)) != 0 ) { - // LOG4CXX_ERROR(log, "" << filename << " has a height of " << image.get_surface()->h << " that is not a power of 2"); - // throw TextureSizeException(size); - // } - - - switch (image.get_surface()->format->BytesPerPixel) { - case 4: - if (image.get_surface()->format->Rmask == 0x000000ff) { - texture_format = GL_RGBA; - } - else { - texture_format = GL_BGRA; - } - - break; - - case 3: - if (image.get_surface()->format->Rmask == 0x000000ff) { - texture_format = GL_RGB; - } - else { - texture_format = GL_BGR; - } - - break; - - default: - log << log4cpp::Priority::ERROR << "'" << filename << - "' is not in true color! Could not handle that!"; - throw TextureColorDepthException(image.get_surface()->format->BytesPerPixel); - } - - // Have OpenGL generate a texture object handle for us - glGenTextures(1, &texture); - - // Bind the texture object - glBindTexture(GL_TEXTURE_2D, texture); - - // Set the texture's stretching properties - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - // Edit the texture object's image data using the information SDL_Surface gives us - glTexImage2D(GL_TEXTURE_2D, - 0, - image.get_surface()->format->BytesPerPixel, - image.get_surface()->w, - image.get_surface()->h, - 0, - texture_format, - GL_UNSIGNED_BYTE, - image.get_surface()->pixels); - } - - Texture::~Texture() - { - if (glIsTexture(texture)) { - glDeleteTextures(1, &texture); - } - } - - GLuint Texture::get_texture(void) const - { - return texture; - } -}; diff --git a/src/base/texture.hpp b/src/base/texture.hpp deleted file mode 100644 index 29e3afeb..00000000 --- a/src/base/texture.hpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - * UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#ifndef TEXTURE_HPP -#define TEXTURE_HPP - -#include -#include -#include - -#include "utils/point_3d.hpp" -#include "utils/dimension.hpp" -#include "utils/rectangle.hpp" -#include "image.hpp" -#include "menu/drawable.hpp" - -namespace usdx -{ - class TextureLoadException - { - public: - TextureLoadException() {}; - virtual ~TextureLoadException() {}; - }; - - class TextureSizeException : public TextureLoadException - { - private: - Dimension size; - - public: - TextureSizeException(Dimension size) : size(size) { }; - virtual ~TextureSizeException() { }; - }; - - class TextureColorDepthException : public TextureLoadException - { - private: - unsigned int number_of_colors; - - public: - TextureColorDepthException(unsigned int number_of_colors) : number_of_colors(number_of_colors) {}; - virtual ~TextureColorDepthException() {}; - }; - - class Texture - { - private: - static log4cpp::Category& log; - - boost::filesystem::wpath filename; - - GLuint texture; - GLenum texture_format; - - Dimension size; - - float rotation; ///< radiant (0 - 2*pi) - - public: - Texture(boost::filesystem::wpath filename); - virtual ~Texture(); - - GLuint get_texture(void) const; - }; -}; - -#endif diff --git a/src/base/texture_colorized.cpp b/src/base/texture_colorized.cpp deleted file mode 100644 index 89e3ae54..00000000 --- a/src/base/texture_colorized.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#include "texture_colorized.hpp" - -namespace usdx -{ - -}; diff --git a/src/base/texture_colorized.hpp b/src/base/texture_colorized.hpp deleted file mode 100644 index 56b06112..00000000 --- a/src/base/texture_colorized.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#ifndef TEXTURE_COLORIZED_HPP -#define TEXTURE_COLORIZED_HPP - -#include "texture_transparent.hpp" -#include "utils/rgb_color.hpp" - -namespace usdx -{ - /** - * This class represents a texture like TextureTransparent but the hue - * value from the HSV color model is replaced with a different value. - * @see: TextureTransparent - */ - class TextureColorized : public TextureTransparent - { - private: - RgbColor color; - float intensity; - - public: - TextureColorized(); - virtual ~TextureColorized(); - }; -}; - -#endif diff --git a/src/base/texture_transparent.cpp b/src/base/texture_transparent.cpp deleted file mode 100644 index 77aa8a14..00000000 --- a/src/base/texture_transparent.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#include "texture_transparent.hpp" - -namespace usdx -{ - -}; diff --git a/src/base/texture_transparent.hpp b/src/base/texture_transparent.hpp deleted file mode 100644 index dae69d44..00000000 --- a/src/base/texture_transparent.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#ifndef TEXTURE_TRANSPARENT_HPP -#define TEXTURE_TRANSPARENT_HPP - -#include "texture.hpp" - -namespace usdx -{ - /** - * This class represents a texture like TexturePlain but with the - * ability to set a alpha value to paint this texture transparent. - * @see: Texture - */ - class TextureTransparent : public Texture - { - private: - float alpha; - - public: - TextureTransparent(); - virtual ~TextureTransparent(); - - float get_alpha(void) const; - void set_alpha(float alpha); - }; -}; - -#endif diff --git a/src/menu/texture.cpp b/src/menu/texture.cpp new file mode 100644 index 00000000..cf24b9ce --- /dev/null +++ b/src/menu/texture.cpp @@ -0,0 +1,114 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "texture.hpp" + +namespace usdx +{ + log4cpp::Category& Texture::log = + log4cpp::Category::getInstance("usdx.base.texture"); + + Texture::Texture(boost::filesystem::wpath filename) : + filename(filename), texture(0), size(0, 0), rotation(0) + { + Image image(filename); + + size.set_width(image.get_surface()->w); + size.set_height(image.get_surface()->h); + + // // Check that the image dimensions are a power of 2 + // if ((image.get_surface()->w & (image.get_surface()->w - 1)) != 0 ) { + // LOG4CXX_ERROR(log, "" << filename << " has a width of " << image.get_surface()->w << " that is not a power of 2"); + // throw TextureSizeException(size); + // } + + // if ((image.get_surface()->h & (image.get_surface()->h - 1)) != 0 ) { + // LOG4CXX_ERROR(log, "" << filename << " has a height of " << image.get_surface()->h << " that is not a power of 2"); + // throw TextureSizeException(size); + // } + + + switch (image.get_surface()->format->BytesPerPixel) { + case 4: + if (image.get_surface()->format->Rmask == 0x000000ff) { + texture_format = GL_RGBA; + } + else { + texture_format = GL_BGRA; + } + + break; + + case 3: + if (image.get_surface()->format->Rmask == 0x000000ff) { + texture_format = GL_RGB; + } + else { + texture_format = GL_BGR; + } + + break; + + default: + log << log4cpp::Priority::ERROR << "'" << filename << + "' is not in true color! Could not handle that!"; + throw TextureColorDepthException(image.get_surface()->format->BytesPerPixel); + } + + // Have OpenGL generate a texture object handle for us + glGenTextures(1, &texture); + + // Bind the texture object + glBindTexture(GL_TEXTURE_2D, texture); + + // Set the texture's stretching properties + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + // Edit the texture object's image data using the information SDL_Surface gives us + glTexImage2D(GL_TEXTURE_2D, + 0, + image.get_surface()->format->BytesPerPixel, + image.get_surface()->w, + image.get_surface()->h, + 0, + texture_format, + GL_UNSIGNED_BYTE, + image.get_surface()->pixels); + } + + Texture::~Texture() + { + if (glIsTexture(texture)) { + glDeleteTextures(1, &texture); + } + } + + GLuint Texture::get_texture(void) const + { + return texture; + } +}; diff --git a/src/menu/texture.hpp b/src/menu/texture.hpp new file mode 100644 index 00000000..6e1ea640 --- /dev/null +++ b/src/menu/texture.hpp @@ -0,0 +1,91 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef TEXTURE_HPP +#define TEXTURE_HPP + +#include +#include +#include + +#include "utils/point_3d.hpp" +#include "utils/dimension.hpp" +#include "utils/rectangle.hpp" +#include "utils/image.hpp" +#include "drawable.hpp" + +namespace usdx +{ + class TextureLoadException + { + public: + TextureLoadException() {}; + virtual ~TextureLoadException() {}; + }; + + class TextureSizeException : public TextureLoadException + { + private: + Dimension size; + + public: + TextureSizeException(Dimension size) : size(size) { }; + virtual ~TextureSizeException() { }; + }; + + class TextureColorDepthException : public TextureLoadException + { + private: + unsigned int number_of_colors; + + public: + TextureColorDepthException(unsigned int number_of_colors) : number_of_colors(number_of_colors) {}; + virtual ~TextureColorDepthException() {}; + }; + + class Texture + { + private: + static log4cpp::Category& log; + + boost::filesystem::wpath filename; + + GLuint texture; + GLenum texture_format; + + Dimension size; + + float rotation; ///< radiant (0 - 2*pi) + + public: + Texture(boost::filesystem::wpath filename); + virtual ~Texture(); + + GLuint get_texture(void) const; + }; +}; + +#endif diff --git a/src/menu/texture_colorized.cpp b/src/menu/texture_colorized.cpp new file mode 100644 index 00000000..89e3ae54 --- /dev/null +++ b/src/menu/texture_colorized.cpp @@ -0,0 +1,32 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "texture_colorized.hpp" + +namespace usdx +{ + +}; diff --git a/src/menu/texture_colorized.hpp b/src/menu/texture_colorized.hpp new file mode 100644 index 00000000..56b06112 --- /dev/null +++ b/src/menu/texture_colorized.hpp @@ -0,0 +1,52 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef TEXTURE_COLORIZED_HPP +#define TEXTURE_COLORIZED_HPP + +#include "texture_transparent.hpp" +#include "utils/rgb_color.hpp" + +namespace usdx +{ + /** + * This class represents a texture like TextureTransparent but the hue + * value from the HSV color model is replaced with a different value. + * @see: TextureTransparent + */ + class TextureColorized : public TextureTransparent + { + private: + RgbColor color; + float intensity; + + public: + TextureColorized(); + virtual ~TextureColorized(); + }; +}; + +#endif diff --git a/src/menu/texture_transparent.cpp b/src/menu/texture_transparent.cpp new file mode 100644 index 00000000..77aa8a14 --- /dev/null +++ b/src/menu/texture_transparent.cpp @@ -0,0 +1,32 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "texture_transparent.hpp" + +namespace usdx +{ + +}; diff --git a/src/menu/texture_transparent.hpp b/src/menu/texture_transparent.hpp new file mode 100644 index 00000000..dae69d44 --- /dev/null +++ b/src/menu/texture_transparent.hpp @@ -0,0 +1,53 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef TEXTURE_TRANSPARENT_HPP +#define TEXTURE_TRANSPARENT_HPP + +#include "texture.hpp" + +namespace usdx +{ + /** + * This class represents a texture like TexturePlain but with the + * ability to set a alpha value to paint this texture transparent. + * @see: Texture + */ + class TextureTransparent : public Texture + { + private: + float alpha; + + public: + TextureTransparent(); + virtual ~TextureTransparent(); + + float get_alpha(void) const; + void set_alpha(float alpha); + }; +}; + +#endif diff --git a/src/utils/image.cpp b/src/utils/image.cpp new file mode 100644 index 00000000..1eb09ac1 --- /dev/null +++ b/src/utils/image.cpp @@ -0,0 +1,86 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "image.hpp" +#include +#include "utils/binary_file.hpp" + +namespace usdx +{ + log4cpp::Category& Image::log = + log4cpp::Category::getInstance("usdx.base.Image"); + + ImageLoadException::ImageLoadException(std::string error) : + error(error) + { + } + + ImageLoadException::~ImageLoadException() throw() + { + } + + const char* ImageLoadException::what() const throw() + { + return error.c_str(); + } + + Image::Image(boost::filesystem::wpath filename) : + filename(filename), surface(NULL) + { + } + + Image::~Image() + { + if (surface != NULL) { + SDL_FreeSurface(surface); + surface = NULL; + } + } + + void Image::load(void) + { + BinaryFile file(filename); + + SDL_RWops* source = SDL_RWFromConstMem(file.get_content(), + file.get_filesize()); + surface = IMG_Load_RW(source, 1); + + if (surface == NULL) { + log << log4cpp::Priority::ERROR << + "Error loading image: " << filename; + throw ImageLoadException(IMG_GetError()); + } + } + + SDL_Surface* Image::get_surface(void) + { + if (surface == NULL) { + load(); + } + + return surface; + } +}; diff --git a/src/utils/image.hpp b/src/utils/image.hpp new file mode 100644 index 00000000..4c9d911e --- /dev/null +++ b/src/utils/image.hpp @@ -0,0 +1,68 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef IMAGE_HPP +#define IMAGE_HPP + +#include +#include +#include +#include +#include + +namespace usdx +{ + class ImageLoadException : public std::exception + { + private: + std::string error; + + public: + ImageLoadException(std::string error); + ~ImageLoadException() throw(); + const char* what() const throw(); + }; + + + class Image + { + private: + static log4cpp::Category& log; + + boost::filesystem::wpath filename; + SDL_Surface* surface; + + void load(void); + + public: + Image(boost::filesystem::wpath filename); + virtual ~Image(); + + SDL_Surface* get_surface(void); + }; +}; + +#endif diff --git a/test/base/image.cpp b/test/base/image.cpp deleted file mode 100644 index d91d553c..00000000 --- a/test/base/image.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - * UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#include "image.hpp" - -#include -#include -#include - -#include - -namespace usdx -{ - class ImageTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(ImageTest); - CPPUNIT_TEST(testBmp); - CPPUNIT_TEST(testJpg); - CPPUNIT_TEST(testGif); - CPPUNIT_TEST(testPng); - CPPUNIT_TEST_EXCEPTION(testNotAnImage, usdx::ImageLoadException); - CPPUNIT_TEST_SUITE_END(); - private: - static log4cpp::Category& log; - public: - void setUp() - { - } - - void tearDown() - { - } - - void testBmp() - { - Image img("./testdata/test.bmp"); - const SDL_Surface *surface = img.get_surface(); - log << log4cpp::Priority::INFO << "test.bmp: " << - "w = " << surface->w << "; h = " << surface->h; - CPPUNIT_ASSERT(40 == surface->w); - CPPUNIT_ASSERT(30 == surface->h); - } - - void testJpg() - { - Image img("./testdata/test.jpg"); - const SDL_Surface *surface = img.get_surface(); - log << log4cpp::Priority::INFO << "test.jpg: " << - "w = " << surface->w << "; h = " << surface->h; - CPPUNIT_ASSERT(40 == surface->w); - CPPUNIT_ASSERT(30 == surface->h); - } - - void testPng() - { - Image img("./testdata/test.png"); - const SDL_Surface *surface = img.get_surface(); - log << log4cpp::Priority::INFO << "test.png: " << - "w = " << surface->w << "; h = " << surface->h; - CPPUNIT_ASSERT(40 == surface->w); - CPPUNIT_ASSERT(30 == surface->h); - } - - void testGif() - { - Image img("./testdata/test.gif"); - const SDL_Surface *surface = img.get_surface(); - log << log4cpp::Priority::INFO << "test.gif: " << - "w = " << surface->w << "; h = " << surface->h; - CPPUNIT_ASSERT(40 == surface->w); - CPPUNIT_ASSERT(30 == surface->h); - } - - void testNotAnImage() - { - Image img("./testdata/testsong_correct.txt"); - const SDL_Surface *surface = img.get_surface(); - log << log4cpp::Priority::INFO << "testsong_correct.txt: " << - "w = " << surface->w << "; h = " << surface->h; - } - }; - - log4cpp::Category& ImageTest::log = - log4cpp::Category::getInstance("test.usdx.base.image"); - - CPPUNIT_TEST_SUITE_REGISTRATION(ImageTest); -}; diff --git a/test/utils/image.cpp b/test/utils/image.cpp new file mode 100644 index 00000000..d91d553c --- /dev/null +++ b/test/utils/image.cpp @@ -0,0 +1,109 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "image.hpp" + +#include +#include +#include + +#include + +namespace usdx +{ + class ImageTest : public CppUnit::TestFixture { + CPPUNIT_TEST_SUITE(ImageTest); + CPPUNIT_TEST(testBmp); + CPPUNIT_TEST(testJpg); + CPPUNIT_TEST(testGif); + CPPUNIT_TEST(testPng); + CPPUNIT_TEST_EXCEPTION(testNotAnImage, usdx::ImageLoadException); + CPPUNIT_TEST_SUITE_END(); + private: + static log4cpp::Category& log; + public: + void setUp() + { + } + + void tearDown() + { + } + + void testBmp() + { + Image img("./testdata/test.bmp"); + const SDL_Surface *surface = img.get_surface(); + log << log4cpp::Priority::INFO << "test.bmp: " << + "w = " << surface->w << "; h = " << surface->h; + CPPUNIT_ASSERT(40 == surface->w); + CPPUNIT_ASSERT(30 == surface->h); + } + + void testJpg() + { + Image img("./testdata/test.jpg"); + const SDL_Surface *surface = img.get_surface(); + log << log4cpp::Priority::INFO << "test.jpg: " << + "w = " << surface->w << "; h = " << surface->h; + CPPUNIT_ASSERT(40 == surface->w); + CPPUNIT_ASSERT(30 == surface->h); + } + + void testPng() + { + Image img("./testdata/test.png"); + const SDL_Surface *surface = img.get_surface(); + log << log4cpp::Priority::INFO << "test.png: " << + "w = " << surface->w << "; h = " << surface->h; + CPPUNIT_ASSERT(40 == surface->w); + CPPUNIT_ASSERT(30 == surface->h); + } + + void testGif() + { + Image img("./testdata/test.gif"); + const SDL_Surface *surface = img.get_surface(); + log << log4cpp::Priority::INFO << "test.gif: " << + "w = " << surface->w << "; h = " << surface->h; + CPPUNIT_ASSERT(40 == surface->w); + CPPUNIT_ASSERT(30 == surface->h); + } + + void testNotAnImage() + { + Image img("./testdata/testsong_correct.txt"); + const SDL_Surface *surface = img.get_surface(); + log << log4cpp::Priority::INFO << "testsong_correct.txt: " << + "w = " << surface->w << "; h = " << surface->h; + } + }; + + log4cpp::Category& ImageTest::log = + log4cpp::Category::getInstance("test.usdx.base.image"); + + CPPUNIT_TEST_SUITE_REGISTRATION(ImageTest); +}; -- cgit v1.2.3