diff options
Diffstat (limited to 'xfa/fxgraphics/cxfa_color.h')
-rw-r--r-- | xfa/fxgraphics/cxfa_color.h | 41 |
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_ |