Make CFX_Color constructor explicit

Change the places which require implicit construction, and make the
construction from ARGB_Color explicit.

Review-Url: https://codereview.chromium.org/2263923003
diff --git a/xfa/fwl/theme/cfwl_carettp.cpp b/xfa/fwl/theme/cfwl_carettp.cpp
index eb73231..b517172 100644
--- a/xfa/fwl/theme/cfwl_carettp.cpp
+++ b/xfa/fwl/theme/cfwl_carettp.cpp
@@ -44,10 +44,13 @@
                                CFX_Matrix* pMatrix) {
   CFX_Path path;
   path.Create();
-  CFX_Color crFilltemp;
-  crFill ? crFilltemp = *crFill : crFilltemp = ArgbEncode(255, 0, 0, 0);
   CFX_RectF rect = *pRect;
   path.AddRectangle(rect.left, rect.top, rect.width, rect.height);
-  pGraphics->SetFillColor(&crFilltemp);
+  if (crFill) {
+    pGraphics->SetFillColor(crFill);
+  } else {
+    CFX_Color crFilltemp(ArgbEncode(255, 0, 0, 0));
+    pGraphics->SetFillColor(&crFilltemp);
+  }
   pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
 }
diff --git a/xfa/fwl/theme/cfwl_comboboxtp.cpp b/xfa/fwl/theme/cfwl_comboboxtp.cpp
index 92f2296..9fdb776 100644
--- a/xfa/fwl/theme/cfwl_comboboxtp.cpp
+++ b/xfa/fwl/theme/cfwl_comboboxtp.cpp
@@ -47,18 +47,19 @@
       path.Create();
       CFX_RectF& rect = pParams->m_rtPart;
       path.AddRectangle(rect.left, rect.top, rect.width, rect.height);
-      CFX_Color cr;
+      FX_ARGB argb_color;
       switch (pParams->m_dwStates) {
         case CFWL_PartState_Selected:
-          cr = FWLTHEME_COLOR_BKSelected;
+          argb_color = FWLTHEME_COLOR_BKSelected;
           break;
         case CFWL_PartState_Disabled:
-          cr = FWLTHEME_COLOR_EDGERB1;
+          argb_color = FWLTHEME_COLOR_EDGERB1;
           break;
         default:
-          cr = 0xFFFFFFFF;
+          argb_color = 0xFFFFFFFF;
       }
       pParams->m_pGraphics->SaveGraphState();
+      CFX_Color cr(argb_color);
       pParams->m_pGraphics->SetFillColor(&cr);
       pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, &pParams->m_matrix);
       pParams->m_pGraphics->RestoreGraphState();
diff --git a/xfa/fwl/theme/cfwl_monthcalendartp.cpp b/xfa/fwl/theme/cfwl_monthcalendartp.cpp
index 7faa8e1..eee199e 100644
--- a/xfa/fwl/theme/cfwl_monthcalendartp.cpp
+++ b/xfa/fwl/theme/cfwl_monthcalendartp.cpp
@@ -461,6 +461,7 @@
   pParams->m_pGraphics->RestoreGraphState();
   return TRUE;
 }
+
 FX_BOOL CFWL_MonthCalendarTP::DrawWeekNumSep(CFWL_ThemeBackground* pParams,
                                              CFX_Matrix* pMatrix) {
   CFX_Path path;
@@ -476,6 +477,7 @@
   pParams->m_pGraphics->RestoreGraphState();
   return TRUE;
 }
+
 FX_BOOL CFWL_MonthCalendarTP::DrawDatesInBK(CFWL_ThemeBackground* pParams,
                                             CFX_Matrix* pMatrix) {
   pParams->m_pGraphics->SaveGraphState();
@@ -486,8 +488,7 @@
     rtSelDay = pParams->m_rtPart;
     path.AddRectangle(rtSelDay.left, rtSelDay.top, rtSelDay.width,
                       rtSelDay.height);
-    CFX_Color clrSelDayBK;
-    clrSelDayBK = m_pThemeData->clrDatesSelectedBK;
+    CFX_Color clrSelDayBK(m_pThemeData->clrDatesSelectedBK);
     pParams->m_pGraphics->SetFillColor(&clrSelDayBK);
     pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
   } else if (pParams->m_dwStates & CFWL_PartState_Hovered) {
@@ -497,14 +498,14 @@
     rtSelDay = pParams->m_rtPart;
     path.AddRectangle(rtSelDay.left, rtSelDay.top, rtSelDay.width,
                       rtSelDay.height);
-    CFX_Color clrSelDayBK;
-    clrSelDayBK = m_pThemeData->clrDatesHoverBK;
+    CFX_Color clrSelDayBK(m_pThemeData->clrDatesHoverBK);
     pParams->m_pGraphics->SetFillColor(&clrSelDayBK);
     pParams->m_pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix);
   }
   pParams->m_pGraphics->RestoreGraphState();
   return FALSE;
 }
+
 FX_BOOL CFWL_MonthCalendarTP::DrawDatesInCircle(CFWL_ThemeBackground* pParams,
                                                 CFX_Matrix* pMatrix) {
   CFX_Path path;
@@ -514,13 +515,13 @@
   path.AddRectangle(rtSelDay.left, rtSelDay.top, rtSelDay.width,
                     rtSelDay.height);
   pParams->m_pGraphics->SaveGraphState();
-  CFX_Color clrSelDayBK;
-  clrSelDayBK = m_pThemeData->clrDatesCircle;
+  CFX_Color clrSelDayBK(m_pThemeData->clrDatesCircle);
   pParams->m_pGraphics->SetStrokeColor(&clrSelDayBK);
   pParams->m_pGraphics->StrokePath(&path, pMatrix);
   pParams->m_pGraphics->RestoreGraphState();
   return TRUE;
 }
+
 FX_BOOL CFWL_MonthCalendarTP::DrawTodayCircle(CFWL_ThemeBackground* pParams,
                                               CFX_Matrix* pMatrix) {
   CFX_Path path;
@@ -530,8 +531,7 @@
   path.AddRectangle(rtTodayCircle.left, rtTodayCircle.top, rtTodayCircle.width,
                     rtTodayCircle.height);
   pParams->m_pGraphics->SaveGraphState();
-  CFX_Color clrTodayCircle;
-  clrTodayCircle = m_pThemeData->clrDatesCircle;
+  CFX_Color clrTodayCircle(m_pThemeData->clrDatesCircle);
   pParams->m_pGraphics->SetStrokeColor(&clrTodayCircle);
   pParams->m_pGraphics->StrokePath(&path, pMatrix);
   pParams->m_pGraphics->RestoreGraphState();
diff --git a/xfa/fwl/theme/cfwl_widgettp.cpp b/xfa/fwl/theme/cfwl_widgettp.cpp
index b5658cf..a1b458c 100644
--- a/xfa/fwl/theme/cfwl_widgettp.cpp
+++ b/xfa/fwl/theme/cfwl_widgettp.cpp
@@ -274,7 +274,7 @@
                     pRect->height - 1);
   pGraphics->StrokePath(&path, pMatrix);
   path.Clear();
-  crStroke = ArgbEncode(255, 255, 255, 255);
+  crStroke.Set(ArgbEncode(255, 255, 255, 255));
   pGraphics->SetStrokeColor(&crStroke);
   path.AddRectangle(pRect->left + 1, pRect->top + 1, pRect->width - 3,
                     pRect->height - 3);
diff --git a/xfa/fxfa/app/xfa_ffwidget.cpp b/xfa/fxfa/app/xfa_ffwidget.cpp
index 446fcd6..d5ffdee 100644
--- a/xfa/fxfa/app/xfa_ffwidget.cpp
+++ b/xfa/fxfa/app/xfa_ffwidget.cpp
@@ -1590,7 +1590,7 @@
   }
 
   CFX_Pattern pattern(iHatch, crEnd, crStart);
-  CFX_Color cr(&pattern);
+  CFX_Color cr(&pattern, 0x0);
   pGS->SetFillColor(&cr);
   pGS->FillPath(&fillPath, FXFILL_WINDING, pMatrix);
 }
diff --git a/xfa/fxgraphics/cfx_color.h b/xfa/fxgraphics/cfx_color.h
index bf61c68..0f32176 100644
--- a/xfa/fxgraphics/cfx_color.h
+++ b/xfa/fxgraphics/cfx_color.h
@@ -18,15 +18,13 @@
 class CFX_Color {
  public:
   CFX_Color();
-  // TODO(weili): Remove implicit conversions. Make this explicit.
-  CFX_Color(const FX_ARGB argb);
-
-  explicit CFX_Color(CFX_Pattern* pattern, const FX_ARGB argb = 0x0);
+  explicit CFX_Color(const FX_ARGB argb);
   explicit CFX_Color(CFX_Shading* shading);
+  CFX_Color(CFX_Pattern* pattern, const FX_ARGB argb);
   virtual ~CFX_Color();
 
   FWL_Error Set(const FX_ARGB argb);
-  FWL_Error Set(CFX_Pattern* pattern, const FX_ARGB argb = 0x0);
+  FWL_Error Set(CFX_Pattern* pattern, const FX_ARGB argb);
   FWL_Error Set(CFX_Shading* shading);
 
  private: