summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-08-20 23:17:06 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-08-20 23:17:06 +0000
commit7def3de1d026a7e99017113d0f17556a3130eba5 (patch)
tree456232c126a82919c63ba67548946febeda50109
parent8c87547c74115d4020d5829173f96b9d798fd57a (diff)
downloadpdfium-7def3de1d026a7e99017113d0f17556a3130eba5.tar.xz
Use UnownedPtr<> in CXFA_GEColor.
Small size penalty in removing the union, but unions can lead to type errors. Change-Id: I8ff9fd63b1f87d05df18db17edbaf770226e1252 Reviewed-on: https://pdfium-review.googlesource.com/40790 Reviewed-by: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
-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_