summaryrefslogtreecommitdiff
path: root/xfa/fxgraphics/cxfa_color.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxgraphics/cxfa_color.h')
-rw-r--r--xfa/fxgraphics/cxfa_color.h41
1 files changed, 24 insertions, 17 deletions
diff --git a/xfa/fxgraphics/cxfa_color.h b/xfa/fxgraphics/cxfa_color.h
index f5bba27586..4ae790507b 100644
--- a/xfa/fxgraphics/cxfa_color.h
+++ b/xfa/fxgraphics/cxfa_color.h
@@ -8,36 +8,43 @@
#define XFA_FXGRAPHICS_CXFA_COLOR_H_
#include "core/fxge/fx_dib.h"
-#include "xfa/fxgraphics/cxfa_graphics.h"
class CXFA_Pattern;
class CXFA_Shading;
-enum { FX_COLOR_None = 0, FX_COLOR_Solid, FX_COLOR_Pattern, FX_COLOR_Shading };
-
class CXFA_Color {
public:
+ enum Type { Invalid, Solid, Pattern, Shading };
+
CXFA_Color();
explicit CXFA_Color(const FX_ARGB argb);
explicit CXFA_Color(CXFA_Shading* shading);
CXFA_Color(CXFA_Pattern* pattern, const FX_ARGB argb);
- virtual ~CXFA_Color();
-
- void Set(const FX_ARGB argb);
- void Set(CXFA_Pattern* pattern, const FX_ARGB argb);
- void Set(CXFA_Shading* shading);
+ ~CXFA_Color();
+
+ Type GetType() const { return m_type; }
+ FX_ARGB GetArgb() const {
+ ASSERT(m_type == Solid || m_type == Pattern);
+ return m_argb;
+ }
+ CXFA_Pattern* GetPattern() const {
+ ASSERT(m_type == Pattern);
+ return m_pointer.pattern;
+ }
+ CXFA_Shading* GetShading() const {
+ ASSERT(m_type == Shading);
+ return m_pointer.shading;
+ }
+
+ CXFA_Color& operator=(const CXFA_Color& that);
private:
- friend class CXFA_Graphics;
-
- int32_t m_type;
+ Type m_type;
+ FX_ARGB m_argb;
union {
- struct {
- FX_ARGB argb;
- CXFA_Pattern* pattern;
- } m_info;
- CXFA_Shading* m_shading;
- };
+ CXFA_Pattern* pattern;
+ CXFA_Shading* shading;
+ } m_pointer;
};
#endif // XFA_FXGRAPHICS_CXFA_COLOR_H_