#ifndef T_TILE_INCLUDED
#define T_TILE_INCLUDED
#include "traster.h"
#include "trasterimage.h"
#include "ttoonzimage.h"
#include "timagecache.h"
#undef DVAPI
#undef DVVAR
#ifdef TRASTER_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif
class DVAPI TTile
{
private:
std::string m_rasterId;
TRect m_subRect;
TTile(const TTile &);
TTile &operator=(const TTile &);
void addInCache(const TRasterP &raster);
public:
TPointD m_pos;
TTile() : m_rasterId(""), m_pos(), m_subRect() {}
TTile(const TRasterP &raster);
TTile(const TRasterP &raster, TPointD pos);
~TTile();
void setRaster(const TRasterP &raster);
inline const TRasterP getRaster() const
{
TImageP img = TImageCache::instance()->get(m_rasterId, true);
TRasterImageP rimg = (TRasterImageP)img;
if (rimg) {
if (m_subRect == rimg->getRaster()->getBounds())
return rimg->getRaster();
else
return rimg->getRaster()->extract(m_subRect.x0, m_subRect.y0, m_subRect.x1, m_subRect.y1);
}
TToonzImageP timg = (TToonzImageP)img;
if (timg) {
if (m_subRect == timg->getRaster()->getBounds())
return timg->getRaster();
else
return timg->getRaster()->extract(m_subRect.x0, m_subRect.y0, m_subRect.x1, m_subRect.y1);
}
return TRasterP();
}
};
#endif