00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef ANNCHIENTA_SURFACE_H
00019 #define ANNCHIENTA_SURFACE_H
00020
00021 #include <SDL_opengl.h>
00022 #include "Cacheable.h"
00023
00024 namespace Annchienta
00025 {
00028 class Surface: public Cacheable
00029 {
00030 private:
00031 int width, height;
00032 int glWidth, glHeight;
00033 int pixelSize;
00034
00035 float leftTexCoord, rightTexCoord, topTexCoord, bottomTexCoord;
00036
00037 GLuint texture;
00038 GLuint list;
00039
00040 GLubyte *pixels;
00041
00042 void generateTextureFromPixels();
00043 void compileList();
00044
00045 public:
00051 Surface( int width, int height, int pixelSize=3 );
00052
00056 Surface( const char *filename );
00057
00058 virtual ~Surface();
00059
00062 virtual CacheableType getCacheableType() const;
00063
00066 int getWidth() const;
00067
00070 int getHeight() const;
00071
00074 void setLinearScaling() const;
00075
00078 void setNearestScaling() const;
00079
00080 #ifndef SWIG
00081
00088 void draw( int x, int y ) const;
00089
00094 void draw( int dx, int dy, int sx1, int sy1, int sx2, int sy2 ) const;
00095
00100 void draw( int x1, int y1, int x2, int y2 ) const;
00101
00105 GLuint getTexture() const;
00106
00110 int getGlWidth() const;
00111
00115 int getGlHeight() const;
00116
00120 float getLeftTexCoord() const;
00121
00125 float getRightTexCoord() const;
00126
00130 float getTopTexCoord() const;
00131
00135 float getBottomTexCoord() const;
00136 #endif
00137
00138 };
00139 };
00140
00141 #endif