📄 gfxstate.h
字号:
//========================================================================//// GfxState.h//// Copyright 1996-2003 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;class GfxShading;//------------------------------------------------------------------------// GfxBlendMode//------------------------------------------------------------------------enum GfxBlendMode { gfxBlendNormal, gfxBlendMultiply, gfxBlendScreen, gfxBlendOverlay, gfxBlendDarken, gfxBlendLighten, gfxBlendColorDodge, gfxBlendColorBurn, gfxBlendHardLight, gfxBlendSoftLight, gfxBlendDifference, gfxBlendExclusion, gfxBlendHue, gfxBlendSaturation, gfxBlendColor, gfxBlendLuminosity};//------------------------------------------------------------------------// GfxColorComp//------------------------------------------------------------------------// 16.16 fixed point color componenttypedef int GfxColorComp;#define gfxColorComp1 0x10000static inline GfxColorComp dblToCol(double x) { return (GfxColorComp)(x * gfxColorComp1);}static inline double colToDbl(GfxColorComp x) { return (double)x / (double)gfxColorComp1;}static inline GfxColorComp byteToCol(Guchar x) { // (x / 255) << 16 = (0.0000000100000001... * x) << 16 // = ((x << 8) + (x) + (x >> 8) + ...) << 16 // = (x << 8) + (x) + (x >> 7) // [for rounding] return (GfxColorComp)((x << 8) + x + (x >> 7));}static inline Guchar colToByte(GfxColorComp x) { // 255 * x + 0.5 = 256 * x - x + 0x8000 return (Guchar)(((x << 8) - x + 0x8000) >> 16);}//------------------------------------------------------------------------// GfxColor//------------------------------------------------------------------------#define gfxColorMaxComps funcMaxOutputsstruct GfxColor { GfxColorComp c[gfxColorMaxComps];};//------------------------------------------------------------------------// GfxGray//------------------------------------------------------------------------typedef GfxColorComp GfxGray;//------------------------------------------------------------------------// GfxRGB//------------------------------------------------------------------------struct GfxRGB { GfxColorComp r, g, b;};//------------------------------------------------------------------------// GfxCMYK//------------------------------------------------------------------------struct GfxCMYK { GfxColorComp 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, GfxGray *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; // Get this color space's default color. virtual void getDefaultColor(GfxColor *color) = 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); // Returns true if painting operations in this color space never // mark the page (e.g., the "None" colorant). virtual GBool isNonMarking() { return gFalse; } // 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, GfxGray *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 1; } virtual void getDefaultColor(GfxColor *color);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, GfxGray *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 1; } virtual void getDefaultColor(GfxColor *color); // 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, GfxGray *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 3; } virtual void getDefaultColor(GfxColor *color);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, GfxGray *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 3; } virtual void getDefaultColor(GfxColor *color); // 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, GfxGray *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 4; } virtual void getDefaultColor(GfxColor *color);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, GfxGray *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return 3; } virtual void getDefaultColor(GfxColor *color); 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, GfxGray *gray); virtual void getRGB(GfxColor *color, GfxRGB *rgb); virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk); virtual int getNComps() { return nComps; } virtual void getDefaultColor(GfxColor *color); 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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -