diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-07-31 17:34:35 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-08-05 17:21:12 +0200 |
commit | b51a15abb93a0dd0fc491419d12ea58637ebf089 (patch) | |
tree | 1bd857fa1684e882de13ab72e5ca386a1728b8bb | |
parent | 542570896e1e0ce73ebfc442b48e741c2ea32377 (diff) | |
download | mana-b51a15abb93a0dd0fc491419d12ea58637ebf089.tar.gz mana-b51a15abb93a0dd0fc491419d12ea58637ebf089.tar.bz2 mana-b51a15abb93a0dd0fc491419d12ea58637ebf089.tar.xz mana-b51a15abb93a0dd0fc491419d12ea58637ebf089.zip |
Removed 'virtual' from methods of Image
Maybe it used to be necessary for these methods to be virtual, but this
is no longer the case. Hence we can avoid wasting CPU ticks searching
through virtual function tables, especially for frequently used methods
like getWidth, getHeight and setAlpha.
MapLayer::getTile was inlined.
Reviewed-by: Erik Schilling
-rw-r--r-- | src/map.cpp | 5 | ||||
-rw-r--r-- | src/map.h | 3 | ||||
-rw-r--r-- | src/resources/image.cpp | 15 | ||||
-rw-r--r-- | src/resources/image.h | 18 |
4 files changed, 15 insertions, 26 deletions
diff --git a/src/map.cpp b/src/map.cpp index fa3d9a4c..b647d5d5 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -116,11 +116,6 @@ void MapLayer::setTile(int x, int y, Image *img) setTile(x + y * mWidth, img); } -Image* MapLayer::getTile(int x, int y) const -{ - return mTiles[x + y * mWidth]; -} - void MapLayer::draw(Graphics *graphics, int startX, int startY, int endX, int endY, @@ -108,7 +108,8 @@ class MapLayer /** * Get tile image, with x and y in layer coordinates. */ - Image *getTile(int x, int y) const; + Image *getTile(int x, int y) const + { return mTiles[x + y * mWidth]; } /** * Draws this layer to the given graphics context. The coordinates are diff --git a/src/resources/image.cpp b/src/resources/image.cpp index b7e6c200..7e592198 100644 --- a/src/resources/image.cpp +++ b/src/resources/image.cpp @@ -576,11 +576,17 @@ Image *Image::getSubImage(int x, int y, int width, int height) // Create a new clipped sub-image #ifdef USE_OPENGL if (mUseOpenGL) - return new SubImage(this, mGLImage, x, y, width, height, + return new SubImage(this, mGLImage, + mBounds.x + x, + mBounds.y + y, + width, height, mTexWidth, mTexHeight); #endif - return new SubImage(this, mSDLSurface, x, y, width, height); + return new SubImage(this, mSDLSurface, + mBounds.x + x, + mBounds.y + y, + width, height); } void Image::SDLterminateAlphaCache() @@ -647,8 +653,3 @@ SubImage::~SubImage() #endif mParent->decRef(); } - -Image *SubImage::getSubImage(int x, int y, int w, int h) -{ - return mParent->getSubImage(mBounds.x + x, mBounds.y + y, w, h); -} diff --git a/src/resources/image.h b/src/resources/image.h index b1831ada..b762bf2a 100644 --- a/src/resources/image.h +++ b/src/resources/image.h @@ -84,7 +84,7 @@ class Image : public Resource /** * Frees the resources created by SDL. */ - virtual void unload(); + void unload(); /** * Tells is the image is loaded @@ -95,13 +95,13 @@ class Image : public Resource /** * Returns the width of the image. */ - virtual int getWidth() const + int getWidth() const { return mBounds.w; } /** * Returns the height of the image. */ - virtual int getHeight() const + int getHeight() const { return mBounds.h; } /** @@ -113,7 +113,7 @@ class Image : public Resource /** * Sets the alpha value of this image. */ - virtual void setAlpha(float alpha); + void setAlpha(float alpha); /** * Returns the alpha value of this image. @@ -127,7 +127,7 @@ class Image : public Resource * @return <code>NULL</code> if creation failed and a valid * object otherwise. */ - virtual Image *getSubImage(int x, int y, int width, int height); + Image *getSubImage(int x, int y, int width, int height); /** * Tells if the image has got an alpha channel @@ -270,14 +270,6 @@ class SubImage : public Image ~SubImage(); - /** - * Creates a new image with the desired clipping rectangle. - * - * @return <code>NULL</code> if creation failed and a valid - * image otherwise. - */ - Image *getSubImage(int x, int y, int width, int height); - private: Image *mParent; }; |