summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xfa/fxgraphics/cxfa_gecolor.cpp45
-rw-r--r--xfa/fxgraphics/cxfa_gecolor.h16
2 files changed, 18 insertions, 43 deletions
diff --git a/xfa/fxgraphics/cxfa_gecolor.cpp b/xfa/fxgraphics/cxfa_gecolor.cpp
index b0dc661986..93d7565117 100644
--- a/xfa/fxgraphics/cxfa_gecolor.cpp
+++ b/xfa/fxgraphics/cxfa_gecolor.cpp
@@ -6,43 +6,18 @@
#include "xfa/fxgraphics/cxfa_gecolor.h"
-CXFA_GEColor::CXFA_GEColor() : m_type(Invalid) {}
+CXFA_GEColor::CXFA_GEColor() = default;
-CXFA_GEColor::CXFA_GEColor(const FX_ARGB argb) : m_type(Solid), m_argb(argb) {
- m_pointer.pattern = nullptr;
-}
+CXFA_GEColor::CXFA_GEColor(const FX_ARGB argb) : m_type(Solid), m_argb(argb) {}
CXFA_GEColor::CXFA_GEColor(CXFA_GEPattern* pattern, const FX_ARGB argb)
- : m_type(Pattern), m_argb(argb) {
- m_pointer.pattern = pattern;
-}
+ : m_type(Pattern), m_argb(argb), m_pPattern(pattern) {}
CXFA_GEColor::CXFA_GEColor(CXFA_GEShading* shading)
- : m_type(Shading), m_argb(0) {
- m_pointer.shading = shading;
-}
-
-CXFA_GEColor::~CXFA_GEColor() {}
-
-CXFA_GEColor& CXFA_GEColor::operator=(const CXFA_GEColor& that) {
- if (this != &that) {
- m_type = that.m_type;
- switch (m_type) {
- case Solid:
- m_argb = that.m_argb;
- m_pointer.pattern = nullptr;
- break;
- case Pattern:
- m_argb = that.m_argb;
- m_pointer.pattern = that.m_pointer.pattern;
- break;
- case Shading:
- m_argb = 0;
- m_pointer.shading = that.m_pointer.shading;
- break;
- default:
- break;
- }
- }
- return *this;
-}
+ : m_type(Shading), m_pShading(shading) {}
+
+CXFA_GEColor::CXFA_GEColor(const CXFA_GEColor& that) = default;
+
+CXFA_GEColor::~CXFA_GEColor() = default;
+
+CXFA_GEColor& CXFA_GEColor::operator=(const CXFA_GEColor& that) = default;
diff --git a/xfa/fxgraphics/cxfa_gecolor.h b/xfa/fxgraphics/cxfa_gecolor.h
index b60585b7a4..2b2d2d4d07 100644
--- a/xfa/fxgraphics/cxfa_gecolor.h
+++ b/xfa/fxgraphics/cxfa_gecolor.h
@@ -7,6 +7,7 @@
#ifndef XFA_FXGRAPHICS_CXFA_GECOLOR_H_
#define XFA_FXGRAPHICS_CXFA_GECOLOR_H_
+#include "core/fxcrt/unowned_ptr.h"
#include "core/fxge/fx_dib.h"
class CXFA_GEPattern;
@@ -20,6 +21,7 @@ class CXFA_GEColor {
explicit CXFA_GEColor(const FX_ARGB argb);
explicit CXFA_GEColor(CXFA_GEShading* shading);
CXFA_GEColor(CXFA_GEPattern* pattern, const FX_ARGB argb);
+ CXFA_GEColor(const CXFA_GEColor& that);
~CXFA_GEColor();
Type GetType() const { return m_type; }
@@ -29,22 +31,20 @@ class CXFA_GEColor {
}
CXFA_GEPattern* GetPattern() const {
ASSERT(m_type == Pattern);
- return m_pointer.pattern;
+ return m_pPattern.Get();
}
CXFA_GEShading* GetShading() const {
ASSERT(m_type == Shading);
- return m_pointer.shading;
+ return m_pShading.Get();
}
CXFA_GEColor& operator=(const CXFA_GEColor& that);
private:
- Type m_type;
- FX_ARGB m_argb;
- union {
- CXFA_GEPattern* pattern;
- CXFA_GEShading* shading;
- } m_pointer;
+ Type m_type = Invalid;
+ FX_ARGB m_argb = 0;
+ UnownedPtr<CXFA_GEPattern> m_pPattern;
+ UnownedPtr<CXFA_GEShading> m_pShading;
};
#endif // XFA_FXGRAPHICS_CXFA_GECOLOR_H_