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