OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #ifndef XFA_FDE_FDE_OBJECT_H_ | 7 #ifndef XFA_FDE_FDE_OBJECT_H_ |
8 #define XFA_FDE_FDE_OBJECT_H_ | 8 #define XFA_FDE_FDE_OBJECT_H_ |
9 | 9 |
10 #include <cstdint> | 10 #include <cstdint> |
11 | 11 |
12 #include "core/fxge/include/fx_dib.h" | 12 #include "core/fxge/include/fx_dib.h" |
13 #include "xfa/fde/fde_brush.h" | |
14 #include "xfa/fde/fde_pen.h" | |
15 #include "xfa/fgas/crt/fgas_memory.h" | 13 #include "xfa/fgas/crt/fgas_memory.h" |
16 | 14 |
17 class CFDE_Pen : public IFDE_Pen, public CFX_Target { | 15 class CFDE_Brush : public CFX_Target { |
18 public: | 16 public: |
19 CFDE_Pen() | 17 CFDE_Brush() : m_Color(0xFF000000) {} |
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 | 18 |
29 ~CFDE_Pen() { | 19 FX_ARGB GetColor() const { return m_Color; } |
30 if (m_pBrush && m_bAutoRelease) { | 20 void SetColor(FX_ARGB color) { m_Color = color; } |
31 m_pBrush->Release(); | |
32 } | |
33 } | |
34 virtual void Release() { delete this; } | |
35 | 21 |
36 virtual int32_t GetType() const { | 22 private: |
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; | 23 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 }; | 24 }; |
93 | 25 |
94 class CFDE_SolidBrush : public IFDE_SolidBrush, public CFX_Target { | 26 class CFDE_Pen : public CFX_Target { |
95 public: | 27 public: |
96 CFDE_SolidBrush() : m_Color(0xFF000000) { m_Matrix.SetIdentity(); } | 28 CFDE_Pen() : m_Color(0) {} |
| 29 ~CFDE_Pen() {} |
97 | 30 |
98 virtual void Release() { delete this; } | 31 FX_ARGB GetColor() const { return m_Color; } |
99 virtual int32_t GetType() const { return FDE_BRUSHTYPE_Solid; } | 32 void SetColor(FX_ARGB color) { m_Color = color; } |
100 virtual const CFX_Matrix& GetMatrix() const { return m_Matrix; } | |
101 virtual void ResetMatrix() { m_Matrix.SetIdentity(); } | |
102 virtual void TranslateMatrix(FX_FLOAT dx, FX_FLOAT dy) { | |
103 m_Matrix.Translate(dx, dy); | |
104 } | |
105 virtual void RotateMatrix(FX_FLOAT fRadian) { m_Matrix.Rotate(fRadian); } | |
106 virtual void ScaleMatrix(FX_FLOAT sx, FX_FLOAT sy) { m_Matrix.Scale(sx, sy); } | |
107 virtual void ConcatMatrix(const CFX_Matrix& matrix) { | |
108 m_Matrix.Concat(matrix); | |
109 } | |
110 virtual void SetMatrix(const CFX_Matrix& matrix) { m_Matrix = matrix; } | |
111 virtual FX_ARGB GetColor() const { return m_Color; } | |
112 virtual void SetColor(FX_ARGB color) { m_Color = color; } | |
113 | 33 |
| 34 private: |
114 FX_ARGB m_Color; | 35 FX_ARGB m_Color; |
115 CFX_Matrix m_Matrix; | |
116 }; | 36 }; |
117 | 37 |
118 #endif // XFA_FDE_FDE_OBJECT_H_ | 38 #endif // XFA_FDE_FDE_OBJECT_H_ |
OLD | NEW |