#include "video/texture.hpp"
#include "video/video_systems.hpp"
-std::auto_ptr<Surface>
+SurfacePtr
Surface::create(const std::string& file)
{
- return std::auto_ptr<Surface>(new Surface(file));
+ return SurfacePtr(new Surface(file));
}
-std::auto_ptr<Surface>
+SurfacePtr
Surface::create(const std::string& file, const Rect& rect)
{
- return std::auto_ptr<Surface>(new Surface(file, rect));
+ return SurfacePtr(new Surface(file, rect));
}
Surface::Surface(const std::string& file) :
texture(texture_manager->get(file)),
surface_data(),
- rect(0, 0,
+ rect(0, 0,
Size(texture->get_image_width(),
texture->get_image_height())),
flipx(false)
{
- texture->ref();
surface_data = VideoSystem::new_surface_data(*this);
}
rect(0, 0, Size(rect_.get_width(), rect_.get_height())),
flipx(false)
{
- texture->ref();
surface_data = VideoSystem::new_surface_data(*this);
}
rect(rhs.rect),
flipx(false)
{
- texture->ref();
surface_data = VideoSystem::new_surface_data(*this);
}
-const Surface&
-Surface::operator=(const Surface& rhs)
+Surface::~Surface()
{
- rhs.texture->ref();
- texture->unref();
- texture = rhs.texture;
- rect = rhs.rect;
- return *this;
+ VideoSystem::free_surface_data(surface_data);
}
-Surface::~Surface()
+SurfacePtr
+Surface::clone() const
{
- VideoSystem::free_surface_data(surface_data);
- texture->unref();
+ SurfacePtr surface(new Surface(*this));
+ return surface;
}
/** flip the surface horizontally */
return flipx;
}
-Texture*
+TexturePtr
Surface::get_texture() const
{
return texture;
}
-SurfaceData*
+SurfaceData*
Surface::get_surface_data() const
{
return surface_data;
return rect.top;
}
-int
+int
Surface::get_width() const
{
return rect.get_width();
}
-int
+int
Surface::get_height() const
{
return rect.get_height();
Vector
Surface::get_position() const
{
- return Vector(get_x(), get_y());
+ return Vector(get_x(), get_y());
}
Vector
Surface::get_size() const
{
- return Vector(get_width(), get_height());
+ return Vector(get_width(), get_height());
}
/* EOF */