#include "math/vector.hpp"
#include "math/rect.hpp"
+#include "video/surface_ptr.hpp"
+#include "video/texture_ptr.hpp"
-class Texture;
class SurfaceData;
-/**
- * A rectangular image.
- * The class basically holds a reference to a texture with additional UV
- * coordinates that specify a rectangular area on this texture
- */
+/** A rectangular image. The class basically holds a reference to a
+ texture with additional UV coordinates that specify a rectangular
+ area on this texture */
class Surface
{
public:
- static std::auto_ptr<Surface> create(const std::string& file);
- static std::auto_ptr<Surface> create(const std::string& file, const Rect& rect);
+ static SurfacePtr create(const std::string& file);
+ static SurfacePtr create(const std::string& file, const Rect& rect);
private:
- Texture* texture;
+ TexturePtr texture;
SurfaceData* surface_data;
Rect rect;
bool flipx;
-public:
+private:
Surface(const std::string& file);
Surface(const std::string& file, const Rect& rect);
- Surface(const Surface& other);
+ Surface(const Surface&);
+
+public:
~Surface();
- const Surface& operator= (const Surface& other);
+ SurfacePtr clone() const;
/** flip the surface horizontally */
void hflip();
bool get_flipx() const;
- Texture *get_texture() const;
+ TexturePtr get_texture() const;
SurfaceData* get_surface_data() const;
int get_x() const;
int get_y() const;
int get_width() const;
int get_height() const;
Vector get_position() const;
- /**
- * returns a vector containing width and height
- */
+
+ /** returns a vector containing width and height */
Vector get_size() const;
+
+private:
+ Surface& operator=(const Surface&);
};
#endif