poppler/GfxState.cc | 70 +++++++++++++++++++++++++++++++++++++++++++++------- poppler/GfxState.h | 64 ++++++++++------------------------------------- 2 files changed, 75 insertions(+), 59 deletions(-)
New commits: commit f78d3a7ff5ef4b500d76d84ebc45aac3be162dab Author: Albert Astals Cid <[email protected]> Date: Mon May 18 20:44:40 2009 +0200 Move lcms.h include to GfxState.cc, replace lcms typedefs by void * diff --git a/poppler/GfxState.cc b/poppler/GfxState.cc index 1ca3289..8fcc7a0 100644 --- a/poppler/GfxState.cc +++ b/poppler/GfxState.cc @@ -128,6 +128,64 @@ static char *gfxColorSpaceModeNames[] = { #define nGfxColorSpaceModes ((sizeof(gfxColorSpaceModeNames) / sizeof(char *))) +#ifdef USE_CMS + +#include <lcms.h> + +#define COLOR_PROFILE_DIR "/ColorProfiles/" +#define GLOBAL_COLOR_PROFILE_DIR POPPLER_DATADIR COLOR_PROFILE_DIR + +void GfxColorTransform::doTransform(void *in, void *out, unsigned int size) { + cmsDoTransform(transform, in, out, size); +} + +// transformA should be a cmsHTRANSFORM +GfxColorTransform::GfxColorTransform(void *transformA) { + transform = transformA; + refCount = 1; +} + +GfxColorTransform::~GfxColorTransform() { + cmsDeleteTransform(transform); +} + +void GfxColorTransform::ref() { + refCount++; +} + +unsigned int GfxColorTransform::unref() { + return --refCount; +} + +static cmsHPROFILE RGBProfile = NULL; +static GooString *displayProfileName = NULL; // display profile file Name +static cmsHPROFILE displayProfile = NULL; // display profile +static unsigned int displayPixelType = 0; +static GfxColorTransform *XYZ2DisplayTransform = NULL; + +// convert color space signature to cmsColor type +static unsigned int getCMSColorSpaceType(icColorSpaceSignature cs); +static unsigned int getCMSNChannels(icColorSpaceSignature cs); +static cmsHPROFILE loadColorProfile(const char *fileName); + +void GfxColorSpace::setDisplayProfile(void *displayProfileA) { + displayProfile = displayProfileA; +} + +void GfxColorSpace::setDisplayProfileName(GooString *name) { + displayProfileName = name->copy(); +} + +cmsHPROFILE GfxColorSpace::getRGBProfile() { + return RGBProfile; +} + +cmsHPROFILE GfxColorSpace::getDisplayProfile() { + return displayProfile; +} + +#endif + //------------------------------------------------------------------------ // GfxColorSpace //------------------------------------------------------------------------ @@ -227,13 +285,7 @@ void GfxColorSpace::getRGBLine(Guchar *in, unsigned int *out, int length) { } #ifdef USE_CMS -cmsHPROFILE GfxColorSpace::RGBProfile = NULL; -cmsHPROFILE GfxColorSpace::displayProfile = NULL; -GooString *GfxColorSpace::displayProfileName = NULL; -unsigned int GfxColorSpace::displayPixelType = 0; -GfxColorTransform *GfxColorSpace::XYZ2DisplayTransform = NULL; - -cmsHPROFILE GfxColorSpace::loadColorProfile(const char *fileName) +cmsHPROFILE loadColorProfile(const char *fileName) { cmsHPROFILE hp = NULL; FILE *fp; @@ -324,7 +376,7 @@ int GfxColorSpace::setupColorProfiles() return 0; } -unsigned int GfxColorSpace::getCMSColorSpaceType(icColorSpaceSignature cs) +unsigned int getCMSColorSpaceType(icColorSpaceSignature cs) { switch (cs) { case icSigXYZData: @@ -380,7 +432,7 @@ unsigned int GfxColorSpace::getCMSColorSpaceType(icColorSpaceSignature cs) return PT_RGB; } -unsigned int GfxColorSpace::getCMSNChannels(icColorSpaceSignature cs) +unsigned int getCMSNChannels(icColorSpaceSignature cs) { switch (cs) { case icSigXYZData: diff --git a/poppler/GfxState.h b/poppler/GfxState.h index ad5fae6..09abc2f 100644 --- a/poppler/GfxState.h +++ b/poppler/GfxState.h @@ -33,9 +33,6 @@ #include "goo/gtypes.h" #include "Object.h" #include "Function.h" -#ifdef USE_CMS -#include "lcms.h" -#endif class Array; class GfxFont; @@ -155,36 +152,20 @@ enum GfxColorSpaceMode { csPattern }; -#ifdef USE_CMS - -#define COLOR_PROFILE_DIR "/ColorProfiles/" -#define GLOBAL_COLOR_PROFILE_DIR POPPLER_DATADIR COLOR_PROFILE_DIR - // wrapper of cmsHTRANSFORM to copy class GfxColorTransform { public: - void doTransform(void *in, void *out, unsigned int size) { - cmsDoTransform(transform, in, out, size); - } - GfxColorTransform(cmsHTRANSFORM transformA) { - transform = transformA; - refCount = 1; - } - ~GfxColorTransform() { - cmsDeleteTransform(transform); - } - void ref() { - refCount++; - } - unsigned int unref() { - return --refCount; - } + void doTransform(void *in, void *out, unsigned int size); + // transformA should be a cmsHTRANSFORM + GfxColorTransform(void *transformA); + ~GfxColorTransform(); + void ref(); + unsigned int unref(); private: GfxColorTransform() {} - cmsHTRANSFORM transform; + void *transform; unsigned int refCount; }; -#endif class GfxColorSpace { public: @@ -225,32 +206,15 @@ public: // Return the name of the <idx>th color space mode. static char *getColorSpaceModeName(int idx); -private: #ifdef USE_CMS -protected: - static cmsHPROFILE RGBProfile; - static GooString *displayProfileName; // display profile file Name - static cmsHPROFILE displayProfile; // display profile - static unsigned int displayPixelType; - static GfxColorTransform *XYZ2DisplayTransform; - // convert color space signature to cmsColor type - static unsigned int getCMSColorSpaceType(icColorSpaceSignature cs); - static unsigned int getCMSNChannels(icColorSpaceSignature cs); - static cmsHPROFILE loadColorProfile(const char *fileName); -public: static int setupColorProfiles(); - static void setDisplayProfile(cmsHPROFILE displayProfileA) { - displayProfile = displayProfileA; - } - static void setDisplayProfileName(GooString *name) { - displayProfileName = name->copy(); - } - static cmsHPROFILE getRGBProfile() { - return RGBProfile; - } - static cmsHPROFILE getDisplayProfile() { - return displayProfile; - } + // displayProfileA should be a cmsHPROFILE + static void setDisplayProfile(void *displayProfileA); + static void setDisplayProfileName(GooString *name); + // result will be a cmsHPROFILE + static void *getRGBProfile(); + // result will be a cmsHPROFILE + static void *getDisplayProfile(); #endif }; _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
