/******************************************************************************* This file is Part of the ZEngine Library for 2D game development. Copyright (C) 2002-2004 James Turk Licensed under a BSD-style license. The maintainer of this library is James Turk (james@conceptofzero.net) and the home of this Library is http://www.zengine.sourceforge.net *******************************************************************************/ #ifndef __ze_zimage_h__ #define __ze_zimage_h__ #include "ZE_ZEngine.h" #include "ZE_ZRect.h" namespace ZE { class ZImage { protected: ZEngine* rEngine; SDL_Surface *rImage; Uint8 rAlpha; #if (GFX_BACKEND == ZE_OGL) GLfloat rTexMinX; GLfloat rTexMinY; GLfloat rTexMaxX; GLfloat rTexMaxY; unsigned int rTexID; GLfloat rWidth; GLfloat rHeight; #endif //GFX_BACKEND == OGL public: ZImage(); ZImage(const ZImage &rhs); ZImage(std::string filename); ZImage(SDL_Surface *img, Sint16 x, Sint16 y, Sint16 w, Sint16 h); ZImage(const ZImage &img, Sint16 x, Sint16 y, Sint16 w, Sint16 h); ZImage(SDL_Surface *surface); virtual ~ZImage(); void Open(std::string filename); void OpenFromZip(std::string zipname, std::string filename); void OpenFromZRF(std::string resourceId); void OpenFromImage(SDL_Surface *img, Sint16 x, Sint16 y, Sint16 w, Sint16 h); void OpenFromImage(const ZImage &img, Sint16 x, Sint16 y, Sint16 w, Sint16 h); void Attach(SDL_Surface *surface); void Reload(); void Release(); void SetAlpha(Uint8 alpha); void SetColorKey(Uint8 red, Uint8 green, Uint8 blue); void Draw(int x, int y) const; void DrawClipped(int x, int y, ZRect clipRect) const; #if (GFX_BACKEND == ZE_OGL) void Draw(float x, float y) const; void Draw(float x, float y, Uint8 vc[]) const; void DrawRotated(int x, int y, float angle) const; void DrawRotated(float x, float y, float angle) const; void DrawRotated(float x, float y, float angle, Uint8 vc[]) const; void DrawClipped(float x, float y, ZRect clipRect) const; void DrawClipped(float x, float y, ZRect clipRect, Uint8 vc[]) const; void Flip(bool horizontal, bool vertical); void Stretch(float xFactor, float yFactor); void Resize(float width, float height); void Bind() const; #endif //GFX_BACKEND == OGL bool IsLoaded() const; SDL_Surface *Surface() const; #if (GFX_BACKEND == ZE_OGL) float Width() const; float Height() const; #elif (GFX_BACKEND == ZE_SDL) int Width() const; int Height() const; #endif //GFX_BACKEND Uint8 Alpha() const; }; } #endif