62 lines
1.3 KiB
C++
62 lines
1.3 KiB
C++
|
|
|
|
#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:
|
|
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
|