blob: 898ea01e462e82a7ee7710569c6441c481686590 [file] [log] [blame]
// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#ifndef XFA_FDE_FDE_BRUSH_H_
#define XFA_FDE_FDE_BRUSH_H_
#include "core/include/fxcrt/fx_system.h"
#include "core/include/fxge/fx_dib.h"
class IFDE_Image;
#define FDE_BRUSHTYPE_Unknown -1
#define FDE_BRUSHTYPE_Solid 0
#define FDE_BRUSHTYPE_Hatch 1
#define FDE_BRUSHTYPE_Texture 2
#define FDE_BRUSHTYPE_LinearGradient 3
#define FDE_BRUSHTYPE_MAX 3
#define FDE_WRAPMODE_Tile 0
#define FDE_WRAPMODE_TileFlipX 1
#define FDE_WRAPMODE_TileFlipY 2
#define FDE_WRAPMODE_TileFlipXY 3
#define FDE_WRAPMODE_Clamp 4
struct FDE_GRADIENTCOLOR {
FX_FLOAT pos;
FX_ARGB color;
};
typedef CFX_ArrayTemplate<FDE_GRADIENTCOLOR> CFDE_GradientColors;
class IFDE_Brush {
public:
static IFDE_Brush* Create(int32_t iType);
virtual ~IFDE_Brush() {}
virtual void Release() = 0;
virtual int32_t GetType() const = 0;
};
class IFDE_SolidBrush : public IFDE_Brush {
public:
virtual FX_ARGB GetColor() const = 0;
virtual void SetColor(FX_ARGB color) = 0;
virtual const CFX_Matrix& GetMatrix() const = 0;
virtual void ResetMatrix() = 0;
virtual void TranslateMatrix(FX_FLOAT dx, FX_FLOAT dy) = 0;
virtual void RotateMatrix(FX_FLOAT fRadian) = 0;
virtual void ScaleMatrix(FX_FLOAT sx, FX_FLOAT sy) = 0;
virtual void ConcatMatrix(const CFX_Matrix& matrix) = 0;
virtual void SetMatrix(const CFX_Matrix& matrix) = 0;
};
#define FDE_HATCHSTYLE_Horizontal 0
#define FDE_HATCHSTYLE_Vertical 1
#define FDE_HATCHSTYLE_ForwardDiagonal 2
#define FDE_HATCHSTYLE_BackwardDiagonal 3
#define FDE_HATCHSTYLE_Cross 4
#define FDE_HATCHSTYLE_DiagonalCross 5
#define FDE_HATCHSTYLE_05Percent 6
#define FDE_HATCHSTYLE_10Percent 7
#define FDE_HATCHSTYLE_20Percent 8
#define FDE_HATCHSTYLE_25Percent 9
#define FDE_HATCHSTYLE_30Percent 10
#define FDE_HATCHSTYLE_40Percent 11
#define FDE_HATCHSTYLE_50Percent 12
#define FDE_HATCHSTYLE_60Percent 13
#define FDE_HATCHSTYLE_70Percent 14
#define FDE_HATCHSTYLE_75Percent 15
#define FDE_HATCHSTYLE_80Percent 16
#define FDE_HATCHSTYLE_90Percent 17
#define FDE_HATCHSTYLE_LightDownwardDiagonal 18
#define FDE_HATCHSTYLE_LightUpwardDiagonal 19
#define FDE_HATCHSTYLE_DarkDownwardDiagonal 20
#define FDE_HATCHSTYLE_DarkUpwardDiagonal 21
#define FDE_HATCHSTYLE_WideDownwardDiagonal 22
#define FDE_HATCHSTYLE_WideUpwardDiagonal 23
#define FDE_HATCHSTYLE_LightVertical 24
#define FDE_HATCHSTYLE_LightHorizontal 25
#define FDE_HATCHSTYLE_NarrowVertical 26
#define FDE_HATCHSTYLE_NarrowHorizontal 27
#define FDE_HATCHSTYLE_DarkVertical 28
#define FDE_HATCHSTYLE_DarkHorizontal 29
#define FDE_HATCHSTYLE_DashedDownwardDiagonal 30
#define FDE_HATCHSTYLE_DashedUpwardDiagonal 31
#define FDE_HATCHSTYLE_DashedHorizontal 32
#define FDE_HATCHSTYLE_DashedVertical 33
#define FDE_HATCHSTYLE_SmallConfetti 34
#define FDE_HATCHSTYLE_LargeConfetti 35
#define FDE_HATCHSTYLE_ZigZag 36
#define FDE_HATCHSTYLE_Wave 37
#define FDE_HATCHSTYLE_DiagonalBrick 38
#define FDE_HATCHSTYLE_HorizontalBrick 39
#define FDE_HATCHSTYLE_Weave 40
#define FDE_HATCHSTYLE_Plaid 41
#define FDE_HATCHSTYLE_Divot 42
#define FDE_HATCHSTYLE_DottedGrid 43
#define FDE_HATCHSTYLE_DottedDiamond 44
#define FDE_HATCHSTYLE_Shingle 45
#define FDE_HATCHSTYLE_Trellis 46
#define FDE_HATCHSTYLE_Sphere 47
#define FDE_HATCHSTYLE_SmallGrid 48
#define FDE_HATCHSTYLE_SmallCheckerBoard 49
#define FDE_HATCHSTYLE_LargeCheckerBoard 50
#define FDE_HATCHSTYLE_OutlinedDiamond 51
#define FDE_HATCHSTYLE_SolidDiamond 52
#define FDE_HATCHSTYLE_Total 53
#define FDE_HATCHSTYLE_LargeGrid FDE_HATCHSTYLE_Cross
#define FDE_HATCHSTYLE_Min FDE_HATCHSTYLE_Horizontal
#define FDE_HATCHSTYLE_Max (FDE_HATCHSTYLE_Total - 1)
class IFDE_HatchBrush : public IFDE_Brush {
public:
virtual FX_ARGB GetColor(FX_BOOL bForegroundColor) const = 0;
virtual void SetColor(FX_ARGB color, FX_BOOL bForegroundColor) = 0;
virtual int32_t GetHatchStyle() const = 0;
virtual FX_BOOL SetHatchStyle(int32_t iHatchStyle) = 0;
};
class IFDE_TextureBrush : public IFDE_Brush {
public:
virtual IFDE_Image* GetImage() const = 0;
virtual void SetImage(IFDE_Image* pImage, FX_BOOL bAutoRelease) = 0;
virtual int32_t GetWrapMode() const = 0;
virtual void SetWrapMode(int32_t iWrapMode) = 0;
};
#define FDE_LINEARGRADIENTMODE_Horizontal 0
#define FDE_LINEARGRADIENTMODE_Vertical 1
#define FDE_LINEARGRADIENTMODE_ForwardDiagonal 2
#define FDE_LINEARGRADIENTMODE_BackwardDiagonal 3
class IFDE_LinearGradientBrush : public IFDE_Brush {
public:
virtual void GetLinearPoints(CFX_PointF& startingPoint,
CFX_PointF& endingPoint) const = 0;
virtual void SetLinearPoints(const CFX_PointF& startingPoint,
const CFX_PointF& endingPoint) = 0;
virtual void GetLinearColors(FX_ARGB& startingColor,
FX_ARGB& endingColor) const = 0;
virtual void SetLinearColors(const FX_ARGB& startingColor,
const FX_ARGB& endingColor) = 0;
virtual int32_t CountGradientColors() const = 0;
virtual FX_BOOL GetGradientColors(CFDE_GradientColors& colors) const = 0;
virtual FX_BOOL SetGradientColors(const CFDE_GradientColors& colors) = 0;
virtual int32_t GetWrapMode() const = 0;
virtual void SetWrapMode(int32_t iWrapMode) = 0;
};
#endif // XFA_FDE_FDE_BRUSH_H_