Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tpixel.h"
Toshihiro Shimizu 890ddd
#include "tpixelgr.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
const int TPixelRGBM32::maxChannelValue = 0xff;
Toshihiro Shimizu 890ddd
const int TPixelRGBM64::maxChannelValue = 0xffff;
Toshihiro Shimizu 890ddd
const int TPixelGR8::maxChannelValue = 0xff;
Toshihiro Shimizu 890ddd
const int TPixelGR16::maxChannelValue = 0xffff;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
const TPixelRGBM32 TPixelRGBM32::Red(maxChannelValue, 0, 0);
Toshihiro Shimizu 890ddd
const TPixelRGBM32 TPixelRGBM32::Green(0, maxChannelValue, 0);
Toshihiro Shimizu 890ddd
const TPixelRGBM32 TPixelRGBM32::Blue(0, 0, maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelRGBM32 TPixelRGBM32::Yellow(maxChannelValue, maxChannelValue, 0);
Toshihiro Shimizu 890ddd
const TPixelRGBM32 TPixelRGBM32::Cyan(0, maxChannelValue, maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelRGBM32 TPixelRGBM32::Magenta(maxChannelValue, 0, maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelRGBM32 TPixelRGBM32::White(maxChannelValue, maxChannelValue, maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelRGBM32 TPixelRGBM32::Black(0, 0, 0);
Toshihiro Shimizu 890ddd
const TPixelRGBM32 TPixelRGBM32::Transparent(0, 0, 0, 0);
Toshihiro Shimizu 890ddd
//---------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
const TPixelRGBM64 TPixelRGBM64::Red(maxChannelValue, 0, 0);
Toshihiro Shimizu 890ddd
const TPixelRGBM64 TPixelRGBM64::Green(0, maxChannelValue, 0);
Toshihiro Shimizu 890ddd
const TPixelRGBM64 TPixelRGBM64::Blue(0, 0, maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelRGBM64 TPixelRGBM64::Yellow(maxChannelValue, maxChannelValue, 0);
Toshihiro Shimizu 890ddd
const TPixelRGBM64 TPixelRGBM64::Cyan(0, maxChannelValue, maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelRGBM64 TPixelRGBM64::Magenta(maxChannelValue, 0, maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelRGBM64 TPixelRGBM64::White(maxChannelValue, maxChannelValue, maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelRGBM64 TPixelRGBM64::Black(0, 0, 0);
Toshihiro Shimizu 890ddd
const TPixelRGBM64 TPixelRGBM64::Transparent(0, 0, 0, 0);
Toshihiro Shimizu 890ddd
//---------------------------------------------------
Toshihiro Shimizu 890ddd
const TPixelD TPixelD::Red(1, 0, 0);
Toshihiro Shimizu 890ddd
const TPixelD TPixelD::Green(0, 1, 0);
Toshihiro Shimizu 890ddd
const TPixelD TPixelD::Blue(0, 0, 1);
Toshihiro Shimizu 890ddd
const TPixelD TPixelD::Yellow(1, 1, 0);
Toshihiro Shimizu 890ddd
const TPixelD TPixelD::Cyan(0, 1, 1);
Toshihiro Shimizu 890ddd
const TPixelD TPixelD::Magenta(1, 0, 1);
Toshihiro Shimizu 890ddd
const TPixelD TPixelD::White(1, 1, 1);
Toshihiro Shimizu 890ddd
const TPixelD TPixelD::Black(0, 0, 0);
Toshihiro Shimizu 890ddd
const TPixelD TPixelD::Transparent(0, 0, 0, 0);
Toshihiro Shimizu 890ddd
//---------------------------------------------------
Toshihiro Shimizu 890ddd
const TPixelGR8 TPixelGR8::White(maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelGR8 TPixelGR8::Black(0);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
const TPixelGR16 TPixelGR16::White(maxChannelValue);
Toshihiro Shimizu 890ddd
const TPixelGR16 TPixelGR16::Black(0);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 3bfa54
std::ostream &operator<<(std::ostream &out, const TPixel32 &pixel)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	return out << "PixRGBM32("
Toshihiro Shimizu 890ddd
			   << (int)pixel.r << ", " << (int)pixel.g << ", "
Toshihiro Shimizu 890ddd
			   << (int)pixel.b << ", " << (int)pixel.m << ")";
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Shinya Kitaoka 3bfa54
std::ostream &operator<<(std::ostream &out, const TPixel64 &pixel)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	return out
Toshihiro Shimizu 890ddd
		   << "PixRGBM64(" << pixel.r << ", " << pixel.g
Toshihiro Shimizu 890ddd
		   << ", " << pixel.b << ", " << pixel.m << ")";
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Shinya Kitaoka 3bfa54
std::ostream &operator<<(std::ostream &out, const TPixelD &pixel)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	return out
Toshihiro Shimizu 890ddd
		   << "PixD(" << pixel.r << ", " << pixel.g << ", "
Toshihiro Shimizu 890ddd
		   << pixel.b << ", " << pixel.m << ")";
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/*
Toshihiro Shimizu 890ddd
TPixel32 DVAPI TPixel32::from(const TPixelGR8 &pix)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
   return TPixel32(pix.value, pix.value, pix.value, maxChannelValue);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TPixel32 DVAPI TPixel32::from(const TPixelGR16 &pix)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
   UCHAR value = byteFromUshort(pix.value);
Toshihiro Shimizu 890ddd
   return TPixel32(value, value, value, maxChannelValue);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TPixelD DVAPI TPixelD::from(const TPixelGR8 &pix)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
  double v = (double)pix.value * (1.0/255.0);
Toshihiro Shimizu 890ddd
  return TPixelD(v,v,v,v);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TPixelD DVAPI TPixelD::from(const TPixelGR16 &pix)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
  double v = (double)pix.value * (1.0/65535.0);
Toshihiro Shimizu 890ddd
  return TPixelD(v,v,v,v);
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//TPixelGR8 TPixelGR8::from(const TPixelD &pix)
Toshihiro Shimizu 890ddd
//{
Toshihiro Shimizu 890ddd
//  return from(TPixel32::from(pix));
Toshihiro Shimizu 890ddd
//}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
TPixelGR8 DVAPI TPixelGR8::from(const TPixel32 &pix)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	return TPixelGR8((((UINT)(pix.r) * 19594 +
Toshihiro Shimizu 890ddd
					   (UINT)(pix.g) * 38472 +
Toshihiro Shimizu 890ddd
					   (UINT)(pix.b) * 7470 +
Toshihiro Shimizu 890ddd
					   (UINT)(1 << 15)) >>
Toshihiro Shimizu 890ddd
					  16));
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
TPixelGR16 DVAPI TPixelGR16::from(const TPixel64 &pix)
Toshihiro Shimizu 890ddd
{
Toshihiro Shimizu 890ddd
	return TPixelGR16((((UINT)(pix.r) * 19594 +
Toshihiro Shimizu 890ddd
						(UINT)(pix.g) * 38472 +
Toshihiro Shimizu 890ddd
						(UINT)(pix.b) * 7470 +
Toshihiro Shimizu 890ddd
						(UINT)(1 << 15)) >>
Toshihiro Shimizu 890ddd
					   16));
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------