#pragma once #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