blob: 13d54788a99d9485e84f1058829f0c869a5851b2 [file] [log] [blame]
//========================================================================
//
// SplashState.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) 2011, 2012 Thomas Freitag <Thomas.Freitag@alfa.de>
//
// 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 SPLASHSTATE_H
#define SPLASHSTATE_H
#ifdef USE_GCC_PRAGMAS
#pragma interface
#endif
#include "SplashTypes.h"
class SplashPattern;
class SplashScreen;
class SplashClip;
class SplashBitmap;
//------------------------------------------------------------------------
// line cap values
//------------------------------------------------------------------------
#define splashLineCapButt 0
#define splashLineCapRound 1
#define splashLineCapProjecting 2
//------------------------------------------------------------------------
// line join values
//------------------------------------------------------------------------
#define splashLineJoinMiter 0
#define splashLineJoinRound 1
#define splashLineJoinBevel 2
//------------------------------------------------------------------------
// SplashState
//------------------------------------------------------------------------
class SplashState {
public:
// Create a new state object, initialized with default settings.
SplashState(int width, int height, GBool vectorAntialias,
SplashScreenParams *screenParams);
SplashState(int width, int height, GBool vectorAntialias,
SplashScreen *screenA);
// Copy a state object.
SplashState *copy() { return new SplashState(this); }
~SplashState();
// Set the stroke pattern. This does not copy <strokePatternA>.
void setStrokePattern(SplashPattern *strokePatternA);
// Set the fill pattern. This does not copy <fillPatternA>.
void setFillPattern(SplashPattern *fillPatternA);
// Set the screen. This does not copy <screenA>.
void setScreen(SplashScreen *screenA);
// Set the line dash pattern. This copies the <lineDashA> array.
void setLineDash(SplashCoord *lineDashA, int lineDashLengthA,
SplashCoord lineDashPhaseA);
// Set the soft mask bitmap.
void setSoftMask(SplashBitmap *softMaskA);
// Set the overprint parametes.
void setFillOverprint(GBool fillOverprintA) { fillOverprint = fillOverprintA; }
void setStrokeOverprint(GBool strokeOverprintA) { strokeOverprint = strokeOverprintA; }
void setOverprintMode(int overprintModeA) { overprintMode = overprintModeA; }
// Set the transfer function.
void setTransfer(Guchar *red, Guchar *green, Guchar *blue, Guchar *gray);
private:
SplashState(SplashState *state);
SplashCoord matrix[6];
SplashPattern *strokePattern;
SplashPattern *fillPattern;
SplashScreen *screen;
SplashBlendFunc blendFunc;
SplashCoord strokeAlpha;
SplashCoord fillAlpha;
SplashCoord lineWidth;
int lineCap;
int lineJoin;
SplashCoord miterLimit;
SplashCoord flatness;
SplashCoord *lineDash;
int lineDashLength;
SplashCoord lineDashPhase;
GBool strokeAdjust;
SplashClip *clip;
SplashBitmap *softMask;
GBool deleteSoftMask;
GBool inNonIsolatedGroup;
GBool fillOverprint;
GBool strokeOverprint;
int overprintMode;
Guchar rgbTransferR[256],
rgbTransferG[256],
rgbTransferB[256];
Guchar grayTransfer[256];
#if SPLASH_CMYK
Guchar cmykTransferC[256],
cmykTransferM[256],
cmykTransferY[256],
cmykTransferK[256];
Guchar deviceNTransfer[SPOT_NCOMPS+4][256];
#endif
Guint overprintMask;
GBool overprintAdditive;
SplashState *next; // used by Splash class
friend class Splash;
};
#endif