Cleanup CFX_BitmapComposer

Remove default params, use more unique_ptr, and fix some nits.

Change-Id: I4ed9a576fb3ebd9afd64c6544d1f6a1103e9d270
Reviewed-on: https://pdfium-review.googlesource.com/3872
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Nicolás Peña <npm@chromium.org>
diff --git a/core/fxge/dib/cfx_bitmapcomposer.cpp b/core/fxge/dib/cfx_bitmapcomposer.cpp
index 8dd87b1..bd8dc72 100644
--- a/core/fxge/dib/cfx_bitmapcomposer.cpp
+++ b/core/fxge/dib/cfx_bitmapcomposer.cpp
@@ -11,27 +11,16 @@
 #include "core/fxge/dib/cfx_dibitmap.h"
 #include "core/fxge/ge/cfx_cliprgn.h"
 
-CFX_BitmapComposer::CFX_BitmapComposer() {
-  m_pScanlineV = nullptr;
-  m_pScanlineAlphaV = nullptr;
-  m_pClipScanV = nullptr;
-  m_pAddClipScan = nullptr;
-  m_bRgbByteOrder = false;
-  m_BlendType = FXDIB_BLEND_NORMAL;
-}
+CFX_BitmapComposer::CFX_BitmapComposer()
+    : m_bRgbByteOrder(false), m_BlendType(FXDIB_BLEND_NORMAL) {}
 
-CFX_BitmapComposer::~CFX_BitmapComposer() {
-  FX_Free(m_pScanlineV);
-  FX_Free(m_pScanlineAlphaV);
-  FX_Free(m_pClipScanV);
-  FX_Free(m_pAddClipScan);
-}
+CFX_BitmapComposer::~CFX_BitmapComposer() {}
 
 void CFX_BitmapComposer::Compose(const CFX_RetainPtr<CFX_DIBitmap>& pDest,
                                  const CFX_ClipRgn* pClipRgn,
                                  int bitmap_alpha,
                                  uint32_t mask_color,
-                                 FX_RECT& dest_rect,
+                                 const FX_RECT& dest_rect,
                                  bool bVertical,
                                  bool bFlipX,
                                  bool bFlipY,
@@ -70,15 +59,14 @@
     return false;
   }
   if (m_bVertical) {
-    m_pScanlineV = FX_Alloc(uint8_t, m_pBitmap->GetBPP() / 8 * width + 4);
-    m_pClipScanV = FX_Alloc(uint8_t, m_pBitmap->GetHeight());
-    if (m_pBitmap->m_pAlphaMask) {
-      m_pScanlineAlphaV = FX_Alloc(uint8_t, width + 4);
-    }
+    m_pScanlineV.resize(m_pBitmap->GetBPP() / 8 * width + 4);
+    m_pClipScanV.resize(m_pBitmap->GetHeight());
+    if (m_pBitmap->m_pAlphaMask)
+      m_pScanlineAlphaV.resize(width + 4);
   }
   if (m_BitmapAlpha < 255) {
-    m_pAddClipScan = FX_Alloc(
-        uint8_t, m_bVertical ? m_pBitmap->GetHeight() : m_pBitmap->GetWidth());
+    m_pAddClipScan.resize(m_bVertical ? m_pBitmap->GetHeight()
+                                      : m_pBitmap->GetWidth());
   }
   return true;
 }
@@ -89,15 +77,15 @@
                                    const uint8_t* clip_scan,
                                    const uint8_t* src_extra_alpha,
                                    uint8_t* dst_extra_alpha) {
+  uint8_t* pAddClipScan = m_pAddClipScan.data();
   if (m_BitmapAlpha < 255) {
     if (clip_scan) {
-      for (int i = 0; i < dest_width; i++) {
-        m_pAddClipScan[i] = clip_scan[i] * m_BitmapAlpha / 255;
-      }
+      for (int i = 0; i < dest_width; ++i)
+        pAddClipScan[i] = clip_scan[i] * m_BitmapAlpha / 255;
     } else {
-      memset(m_pAddClipScan, m_BitmapAlpha, dest_width);
+      memset(pAddClipScan, m_BitmapAlpha, dest_width);
     }
-    clip_scan = m_pAddClipScan;
+    clip_scan = pAddClipScan;
   }
   if (m_SrcFormat == FXDIB_8bppMask) {
     m_Compositor.CompositeByteMaskLine(dest_scan, src_scan, dest_width,
@@ -126,11 +114,13 @@
                 (m_DestTop + line - m_pClipRgn->GetBox().top) *
                     m_pClipMask->GetPitch() +
                 (m_DestLeft - m_pClipRgn->GetBox().left);
-  uint8_t* dest_scan = (uint8_t*)m_pBitmap->GetScanline(line + m_DestTop) +
-                       m_DestLeft * m_pBitmap->GetBPP() / 8;
+  uint8_t* dest_scan =
+      const_cast<uint8_t*>(m_pBitmap->GetScanline(line + m_DestTop)) +
+      m_DestLeft * m_pBitmap->GetBPP() / 8;
   uint8_t* dest_alpha_scan =
       m_pBitmap->m_pAlphaMask
-          ? (uint8_t*)m_pBitmap->m_pAlphaMask->GetScanline(line + m_DestTop) +
+          ? const_cast<uint8_t*>(
+                m_pBitmap->m_pAlphaMask->GetScanline(line + m_DestTop)) +
                 m_DestLeft
           : nullptr;
   DoCompose(dest_scan, scanline, m_DestWidth, clip_scan, scan_extra_alpha,
@@ -140,7 +130,6 @@
 void CFX_BitmapComposer::ComposeScanlineV(int line,
                                           const uint8_t* scanline,
                                           const uint8_t* scan_extra_alpha) {
-  int i;
   int Bpp = m_pBitmap->GetBPP() / 8;
   int dest_pitch = m_pBitmap->GetPitch();
   int dest_alpha_pitch =
@@ -162,25 +151,24 @@
     y_step = -y_step;
     y_alpha_step = -y_alpha_step;
   }
-  uint8_t* src_scan = m_pScanlineV;
+  uint8_t* src_scan = m_pScanlineV.data();
   uint8_t* dest_scan = dest_buf;
-  for (i = 0; i < m_DestHeight; i++) {
-    for (int j = 0; j < Bpp; j++) {
+  for (int i = 0; i < m_DestHeight; ++i) {
+    for (int j = 0; j < Bpp; ++j)
       *src_scan++ = dest_scan[j];
-    }
     dest_scan += y_step;
   }
-  uint8_t* src_alpha_scan = m_pScanlineAlphaV;
+  uint8_t* src_alpha_scan = m_pScanlineAlphaV.data();
   uint8_t* dest_alpha_scan = dest_alpha_buf;
   if (dest_alpha_scan) {
-    for (i = 0; i < m_DestHeight; i++) {
+    for (int i = 0; i < m_DestHeight; ++i) {
       *src_alpha_scan++ = *dest_alpha_scan;
       dest_alpha_scan += y_alpha_step;
     }
   }
   uint8_t* clip_scan = nullptr;
   if (m_pClipMask) {
-    clip_scan = m_pClipScanV;
+    clip_scan = m_pClipScanV.data();
     int clip_pitch = m_pClipMask->GetPitch();
     const uint8_t* src_clip =
         m_pClipMask->GetBuffer() +
@@ -190,27 +178,26 @@
       src_clip += clip_pitch * (m_DestHeight - 1);
       clip_pitch = -clip_pitch;
     }
-    for (i = 0; i < m_DestHeight; i++) {
+    for (int i = 0; i < m_DestHeight; ++i) {
       clip_scan[i] = *src_clip;
       src_clip += clip_pitch;
     }
   }
-  DoCompose(m_pScanlineV, scanline, m_DestHeight, clip_scan, scan_extra_alpha,
-            m_pScanlineAlphaV);
-  src_scan = m_pScanlineV;
+  DoCompose(m_pScanlineV.data(), scanline, m_DestHeight, clip_scan,
+            scan_extra_alpha, m_pScanlineAlphaV.data());
+  src_scan = m_pScanlineV.data();
   dest_scan = dest_buf;
-  for (i = 0; i < m_DestHeight; i++) {
-    for (int j = 0; j < Bpp; j++) {
+  for (int i = 0; i < m_DestHeight; ++i) {
+    for (int j = 0; j < Bpp; ++j)
       dest_scan[j] = *src_scan++;
-    }
     dest_scan += y_step;
   }
-  src_alpha_scan = m_pScanlineAlphaV;
+  src_alpha_scan = m_pScanlineAlphaV.data();
   dest_alpha_scan = dest_alpha_buf;
-  if (dest_alpha_scan) {
-    for (i = 0; i < m_DestHeight; i++) {
-      *dest_alpha_scan = *src_alpha_scan++;
-      dest_alpha_scan += y_alpha_step;
-    }
+  if (!dest_alpha_scan)
+    return;
+  for (int i = 0; i < m_DestHeight; ++i) {
+    *dest_alpha_scan = *src_alpha_scan++;
+    dest_alpha_scan += y_alpha_step;
   }
 }
diff --git a/core/fxge/dib/cfx_bitmapcomposer.h b/core/fxge/dib/cfx_bitmapcomposer.h
index 6d14533..5ab0647 100644
--- a/core/fxge/dib/cfx_bitmapcomposer.h
+++ b/core/fxge/dib/cfx_bitmapcomposer.h
@@ -7,6 +7,8 @@
 #ifndef CORE_FXGE_DIB_CFX_BITMAPCOMPOSER_H_
 #define CORE_FXGE_DIB_CFX_BITMAPCOMPOSER_H_
 
+#include <vector>
+
 #include "core/fxcrt/cfx_retain_ptr.h"
 #include "core/fxcrt/fx_coordinates.h"
 #include "core/fxge/dib/cfx_scanlinecompositor.h"
@@ -24,14 +26,14 @@
                const CFX_ClipRgn* pClipRgn,
                int bitmap_alpha,
                uint32_t mask_color,
-               FX_RECT& dest_rect,
+               const FX_RECT& dest_rect,
                bool bVertical,
                bool bFlipX,
                bool bFlipY,
-               bool bRgbByteOrder = false,
-               int alpha_flag = 0,
-               void* pIccTransform = nullptr,
-               int blend_type = FXDIB_BLEND_NORMAL);
+               bool bRgbByteOrder,
+               int alpha_flag,
+               void* pIccTransform,
+               int blend_type);
 
   // IFX_ScanlineComposer
   bool SetInfo(int width,
@@ -48,11 +50,11 @@
                  const uint8_t* src_scan,
                  int dest_width,
                  const uint8_t* clip_scan,
-                 const uint8_t* src_extra_alpha = nullptr,
-                 uint8_t* dst_extra_alpha = nullptr);
+                 const uint8_t* src_extra_alpha,
+                 uint8_t* dst_extra_alpha);
   void ComposeScanlineV(int line,
                         const uint8_t* scanline,
-                        const uint8_t* scan_extra_alpha = nullptr);
+                        const uint8_t* scan_extra_alpha);
 
   CFX_RetainPtr<CFX_DIBitmap> m_pBitmap;
   const CFX_ClipRgn* m_pClipRgn;
@@ -72,10 +74,10 @@
   void* m_pIccTransform;
   bool m_bRgbByteOrder;
   int m_BlendType;
-  uint8_t* m_pScanlineV;
-  uint8_t* m_pClipScanV;
-  uint8_t* m_pAddClipScan;
-  uint8_t* m_pScanlineAlphaV;
+  std::vector<uint8_t> m_pScanlineV;
+  std::vector<uint8_t> m_pClipScanV;
+  std::vector<uint8_t> m_pAddClipScan;
+  std::vector<uint8_t> m_pScanlineAlphaV;
 };
 
 #endif  // CORE_FXGE_DIB_CFX_BITMAPCOMPOSER_H_
diff --git a/core/fxge/dib/ifx_scanlinecomposer.h b/core/fxge/dib/ifx_scanlinecomposer.h
index 4df01dd..7b070c0 100644
--- a/core/fxge/dib/ifx_scanlinecomposer.h
+++ b/core/fxge/dib/ifx_scanlinecomposer.h
@@ -15,7 +15,7 @@
 
   virtual void ComposeScanline(int line,
                                const uint8_t* scanline,
-                               const uint8_t* scan_extra_alpha = nullptr) = 0;
+                               const uint8_t* scan_extra_alpha) = 0;
 
   virtual bool SetInfo(int width,
                        int height,