mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-15 23:58:12 +08:00
94 lines
2.5 KiB
C++
94 lines
2.5 KiB
C++
#ifndef _SSTATE_H
|
|
#define _SSTATE_H
|
|
|
|
#include "STypes.h"
|
|
#include "SScreen.h"
|
|
|
|
class SPattern;
|
|
class SScreen;
|
|
class SClip;
|
|
class SBitmap;
|
|
|
|
//-------------------------------------------------------------------------------------------------------------------------------
|
|
// Line cap
|
|
//-------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
#define LineCapButt 0
|
|
#define LineCapRound 1
|
|
#define LineCapProjecting 2
|
|
|
|
//-------------------------------------------------------------------------------------------------------------------------------
|
|
// Line join
|
|
//-------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
#define LineJoinMiter 0
|
|
#define LineJoinRound 1
|
|
#define LineJoinBevel 2
|
|
|
|
//-------------------------------------------------------------------------------------------------------------------------------
|
|
// SState
|
|
//-------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
class SState
|
|
{
|
|
public:
|
|
|
|
SState(int nWidth, int nHeight, BOOL bVectorAntialias, SScreenParams *pScreenParams);
|
|
SState(int nWidth, int nHeight, BOOL bVectorAntialias, SScreen *pScreen);
|
|
|
|
SState *Copy()
|
|
{
|
|
return new SState(this);
|
|
}
|
|
|
|
~SState();
|
|
|
|
// Óñòàíàâëèâàåì StrokePattern, íå êîïèðóÿ pStrokePattern.
|
|
void SetStrokePattern(SPattern *pStrokePattern);
|
|
|
|
// Óñòàíàâëèâàåì SPattern, íå êîïèðóÿ pFillPattern.
|
|
void SetFillPattern(SPattern *pFillPattern);
|
|
|
|
// Óñòàíàâëèâàåì SScreen, íå êîïèðóÿ pScreen.
|
|
void SetScreen(SScreen *pScreen);
|
|
|
|
// Óñòàíàâëèâàåì Line dash pattern, êîïèðóÿ ìàññèâ pdLineDash.
|
|
void SetLineDash(double *pLineDash, int nLineDashCount, double dLineDashPhase);
|
|
|
|
// Óñòàíàâëèâàåì SoftMask.
|
|
void SetSoftMask(SBitmap *pSoftMask);
|
|
|
|
private:
|
|
|
|
SState(SState *pState);
|
|
|
|
private:
|
|
|
|
double m_arrdMatrix[6];
|
|
SPattern *m_pStrokePattern;
|
|
SPattern *m_pFillPattern;
|
|
SScreen *m_pScreen;
|
|
SBlendFunc m_pBlendFunction;
|
|
double m_dStrokeAlpha;
|
|
double m_dFillAlpha;
|
|
double m_dLineWidth;
|
|
int m_nLineCap;
|
|
int m_nLineJoin;
|
|
double m_dMiterLimit;
|
|
double m_dFlatness;
|
|
double *m_pdLineDash;
|
|
int m_nLineDashCount;
|
|
double m_dLineDashPhase;
|
|
BOOL m_bStrokeAdjust;
|
|
SClip *m_pClip;
|
|
SBitmap *m_pSoftMask;
|
|
BOOL m_bDeleteSoftMask;
|
|
BOOL m_bInNonIsolatedGroup;
|
|
|
|
SState *m_pNext;
|
|
|
|
friend class SImage;
|
|
};
|
|
|
|
#endif /* _SSTATE_H */
|