OLD | NEW |
| (Empty) |
1 // Copyright 2014 PDFium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
6 | |
7 #ifndef XFA_SRC_FDE_FDE_OBJECT_H_ | |
8 #define XFA_SRC_FDE_FDE_OBJECT_H_ | |
9 | |
10 #include <cstdint> | |
11 | |
12 #include "core/include/fxge/fx_dib.h" | |
13 #include "xfa/src/fde/fde_brush.h" | |
14 #include "xfa/src/fde/fde_pen.h" | |
15 #include "xfa/src/fgas/crt/fgas_memory.h" | |
16 | |
17 class CFDE_Pen : public IFDE_Pen, public CFX_Target { | |
18 public: | |
19 CFDE_Pen() | |
20 : m_Color(0), | |
21 m_iLineCap(0), | |
22 m_iLineJoin(0), | |
23 m_iDashStyle(0), | |
24 m_fDashPhase(0), | |
25 m_fMiterLimit(10), | |
26 m_bAutoRelease(FALSE), | |
27 m_pBrush(NULL) {} | |
28 | |
29 ~CFDE_Pen() { | |
30 if (m_pBrush && m_bAutoRelease) { | |
31 m_pBrush->Release(); | |
32 } | |
33 } | |
34 virtual void Release() { delete this; } | |
35 | |
36 virtual int32_t GetType() const { | |
37 return m_pBrush ? m_pBrush->GetType() : FDE_PENTYPE_SolidColor; | |
38 } | |
39 | |
40 virtual FX_ARGB GetColor() const { return m_Color; } | |
41 virtual void SetColor(FX_ARGB color) { m_Color = color; } | |
42 virtual IFDE_Brush* GetBrush() const { return m_pBrush; } | |
43 virtual void SetBrush(IFDE_Brush* pBrush, FX_BOOL bAutoRelease) { | |
44 m_bAutoRelease = bAutoRelease; | |
45 m_pBrush = pBrush; | |
46 if (m_pBrush && m_pBrush->GetType() == FDE_BRUSHTYPE_Solid) { | |
47 m_Color = ((IFDE_SolidBrush*)m_pBrush)->GetColor(); | |
48 } | |
49 } | |
50 virtual int32_t GetLineCap() const { return m_iLineCap; } | |
51 virtual void SetLineCap(int32_t iLineCap) { m_iLineCap = iLineCap; } | |
52 virtual int32_t GetDashStyle() const { return m_iDashStyle; } | |
53 virtual void SetDashStyle(int32_t iDashStyle) { m_iDashStyle = iDashStyle; } | |
54 virtual FX_FLOAT GetDashPhase() const { return m_fDashPhase; } | |
55 virtual void SetDashPhase(FX_FLOAT fPhase) { m_fDashPhase = fPhase; } | |
56 virtual int32_t CountDashArray() const { return m_DashArray.GetSize(); } | |
57 virtual int32_t GetDashArray(CFX_FloatArray& dashArray) const { | |
58 dashArray.Copy(m_DashArray); | |
59 return dashArray.GetSize(); | |
60 } | |
61 virtual void SetDashArray(const CFX_FloatArray& dashArray) { | |
62 m_DashArray.Copy(dashArray); | |
63 } | |
64 virtual int32_t GetLineJoin() const { return m_iLineJoin; } | |
65 virtual void SetLineJoin(int32_t iLineJoin) { m_iLineJoin = iLineJoin; } | |
66 virtual FX_FLOAT GetMiterLimit() const { return m_fMiterLimit; } | |
67 virtual void SetMiterLimit(FX_FLOAT fMiterLimit) { | |
68 m_fMiterLimit = fMiterLimit; | |
69 } | |
70 virtual int32_t CountCompoundPatterns() const { | |
71 return m_CompoundPatterns.GetSize(); | |
72 } | |
73 virtual FX_BOOL GetCompoundPatterns( | |
74 CFDE_CompoundPatterns& compoundPatterns) const { | |
75 return compoundPatterns.Copy(m_CompoundPatterns), TRUE; | |
76 } | |
77 virtual FX_BOOL SetCompoundPatterns( | |
78 const CFDE_CompoundPatterns& compoundPatterns) { | |
79 return m_CompoundPatterns.Copy(compoundPatterns), TRUE; | |
80 } | |
81 | |
82 FX_ARGB m_Color; | |
83 int32_t m_iLineCap; | |
84 int32_t m_iLineJoin; | |
85 int32_t m_iDashStyle; | |
86 FX_FLOAT m_fDashPhase; | |
87 FX_FLOAT m_fMiterLimit; | |
88 FX_BOOL m_bAutoRelease; | |
89 IFDE_Brush* m_pBrush; | |
90 CFX_FloatArray m_DashArray; | |
91 CFDE_CompoundPatterns m_CompoundPatterns; | |
92 }; | |
93 class CFDE_SolidBrush : public IFDE_SolidBrush, public CFX_Target { | |
94 public: | |
95 CFDE_SolidBrush() : m_Color(0xFF000000) { m_Matrix.SetIdentity(); } | |
96 | |
97 virtual void Release() { delete this; } | |
98 virtual int32_t GetType() const { return FDE_BRUSHTYPE_Solid; } | |
99 virtual const CFX_Matrix& GetMatrix() const { return m_Matrix; } | |
100 virtual void ResetMatrix() { m_Matrix.SetIdentity(); } | |
101 virtual void TranslateMatrix(FX_FLOAT dx, FX_FLOAT dy) { | |
102 m_Matrix.Translate(dx, dy); | |
103 } | |
104 virtual void RotateMatrix(FX_FLOAT fRadian) { m_Matrix.Rotate(fRadian); } | |
105 virtual void ScaleMatrix(FX_FLOAT sx, FX_FLOAT sy) { m_Matrix.Scale(sx, sy); } | |
106 virtual void ConcatMatrix(const CFX_Matrix& matrix) { | |
107 m_Matrix.Concat(matrix); | |
108 } | |
109 virtual void SetMatrix(const CFX_Matrix& matrix) { m_Matrix = matrix; } | |
110 virtual FX_ARGB GetColor() const { return m_Color; } | |
111 virtual void SetColor(FX_ARGB color) { m_Color = color; } | |
112 | |
113 FX_ARGB m_Color; | |
114 CFX_Matrix m_Matrix; | |
115 }; | |
116 class CFDE_HatchBrush : public IFDE_HatchBrush, public CFX_Target { | |
117 public: | |
118 CFDE_HatchBrush() : m_iStyle(-1), m_BackColor(0), m_ForeColor(0) { | |
119 m_Matrix.SetIdentity(); | |
120 } | |
121 | |
122 virtual void Release() { delete this; } | |
123 virtual int32_t GetType() const { return FDE_BRUSHTYPE_Hatch; } | |
124 virtual const CFX_Matrix& GetMatrix() const { return m_Matrix; } | |
125 virtual void ResetMatrix() { m_Matrix.SetIdentity(); } | |
126 virtual void TranslateMatrix(FX_FLOAT dx, FX_FLOAT dy) { | |
127 m_Matrix.Translate(dx, dy); | |
128 } | |
129 virtual void RotateMatrix(FX_FLOAT fRadian) { m_Matrix.Rotate(fRadian); } | |
130 virtual void ScaleMatrix(FX_FLOAT sx, FX_FLOAT sy) { m_Matrix.Scale(sx, sy); } | |
131 virtual void ConcatMatrix(const CFX_Matrix& matrix) { | |
132 m_Matrix.Concat(matrix); | |
133 } | |
134 virtual void SetMatrix(const CFX_Matrix& matrix) { m_Matrix = matrix; } | |
135 virtual FX_ARGB GetColor(FX_BOOL bForegroundColor) const { | |
136 return bForegroundColor ? m_ForeColor : m_BackColor; | |
137 } | |
138 virtual void SetColor(FX_ARGB color, FX_BOOL bForegroundColor) { | |
139 if (bForegroundColor) { | |
140 m_ForeColor = color; | |
141 } else { | |
142 m_BackColor = color; | |
143 } | |
144 } | |
145 | |
146 virtual int32_t GetHatchStyle() const { return m_iStyle; } | |
147 virtual FX_BOOL SetHatchStyle(int32_t iHatchStyle) { | |
148 m_iStyle = iHatchStyle; | |
149 return m_iStyle >= FDE_HATCHSTYLE_Min && m_iStyle <= FDE_HATCHSTYLE_Max; | |
150 } | |
151 int32_t m_iStyle; | |
152 FX_ARGB m_BackColor; | |
153 FX_ARGB m_ForeColor; | |
154 CFX_Matrix m_Matrix; | |
155 }; | |
156 class CFDE_TextureBrush : public IFDE_TextureBrush, public CFX_Target { | |
157 public: | |
158 CFDE_TextureBrush() : m_iWrap(0), m_pImage(NULL), m_bAutoRelease(FALSE) { | |
159 m_Matrix.SetIdentity(); | |
160 } | |
161 | |
162 virtual void Release() { delete this; } | |
163 virtual int32_t GetType() const { return FDE_BRUSHTYPE_Texture; } | |
164 virtual const CFX_Matrix& GetMatrix() const { return m_Matrix; } | |
165 virtual void ResetMatrix() { m_Matrix.SetIdentity(); } | |
166 virtual void TranslateMatrix(FX_FLOAT dx, FX_FLOAT dy) { | |
167 m_Matrix.Translate(dx, dy); | |
168 } | |
169 virtual void RotateMatrix(FX_FLOAT fRadian) { m_Matrix.Rotate(fRadian); } | |
170 virtual void ScaleMatrix(FX_FLOAT sx, FX_FLOAT sy) { m_Matrix.Scale(sx, sy); } | |
171 virtual void ConcatMatrix(const CFX_Matrix& matrix) { | |
172 m_Matrix.Concat(matrix); | |
173 } | |
174 virtual void SetMatrix(const CFX_Matrix& matrix) { m_Matrix = matrix; } | |
175 virtual IFDE_Image* GetImage() const { return m_pImage; } | |
176 virtual void SetImage(IFDE_Image* pImage, FX_BOOL bAutoRelease) { | |
177 m_pImage = pImage; | |
178 m_bAutoRelease = bAutoRelease; | |
179 } | |
180 virtual int32_t GetWrapMode() const { return m_iWrap; } | |
181 virtual void SetWrapMode(int32_t iWrapMode) { m_iWrap = iWrapMode; } | |
182 int32_t m_iWrap; | |
183 IFDE_Image* m_pImage; | |
184 FX_BOOL m_bAutoRelease; | |
185 CFX_Matrix m_Matrix; | |
186 }; | |
187 class CFDE_LinearBrush : public IFDE_LinearGradientBrush, public CFX_Target { | |
188 public: | |
189 CFDE_LinearBrush() : m_EndColor(0), m_StartColor(0), m_iWrapMode(0) { | |
190 m_StartPoint.x = m_StartPoint.y = m_EndPoint.x = m_EndPoint.y = 0; | |
191 m_Matrix.SetIdentity(); | |
192 } | |
193 | |
194 virtual void Release() { delete this; } | |
195 virtual int32_t GetType() const { return FDE_BRUSHTYPE_LinearGradient; } | |
196 virtual const CFX_Matrix& GetMatrix() const { return m_Matrix; } | |
197 virtual void ResetMatrix() { m_Matrix.SetIdentity(); } | |
198 virtual void TranslateMatrix(FX_FLOAT dx, FX_FLOAT dy) { | |
199 m_Matrix.Translate(dx, dy); | |
200 } | |
201 virtual void RotateMatrix(FX_FLOAT fRadian) { m_Matrix.Rotate(fRadian); } | |
202 virtual void ScaleMatrix(FX_FLOAT sx, FX_FLOAT sy) { m_Matrix.Scale(sx, sy); } | |
203 virtual void ConcatMatrix(const CFX_Matrix& matrix) { | |
204 m_Matrix.Concat(matrix); | |
205 } | |
206 virtual void SetMatrix(const CFX_Matrix& matrix) { m_Matrix = matrix; } | |
207 virtual void GetLinearPoints(CFX_PointF& startingPoint, | |
208 CFX_PointF& endingPoint) const { | |
209 startingPoint = m_StartPoint; | |
210 endingPoint = m_EndPoint; | |
211 } | |
212 virtual void SetLinearPoints(const CFX_PointF& startingPoint, | |
213 const CFX_PointF& endingPoint) { | |
214 m_StartPoint = startingPoint; | |
215 m_EndPoint = endingPoint; | |
216 } | |
217 virtual void GetLinearColors(FX_ARGB& startingColor, | |
218 FX_ARGB& endingColor) const { | |
219 startingColor = m_StartColor; | |
220 endingColor = m_EndColor; | |
221 } | |
222 virtual void SetLinearColors(const FX_ARGB& startingColor, | |
223 const FX_ARGB& endingColor) { | |
224 m_StartColor = startingColor; | |
225 m_EndColor = endingColor; | |
226 } | |
227 virtual int32_t CountGradientColors() const { return m_GradColors.GetSize(); } | |
228 virtual FX_BOOL GetGradientColors(CFDE_GradientColors& colors) const { | |
229 return colors.Copy(m_GradColors), TRUE; | |
230 } | |
231 virtual FX_BOOL SetGradientColors(const CFDE_GradientColors& colors) { | |
232 return m_GradColors.Copy(colors), TRUE; | |
233 } | |
234 | |
235 virtual int32_t GetWrapMode() const { return m_iWrapMode; } | |
236 virtual void SetWrapMode(int32_t iWrapMode) { m_iWrapMode = iWrapMode; } | |
237 CFX_PointF m_EndPoint; | |
238 CFX_PointF m_StartPoint; | |
239 FX_ARGB m_EndColor; | |
240 FX_ARGB m_StartColor; | |
241 CFDE_GradientColors m_GradColors; | |
242 int32_t m_iWrapMode; | |
243 CFX_Matrix m_Matrix; | |
244 }; | |
245 | |
246 #endif // XFA_SRC_FDE_FDE_OBJECT_H_ | |
OLD | NEW |