📄 gfxstate.h
字号:
//========================================================================//// GfxState.h//// Copyright 1996-2002 Glyph & Cog, LLC////========================================================================#ifndef GFXSTATE_H#define GFXSTATE_H#include <aconf.h>#ifdef USE_GCC_PRAGMAS#pragma interface#endif#include "gtypes.h"#include "Object.h"#include "Function.h"class Array;class GfxFont;class PDFRectangle;//------------------------------------------------------------------------// GfxColor//------------------------------------------------------------------------#define gfxColorMaxComps funcMaxOutputsstruct GfxColor { double c[gfxColorMaxComps];};//------------------------------------------------------------------------// GfxRGB//------------------------------------------------------------------------struct GfxRGB { double r, g, b;};//------------------------------------------------------------------------// GfxCMYK//------------------------------------------------------------------------struct GfxCMYK { double c, m, y, k;};//------------------------------------------------------------------------// GfxColorSpace//------------------------------------------------------------------------// NB: The nGfxColorSpaceModes constant and the gfxColorSpaceModeNames// array defined in GfxState.cc must match this enum.enum GfxColorSpaceMode { csDeviceGray, csCalGray, csDeviceRGB, csCalRGB, csDeviceCMYK, csLab, csICCBased, csIndexed, csSeparation, csDeviceN, csPattern};class GfxColorSpace {public: GfxColorSpace(); virtual ~GfxColorSpace(); virtual GfxColorSpace *copy() = 0; virtual GfxColorSpaceMode getMode() = 0; // Construct a color space. Returns NULL if unsuccessful. static GfxColorSpace *parse(Object *csObj); // Convert to gray, RGB, or CMYK. virtual void getGray(GfxColor *color, double *gray) = 0; virtual void getRGB(GfxColor *color, GfxRGB *rgb) = 0; virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk) = 0; // Return the number of color components. virtual int getNComps() = 0; // Return the default ranges for each component, assuming an image // with a max pixel value of <maxImgPixel>. virtual void getDefaultRanges(double *decodeLow, double *decodeRange, int maxImgPixel); // Return the number of color space modes static int getNumColorSpaceModes(); // Return the name of the <idx>th color space mode. static char *getColorSpaceModeName(int idx);private:};//------------------------------------------------------------------------// GfxDeviceGrayColorSpace//------------------------------------------------------------------------class GfxDeviceGrayColorSpace: public GfxColorSpace {public: GfxDeviceGrayColorSpace(); virtual ~GfxDeviceGrayColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csDeviceGray; } virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 1; }private:};//------------------------------------------------------------------------// GfxCalGrayColorSpace//------------------------------------------------------------------------class GfxCalGrayColorSpace: public GfxColorSpace {public: GfxCalGrayColorSpace(); virtual ~GfxCalGrayColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csCalGray; } // Construct a CalGray color space. Returns NULL if unsuccessful. static GfxColorSpace *parse(Array *arr); virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 1; } // CalGray-specific access. double getWhiteX() { return whiteX; } double getWhiteY() { return whiteY; } double getWhiteZ() { return whiteZ; } double getBlackX() { return blackX; } double getBlackY() { return blackY; } double getBlackZ() { return blackZ; } double getGamma() { return gamma; }private: double whiteX, whiteY, whiteZ; // white point double blackX, blackY, blackZ; // black point double gamma; // gamma value};//------------------------------------------------------------------------// GfxDeviceRGBColorSpace//------------------------------------------------------------------------class GfxDeviceRGBColorSpace: public GfxColorSpace {public: GfxDeviceRGBColorSpace(); virtual ~GfxDeviceRGBColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csDeviceRGB; } virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 3; }private:};//------------------------------------------------------------------------// GfxCalRGBColorSpace//------------------------------------------------------------------------class GfxCalRGBColorSpace: public GfxColorSpace {public: GfxCalRGBColorSpace(); virtual ~GfxCalRGBColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csCalRGB; } // Construct a CalRGB color space. Returns NULL if unsuccessful. static GfxColorSpace *parse(Array *arr); virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 3; } // CalRGB-specific access. double getWhiteX() { return whiteX; } double getWhiteY() { return whiteY; } double getWhiteZ() { return whiteZ; } double getBlackX() { return blackX; } double getBlackY() { return blackY; } double getBlackZ() { return blackZ; } double getGammaR() { return gammaR; } double getGammaG() { return gammaG; } double getGammaB() { return gammaB; } double *getMatrix() { return mat; }private: double whiteX, whiteY, whiteZ; // white point double blackX, blackY, blackZ; // black point double gammaR, gammaG, gammaB; // gamma values double mat[9]; // ABC -> XYZ transform matrix};//------------------------------------------------------------------------// GfxDeviceCMYKColorSpace//------------------------------------------------------------------------class GfxDeviceCMYKColorSpace: public GfxColorSpace {public: GfxDeviceCMYKColorSpace(); virtual ~GfxDeviceCMYKColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csDeviceCMYK; } virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 4; }private:};//------------------------------------------------------------------------// GfxLabColorSpace//------------------------------------------------------------------------class GfxLabColorSpace: public GfxColorSpace {public: GfxLabColorSpace(); virtual ~GfxLabColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csLab; } // Construct a Lab color space. Returns NULL if unsuccessful. static GfxColorSpace *parse(Array *arr); virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 3; } virtual void getDefaultRanges(double *decodeLow, double *decodeRange, int maxImgPixel); // Lab-specific access. double getWhiteX() { return whiteX; } double getWhiteY() { return whiteY; } double getWhiteZ() { return whiteZ; } double getBlackX() { return blackX; } double getBlackY() { return blackY; } double getBlackZ() { return blackZ; } double getAMin() { return aMin; } double getAMax() { return aMax; } double getBMin() { return bMin; } double getBMax() { return bMax; }private: double whiteX, whiteY, whiteZ; // white point double blackX, blackY, blackZ; // black point double aMin, aMax, bMin, bMax; // range for the a and b components double kr, kg, kb; // gamut mapping mulitpliers};//------------------------------------------------------------------------// GfxICCBasedColorSpace//------------------------------------------------------------------------class GfxICCBasedColorSpace: public GfxColorSpace {public: GfxICCBasedColorSpace(int nCompsA, GfxColorSpace *altA, Ref *iccProfileStreamA); virtual ~GfxICCBasedColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csICCBased; } // Construct an ICCBased color space. Returns NULL if unsuccessful. static GfxColorSpace *parse(Array *arr); virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return nComps; } virtual void getDefaultRanges(double *decodeLow, double *decodeRange, int maxImgPixel); // ICCBased-specific access. GfxColorSpace *getAlt() { return alt; }private: int nComps; // number of color components (1, 3, or 4) GfxColorSpace *alt; // alternate color space double rangeMin[4]; // min values for each component double rangeMax[4]; // max values for each component Ref iccProfileStream; // the ICC profile};//------------------------------------------------------------------------// GfxIndexedColorSpace//------------------------------------------------------------------------class GfxIndexedColorSpace: public GfxColorSpace {public: GfxIndexedColorSpace(GfxColorSpace *baseA, int indexHighA); virtual ~GfxIndexedColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csIndexed; } // Construct a Lab color space. Returns NULL if unsuccessful. static GfxColorSpace *parse(Array *arr); virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 1; } virtual void getDefaultRanges(double *decodeLow, double *decodeRange, int maxImgPixel); // Indexed-specific access. GfxColorSpace *getBase() { return base; } int getIndexHigh() { return indexHigh; } Guchar *getLookup() { return lookup; } GfxColor *mapColorToBase(GfxColor *color, GfxColor *baseColor);private: GfxColorSpace *base; // base color space int indexHigh; // max pixel value Guchar *lookup; // lookup table};//------------------------------------------------------------------------// GfxSeparationColorSpace//------------------------------------------------------------------------class GfxSeparationColorSpace: public GfxColorSpace {public: GfxSeparationColorSpace(GString *nameA, GfxColorSpace *altA, Function *funcA); virtual ~GfxSeparationColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csSeparation; } // Construct a Separation color space. Returns NULL if unsuccessful. static GfxColorSpace *parse(Array *arr); virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 1; } // Separation-specific access. GString *getName() { return name; } GfxColorSpace *getAlt() { return alt; } Function *getFunc() { return func; }private: GString *name; // colorant name GfxColorSpace *alt; // alternate color space Function *func; // tint transform (into alternate color space)};//------------------------------------------------------------------------// GfxDeviceNColorSpace//------------------------------------------------------------------------class GfxDeviceNColorSpace: public GfxColorSpace {public: GfxDeviceNColorSpace(int nComps, GfxColorSpace *alt, Function *func); virtual ~GfxDeviceNColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csDeviceN; } // Construct a DeviceN color space. Returns NULL if unsuccessful. static GfxColorSpace *parse(Array *arr); virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return nComps; } // DeviceN-specific access. GString *getColorantName(int i) { return names[i]; } GfxColorSpace *getAlt() { return alt; } Function *getTintTransformFunc() { return func; }private: int nComps; // number of components GString // colorant names *names[gfxColorMaxComps]; GfxColorSpace *alt; // alternate color space Function *func; // tint transform (into alternate color space) };//------------------------------------------------------------------------// GfxPatternColorSpace//------------------------------------------------------------------------class GfxPatternColorSpace: public GfxColorSpace {public: GfxPatternColorSpace(GfxColorSpace *underA); virtual ~GfxPatternColorSpace(); virtual GfxColorSpace *copy(); virtual GfxColorSpaceMode getMode() { return csPattern; } // Construct a Pattern color space. Returns NULL if unsuccessful. static GfxColorSpace *parse(Array *arr); virtual void getGray(GfxColor *color, double *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 0; } // Pattern-specific access. GfxColorSpace *getUnder() { return under; }private: GfxColorSpace *under; // underlying color space (for uncolored // patterns)};//------------------------------------------------------------------------// GfxPattern//------------------------------------------------------------------------class GfxPattern {public: GfxPattern(int typeA); virtual ~GfxPattern(); static GfxPattern *parse(Object *obj); virtual GfxPattern *copy() = 0; int getType() { return type; }private: int type;};//------------------------------------------------------------------------// GfxTilingPattern//------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -