//======================================================================== // // SplashTypes.h // //======================================================================== #ifndef SPLASHTYPES_H #define SPLASHTYPES_H #include "goo/gtypes.h" //------------------------------------------------------------------------ // coordinates //------------------------------------------------------------------------ #if USE_FIXEDPOINT #include "goo/FixedPoint.h" typedef FixedPoint SplashCoord; #else typedef double SplashCoord; #endif //------------------------------------------------------------------------ // colors //------------------------------------------------------------------------ enum SplashColorMode { splashModeMono1, // 1 bit per component, 8 pixels per byte, // MSbit is on the left splashModeMono8, // 1 byte per component, 1 byte per pixel splashModeAMono8, // 1 byte per component, 2 bytes per pixel: // AMAM... splashModeRGB8, // 1 byte per component, 3 bytes per pixel: // RGBRGB... splashModeBGR8, // 1 byte per component, 3 bytes per pixel: // BGRBGR... splashModeARGB8, // 1 byte per component, 4 bytes per pixel: // ARGBARGB... splashModeRGB8Qt, // 1 byte per component, 4 bytes per pixel: // Specially hacked to use in Qt frontends splashModeBGRA8 // 1 byte per component, 4 bytes per pixel: // BGRABGRA... #if SPLASH_CMYK , splashModeCMYK8, // 1 byte per component, 4 bytes per pixel: // CMYKCMYK... splashModeACMYK8 // 1 byte per component, 5 bytes per pixel: // ACMYKACMYK #endif }; // number of components in each color mode // (defined in SplashState.cc) extern int splashColorModeNComps[]; // max number of components in any SplashColor #if SPLASH_CMYK # define splashMaxColorComps 5 #else # define splashMaxColorComps 4 #endif typedef Guchar SplashColor[splashMaxColorComps]; typedef Guchar *SplashColorPtr; // AMono8 static inline Guchar splashAMono8A(SplashColorPtr am8) { return am8[0]; } static inline Guchar splashAMono8M(SplashColorPtr am8) { return am8[1]; } // RGB8 static inline Guchar splashRGB8R(SplashColorPtr rgb8) { return rgb8[0]; } static inline Guchar splashRGB8G(SplashColorPtr rgb8) { return rgb8[1]; } static inline Guchar splashRGB8B(SplashColorPtr rgb8) { return rgb8[2]; } // BGR8 static inline Guchar splashBGR8R(SplashColorPtr bgr8) { return bgr8[2]; } static inline Guchar splashBGR8G(SplashColorPtr bgr8) { return bgr8[1]; } static inline Guchar splashBGR8B(SplashColorPtr bgr8) { return bgr8[0]; } // ARGB8 static inline Guchar splashARGB8A(SplashColorPtr argb8) { return argb8[0]; } static inline Guchar splashARGB8R(SplashColorPtr argb8) { return argb8[1]; } static inline Guchar splashARGB8G(SplashColorPtr argb8) { return argb8[2]; } static inline Guchar splashARGB8B(SplashColorPtr argb8) { return argb8[3]; } // ARGB8 static inline Guchar splashBGRA8A(SplashColorPtr bgra8) { return bgra8[3]; } static inline Guchar splashBGRA8R(SplashColorPtr bgra8) { return bgra8[2]; } static inline Guchar splashBGRA8G(SplashColorPtr bgra8) { return bgra8[1]; } static inline Guchar splashBGRA8B(SplashColorPtr bgra8) { return bgra8[0]; } #if SPLASH_CMYK // CMYK8 static inline Guchar splashCMYK8C(SplashColorPtr cmyk8) { return cmyk8[0]; } static inline Guchar splashCMYK8M(SplashColorPtr cmyk8) { return cmyk8[1]; } static inline Guchar splashCMYK8Y(SplashColorPtr cmyk8) { return cmyk8[2]; } static inline Guchar splashCMYK8K(SplashColorPtr cmyk8) { return cmyk8[3]; } // ACMYK8 static inline Guchar splashACMYK8A(SplashColorPtr acmyk8) { return acmyk8[0]; } static inline Guchar splashACMYK8C(SplashColorPtr acmyk8) { return acmyk8[1]; } static inline Guchar splashACMYK8M(SplashColorPtr acmyk8) { return acmyk8[2]; } static inline Guchar splashACMYK8Y(SplashColorPtr acmyk8) { return acmyk8[3]; } static inline Guchar splashACMYK8K(SplashColorPtr acmyk8) { return acmyk8[4]; } #endif static inline void splashColorCopy(SplashColorPtr dest, SplashColorPtr src) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = src[3]; #if SPLASH_CMYK dest[4] = src[4]; #endif } static inline void splashColorXor(SplashColorPtr dest, SplashColorPtr src) { dest[0] ^= src[0]; dest[1] ^= src[1]; dest[2] ^= src[2]; dest[3] ^= src[3]; #if SPLASH_CMYK dest[4] ^= src[4]; #endif } //------------------------------------------------------------------------ // blend functions //------------------------------------------------------------------------ typedef void (*SplashBlendFunc)(SplashColorPtr src, SplashColorPtr dest, SplashColorPtr blend, SplashColorMode cm); //------------------------------------------------------------------------ // error results //------------------------------------------------------------------------ typedef int SplashError; #endif