mirror of
https://github.com/michaelrsweet/pdfio.git
synced 2025-04-26 02:16:48 +02:00
Don't export color constants since that breaks with DLLs... (Issue #19)
This commit is contained in:
parent
21823fb0d9
commit
e71c1a7e5e
@ -20,22 +20,6 @@
|
|||||||
#endif // M_PI
|
#endif // M_PI
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Global constants...
|
|
||||||
//
|
|
||||||
|
|
||||||
const double pdfioAdobeRGBGamma = 2.2;
|
|
||||||
const double pdfioAdobeRGBMatrix[3][3] = { { 0.57667, 0.18556, 0.18823 }, { 0.29734, 0.62736, 0.07529 }, { 0.02703, 0.07069, 0.99134 } };
|
|
||||||
const double pdfioAdobeRGBWhitePoint[3] = { 0.9505, 1.0, 1.0890 };
|
|
||||||
const double pdfioDisplayP3Gamma = 2.2;
|
|
||||||
const double pdfioDisplayP3Matrix[3][3] = { { 0.48657, 0.26567, 0.19822 }, {
|
|
||||||
0.22897, 0.69174, 0.07929 }, { 0.00000, 0.04511, 1.04394 } };
|
|
||||||
const double pdfioDisplayP3WhitePoint[3] = { 0.9505, 1.0, 1.0890 };
|
|
||||||
const double pdfioSRGBGamma = 2.2;
|
|
||||||
const double pdfioSRGBMatrix[3][3] = { { 0.4124, 0.3576, 0.1805 }, { 0.2126, 0.7152, 0.0722 }, { 0.0193, 0.1192, 0.9505 } };
|
|
||||||
const double pdfioSRGBWhitePoint[3] = { 0.9505, 1.0, 1.0890 };
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Local constants...
|
// Local constants...
|
||||||
//
|
//
|
||||||
@ -377,6 +361,41 @@ pdfioArrayCreateColorFromPrimaries(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// 'pdfioArrayCreateColorFromStandard()' - Create a color array for a standard color space.
|
||||||
|
//
|
||||||
|
// This function creates a color array for a standard `PDFIO_CS_` enumerated constant.
|
||||||
|
// The "num_colors" argument must be `1` for grayscale and `3` for RGB color.
|
||||||
|
//
|
||||||
|
|
||||||
|
pdfio_array_t * // O - Color array
|
||||||
|
pdfioArrayCreateColorFromStandard(
|
||||||
|
pdfio_file_t *pdf, // I - PDF file
|
||||||
|
size_t num_colors, // I - Number of colors (1 or 3)
|
||||||
|
pdfio_cs_t cs) // I - Color space enumeration
|
||||||
|
{
|
||||||
|
static const double adobe_matrix[3][3] = { { 0.57667, 0.18556, 0.18823 }, { 0.29734, 0.62736, 0.07529 }, { 0.02703, 0.07069, 0.99134 } };
|
||||||
|
static const double d65_white_point[3] = { 0.9505, 1.0, 1.0890 };
|
||||||
|
static const double p3_d65_matrix[3][3] = { { 0.48657, 0.26567, 0.19822 }, { 0.22897, 0.69174, 0.07929 }, { 0.00000, 0.04511, 1.04394 } };
|
||||||
|
static const double srgb_matrix[3][3] = { { 0.4124, 0.3576, 0.1805 }, { 0.2126, 0.7152, 0.0722 }, { 0.0193, 0.1192, 0.9505 } };
|
||||||
|
|
||||||
|
|
||||||
|
// Range check input...
|
||||||
|
if (!pdf || (num_colors != 1 && num_colors != 3) || cs < PDFIO_CS_ADOBE || cs > PDFIO_CS_SRGB)
|
||||||
|
return (NULL);
|
||||||
|
|
||||||
|
switch (cs)
|
||||||
|
{
|
||||||
|
case PDFIO_CS_ADOBE :
|
||||||
|
return (pdfioArrayCreateColorFromMatrix(pdf, num_colors, 2.2, adobe_matrix, d65_white_point));
|
||||||
|
case PDFIO_CS_P3_D65 :
|
||||||
|
return (pdfioArrayCreateColorFromMatrix(pdf, num_colors, 2.2, p3_d65_matrix, d65_white_point));
|
||||||
|
case PDFIO_CS_SRGB :
|
||||||
|
return (pdfioArrayCreateColorFromMatrix(pdf, num_colors, 2.2, srgb_matrix, d65_white_point));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// 'pdfioContentClip()' - Clip output to the current path.
|
// 'pdfioContentClip()' - Clip output to the current path.
|
||||||
//
|
//
|
||||||
@ -2245,7 +2264,7 @@ copy_jpeg(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
pdfioDictSetNumber(dict, "Width", width);
|
pdfioDictSetNumber(dict, "Width", width);
|
||||||
pdfioDictSetNumber(dict, "Height", height);
|
pdfioDictSetNumber(dict, "Height", height);
|
||||||
pdfioDictSetNumber(dict, "BitsPerComponent", 8);
|
pdfioDictSetNumber(dict, "BitsPerComponent", 8);
|
||||||
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateColorFromMatrix(dict->pdf, num_colors, pdfioSRGBGamma, pdfioSRGBMatrix, pdfioSRGBWhitePoint));
|
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateColorFromStandard(dict->pdf, num_colors, PDFIO_CS_SRGB));
|
||||||
pdfioDictSetName(dict, "Filter", "DCTDecode");
|
pdfioDictSetName(dict, "Filter", "DCTDecode");
|
||||||
|
|
||||||
obj = pdfioFileCreateObj(dict->pdf, dict);
|
obj = pdfioFileCreateObj(dict->pdf, dict);
|
||||||
@ -2330,7 +2349,7 @@ copy_png(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
if (wx != 0.0)
|
if (wx != 0.0)
|
||||||
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateColorFromPrimaries(dict->pdf, color_type == _PDFIO_PNG_TYPE_GRAY ? 1 : 3, gamma, wx, wy, rx, ry, bx, by, gx, gy));
|
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateColorFromPrimaries(dict->pdf, color_type == _PDFIO_PNG_TYPE_GRAY ? 1 : 3, gamma, wx, wy, rx, ry, bx, by, gx, gy));
|
||||||
else
|
else
|
||||||
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateColorFromMatrix(dict->pdf, color_type == _PDFIO_PNG_TYPE_GRAY ? 1 : 3, gamma, pdfioSRGBMatrix, pdfioSRGBWhitePoint));
|
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateColorFromStandard(dict->pdf, color_type == _PDFIO_PNG_TYPE_GRAY ? 1 : 3, PDFIO_CS_SRGB));
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = pdfioFileCreateObj(dict->pdf, dict);
|
obj = pdfioFileCreateObj(dict->pdf, dict);
|
||||||
|
@ -30,6 +30,13 @@ extern "C" {
|
|||||||
// Types and constants...
|
// Types and constants...
|
||||||
//
|
//
|
||||||
|
|
||||||
|
typedef enum pdfio_cs_e // Standard color spaces
|
||||||
|
{
|
||||||
|
PDFIO_CS_ADOBE, // AdobeRGB 1998
|
||||||
|
PDFIO_CS_P3_D65, // Display P3
|
||||||
|
PDFIO_CS_SRGB // sRGB
|
||||||
|
} pdfio_cs_t;
|
||||||
|
|
||||||
typedef enum pdfio_linecap_e // Line capping modes
|
typedef enum pdfio_linecap_e // Line capping modes
|
||||||
{
|
{
|
||||||
PDFIO_LINECAP_BUTT, // Butt ends
|
PDFIO_LINECAP_BUTT, // Butt ends
|
||||||
@ -59,25 +66,6 @@ typedef enum pdfio_textrendering_e // Text rendering modes
|
|||||||
PDFIO_TEXTRENDERING_TEXT_PATH // Add text to path (invisible)
|
PDFIO_TEXTRENDERING_TEXT_PATH // Add text to path (invisible)
|
||||||
} pdfio_textrendering_t;
|
} pdfio_textrendering_t;
|
||||||
|
|
||||||
extern const double pdfioAdobeRGBGamma _PDFIO_PUBLIC;
|
|
||||||
// AdobeRGB gamma
|
|
||||||
extern const double pdfioAdobeRGBMatrix[3][3] _PDFIO_PUBLIC;
|
|
||||||
// AdobeRGB matrix
|
|
||||||
extern const double pdfioAdobeRGBWhitePoint[3] _PDFIO_PUBLIC;
|
|
||||||
// AdobeRGB white point
|
|
||||||
extern const double pdfioDisplayP3Gamma _PDFIO_PUBLIC;
|
|
||||||
// Display P3 gamma
|
|
||||||
extern const double pdfioDisplayP3Matrix[3][3] _PDFIO_PUBLIC;
|
|
||||||
// Display P3 matrix
|
|
||||||
extern const double pdfioDisplayP3WhitePoint[3] _PDFIO_PUBLIC;
|
|
||||||
// Display P3 white point
|
|
||||||
extern const double pdfioSRGBGamma _PDFIO_PUBLIC;
|
|
||||||
// sRGB gamma
|
|
||||||
extern const double pdfioSRGBMatrix[3][3] _PDFIO_PUBLIC;
|
|
||||||
// sRGB matrix
|
|
||||||
extern const double pdfioSRGBWhitePoint[3] _PDFIO_PUBLIC;
|
|
||||||
// sRGB white point
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Functions...
|
// Functions...
|
||||||
@ -88,6 +76,7 @@ extern pdfio_array_t *pdfioArrayCreateColorFromICCObj(pdfio_file_t *pdf, pdfio_o
|
|||||||
extern pdfio_array_t *pdfioArrayCreateColorFromMatrix(pdfio_file_t *pdf, size_t num_colors, double gamma, const double matrix[3][3], const double white_point[3]) _PDFIO_PUBLIC;
|
extern pdfio_array_t *pdfioArrayCreateColorFromMatrix(pdfio_file_t *pdf, size_t num_colors, double gamma, const double matrix[3][3], const double white_point[3]) _PDFIO_PUBLIC;
|
||||||
extern pdfio_array_t *pdfioArrayCreateColorFromPalette(pdfio_file_t *pdf, size_t num_colors, const unsigned char *colors) _PDFIO_PUBLIC;
|
extern pdfio_array_t *pdfioArrayCreateColorFromPalette(pdfio_file_t *pdf, size_t num_colors, const unsigned char *colors) _PDFIO_PUBLIC;
|
||||||
extern pdfio_array_t *pdfioArrayCreateColorFromPrimaries(pdfio_file_t *pdf, size_t num_colors, double gamma, double wx, double wy, double rx, double ry, double gx, double gy, double bx, double by) _PDFIO_PUBLIC;
|
extern pdfio_array_t *pdfioArrayCreateColorFromPrimaries(pdfio_file_t *pdf, size_t num_colors, double gamma, double wx, double wy, double rx, double ry, double gx, double gy, double bx, double by) _PDFIO_PUBLIC;
|
||||||
|
extern pdfio_array_t *pdfioArrayCreateColorFromStandard(pdfio_file_t *pdf, size_t num_colors, pdfio_cs_t cs);
|
||||||
|
|
||||||
// PDF content drawing functions...
|
// PDF content drawing functions...
|
||||||
extern bool pdfioContentClip(pdfio_stream_t *st, bool even_odd) _PDFIO_PUBLIC;
|
extern bool pdfioContentClip(pdfio_stream_t *st, bool even_odd) _PDFIO_PUBLIC;
|
||||||
|
10
pdfio1.def
10
pdfio1.def
@ -4,9 +4,6 @@ EXPORTS
|
|||||||
_pdfioTokenInit
|
_pdfioTokenInit
|
||||||
_pdfioValueDebug
|
_pdfioValueDebug
|
||||||
_pdfioValueRead
|
_pdfioValueRead
|
||||||
pdfioAdobeRGBGamma
|
|
||||||
pdfioAdobeRGBMatrix
|
|
||||||
pdfioAdobeRGBWhitePoint
|
|
||||||
pdfioArrayAppendArray
|
pdfioArrayAppendArray
|
||||||
pdfioArrayAppendBinary
|
pdfioArrayAppendBinary
|
||||||
pdfioArrayAppendBoolean
|
pdfioArrayAppendBoolean
|
||||||
@ -22,6 +19,7 @@ pdfioArrayCreateColorFromICCObj
|
|||||||
pdfioArrayCreateColorFromMatrix
|
pdfioArrayCreateColorFromMatrix
|
||||||
pdfioArrayCreateColorFromPalette
|
pdfioArrayCreateColorFromPalette
|
||||||
pdfioArrayCreateColorFromPrimaries
|
pdfioArrayCreateColorFromPrimaries
|
||||||
|
pdfioArrayCreateColorFromStandard
|
||||||
pdfioArrayGetArray
|
pdfioArrayGetArray
|
||||||
pdfioArrayGetBinary
|
pdfioArrayGetBinary
|
||||||
pdfioArrayGetBoolean
|
pdfioArrayGetBoolean
|
||||||
@ -110,9 +108,6 @@ pdfioDictSetObj
|
|||||||
pdfioDictSetRect
|
pdfioDictSetRect
|
||||||
pdfioDictSetString
|
pdfioDictSetString
|
||||||
pdfioDictSetStringf
|
pdfioDictSetStringf
|
||||||
pdfioDisplayP3Gamma
|
|
||||||
pdfioDisplayP3Matrix
|
|
||||||
pdfioDisplayP3WhitePoint
|
|
||||||
pdfioFileClose
|
pdfioFileClose
|
||||||
pdfioFileCreate
|
pdfioFileCreate
|
||||||
pdfioFileCreateArrayObj
|
pdfioFileCreateArrayObj
|
||||||
@ -163,9 +158,6 @@ pdfioPageCopy
|
|||||||
pdfioPageDictAddColorSpace
|
pdfioPageDictAddColorSpace
|
||||||
pdfioPageDictAddFont
|
pdfioPageDictAddFont
|
||||||
pdfioPageDictAddImage
|
pdfioPageDictAddImage
|
||||||
pdfioSRGBGamma
|
|
||||||
pdfioSRGBMatrix
|
|
||||||
pdfioSRGBWhitePoint
|
|
||||||
pdfioStreamClose
|
pdfioStreamClose
|
||||||
pdfioStreamConsume
|
pdfioStreamConsume
|
||||||
pdfioStreamGetToken
|
pdfioStreamGetToken
|
||||||
|
18
testpdfio.c
18
testpdfio.c
@ -76,6 +76,12 @@ main(int argc, // I - Number of command-line arguments
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#if _WIN32
|
||||||
|
// Windows puts executables in Platform/Configuration subdirs...
|
||||||
|
if (!_access("../../testfiles", 0))
|
||||||
|
_chdir("../..");
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
do_unit_tests();
|
do_unit_tests();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1079,8 +1085,8 @@ write_color_test(pdfio_file_t *pdf, // I - PDF file
|
|||||||
else
|
else
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
fputs("pdfioArrayCreateColorFromMatrix(AdobeRGB): ", stdout);
|
fputs("pdfioArrayCreateColorFromStandard(AdobeRGB): ", stdout);
|
||||||
if ((cs = pdfioArrayCreateColorFromMatrix(pdf, 3, pdfioAdobeRGBGamma, pdfioAdobeRGBMatrix, pdfioAdobeRGBWhitePoint)) != NULL)
|
if ((cs = pdfioArrayCreateColorFromStandard(pdf, 3, PDFIO_CS_ADOBE)) != NULL)
|
||||||
puts("PASS");
|
puts("PASS");
|
||||||
else
|
else
|
||||||
return (1);
|
return (1);
|
||||||
@ -1091,8 +1097,8 @@ write_color_test(pdfio_file_t *pdf, // I - PDF file
|
|||||||
else
|
else
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
fputs("pdfioArrayCreateColorFromMatrix(DisplayP3): ", stdout);
|
fputs("pdfioArrayCreateColorFromStandard(DisplayP3): ", stdout);
|
||||||
if ((cs = pdfioArrayCreateColorFromMatrix(pdf, 3, pdfioDisplayP3Gamma, pdfioDisplayP3Matrix, pdfioDisplayP3WhitePoint)) != NULL)
|
if ((cs = pdfioArrayCreateColorFromStandard(pdf, 3, PDFIO_CS_P3_D65)) != NULL)
|
||||||
puts("PASS");
|
puts("PASS");
|
||||||
else
|
else
|
||||||
return (1);
|
return (1);
|
||||||
@ -1115,8 +1121,8 @@ write_color_test(pdfio_file_t *pdf, // I - PDF file
|
|||||||
else
|
else
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
fputs("pdfioArrayCreateColorFromMatrix(sRGB): ", stdout);
|
fputs("pdfioArrayCreateColorFromStandard(sRGB): ", stdout);
|
||||||
if ((cs = pdfioArrayCreateColorFromMatrix(pdf, 3, pdfioSRGBGamma, pdfioSRGBMatrix, pdfioSRGBWhitePoint)) != NULL)
|
if ((cs = pdfioArrayCreateColorFromStandard(pdf, 3, PDFIO_CS_SRGB)) != NULL)
|
||||||
puts("PASS");
|
puts("PASS");
|
||||||
else
|
else
|
||||||
return (1);
|
return (1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user