private int write_pdf_xobject_cs()
{
if ((m_pdf_colorspace & t2p_cs_t.T2P_CS_ICCBASED) != 0)
return write_pdf_xobject_icccs();
int written = 0;
string buffer = null;
if ((m_pdf_colorspace & t2p_cs_t.T2P_CS_PALETTE) != 0)
{
written += writeToFile("[ /Indexed ");
m_pdf_colorspace = (t2p_cs_t)(m_pdf_colorspace ^ t2p_cs_t.T2P_CS_PALETTE);
written += write_pdf_xobject_cs();
m_pdf_colorspace = (t2p_cs_t)(m_pdf_colorspace | t2p_cs_t.T2P_CS_PALETTE);
buffer = string.Format(CultureInfo.InvariantCulture, "{0}", (0x0001 << m_tiff_bitspersample) - 1);
written += writeToFile(buffer);
written += writeToFile(" ");
buffer = string.Format(CultureInfo.InvariantCulture, "{0}", m_pdf_palettecs);
written += writeToFile(buffer);
written += writeToFile(" 0 R ]\n");
return written;
}
if ((m_pdf_colorspace & t2p_cs_t.T2P_CS_BILEVEL) != 0)
written += writeToFile("/DeviceGray \n");
if ((m_pdf_colorspace & t2p_cs_t.T2P_CS_GRAY) != 0)
{
if ((m_pdf_colorspace & t2p_cs_t.T2P_CS_CALGRAY) != 0)
written += write_pdf_xobject_calcs();
else
written += writeToFile("/DeviceGray \n");
}
if ((m_pdf_colorspace & t2p_cs_t.T2P_CS_RGB) != 0)
{
if ((m_pdf_colorspace & t2p_cs_t.T2P_CS_CALRGB) != 0)
written += write_pdf_xobject_calcs();
else
written += writeToFile("/DeviceRGB \n");
}
if ((m_pdf_colorspace & t2p_cs_t.T2P_CS_CMYK) != 0)
written += writeToFile("/DeviceCMYK \n");
if ((m_pdf_colorspace & t2p_cs_t.T2P_CS_LAB) != 0)
{
written += writeToFile("[/Lab << \n");
written += writeToFile("/WhitePoint ");
float X_W = m_tiff_whitechromaticities[0];
float Y_W = m_tiff_whitechromaticities[1];
float Z_W = 1.0F - (X_W + Y_W);
X_W /= Y_W;
Z_W /= Y_W;
Y_W = 1.0F;
buffer = string.Format(CultureInfo.InvariantCulture,
"[{0:F4} {1:F4} {2:F4}] \n", X_W, Y_W, Z_W);
written += writeToFile(buffer);
written += writeToFile("/BlackPoint ");
X_W = 0.3457F; /* 0.3127F; */ /* D50, commented D65 */
Y_W = 0.3585F; /* 0.3290F; */
Z_W = 1.0F - (X_W + Y_W);
X_W /= Y_W;
Z_W /= Y_W;
Y_W = 1.0F;
buffer = string.Format(CultureInfo.InvariantCulture,
"[{0:F4} {1:F4} {2:F4}] \n", X_W, Y_W, Z_W);
written += writeToFile(buffer);
written += writeToFile("/Range ");
buffer = string.Format(CultureInfo.InvariantCulture,
"[{0} {1} {2} {3}] \n", m_pdf_labrange[0], m_pdf_labrange[1], m_pdf_labrange[2], m_pdf_labrange[3]);
written += writeToFile(buffer);
written += writeToFile(">>] \n");
}
return written;
}