diff options
Diffstat (limited to 'src/graphics.h')
-rw-r--r-- | src/graphics.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/graphics.h b/src/graphics.h new file mode 100644 index 00000000..67cae04a --- /dev/null +++ b/src/graphics.h @@ -0,0 +1,115 @@ +/* + * The Mana World + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World 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. + * + * The Mana World 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 The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + */ + +#ifndef _GRAPHIC_H +#define _GRAPHIC_H + +#include <SDL.h> +#include <SDL_opengl.h> +#include <guichan/sdl.hpp> +#include <guichan/opengl.hpp> +#include "resources/image.h" + +extern SDL_Surface *screen; + +/** + * 9 images defining a rectangle. 4 corners, 4 sides and a middle area. The + * topology is as follows: + * + * <pre> + * !-----!-----------------!-----! + * ! 0 ! 1 ! 2 ! + * !-----!-----------------!-----! + * ! 3 ! 4 ! 5 ! + * !-----!-----------------!-----! + * ! 6 ! 7 ! 8 ! + * !-----!-----------------!-----! + * </pre> + * + * Sections 0, 2, 6 and 8 will remain as is. 1, 3, 4, 5 and 7 will be + * repeated to fit the size of the widget. + */ +struct ImageRect { + Image *grid[9]; +}; + +/** + * A central point of control for graphics. + */ +#ifdef USE_OPENGL +class Graphics : public gcn::OpenGLGraphics { +#else +class Graphics : public gcn::SDLGraphics { +#endif + public: + /** + * Constructor. + */ + Graphics(); + + /** + * Destructor. + */ + ~Graphics(); + + /** + * Draws a rectangle using images. 4 corner images, 4 side images and 1 + * image for the inside. + */ + void drawImageRect( + int x, int y, int w, int h, + Image *topLeft, Image *topRight, + Image *bottomLeft, Image *bottomRight, + Image *top, Image *right, + Image *bottom, Image *left, + Image *center); + + /** + * Draws a rectangle using images. 4 corner images, 4 side images and 1 + * image for the inside. + */ + void drawImageRect( + int x, int y, int w, int h, + const ImageRect &imgRect); + + /** + * Updates the screen. This is done by either copying the buffer to the + * screen or swapping pages. + */ + void updateScreen(); + + /** + * Returns the width of the screen. + */ + int getWidth(); + + /** + * Returns the height of the screen. + */ + int getHeight(); + + private: + Image *mouseCursor; +}; + +#endif |