diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-06-07 15:54:27 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-06-07 15:54:27 +0300 |
commit | c43a3b024bf3da2b0c7b6eb177b662d63db41808 (patch) | |
tree | 0be376f2f92a4ef1671636f9a9e55ec01ce544b4 /src/resources/subimage.cpp | |
parent | f69f346518f473f4f8fb13966e5831d105d1239c (diff) | |
download | plus-c43a3b024bf3da2b0c7b6eb177b662d63db41808.tar.gz plus-c43a3b024bf3da2b0c7b6eb177b662d63db41808.tar.bz2 plus-c43a3b024bf3da2b0c7b6eb177b662d63db41808.tar.xz plus-c43a3b024bf3da2b0c7b6eb177b662d63db41808.zip |
Move subimage class into image directory.
Diffstat (limited to 'src/resources/subimage.cpp')
-rw-r--r-- | src/resources/subimage.cpp | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/src/resources/subimage.cpp b/src/resources/subimage.cpp deleted file mode 100644 index b6ec02479..000000000 --- a/src/resources/subimage.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2004-2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2016 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * 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 - * 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. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "resources/subimage.h" - -#ifdef DEBUG_IMAGES -#include "logger.h" -#endif - -#include "debug.h" - -#ifdef USE_SDL2 -SubImage::SubImage(Image *const parent, - SDL_Texture *const image, - const int x, const int y, - const int width, const int height) : - Image(image, width, height), - mInternalBounds(), - mParent(parent) -{ - if (mParent) - { - mParent->incRef(); - mParent->SDLTerminateAlphaCache(); - mHasAlphaChannel = mParent->hasAlphaChannel(); - mIsAlphaVisible = mHasAlphaChannel; - mAlphaChannel = mParent->SDLgetAlphaChannel(); - mSource = parent->getIdPath(); -#ifdef DEBUG_IMAGES - logger->log("set name2 %p, %s", this, mSource.c_str()); -#endif -#ifdef DEBUG_BIND_TEXTURE - mIdPath = parent->getIdPath(); -#endif - } - else - { - mHasAlphaChannel = false; - mIsAlphaVisible = false; - mAlphaChannel = nullptr; - } - - // Set up the rectangle. - mBounds.x = CAST_S16(x); - mBounds.y = CAST_S16(y); - mBounds.w = CAST_U16(width); - mBounds.h = CAST_U16(height); - if (mParent) - { - mInternalBounds.x = mParent->mBounds.x; - mInternalBounds.y = mParent->mBounds.y; - mInternalBounds.w = mParent->mBounds.w; - mInternalBounds.h = mParent->mBounds.h; - } - else - { - mInternalBounds.x = 0; - mInternalBounds.y = 0; - mInternalBounds.w = 1; - mInternalBounds.h = 1; - } - mUseAlphaCache = false; -} -#endif - -SubImage::SubImage(Image *const parent, - SDL_Surface *const image, - const int x, const int y, - const int width, const int height) : - Image(image, false), - mInternalBounds(), - mParent(parent) -{ - if (mParent) - { - mParent->incRef(); - mParent->SDLTerminateAlphaCache(); - mHasAlphaChannel = mParent->hasAlphaChannel(); - mIsAlphaVisible = mHasAlphaChannel; - mAlphaChannel = mParent->SDLgetAlphaChannel(); - mSource = parent->getIdPath(); -#ifdef DEBUG_IMAGES - logger->log("set name2 %p, %s", static_cast<void*>(this), - mSource.c_str()); -#endif -#ifdef DEBUG_BIND_TEXTURE - mIdPath = parent->getIdPath(); -#endif - } - else - { - mHasAlphaChannel = false; - mIsAlphaVisible = false; - mAlphaChannel = nullptr; - } - - // Set up the rectangle. - mBounds.x = CAST_S16(x); - mBounds.y = CAST_S16(y); - mBounds.w = CAST_U16(width); - mBounds.h = CAST_U16(height); - if (mParent) - { - mInternalBounds.x = mParent->mBounds.x; - mInternalBounds.y = mParent->mBounds.y; - mInternalBounds.w = mParent->mBounds.w; - mInternalBounds.h = mParent->mBounds.h; - } - else - { - mInternalBounds.x = 0; - mInternalBounds.y = 0; - mInternalBounds.w = 1; - mInternalBounds.h = 1; - } - mUseAlphaCache = false; -} - -#ifdef USE_OPENGL -SubImage::SubImage(Image *const parent, - const GLuint image, - const int x, const int y, - const int width, const int height, - const int texWidth, const int texHeight) : - Image(image, width, height, texWidth, texHeight), - mInternalBounds(), - mParent(parent) -{ - if (mParent) - mParent->incRef(); - - // Set up the rectangle. - mBounds.x = CAST_S16(x); - mBounds.y = CAST_S16(y); - mBounds.w = CAST_U16(width); - mBounds.h = CAST_U16(height); - if (mParent) - { - mInternalBounds.x = mParent->mBounds.x; - mInternalBounds.y = mParent->mBounds.y; - mInternalBounds.w = mParent->mBounds.w; - mInternalBounds.h = mParent->mBounds.h; - mSource = parent->getIdPath(); -#ifdef DEBUG_IMAGES - logger->log("set name2 %p, %s", static_cast<void*>(this), - mSource.c_str()); -#endif -#ifdef DEBUG_BIND_TEXTURE - mIdPath = parent->getIdPath(); -#endif - } - else - { - mInternalBounds.x = 0; - mInternalBounds.y = 0; - mInternalBounds.w = 1; - mInternalBounds.h = 1; - } - mIsAlphaVisible = mHasAlphaChannel; -} -#endif - -SubImage::~SubImage() -{ -#ifdef DEBUG_IMAGES - logger->log("delete subimage: %p", static_cast<void*>(this)); - logger->log(" %s, %s", mIdPath.c_str(), mSource.c_str()); -#endif - // Avoid destruction of the image - mSDLSurface = nullptr; - // Avoid possible destruction of its alpha channel - mAlphaChannel = nullptr; -#ifdef USE_SDL2 - // Avoid destruction of texture - mTexture = nullptr; -#endif -#ifdef USE_OPENGL - mGLImage = 0; -#endif - if (mParent) - { -#ifdef DEBUG_IMAGES - logger->log("decref from subminage: %p, parent: %p", - static_cast<void*>(this), static_cast<void*>(mParent)); -#endif - mParent->decRef(); - mParent = nullptr; - } -} - -Image *SubImage::getSubImage(const int x, const int y, - const int w, const int h) -{ - if (mParent) - return mParent->getSubImage(mBounds.x + x, mBounds.y + y, w, h); - else - return nullptr; -} - -#ifdef USE_OPENGL -void SubImage::decRef() -{ - Resource::decRef(); -} -#endif - -int SubImage::calcMemoryLocal() const -{ - int sz = static_cast<int>(sizeof(SubImage) + - sizeof(std::map<float, SDL_Surface*>)) + - Resource::calcMemoryLocal(); - return sz; -} |