Spaces:
Running
Running
File size: 4,360 Bytes
5cee033 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
//========================================================================
//
// 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, 2015 Thomas Freitag <[email protected]>
// Copyright (C) 2017 Adrian Johnson <[email protected]>
// Copyright (C) 2018, 2021, 2022 Albert Astals Cid <[email protected]>
//
// 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
#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, bool vectorAntialias, SplashScreenParams *screenParams);
SplashState(int width, int height, bool vectorAntialias, SplashScreen *screenA);
// Copy a state object.
SplashState *copy() const { return new SplashState(this); }
~SplashState();
SplashState(const SplashState &) = delete;
SplashState &operator=(const SplashState &) = delete;
// 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.
void setLineDash(std::vector<SplashCoord> &&lineDashA, SplashCoord lineDashPhaseA);
// Set the soft mask bitmap.
void setSoftMask(SplashBitmap *softMaskA);
// Set the overprint parametes.
void setFillOverprint(bool fillOverprintA) { fillOverprint = fillOverprintA; }
void setStrokeOverprint(bool strokeOverprintA) { strokeOverprint = strokeOverprintA; }
void setOverprintMode(int overprintModeA) { overprintMode = overprintModeA; }
// Set the transfer function.
void setTransfer(unsigned char *red, unsigned char *green, unsigned char *blue, unsigned char *gray);
private:
explicit SplashState(const SplashState *state);
SplashCoord matrix[6];
SplashPattern *strokePattern;
SplashPattern *fillPattern;
SplashScreen *screen;
SplashBlendFunc blendFunc;
SplashCoord strokeAlpha;
SplashCoord fillAlpha;
bool multiplyPatternAlpha;
SplashCoord patternStrokeAlpha;
SplashCoord patternFillAlpha;
SplashCoord lineWidth;
int lineCap;
int lineJoin;
SplashCoord miterLimit;
SplashCoord flatness;
std::vector<SplashCoord> lineDash;
SplashCoord lineDashPhase;
bool strokeAdjust;
SplashClip *clip;
SplashBitmap *softMask;
bool deleteSoftMask;
bool inNonIsolatedGroup;
bool fillOverprint;
bool strokeOverprint;
int overprintMode;
unsigned char rgbTransferR[256], rgbTransferG[256], rgbTransferB[256];
unsigned char grayTransfer[256];
unsigned char cmykTransferC[256], cmykTransferM[256], cmykTransferY[256], cmykTransferK[256];
unsigned char deviceNTransfer[SPOT_NCOMPS + 4][256];
unsigned int overprintMask;
bool overprintAdditive;
SplashState *next; // used by Splash class
friend class Splash;
};
#endif
|