summaryrefslogtreecommitdiff
path: root/src/resources/image.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-06-10 00:11:20 +0300
committerAndrei Karas <akaras@inbox.ru>2012-06-10 00:11:20 +0300
commitf199b9ba7da47cb6f9aa95f843c0628621899aa9 (patch)
tree9b1ff96b456f7d93d1a66f3471cd251908f3c227 /src/resources/image.cpp
parentff11053f5f638749c3564c464dc41ebc474b4897 (diff)
downloadmv-f199b9ba7da47cb6f9aa95f843c0628621899aa9.tar.gz
mv-f199b9ba7da47cb6f9aa95f843c0628621899aa9.tar.bz2
mv-f199b9ba7da47cb6f9aa95f843c0628621899aa9.tar.xz
mv-f199b9ba7da47cb6f9aa95f843c0628621899aa9.zip
Move SubImage class to separate file.
Diffstat (limited to 'src/resources/image.cpp')
-rw-r--r--src/resources/image.cpp104
1 files changed, 1 insertions, 103 deletions
diff --git a/src/resources/image.cpp b/src/resources/image.cpp
index 0e0937ce6..5496a10d8 100644
--- a/src/resources/image.cpp
+++ b/src/resources/image.cpp
@@ -37,6 +37,7 @@
#include "utils/stringutils.h"
#include "resources/imagehelper.h"
+#include "resources/subimage.h"
#include <SDL_image.h>
#include <SDL_rotozoom.h>
@@ -335,106 +336,3 @@ void Image::SDLTerminateAlphaCache()
SDLCleanCache();
mUseAlphaCache = false;
}
-
-//============================================================================
-// SubImage Class
-//============================================================================
-
-SubImage::SubImage(Image *parent, SDL_Surface *image,
- int x, int y, int width, int height):
- Image(image),
- mParent(parent)
-{
- if (mParent)
- {
- mParent->incRef();
- mParent->SDLTerminateAlphaCache();
- mHasAlphaChannel = mParent->hasAlphaChannel();
- mIsAlphaVisible = mHasAlphaChannel;
- mAlphaChannel = mParent->SDLgetAlphaChannel();
- }
- else
- {
- mHasAlphaChannel = false;
- mIsAlphaVisible = false;
- mAlphaChannel = nullptr;
- }
-
- // Set up the rectangle.
- mBounds.x = static_cast<short>(x);
- mBounds.y = static_cast<short>(y);
- mBounds.w = static_cast<Uint16>(width);
- mBounds.h = static_cast<Uint16>(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 *parent, GLuint image,
- int x, int y, int width, int height,
- int texWidth, int texHeight):
- Image(image, width, height, texWidth, texHeight),
- mParent(parent)
-{
- if (mParent)
- mParent->incRef();
-
- // Set up the rectangle.
- mBounds.x = static_cast<short>(x);
- mBounds.y = static_cast<short>(y);
- mBounds.w = static_cast<Uint16>(width);
- mBounds.h = static_cast<Uint16>(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;
- }
- mIsAlphaVisible = mHasAlphaChannel;
-}
-#endif
-
-SubImage::~SubImage()
-{
- // Avoid destruction of the image
- mSDLSurface = nullptr;
- // Avoid possible destruction of its alpha channel
- mAlphaChannel = nullptr;
-#ifdef USE_OPENGL
- mGLImage = 0;
-#endif
- if (mParent)
- {
- mParent->decRef();
- mParent = nullptr;
- }
-}
-
-Image *SubImage::getSubImage(int x, int y, int w, int h)
-{
- if (mParent)
- return mParent->getSubImage(mBounds.x + x, mBounds.y + y, w, h);
- else
- return nullptr;
-}