| |
| |
| #include "trasterimage.h" |
| #include "trop.h" |
| |
| |
| |
| TRasterImage::TRasterImage() |
| : m_mainRaster() |
| , m_patchRaster() |
| , m_iconRaster() |
| , m_dpix(0) |
| , m_dpiy(0) |
| , m_name("") |
| , m_savebox() |
| |
| , m_isOpaque(false) |
| , m_isScanBW(false) |
| , m_offset(0, 0) |
| , m_subsampling(1) {} |
| |
| |
| |
| TRasterImage::TRasterImage(const TRasterP &ras) |
| : m_mainRaster(ras) |
| , m_patchRaster() |
| , m_iconRaster() |
| , m_dpix(0) |
| , m_dpiy(0) |
| , m_name("") |
| , m_savebox(0, 0, ras->getLx() - 1, ras->getLy() - 1) |
| |
| , m_isOpaque(false) |
| , m_isScanBW(false) |
| , m_offset(0, 0) |
| , m_subsampling(1) {} |
| |
| void TRasterImage::setRaster(const TRasterP &raster) { |
| m_mainRaster = raster; |
| m_savebox = TRect(0, 0, raster->getLx() - 1, raster->getLy() - 1); |
| } |
| |
| |
| |
| TRasterImage::TRasterImage(const TRasterImage &src) |
| : m_mainRaster(src.m_mainRaster) |
| , m_patchRaster(src.m_patchRaster) |
| , m_iconRaster(src.m_iconRaster) |
| , m_dpix(src.m_dpix) |
| , m_dpiy(src.m_dpiy) |
| , m_name(src.m_name) |
| , m_savebox(src.m_savebox) |
| |
| , m_isOpaque(src.m_isOpaque) |
| , m_isScanBW(src.m_isScanBW) |
| , m_offset(src.m_offset) |
| , m_subsampling(src.m_subsampling) { |
| if (m_mainRaster) m_mainRaster = m_mainRaster->clone(); |
| if (m_patchRaster) m_patchRaster = m_patchRaster->clone(); |
| if (m_iconRaster) m_iconRaster = m_iconRaster->clone(); |
| } |
| |
| |
| TRasterImage::~TRasterImage() {} |
| |
| |
| |
| TImage *TRasterImage::cloneImage() const { return new TRasterImage(*this); } |
| |
| |
| |
| void TRasterImage::setSubsampling(int s) { m_subsampling = s; } |
| |
| |
| |
| void TRasterImage::makeIcon(const TRaster32P &dstRas) { |
| #ifndef TNZCORE_LIGHT |
| assert(dstRas && dstRas->getLx() > 0 && dstRas->getLy() > 0); |
| |
| TRasterP &srcRas = m_mainRaster; |
| if (!srcRas || srcRas->getLx() <= 0 || srcRas->getLy() <= 0) { |
| dstRas->clear(); |
| return; |
| } |
| |
| double dpix = m_dpix, dpiy = m_dpiy; |
| if (dpix == 0) dpix = 1; |
| if (dpiy == 0) dpiy = 1; |
| double sx = (double)dstRas->getLx() * dpix / (double)srcRas->getLx(); |
| double sy = (double)dstRas->getLy() * dpiy / (double)srcRas->getLy(); |
| double sc = std::max(sx, sy); |
| TAffine aff = TScale(sc / dpix, sc / dpiy) |
| .place(srcRas->getCenterD(), dstRas->getCenterD()); |
| |
| TRop::resample(dstRas, srcRas, aff); |
| #endif |
| } |
| |
| |
| |