diff options
author | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2005-01-14 12:43:28 +0000 |
---|---|---|
committer | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2005-01-14 12:43:28 +0000 |
commit | 5a1007fa3e827c03bb86db71cb26dfd4c485f28d (patch) | |
tree | a8f114d7ae6ccb1806602b89d3ea3cf6bbfe7d83 /src/resources | |
parent | cfac9a371a684a3a6f37bad725094b7e2d80a7d1 (diff) | |
download | mana-5a1007fa3e827c03bb86db71cb26dfd4c485f28d.tar.gz mana-5a1007fa3e827c03bb86db71cb26dfd4c485f28d.tar.bz2 mana-5a1007fa3e827c03bb86db71cb26dfd4c485f28d.tar.xz mana-5a1007fa3e827c03bb86db71cb26dfd4c485f28d.zip |
Extended Image with methods to get width, height and draw a pattern and made
Window widget use it.
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/image.cpp | 37 | ||||
-rw-r--r-- | src/resources/image.h | 20 |
2 files changed, 55 insertions, 2 deletions
diff --git a/src/resources/image.cpp b/src/resources/image.cpp index 8a37a4e1..fb36f400 100644 --- a/src/resources/image.cpp +++ b/src/resources/image.cpp @@ -63,6 +63,23 @@ void Image::unload() } } + +int Image::getWidth() +{ + if (image != NULL) { + return image->w; + } + return 0; +} + +int Image::getHeight() +{ + if (image != NULL) { + return image->h; + } + return 0; +} + Image* Image::createSubImage(int x, int y, int width, int height) { // Create a new clipped sub-image @@ -83,6 +100,26 @@ bool Image::draw(BITMAP *screen, int x, int y) return true; } +void Image::drawPattern(BITMAP *screen, int x, int y, int w, int h) +{ + int iw = getWidth(); // Width of image + int ih = getHeight(); // Height of image + if (iw == 0 || ih == 0) return; + + int px = 0; // X position on pattern plane + int py = 0; // Y position on pattern plane + + while (py < h) { + while (px < w) { + draw(screen, x + px, y + py); + // TODO: Prevent overdraw + px += iw; + } + py += ih; + px = x; + } +} + SubImage::SubImage(Image *parent, BITMAP *image, int x, int y, int width, int height): Image(create_sub_bitmap(image, x, y, width, height)), diff --git a/src/resources/image.h b/src/resources/image.h index 363dabde..8f956324 100644 --- a/src/resources/image.h +++ b/src/resources/image.h @@ -63,6 +63,16 @@ class Image : public Resource void unload(); /** + * Returns the width of the image. + */ + int getWidth(); + + /** + * Returns the height of the image. + */ + int getHeight(); + + /** * Creates a new image with the desired clipping rectangle. * @return <code>NULL</code> if creation failed and a valid * object otherwise. @@ -70,12 +80,18 @@ class Image : public Resource Image* createSubImage(int x, int y, int width, int height); /** - * Attempts to blit the internal image onto the screen. + * Blits the internal image onto the screen. + * * @return <code>true</code> if the image was blitted properly - * <code>false</code> otherwise. + * <code>false</code> otherwise. */ bool draw(BITMAP *screen, int x, int y); + /** + * Does a pattern fill on the given area. + */ + void drawPattern(BITMAP *screen, int x, int y, int w, int h); + protected: //SDL_Rect screenRect; //SDL_Surface *image; |