diff options
Diffstat (limited to 'Build/source/libs/poppler/poppler-0.37.0/splash/SplashTypes.h')
-rw-r--r-- | Build/source/libs/poppler/poppler-0.37.0/splash/SplashTypes.h | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/Build/source/libs/poppler/poppler-0.37.0/splash/SplashTypes.h b/Build/source/libs/poppler/poppler-0.37.0/splash/SplashTypes.h new file mode 100644 index 00000000000..5ea816007f8 --- /dev/null +++ b/Build/source/libs/poppler/poppler-0.37.0/splash/SplashTypes.h @@ -0,0 +1,199 @@ +//======================================================================== +// +// SplashTypes.h +// +//======================================================================== + +//======================================================================== +// +// Modified under the Poppler project - http://poppler.freedesktop.org +// +// All changes made under the Poppler project to this file are licensed +// under GPL version 2 or later +// +// Copyright (C) 2006, 2010 Albert Astals Cid <aacid@kde.org> +// Copyright (C) 2008 Tomas Are Haavet <tomasare@gmail.com> +// Copyright (C) 2009, 2011-2013 Thomas Freitag <Thomas.Freitag@alfa.de> +// Copyright (C) 2009 Stefan Thomas <thomas@eload24.com> +// Copyright (C) 2010 William Bader <williambader@hotmail.com> +// +// To see a description of the changes please see the Changelog file that +// came with your tarball or type make ChangeLog if you are building from git +// +//======================================================================== + +#ifndef SPLASHTYPES_H +#define SPLASHTYPES_H + +#include "goo/gtypes.h" + +//------------------------------------------------------------------------ +// coordinates +//------------------------------------------------------------------------ + +#if USE_FIXEDPOINT +#include "goo/FixedPoint.h" +typedef FixedPoint SplashCoord; +#elif USE_FLOAT +typedef float SplashCoord; +#else +typedef double SplashCoord; +#endif + +//------------------------------------------------------------------------ +// antialiasing +//------------------------------------------------------------------------ + +#define splashAASize 4 + +#ifndef SPOT_NCOMPS +#define SPOT_NCOMPS 4 +#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 + splashModeRGB8, // 1 byte per component, 3 bytes per pixel: + // RGBRGB... + splashModeBGR8, // 1 byte per component, 3 bytes per pixel: + // BGRBGR... + splashModeXBGR8 // 1 byte per component, 4 bytes per pixel: + // XBGRXBGR... +#if SPLASH_CMYK + , + splashModeCMYK8, // 1 byte per component, 4 bytes per pixel: + // CMYKCMYK... + splashModeDeviceN8 // 1 byte per component, + // 4 bytes + n bytes spot colors per pixel: + // CMYKSSSSCMYKSSSS... +#endif +}; + +enum SplashThinLineMode { + splashThinLineDefault, // if SA on: draw solid if requested line width, transformed into + // device space, is less than half a pixel and a shaped line else + splashThinLineSolid, // draw line solid at least with 1 pixel + splashThinLineShape // draw line shaped at least with 1 pixel +}; +// 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 SPOT_NCOMPS+4 +#else +#define splashMaxColorComps 4 +#endif + +typedef Guchar SplashColor[splashMaxColorComps]; +typedef Guchar *SplashColorPtr; + +// 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]; } + +#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]; } + +// DEVICEN8 +static inline Guchar splashDeviceN8C(SplashColorPtr deviceN8) { return deviceN8[0]; } +static inline Guchar splashDeviceN8M(SplashColorPtr deviceN8) { return deviceN8[1]; } +static inline Guchar splashDeviceN8Y(SplashColorPtr deviceN8) { return deviceN8[2]; } +static inline Guchar splashDeviceN8K(SplashColorPtr deviceN8) { return deviceN8[3]; } +static inline Guchar splashDeviceN8S(SplashColorPtr deviceN8, int nSpot) { return deviceN8[4 + nSpot]; } +#endif + +static inline void splashClearColor(SplashColorPtr dest) { + dest[0] = 0; + dest[1] = 0; + dest[2] = 0; +#if SPLASH_CMYK + dest[3] = 0; + for (int i = SPOT_NCOMPS; i < SPOT_NCOMPS + 4; i++) + dest[i] = 0; +#endif +} + +static inline void splashColorCopy(SplashColorPtr dest, SplashColorPtr src) { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; +#if SPLASH_CMYK + dest[3] = src[3]; + for (int i = SPOT_NCOMPS; i < SPOT_NCOMPS + 4; i++) + dest[i] = src[i]; +#endif +} + +static inline void splashColorXor(SplashColorPtr dest, SplashColorPtr src) { + dest[0] ^= src[0]; + dest[1] ^= src[1]; + dest[2] ^= src[2]; +#if SPLASH_CMYK + dest[3] ^= src[3]; + for (int i = SPOT_NCOMPS; i < SPOT_NCOMPS + 4; i++) + dest[i] ^= src[i]; +#endif +} + +//------------------------------------------------------------------------ +// blend functions +//------------------------------------------------------------------------ + +typedef void (*SplashBlendFunc)(SplashColorPtr src, SplashColorPtr dest, + SplashColorPtr blend, SplashColorMode cm); + +//------------------------------------------------------------------------ +// screen parameters +//------------------------------------------------------------------------ + +enum SplashScreenType { + splashScreenDispersed, + splashScreenClustered, + splashScreenStochasticClustered +}; + +struct SplashScreenParams { + SplashScreenType type; + int size; + int dotRadius; + SplashCoord gamma; + SplashCoord blackThreshold; + SplashCoord whiteThreshold; +}; + +//------------------------------------------------------------------------ +// error results +//------------------------------------------------------------------------ + +typedef int SplashError; + + +//------------------------------------------------------------------------ +// image file formats +//------------------------------------------------------------------------ + +enum SplashImageFileFormat { + splashFormatJpeg, + splashFormatPng, + splashFormatTiff, + splashFormatJpegCMYK +}; + +#endif |