Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fdp / include / fde_brs.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FDE_BRUSH\r
8 #define _FDE_BRUSH\r
9 class IFDE_Image;\r
10 class IFDE_Path;\r
11 class IFDE_Brush;\r
12 class IFDE_SolidBrush;\r
13 class IFDE_HatchBrush;\r
14 class IFDE_TextureBrush;\r
15 class IFDE_LinearGradientBrush;\r
16 #define FDE_BRUSHTYPE_Unknown                   -1\r
17 #define FDE_BRUSHTYPE_Solid                             0\r
18 #define FDE_BRUSHTYPE_Hatch                             1\r
19 #define FDE_BRUSHTYPE_Texture                   2\r
20 #define FDE_BRUSHTYPE_LinearGradient    3\r
21 #define FDE_BRUSHTYPE_MAX                               3\r
22 #define FDE_WRAPMODE_Tile                       0\r
23 #define FDE_WRAPMODE_TileFlipX          1\r
24 #define FDE_WRAPMODE_TileFlipY          2\r
25 #define FDE_WRAPMODE_TileFlipXY         3\r
26 #define FDE_WRAPMODE_Clamp                      4\r
27 typedef struct _FDE_GRADIENTCOLOR {\r
28     FX_FLOAT    pos;\r
29     FX_ARGB             color;\r
30 } FDE_GRADIENTCOLOR, * FDE_LPGRADIENTCOLOR;\r
31 typedef FDE_GRADIENTCOLOR const *                               FDE_LPCGRADIENTCOLOR;\r
32 typedef CFX_ArrayTemplate<FDE_GRADIENTCOLOR>    CFDE_GradientColors;\r
33 class IFDE_Brush\r
34 {\r
35 public:\r
36     static IFDE_Brush*                  Create(FX_INT32 iType);\r
37     virtual void                                Release() = 0;\r
38     virtual FX_INT32                    GetType() const = 0;\r
39 };\r
40 class IFDE_SolidBrush : public IFDE_Brush\r
41 {\r
42 public:\r
43     virtual FX_ARGB                             GetColor() const = 0;\r
44     virtual void                                SetColor(FX_ARGB color) = 0;\r
45     virtual const CFX_Matrix&   GetMatrix() const = 0;\r
46     virtual void                                ResetMatrix() = 0;\r
47     virtual void                                TranslateMatrix(FX_FLOAT dx, FX_FLOAT dy) = 0;\r
48     virtual void                                RotateMatrix(FX_FLOAT fRadian) = 0;\r
49     virtual void                                ScaleMatrix(FX_FLOAT sx, FX_FLOAT sy) = 0;\r
50     virtual void                                ConcatMatrix(const CFX_Matrix &matrix) = 0;\r
51     virtual void                                SetMatrix(const CFX_Matrix &matrix) = 0;\r
52 };\r
53 #define FDE_HATCHSTYLE_Horizontal                               0\r
54 #define FDE_HATCHSTYLE_Vertical                                 1\r
55 #define FDE_HATCHSTYLE_ForwardDiagonal                  2\r
56 #define FDE_HATCHSTYLE_BackwardDiagonal                 3\r
57 #define FDE_HATCHSTYLE_Cross                                    4\r
58 #define FDE_HATCHSTYLE_DiagonalCross                    5\r
59 #define FDE_HATCHSTYLE_05Percent                                6\r
60 #define FDE_HATCHSTYLE_10Percent                                7\r
61 #define FDE_HATCHSTYLE_20Percent                                8\r
62 #define FDE_HATCHSTYLE_25Percent                                9\r
63 #define FDE_HATCHSTYLE_30Percent                                10\r
64 #define FDE_HATCHSTYLE_40Percent                                11\r
65 #define FDE_HATCHSTYLE_50Percent                                12\r
66 #define FDE_HATCHSTYLE_60Percent                                13\r
67 #define FDE_HATCHSTYLE_70Percent                                14\r
68 #define FDE_HATCHSTYLE_75Percent                                15\r
69 #define FDE_HATCHSTYLE_80Percent                                16\r
70 #define FDE_HATCHSTYLE_90Percent                                17\r
71 #define FDE_HATCHSTYLE_LightDownwardDiagonal    18\r
72 #define FDE_HATCHSTYLE_LightUpwardDiagonal              19\r
73 #define FDE_HATCHSTYLE_DarkDownwardDiagonal             20\r
74 #define FDE_HATCHSTYLE_DarkUpwardDiagonal               21\r
75 #define FDE_HATCHSTYLE_WideDownwardDiagonal             22\r
76 #define FDE_HATCHSTYLE_WideUpwardDiagonal               23\r
77 #define FDE_HATCHSTYLE_LightVertical                    24\r
78 #define FDE_HATCHSTYLE_LightHorizontal                  25\r
79 #define FDE_HATCHSTYLE_NarrowVertical                   26\r
80 #define FDE_HATCHSTYLE_NarrowHorizontal                 27\r
81 #define FDE_HATCHSTYLE_DarkVertical                             28\r
82 #define FDE_HATCHSTYLE_DarkHorizontal                   29\r
83 #define FDE_HATCHSTYLE_DashedDownwardDiagonal   30\r
84 #define FDE_HATCHSTYLE_DashedUpwardDiagonal             31\r
85 #define FDE_HATCHSTYLE_DashedHorizontal                 32\r
86 #define FDE_HATCHSTYLE_DashedVertical                   33\r
87 #define FDE_HATCHSTYLE_SmallConfetti                    34\r
88 #define FDE_HATCHSTYLE_LargeConfetti                    35\r
89 #define FDE_HATCHSTYLE_ZigZag                                   36\r
90 #define FDE_HATCHSTYLE_Wave                                             37\r
91 #define FDE_HATCHSTYLE_DiagonalBrick                    38\r
92 #define FDE_HATCHSTYLE_HorizontalBrick                  39\r
93 #define FDE_HATCHSTYLE_Weave                                    40\r
94 #define FDE_HATCHSTYLE_Plaid                                    41\r
95 #define FDE_HATCHSTYLE_Divot                                    42\r
96 #define FDE_HATCHSTYLE_DottedGrid                               43\r
97 #define FDE_HATCHSTYLE_DottedDiamond                    44\r
98 #define FDE_HATCHSTYLE_Shingle                                  45\r
99 #define FDE_HATCHSTYLE_Trellis                                  46\r
100 #define FDE_HATCHSTYLE_Sphere                                   47\r
101 #define FDE_HATCHSTYLE_SmallGrid                                48\r
102 #define FDE_HATCHSTYLE_SmallCheckerBoard                49\r
103 #define FDE_HATCHSTYLE_LargeCheckerBoard                50\r
104 #define FDE_HATCHSTYLE_OutlinedDiamond                  51\r
105 #define FDE_HATCHSTYLE_SolidDiamond                             52\r
106 #define FDE_HATCHSTYLE_Total                                    53\r
107 #define FDE_HATCHSTYLE_LargeGrid                                FDE_HATCHSTYLE_Cross\r
108 #define FDE_HATCHSTYLE_Min                                              FDE_HATCHSTYLE_Horizontal\r
109 #define FDE_HATCHSTYLE_Max                                              (FDE_HATCHSTYLE_Total - 1)\r
110 class IFDE_HatchBrush : public IFDE_Brush\r
111 {\r
112 public:\r
113     virtual FX_ARGB                     GetColor(FX_BOOL bForegroundColor) const = 0;\r
114     virtual void                        SetColor(FX_ARGB color, FX_BOOL bForegroundColor) = 0;\r
115     virtual FX_INT32            GetHatchStyle() const = 0;\r
116     virtual FX_BOOL                     SetHatchStyle(FX_INT32 iHatchStyle) = 0;\r
117 };\r
118 class IFDE_TextureBrush : public IFDE_Brush\r
119 {\r
120 public:\r
121     virtual IFDE_Image*                 GetImage() const = 0;\r
122     virtual void                                SetImage(IFDE_Image *pImage, FX_BOOL bAutoRelease) = 0;\r
123     virtual FX_INT32                    GetWrapMode() const = 0;\r
124     virtual void                                SetWrapMode(FX_INT32 iWrapMode) = 0;\r
125 };\r
126 #define FDE_LINEARGRADIENTMODE_Horizontal                       0\r
127 #define FDE_LINEARGRADIENTMODE_Vertical                         1\r
128 #define FDE_LINEARGRADIENTMODE_ForwardDiagonal          2\r
129 #define FDE_LINEARGRADIENTMODE_BackwardDiagonal         3\r
130 class IFDE_LinearGradientBrush : public IFDE_Brush\r
131 {\r
132 public:\r
133     virtual void                                GetLinearPoints(CFX_PointF &startingPoint, CFX_PointF &endingPoint) const = 0;\r
134     virtual void                                SetLinearPoints(const CFX_PointF &startingPoint, const CFX_PointF &endingPoint) = 0;\r
135     virtual void                                GetLinearColors(FX_ARGB &startingColor, FX_ARGB &endingColor) const = 0;\r
136     virtual void                                SetLinearColors(const FX_ARGB &startingColor, const FX_ARGB &endingColor) = 0;\r
137     virtual FX_INT32                    CountGradientColors() const = 0;\r
138     virtual FX_BOOL                             GetGradientColors(CFDE_GradientColors &colors) const = 0;\r
139     virtual FX_BOOL                             SetGradientColors(const CFDE_GradientColors &colors) = 0;\r
140     virtual FX_INT32                    GetWrapMode() const = 0;\r
141     virtual void                                SetWrapMode(FX_INT32 iWrapMode) = 0;\r
142 };\r
143 #endif\r