Pass spans further down in CFX_ScanlineCompositor

Then immediately convert back to .data() for now. Later, we can convert
these one-by-one as performance allows to get better bounds checking.

-- tighter scope some locals while at it,

Change-Id: I7761eb4e5b5fd4ffb4e079770145ebb3021b5206
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/86176
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxge/dib/cfx_scanlinecompositor.cpp b/core/fxge/dib/cfx_scanlinecompositor.cpp
index 50add9a..71fd9de 100644
--- a/core/fxge/dib/cfx_scanlinecompositor.cpp
+++ b/core/fxge/dib/cfx_scanlinecompositor.cpp
@@ -195,11 +195,14 @@
   return result / 255;
 }
 
-void CompositeRow_AlphaToMask(uint8_t* dest_scan,
-                              const uint8_t* src_scan,
+void CompositeRow_AlphaToMask(pdfium::span<uint8_t> dest_span,
+                              pdfium::span<const uint8_t> src_span,
                               int pixel_count,
-                              const uint8_t* clip_scan,
+                              pdfium::span<const uint8_t> clip_span,
                               uint8_t stride) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   src_scan += stride - 1;
   for (int col = 0; col < pixel_count; ++col) {
     int src_alpha = GetAlpha(*src_scan, clip_scan, col);
@@ -213,10 +216,11 @@
   }
 }
 
-void CompositeRow_Rgb2Mask(uint8_t* dest_scan,
-                           const uint8_t* src_scan,
+void CompositeRow_Rgb2Mask(pdfium::span<uint8_t> dest_span,
                            int width,
-                           const uint8_t* clip_scan) {
+                           pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   if (!clip_scan) {
     memset(dest_scan, 0xff, width);
     return;
@@ -255,13 +259,18 @@
   return gray;
 }
 
-void CompositeRow_Argb2Graya(uint8_t* dest_scan,
-                             const uint8_t* src_scan,
+void CompositeRow_Argb2Graya(pdfium::span<uint8_t> dest_span,
+                             pdfium::span<const uint8_t> src_span,
                              int pixel_count,
                              BlendMode blend_type,
-                             const uint8_t* clip_scan,
-                             const uint8_t* src_alpha_scan,
-                             uint8_t* dst_alpha_scan) {
+                             pdfium::span<const uint8_t> clip_span,
+                             pdfium::span<const uint8_t> src_alpha_span,
+                             pdfium::span<uint8_t> dst_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  const uint8_t* src_alpha_scan = src_alpha_span.data();
+  uint8_t* dst_alpha_scan = dst_alpha_span.data();
   uint8_t offset = src_alpha_scan ? 3 : 4;
   for (int col = 0; col < pixel_count; ++col) {
     const uint8_t* alpha_scan =
@@ -302,20 +311,23 @@
   }
 }
 
-void CompositeRow_Argb2Gray(uint8_t* dest_scan,
-                            const uint8_t* src_scan,
+void CompositeRow_Argb2Gray(pdfium::span<uint8_t> dest_span,
+                            pdfium::span<const uint8_t> src_span,
                             int pixel_count,
                             BlendMode blend_type,
-                            const uint8_t* clip_scan,
-                            const uint8_t* src_alpha_scan) {
-  uint8_t gray;
+                            pdfium::span<const uint8_t> clip_span,
+                            pdfium::span<const uint8_t> src_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  const uint8_t* src_alpha_scan = src_alpha_span.data();
   uint8_t offset = src_alpha_scan ? 3 : 4;
   for (int col = 0; col < pixel_count; ++col) {
     const uint8_t* alpha_scan =
         src_alpha_scan ? src_alpha_scan++ : &src_scan[3];
     int src_alpha = GetAlpha(*alpha_scan, clip_scan, col);
     if (src_alpha) {
-      gray = GetGrayWithBlend(src_scan, dest_scan, blend_type);
+      uint8_t gray = GetGrayWithBlend(src_scan, dest_scan, blend_type);
       *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha);
     }
     ++dest_scan;
@@ -323,15 +335,17 @@
   }
 }
 
-void CompositeRow_Rgb2Gray(uint8_t* dest_scan,
-                           const uint8_t* src_scan,
+void CompositeRow_Rgb2Gray(pdfium::span<uint8_t> dest_span,
+                           pdfium::span<const uint8_t> src_span,
                            int src_Bpp,
                            int pixel_count,
                            BlendMode blend_type,
-                           const uint8_t* clip_scan) {
-  uint8_t gray;
+                           pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; ++col) {
-    gray = GetGrayWithBlend(src_scan, dest_scan, blend_type);
+    uint8_t gray = GetGrayWithBlend(src_scan, dest_scan, blend_type);
     if (clip_scan && clip_scan[col] < 255)
       *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]);
     else
@@ -341,13 +355,17 @@
   }
 }
 
-void CompositeRow_Rgb2Graya(uint8_t* dest_scan,
-                            const uint8_t* src_scan,
+void CompositeRow_Rgb2Graya(pdfium::span<uint8_t> dest_span,
+                            pdfium::span<const uint8_t> src_span,
                             int src_Bpp,
                             int pixel_count,
                             BlendMode blend_type,
-                            const uint8_t* clip_scan,
-                            uint8_t* dest_alpha_scan) {
+                            pdfium::span<const uint8_t> clip_span,
+                            pdfium::span<uint8_t> dest_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   for (int col = 0; col < pixel_count; ++col) {
     if (blend_type != BlendMode::kNormal && *dest_alpha_scan == 0) {
       *dest_scan = GetGray(src_scan);
@@ -383,13 +401,18 @@
   }
 }
 
-void CompositeRow_Argb2Argb(uint8_t* dest_scan,
-                            const uint8_t* src_scan,
+void CompositeRow_Argb2Argb(pdfium::span<uint8_t> dest_span,
+                            pdfium::span<const uint8_t> src_span,
                             int pixel_count,
                             BlendMode blend_type,
-                            const uint8_t* clip_scan,
-                            uint8_t* dest_alpha_scan,
-                            const uint8_t* src_alpha_scan) {
+                            pdfium::span<const uint8_t> clip_span,
+                            pdfium::span<uint8_t> dest_alpha_span,
+                            pdfium::span<const uint8_t> src_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
+  const uint8_t* src_alpha_scan = src_alpha_span.data();
   int blended_colors[3];
   uint8_t dest_offset = dest_alpha_scan ? 3 : 4;
   uint8_t src_offset = src_alpha_scan ? 3 : 4;
@@ -463,12 +486,15 @@
   }
 }
 
-void CompositeRow_Rgb2Argb_Blend_NoClip(uint8_t* dest_scan,
-                                        const uint8_t* src_scan,
+void CompositeRow_Rgb2Argb_Blend_NoClip(pdfium::span<uint8_t> dest_span,
+                                        pdfium::span<const uint8_t> src_span,
                                         int width,
                                         BlendMode blend_type,
                                         int src_Bpp,
-                                        uint8_t* dest_alpha_scan) {
+                                        pdfium::span<uint8_t> dest_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   int blended_colors[3];
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
   int src_gap = src_Bpp - 3;
@@ -514,13 +540,17 @@
   }
 }
 
-void CompositeRow_Rgb2Argb_Blend_Clip(uint8_t* dest_scan,
-                                      const uint8_t* src_scan,
+void CompositeRow_Rgb2Argb_Blend_Clip(pdfium::span<uint8_t> dest_span,
+                                      pdfium::span<const uint8_t> src_span,
                                       int width,
                                       BlendMode blend_type,
                                       int src_Bpp,
-                                      const uint8_t* clip_scan,
-                                      uint8_t* dest_alpha_scan) {
+                                      pdfium::span<const uint8_t> clip_span,
+                                      pdfium::span<uint8_t> dest_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   int blended_colors[3];
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
   int src_gap = src_Bpp - 3;
@@ -569,12 +599,16 @@
   }
 }
 
-void CompositeRow_Rgb2Argb_NoBlend_Clip(uint8_t* dest_scan,
-                                        const uint8_t* src_scan,
+void CompositeRow_Rgb2Argb_NoBlend_Clip(pdfium::span<uint8_t> dest_span,
+                                        pdfium::span<const uint8_t> src_span,
                                         int width,
                                         int src_Bpp,
-                                        const uint8_t* clip_scan,
-                                        uint8_t* dest_alpha_scan) {
+                                        pdfium::span<const uint8_t> clip_span,
+                                        pdfium::span<uint8_t> dest_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   int src_gap = src_Bpp - 3;
   if (dest_alpha_scan) {
     for (int col = 0; col < width; col++) {
@@ -635,11 +669,15 @@
   }
 }
 
-void CompositeRow_Rgb2Argb_NoBlend_NoClip(uint8_t* dest_scan,
-                                          const uint8_t* src_scan,
-                                          int width,
-                                          int src_Bpp,
-                                          uint8_t* dest_alpha_scan) {
+void CompositeRow_Rgb2Argb_NoBlend_NoClip(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    int src_Bpp,
+    pdfium::span<uint8_t> dest_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   if (dest_alpha_scan) {
     for (int col = 0; col < width; col++) {
       memcpy(dest_scan, src_scan, 3);
@@ -661,13 +699,17 @@
   }
 }
 
-void CompositeRow_Argb2Rgb_Blend(uint8_t* dest_scan,
-                                 const uint8_t* src_scan,
+void CompositeRow_Argb2Rgb_Blend(pdfium::span<uint8_t> dest_span,
+                                 pdfium::span<const uint8_t> src_span,
                                  int width,
                                  BlendMode blend_type,
                                  int dest_Bpp,
-                                 const uint8_t* clip_scan,
-                                 const uint8_t* src_alpha_scan) {
+                                 pdfium::span<const uint8_t> clip_span,
+                                 pdfium::span<const uint8_t> src_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  const uint8_t* src_alpha_scan = src_alpha_span.data();
   int blended_colors[3];
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
   int dest_gap = dest_Bpp - 3;
@@ -729,12 +771,16 @@
   }
 }
 
-void CompositeRow_Argb2Rgb_NoBlend(uint8_t* dest_scan,
-                                   const uint8_t* src_scan,
+void CompositeRow_Argb2Rgb_NoBlend(pdfium::span<uint8_t> dest_span,
+                                   pdfium::span<const uint8_t> src_span,
                                    int width,
                                    int dest_Bpp,
-                                   const uint8_t* clip_scan,
-                                   const uint8_t* src_alpha_scan) {
+                                   pdfium::span<const uint8_t> clip_span,
+                                   pdfium::span<const uint8_t> src_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  const uint8_t* src_alpha_scan = src_alpha_span.data();
   int dest_gap = dest_Bpp - 3;
   if (src_alpha_scan) {
     for (int col = 0; col < width; col++) {
@@ -792,12 +838,14 @@
   }
 }
 
-void CompositeRow_Rgb2Rgb_Blend_NoClip(uint8_t* dest_scan,
-                                       const uint8_t* src_scan,
+void CompositeRow_Rgb2Rgb_Blend_NoClip(pdfium::span<uint8_t> dest_span,
+                                       pdfium::span<const uint8_t> src_span,
                                        int width,
                                        BlendMode blend_type,
                                        int dest_Bpp,
                                        int src_Bpp) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
   int blended_colors[3];
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
   int dest_gap = dest_Bpp - 3;
@@ -821,13 +869,16 @@
   }
 }
 
-void CompositeRow_Rgb2Rgb_Blend_Clip(uint8_t* dest_scan,
-                                     const uint8_t* src_scan,
+void CompositeRow_Rgb2Rgb_Blend_Clip(pdfium::span<uint8_t> dest_span,
+                                     pdfium::span<const uint8_t> src_span,
                                      int width,
                                      BlendMode blend_type,
                                      int dest_Bpp,
                                      int src_Bpp,
-                                     const uint8_t* clip_scan) {
+                                     pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   int blended_colors[3];
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
   int dest_gap = dest_Bpp - 3;
@@ -857,11 +908,13 @@
   }
 }
 
-void CompositeRow_Rgb2Rgb_NoBlend_NoClip(uint8_t* dest_scan,
-                                         const uint8_t* src_scan,
+void CompositeRow_Rgb2Rgb_NoBlend_NoClip(pdfium::span<uint8_t> dest_span,
+                                         pdfium::span<const uint8_t> src_span,
                                          int width,
                                          int dest_Bpp,
                                          int src_Bpp) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
   if (dest_Bpp == src_Bpp) {
     memcpy(dest_scan, src_scan, width * dest_Bpp);
     return;
@@ -873,12 +926,15 @@
   }
 }
 
-void CompositeRow_Rgb2Rgb_NoBlend_Clip(uint8_t* dest_scan,
-                                       const uint8_t* src_scan,
+void CompositeRow_Rgb2Rgb_NoBlend_Clip(pdfium::span<uint8_t> dest_span,
+                                       pdfium::span<const uint8_t> src_span,
                                        int width,
                                        int dest_Bpp,
                                        int src_Bpp,
-                                       const uint8_t* clip_scan) {
+                                       pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < width; col++) {
     int src_alpha = clip_scan[col];
     if (src_alpha == 255) {
@@ -900,13 +956,18 @@
   }
 }
 
-void CompositeRow_8bppPal2Gray(uint8_t* dest_scan,
-                               const uint8_t* src_scan,
-                               const uint8_t* pPalette,
+void CompositeRow_8bppPal2Gray(pdfium::span<uint8_t> dest_span,
+                               pdfium::span<const uint8_t> src_span,
+                               pdfium::span<const uint8_t> palette_span,
                                int pixel_count,
                                BlendMode blend_type,
-                               const uint8_t* clip_scan,
-                               const uint8_t* src_alpha_scan) {
+                               pdfium::span<const uint8_t> clip_span,
+                               pdfium::span<const uint8_t> src_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  const uint8_t* src_alpha_scan = src_alpha_span.data();
+  const uint8_t* pPalette = palette_span.data();
   if (src_alpha_scan) {
     if (blend_type != BlendMode::kNormal) {
       bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
@@ -966,14 +1027,20 @@
   }
 }
 
-void CompositeRow_8bppPal2Graya(uint8_t* dest_scan,
-                                const uint8_t* src_scan,
-                                const uint8_t* pPalette,
+void CompositeRow_8bppPal2Graya(pdfium::span<uint8_t> dest_span,
+                                pdfium::span<const uint8_t> src_span,
+                                pdfium::span<const uint8_t> palette_span,
                                 int pixel_count,
                                 BlendMode blend_type,
-                                const uint8_t* clip_scan,
-                                uint8_t* dest_alpha_scan,
-                                const uint8_t* src_alpha_scan) {
+                                pdfium::span<const uint8_t> clip_span,
+                                pdfium::span<uint8_t> dest_alpha_span,
+                                pdfium::span<const uint8_t> src_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* pPalette = palette_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  const uint8_t* src_alpha_scan = src_alpha_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   if (src_alpha_scan) {
     if (blend_type != BlendMode::kNormal) {
       bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
@@ -1092,13 +1159,16 @@
   }
 }
 
-void CompositeRow_1bppPal2Gray(uint8_t* dest_scan,
-                               const uint8_t* src_scan,
+void CompositeRow_1bppPal2Gray(pdfium::span<uint8_t> dest_span,
+                               pdfium::span<const uint8_t> src_span,
                                int src_left,
                                pdfium::span<const uint8_t> src_palette,
                                int pixel_count,
                                BlendMode blend_type,
-                               const uint8_t* clip_scan) {
+                               pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   int reset_gray = src_palette[0];
   int set_gray = src_palette[1];
   if (blend_type != BlendMode::kNormal) {
@@ -1135,14 +1205,18 @@
   }
 }
 
-void CompositeRow_1bppPal2Graya(uint8_t* dest_scan,
-                                const uint8_t* src_scan,
+void CompositeRow_1bppPal2Graya(pdfium::span<uint8_t> dest_span,
+                                pdfium::span<const uint8_t> src_span,
                                 int src_left,
                                 pdfium::span<const uint8_t> src_palette,
                                 int pixel_count,
                                 BlendMode blend_type,
-                                const uint8_t* clip_scan,
-                                uint8_t* dest_alpha_scan) {
+                                pdfium::span<const uint8_t> clip_span,
+                                pdfium::span<uint8_t> dest_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   int reset_gray = src_palette[0];
   int set_gray = src_palette[1];
   if (blend_type != BlendMode::kNormal) {
@@ -1202,13 +1276,19 @@
   }
 }
 
-void CompositeRow_8bppRgb2Rgb_NoBlend(uint8_t* dest_scan,
-                                      const uint8_t* src_scan,
-                                      const uint32_t* pPalette,
-                                      int pixel_count,
-                                      int DestBpp,
-                                      const uint8_t* clip_scan,
-                                      const uint8_t* src_alpha_scan) {
+void CompositeRow_8bppRgb2Rgb_NoBlend(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    pdfium::span<const uint32_t> palette_span,
+    int pixel_count,
+    int DestBpp,
+    pdfium::span<const uint8_t> clip_span,
+    pdfium::span<const uint8_t> src_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  const uint8_t* src_alpha_scan = src_alpha_span.data();
+  const uint32_t* pPalette = palette_span.data();
   if (src_alpha_scan) {
     int dest_gap = DestBpp - 3;
     FX_ARGB argb = 0;
@@ -1270,13 +1350,16 @@
   }
 }
 
-void CompositeRow_1bppRgb2Rgb_NoBlend(uint8_t* dest_scan,
-                                      const uint8_t* src_scan,
+void CompositeRow_1bppRgb2Rgb_NoBlend(pdfium::span<uint8_t> dest_span,
+                                      pdfium::span<const uint8_t> src_span,
                                       int src_left,
                                       pdfium::span<const uint32_t> src_palette,
                                       int pixel_count,
                                       int DestBpp,
-                                      const uint8_t* clip_scan) {
+                                      pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   int reset_r = FXARGB_R(src_palette[0]);
   int reset_g = FXARGB_G(src_palette[0]);
   int reset_b = FXARGB_B(src_palette[0]);
@@ -1314,12 +1397,18 @@
   }
 }
 
-void CompositeRow_8bppRgb2Argb_NoBlend(uint8_t* dest_scan,
-                                       const uint8_t* src_scan,
-                                       int width,
-                                       const uint32_t* pPalette,
-                                       const uint8_t* clip_scan,
-                                       const uint8_t* src_alpha_scan) {
+void CompositeRow_8bppRgb2Argb_NoBlend(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    pdfium::span<const uint32_t> palette_span,
+    pdfium::span<const uint8_t> clip_span,
+    pdfium::span<const uint8_t> src_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  const uint8_t* src_alpha_scan = src_alpha_span.data();
+  const uint32_t* pPalette = palette_span.data();
   if (src_alpha_scan) {
     for (int col = 0; col < width; col++) {
       FX_ARGB argb = pPalette[*src_scan];
@@ -1395,12 +1484,15 @@
   }
 }
 
-void CompositeRow_1bppRgb2Argb_NoBlend(uint8_t* dest_scan,
-                                       const uint8_t* src_scan,
+void CompositeRow_1bppRgb2Argb_NoBlend(pdfium::span<uint8_t> dest_span,
+                                       pdfium::span<const uint8_t> src_span,
                                        int src_left,
                                        int width,
                                        pdfium::span<const uint32_t> src_palette,
-                                       const uint8_t* clip_scan) {
+                                       pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   int reset_r = FXARGB_R(src_palette[0]);
   int reset_g = FXARGB_G(src_palette[0]);
   int reset_b = FXARGB_B(src_palette[0]);
@@ -1446,13 +1538,17 @@
   }
 }
 
-void CompositeRow_1bppRgb2Rgba_NoBlend(uint8_t* dest_scan,
-                                       const uint8_t* src_scan,
+void CompositeRow_1bppRgb2Rgba_NoBlend(pdfium::span<uint8_t> dest_span,
+                                       pdfium::span<const uint8_t> src_span,
                                        int src_left,
                                        int width,
                                        pdfium::span<const uint32_t> src_palette,
-                                       const uint8_t* clip_scan,
-                                       uint8_t* dest_alpha_scan) {
+                                       pdfium::span<const uint8_t> clip_span,
+                                       pdfium::span<uint8_t> dest_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   int reset_r = FXARGB_R(src_palette[0]);
   int reset_g = FXARGB_G(src_palette[0]);
   int reset_b = FXARGB_B(src_palette[0]);
@@ -1498,15 +1594,18 @@
   }
 }
 
-void CompositeRow_ByteMask2Argb(uint8_t* dest_scan,
-                                const uint8_t* src_scan,
+void CompositeRow_ByteMask2Argb(pdfium::span<uint8_t> dest_span,
+                                pdfium::span<const uint8_t> src_span,
                                 int mask_alpha,
                                 int src_r,
                                 int src_g,
                                 int src_b,
                                 int pixel_count,
                                 BlendMode blend_type,
-                                const uint8_t* clip_scan) {
+                                pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; col++) {
     int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col);
     uint8_t back_alpha = dest_scan[3];
@@ -1559,8 +1658,8 @@
   }
 }
 
-void CompositeRow_ByteMask2Rgb(uint8_t* dest_scan,
-                               const uint8_t* src_scan,
+void CompositeRow_ByteMask2Rgb(pdfium::span<uint8_t> dest_span,
+                               pdfium::span<const uint8_t> src_span,
                                int mask_alpha,
                                int src_r,
                                int src_g,
@@ -1568,7 +1667,10 @@
                                int pixel_count,
                                BlendMode blend_type,
                                int Bpp,
-                               const uint8_t* clip_scan) {
+                               pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; col++) {
     int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col);
     if (src_alpha == 0) {
@@ -1606,11 +1708,14 @@
   }
 }
 
-void CompositeRow_ByteMask2Mask(uint8_t* dest_scan,
-                                const uint8_t* src_scan,
+void CompositeRow_ByteMask2Mask(pdfium::span<uint8_t> dest_span,
+                                pdfium::span<const uint8_t> src_span,
                                 int mask_alpha,
                                 int pixel_count,
-                                const uint8_t* clip_scan) {
+                                pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; col++) {
     int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col);
     uint8_t back_alpha = *dest_scan;
@@ -1623,12 +1728,15 @@
   }
 }
 
-void CompositeRow_ByteMask2Gray(uint8_t* dest_scan,
-                                const uint8_t* src_scan,
+void CompositeRow_ByteMask2Gray(pdfium::span<uint8_t> dest_span,
+                                pdfium::span<const uint8_t> src_span,
                                 int mask_alpha,
                                 int src_gray,
                                 int pixel_count,
-                                const uint8_t* clip_scan) {
+                                pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; col++) {
     int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col);
     if (src_alpha) {
@@ -1638,13 +1746,17 @@
   }
 }
 
-void CompositeRow_ByteMask2Graya(uint8_t* dest_scan,
-                                 const uint8_t* src_scan,
+void CompositeRow_ByteMask2Graya(pdfium::span<uint8_t> dest_span,
+                                 pdfium::span<const uint8_t> src_span,
                                  int mask_alpha,
                                  int src_gray,
                                  int pixel_count,
-                                 const uint8_t* clip_scan,
-                                 uint8_t* dest_alpha_scan) {
+                                 pdfium::span<const uint8_t> clip_span,
+                                 pdfium::span<uint8_t> dest_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   for (int col = 0; col < pixel_count; col++) {
     int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col);
     uint8_t back_alpha = *dest_alpha_scan;
@@ -1666,8 +1778,8 @@
   }
 }
 
-void CompositeRow_BitMask2Argb(uint8_t* dest_scan,
-                               const uint8_t* src_scan,
+void CompositeRow_BitMask2Argb(pdfium::span<uint8_t> dest_span,
+                               pdfium::span<const uint8_t> src_span,
                                int mask_alpha,
                                int src_r,
                                int src_g,
@@ -1675,7 +1787,10 @@
                                int src_left,
                                int pixel_count,
                                BlendMode blend_type,
-                               const uint8_t* clip_scan) {
+                               pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   if (blend_type == BlendMode::kNormal && !clip_scan && mask_alpha == 255) {
     FX_ARGB argb = ArgbEncode(0xff, src_r, src_g, src_b);
     for (int col = 0; col < pixel_count; col++) {
@@ -1738,8 +1853,8 @@
   }
 }
 
-void CompositeRow_BitMask2Rgb(uint8_t* dest_scan,
-                              const uint8_t* src_scan,
+void CompositeRow_BitMask2Rgb(pdfium::span<uint8_t> dest_span,
+                              pdfium::span<const uint8_t> src_span,
                               int mask_alpha,
                               int src_r,
                               int src_g,
@@ -1748,7 +1863,10 @@
                               int pixel_count,
                               BlendMode blend_type,
                               int Bpp,
-                              const uint8_t* clip_scan) {
+                              pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   if (blend_type == BlendMode::kNormal && !clip_scan && mask_alpha == 255) {
     for (int col = 0; col < pixel_count; col++) {
       if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) {
@@ -1801,12 +1919,15 @@
   }
 }
 
-void CompositeRow_BitMask2Mask(uint8_t* dest_scan,
-                               const uint8_t* src_scan,
+void CompositeRow_BitMask2Mask(pdfium::span<uint8_t> dest_span,
+                               pdfium::span<const uint8_t> src_span,
                                int mask_alpha,
                                int src_left,
                                int pixel_count,
-                               const uint8_t* clip_scan) {
+                               pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; col++) {
     if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) {
       dest_scan++;
@@ -1823,13 +1944,16 @@
   }
 }
 
-void CompositeRow_BitMask2Gray(uint8_t* dest_scan,
-                               const uint8_t* src_scan,
+void CompositeRow_BitMask2Gray(pdfium::span<uint8_t> dest_span,
+                               pdfium::span<const uint8_t> src_span,
                                int mask_alpha,
                                int src_gray,
                                int src_left,
                                int pixel_count,
-                               const uint8_t* clip_scan) {
+                               pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; col++) {
     if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) {
       dest_scan++;
@@ -1843,14 +1967,18 @@
   }
 }
 
-void CompositeRow_BitMask2Graya(uint8_t* dest_scan,
-                                const uint8_t* src_scan,
+void CompositeRow_BitMask2Graya(pdfium::span<uint8_t> dest_span,
+                                pdfium::span<const uint8_t> src_span,
                                 int mask_alpha,
                                 int src_gray,
                                 int src_left,
                                 int pixel_count,
-                                const uint8_t* clip_scan,
-                                uint8_t* dest_alpha_scan) {
+                                pdfium::span<const uint8_t> clip_span,
+                                pdfium::span<uint8_t> dest_alpha_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
+  uint8_t* dest_alpha_scan = dest_alpha_span.data();
   for (int col = 0; col < pixel_count; col++) {
     if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) {
       dest_scan++;
@@ -1877,13 +2005,17 @@
   }
 }
 
-void CompositeRow_Argb2Argb_RgbByteOrder(uint8_t* dest_scan,
-                                         const uint8_t* src_scan,
-                                         int pixel_count,
-                                         BlendMode blend_type,
-                                         const uint8_t* clip_scan) {
-  int blended_colors[3];
+void CompositeRow_Argb2Argb_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int pixel_count,
+    BlendMode blend_type,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
+  int blended_colors[3];
   for (int col = 0; col < pixel_count; col++) {
     uint8_t back_alpha = dest_scan[3];
     if (back_alpha == 0) {
@@ -1932,14 +2064,17 @@
   }
 }
 
-void CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder(uint8_t* dest_scan,
-                                                     const uint8_t* src_scan,
-                                                     int width,
-                                                     BlendMode blend_type,
-                                                     int src_Bpp) {
-  int blended_colors[3];
+void CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    BlendMode blend_type,
+    int src_Bpp) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
   int src_gap = src_Bpp - 3;
+  int blended_colors[3];
   for (int col = 0; col < width; col++) {
     uint8_t back_alpha = dest_scan[3];
     if (back_alpha == 0) {
@@ -1973,14 +2108,18 @@
   }
 }
 
-void CompositeRow_Argb2Rgb_Blend_RgbByteOrder(uint8_t* dest_scan,
-                                              const uint8_t* src_scan,
-                                              int width,
-                                              BlendMode blend_type,
-                                              int dest_Bpp,
-                                              const uint8_t* clip_scan) {
+void CompositeRow_Argb2Rgb_Blend_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    BlendMode blend_type,
+    int dest_Bpp,
+    pdfium::span<const uint8_t> clip_span) {
   int blended_colors[3];
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < width; col++) {
     uint8_t src_alpha;
     if (clip_scan) {
@@ -2012,10 +2151,13 @@
   }
 }
 
-void CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder(uint8_t* dest_scan,
-                                                       const uint8_t* src_scan,
-                                                       int width,
-                                                       int src_Bpp) {
+void CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    int src_Bpp) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
   for (int col = 0; col < width; col++) {
     if (src_Bpp == 4) {
       FXARGB_SETRGBORDERDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan));
@@ -2028,14 +2170,17 @@
   }
 }
 
-void CompositeRow_Rgb2Rgb_Blend_NoClip_RgbByteOrder(uint8_t* dest_scan,
-                                                    const uint8_t* src_scan,
-                                                    int width,
-                                                    BlendMode blend_type,
-                                                    int dest_Bpp,
-                                                    int src_Bpp) {
+void CompositeRow_Rgb2Rgb_Blend_NoClip_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    BlendMode blend_type,
+    int dest_Bpp,
+    int src_Bpp) {
   int blended_colors[3];
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
   int src_gap = src_Bpp - 3;
   for (int col = 0; col < width; col++) {
     if (bNonseparableBlend) {
@@ -2058,11 +2203,15 @@
   }
 }
 
-void CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder(uint8_t* dest_scan,
-                                                const uint8_t* src_scan,
-                                                int width,
-                                                int dest_Bpp,
-                                                const uint8_t* clip_scan) {
+void CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    int dest_Bpp,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < width; col++) {
     uint8_t src_alpha;
     if (clip_scan) {
@@ -2092,11 +2241,14 @@
   }
 }
 
-void CompositeRow_Rgb2Rgb_NoBlend_NoClip_RgbByteOrder(uint8_t* dest_scan,
-                                                      const uint8_t* src_scan,
-                                                      int width,
-                                                      int dest_Bpp,
-                                                      int src_Bpp) {
+void CompositeRow_Rgb2Rgb_NoBlend_NoClip_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    int dest_Bpp,
+    int src_Bpp) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
   for (int col = 0; col < width; col++) {
     ReverseCopy3Bytes(dest_scan, src_scan);
     dest_scan += dest_Bpp;
@@ -2104,12 +2256,16 @@
   }
 }
 
-void CompositeRow_Rgb2Argb_Blend_Clip_RgbByteOrder(uint8_t* dest_scan,
-                                                   const uint8_t* src_scan,
-                                                   int width,
-                                                   BlendMode blend_type,
-                                                   int src_Bpp,
-                                                   const uint8_t* clip_scan) {
+void CompositeRow_Rgb2Argb_Blend_Clip_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    BlendMode blend_type,
+    int src_Bpp,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   int blended_colors[3];
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
   int src_gap = src_Bpp - 3;
@@ -2151,13 +2307,17 @@
   }
 }
 
-void CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder(uint8_t* dest_scan,
-                                                  const uint8_t* src_scan,
-                                                  int width,
-                                                  BlendMode blend_type,
-                                                  int dest_Bpp,
-                                                  int src_Bpp,
-                                                  const uint8_t* clip_scan) {
+void CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    BlendMode blend_type,
+    int dest_Bpp,
+    int src_Bpp,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   int blended_colors[3];
   bool bNonseparableBlend = IsNonSeparableBlendMode(blend_type);
   int src_gap = src_Bpp - 3;
@@ -2188,11 +2348,15 @@
   }
 }
 
-void CompositeRow_Rgb2Argb_NoBlend_Clip_RgbByteOrder(uint8_t* dest_scan,
-                                                     const uint8_t* src_scan,
-                                                     int width,
-                                                     int src_Bpp,
-                                                     const uint8_t* clip_scan) {
+void CompositeRow_Rgb2Argb_NoBlend_Clip_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    int src_Bpp,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   int src_gap = src_Bpp - 3;
   for (int col = 0; col < width; col++) {
     int src_alpha = clip_scan[col];
@@ -2223,12 +2387,16 @@
   }
 }
 
-void CompositeRow_Rgb2Rgb_NoBlend_Clip_RgbByteOrder(uint8_t* dest_scan,
-                                                    const uint8_t* src_scan,
-                                                    int width,
-                                                    int dest_Bpp,
-                                                    int src_Bpp,
-                                                    const uint8_t* clip_scan) {
+void CompositeRow_Rgb2Rgb_NoBlend_Clip_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    int dest_Bpp,
+    int src_Bpp,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < width; col++) {
     int src_alpha = clip_scan[col];
     if (src_alpha == 255) {
@@ -2248,12 +2416,16 @@
   }
 }
 
-void CompositeRow_8bppRgb2Rgb_NoBlend_RgbByteOrder(uint8_t* dest_scan,
-                                                   const uint8_t* src_scan,
-                                                   const FX_ARGB* pPalette,
-                                                   int pixel_count,
-                                                   int DestBpp,
-                                                   const uint8_t* clip_scan) {
+void CompositeRow_8bppRgb2Rgb_NoBlend_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    const FX_ARGB* pPalette,
+    int pixel_count,
+    int DestBpp,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; col++) {
     FX_ARGB argb = pPalette ? pPalette[*src_scan]
                             : ArgbEncode(0, *src_scan, *src_scan, *src_scan);
@@ -2275,13 +2447,16 @@
 }
 
 void CompositeRow_1bppRgb2Rgb_NoBlend_RgbByteOrder(
-    uint8_t* dest_scan,
-    const uint8_t* src_scan,
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
     int src_left,
     pdfium::span<const FX_ARGB> src_palette,
     int pixel_count,
     int DestBpp,
-    const uint8_t* clip_scan) {
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   int reset_r;
   int reset_g;
   int reset_b;
@@ -2325,11 +2500,15 @@
   }
 }
 
-void CompositeRow_8bppRgb2Argb_NoBlend_RgbByteOrder(uint8_t* dest_scan,
-                                                    const uint8_t* src_scan,
-                                                    int width,
-                                                    const FX_ARGB* pPalette,
-                                                    const uint8_t* clip_scan) {
+void CompositeRow_8bppRgb2Argb_NoBlend_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int width,
+    const FX_ARGB* pPalette,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < width; col++) {
     int src_r;
     int src_g;
@@ -2370,12 +2549,15 @@
 }
 
 void CompositeRow_1bppRgb2Argb_NoBlend_RgbByteOrder(
-    uint8_t* dest_scan,
-    const uint8_t* src_scan,
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
     int src_left,
     int width,
     pdfium::span<const FX_ARGB> src_palette,
-    const uint8_t* clip_scan) {
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   int reset_r;
   int reset_g;
   int reset_b;
@@ -2430,15 +2612,19 @@
   }
 }
 
-void CompositeRow_ByteMask2Argb_RgbByteOrder(uint8_t* dest_scan,
-                                             const uint8_t* src_scan,
-                                             int mask_alpha,
-                                             int src_r,
-                                             int src_g,
-                                             int src_b,
-                                             int pixel_count,
-                                             BlendMode blend_type,
-                                             const uint8_t* clip_scan) {
+void CompositeRow_ByteMask2Argb_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int mask_alpha,
+    int src_r,
+    int src_g,
+    int src_b,
+    int pixel_count,
+    BlendMode blend_type,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; col++) {
     int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col);
     uint8_t back_alpha = dest_scan[3];
@@ -2488,16 +2674,20 @@
   }
 }
 
-void CompositeRow_ByteMask2Rgb_RgbByteOrder(uint8_t* dest_scan,
-                                            const uint8_t* src_scan,
-                                            int mask_alpha,
-                                            int src_r,
-                                            int src_g,
-                                            int src_b,
-                                            int pixel_count,
-                                            BlendMode blend_type,
-                                            int Bpp,
-                                            const uint8_t* clip_scan) {
+void CompositeRow_ByteMask2Rgb_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int mask_alpha,
+    int src_r,
+    int src_g,
+    int src_b,
+    int pixel_count,
+    BlendMode blend_type,
+    int Bpp,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   for (int col = 0; col < pixel_count; col++) {
     int src_alpha = GetAlphaWithSrc(mask_alpha, clip_scan, src_scan, col);
     if (src_alpha == 0) {
@@ -2534,16 +2724,20 @@
   }
 }
 
-void CompositeRow_BitMask2Argb_RgbByteOrder(uint8_t* dest_scan,
-                                            const uint8_t* src_scan,
-                                            int mask_alpha,
-                                            int src_r,
-                                            int src_g,
-                                            int src_b,
-                                            int src_left,
-                                            int pixel_count,
-                                            BlendMode blend_type,
-                                            const uint8_t* clip_scan) {
+void CompositeRow_BitMask2Argb_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int mask_alpha,
+    int src_r,
+    int src_g,
+    int src_b,
+    int src_left,
+    int pixel_count,
+    BlendMode blend_type,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   if (blend_type == BlendMode::kNormal && !clip_scan && mask_alpha == 255) {
     FX_ARGB argb = ArgbEncode(0xff, src_r, src_g, src_b);
     for (int col = 0; col < pixel_count; col++) {
@@ -2603,17 +2797,21 @@
   }
 }
 
-void CompositeRow_BitMask2Rgb_RgbByteOrder(uint8_t* dest_scan,
-                                           const uint8_t* src_scan,
-                                           int mask_alpha,
-                                           int src_r,
-                                           int src_g,
-                                           int src_b,
-                                           int src_left,
-                                           int pixel_count,
-                                           BlendMode blend_type,
-                                           int Bpp,
-                                           const uint8_t* clip_scan) {
+void CompositeRow_BitMask2Rgb_RgbByteOrder(
+    pdfium::span<uint8_t> dest_span,
+    pdfium::span<const uint8_t> src_span,
+    int mask_alpha,
+    int src_r,
+    int src_g,
+    int src_b,
+    int src_left,
+    int pixel_count,
+    BlendMode blend_type,
+    int Bpp,
+    pdfium::span<const uint8_t> clip_span) {
+  uint8_t* dest_scan = dest_span.data();
+  const uint8_t* src_scan = src_span.data();
+  const uint8_t* clip_scan = clip_span.data();
   if (blend_type == BlendMode::kNormal && !clip_scan && mask_alpha == 255) {
     for (int col = 0; col < pixel_count; col++) {
       if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) {
@@ -2786,58 +2984,51 @@
       case 4:
       case 8:
       case 12:
-        CompositeRow_Argb2Argb_RgbByteOrder(dest_scan.data(), src_scan.data(),
-                                            width, m_BlendType,
-                                            clip_scan.data());
+        CompositeRow_Argb2Argb_RgbByteOrder(dest_scan, src_scan, width,
+                                            m_BlendType, clip_scan);
         break;
       case 1:
         CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width, m_BlendType, src_Bpp);
+            dest_scan, src_scan, width, m_BlendType, src_Bpp);
         break;
       case 2:
       case 10:
         CompositeRow_Argb2Rgb_Blend_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width, m_BlendType, dest_Bpp,
-            clip_scan.data());
+            dest_scan, src_scan, width, m_BlendType, dest_Bpp, clip_scan);
         break;
       case 3:
         CompositeRow_Rgb2Rgb_Blend_NoClip_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width, m_BlendType, dest_Bpp,
-            src_Bpp);
+            dest_scan, src_scan, width, m_BlendType, dest_Bpp, src_Bpp);
         break;
       case 5:
-        CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width, src_Bpp);
+        CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder(dest_scan, src_scan,
+                                                          width, src_Bpp);
         break;
       case 6:
       case 14:
-        CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder(dest_scan.data(),
-                                                   src_scan.data(), width,
-                                                   dest_Bpp, clip_scan.data());
+        CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder(dest_scan, src_scan, width,
+                                                   dest_Bpp, clip_scan);
         break;
       case 7:
         CompositeRow_Rgb2Rgb_NoBlend_NoClip_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width, dest_Bpp, src_Bpp);
+            dest_scan, src_scan, width, dest_Bpp, src_Bpp);
         break;
       case 9:
         CompositeRow_Rgb2Argb_Blend_Clip_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width, m_BlendType, src_Bpp,
-            clip_scan.data());
+            dest_scan, src_scan, width, m_BlendType, src_Bpp, clip_scan);
         break;
       case 11:
-        CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width, m_BlendType, dest_Bpp,
-            src_Bpp, clip_scan.data());
+        CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder(dest_scan, src_scan, width,
+                                                     m_BlendType, dest_Bpp,
+                                                     src_Bpp, clip_scan);
         break;
       case 13:
         CompositeRow_Rgb2Argb_NoBlend_Clip_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width, src_Bpp,
-            clip_scan.data());
+            dest_scan, src_scan, width, src_Bpp, clip_scan);
         break;
       case 15:
         CompositeRow_Rgb2Rgb_NoBlend_Clip_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width, dest_Bpp, src_Bpp,
-            clip_scan.data());
+            dest_scan, src_scan, width, dest_Bpp, src_Bpp, clip_scan);
         break;
     }
     return;
@@ -2845,35 +3036,30 @@
   if (m_DestFormat == FXDIB_Format::k8bppMask) {
     if (GetIsAlphaFromFormat(m_SrcFormat)) {
       if (m_SrcFormat == FXDIB_Format::kArgb) {
-        CompositeRow_AlphaToMask(dest_scan.data(), src_scan.data(), width,
-                                 clip_scan.data(), 4);
+        CompositeRow_AlphaToMask(dest_scan, src_scan, width, clip_scan, 4);
       } else {
-        CompositeRow_AlphaToMask(dest_scan.data(), src_extra_alpha.data(),
-                                 width, clip_scan.data(), 1);
+        CompositeRow_AlphaToMask(dest_scan, src_extra_alpha, width, clip_scan,
+                                 1);
       }
     } else {
-      CompositeRow_Rgb2Mask(dest_scan.data(), src_scan.data(), width,
-                            clip_scan.data());
+      CompositeRow_Rgb2Mask(dest_scan, width, clip_scan);
     }
   } else if (GetBppFromFormat(m_DestFormat) == 8) {
     if (GetIsAlphaFromFormat(m_SrcFormat)) {
       if (GetIsAlphaFromFormat(m_DestFormat)) {
-        CompositeRow_Argb2Graya(dest_scan.data(), src_scan.data(), width,
-                                m_BlendType, clip_scan.data(),
-                                src_extra_alpha.data(), dst_extra_alpha.data());
+        CompositeRow_Argb2Graya(dest_scan, src_scan, width, m_BlendType,
+                                clip_scan, src_extra_alpha, dst_extra_alpha);
       } else {
-        CompositeRow_Argb2Gray(dest_scan.data(), src_scan.data(), width,
-                               m_BlendType, clip_scan.data(),
-                               src_extra_alpha.data());
+        CompositeRow_Argb2Gray(dest_scan, src_scan, width, m_BlendType,
+                               clip_scan, src_extra_alpha);
       }
     } else {
       if (GetIsAlphaFromFormat(m_DestFormat)) {
-        CompositeRow_Rgb2Graya(dest_scan.data(), src_scan.data(), src_Bpp,
-                               width, m_BlendType, clip_scan.data(),
-                               dst_extra_alpha.data());
+        CompositeRow_Rgb2Graya(dest_scan, src_scan, src_Bpp, width, m_BlendType,
+                               clip_scan, dst_extra_alpha);
       } else {
-        CompositeRow_Rgb2Gray(dest_scan.data(), src_scan.data(), src_Bpp, width,
-                              m_BlendType, clip_scan.data());
+        CompositeRow_Rgb2Gray(dest_scan, src_scan, src_Bpp, width, m_BlendType,
+                              clip_scan);
       }
     }
   } else {
@@ -2882,60 +3068,51 @@
       case 4:
       case 8:
       case 4 + 8: {
-        CompositeRow_Argb2Argb(dest_scan.data(), src_scan.data(), width,
-                               m_BlendType, clip_scan.data(),
-                               dst_extra_alpha.data(), src_extra_alpha.data());
+        CompositeRow_Argb2Argb(dest_scan, src_scan, width, m_BlendType,
+                               clip_scan, dst_extra_alpha, src_extra_alpha);
       } break;
       case 1:
-        CompositeRow_Rgb2Argb_Blend_NoClip(dest_scan.data(), src_scan.data(),
-                                           width, m_BlendType, src_Bpp,
-                                           dst_extra_alpha.data());
+        CompositeRow_Rgb2Argb_Blend_NoClip(
+            dest_scan, src_scan, width, m_BlendType, src_Bpp, dst_extra_alpha);
         break;
       case 1 + 8:
-        CompositeRow_Rgb2Argb_Blend_Clip(
-            dest_scan.data(), src_scan.data(), width, m_BlendType, src_Bpp,
-            clip_scan.data(), dst_extra_alpha.data());
+        CompositeRow_Rgb2Argb_Blend_Clip(dest_scan, src_scan, width,
+                                         m_BlendType, src_Bpp, clip_scan,
+                                         dst_extra_alpha);
         break;
       case 1 + 4:
-        CompositeRow_Rgb2Argb_NoBlend_NoClip(dest_scan.data(), src_scan.data(),
-                                             width, src_Bpp,
-                                             dst_extra_alpha.data());
+        CompositeRow_Rgb2Argb_NoBlend_NoClip(dest_scan, src_scan, width,
+                                             src_Bpp, dst_extra_alpha);
         break;
       case 1 + 4 + 8:
-        CompositeRow_Rgb2Argb_NoBlend_Clip(dest_scan.data(), src_scan.data(),
-                                           width, src_Bpp, clip_scan.data(),
-                                           dst_extra_alpha.data());
+        CompositeRow_Rgb2Argb_NoBlend_Clip(dest_scan, src_scan, width, src_Bpp,
+                                           clip_scan, dst_extra_alpha);
         break;
       case 2:
       case 2 + 8:
-        CompositeRow_Argb2Rgb_Blend(dest_scan.data(), src_scan.data(), width,
-                                    m_BlendType, dest_Bpp, clip_scan.data(),
-                                    src_extra_alpha.data());
+        CompositeRow_Argb2Rgb_Blend(dest_scan, src_scan, width, m_BlendType,
+                                    dest_Bpp, clip_scan, src_extra_alpha);
         break;
       case 2 + 4:
       case 2 + 4 + 8:
-        CompositeRow_Argb2Rgb_NoBlend(dest_scan.data(), src_scan.data(), width,
-                                      dest_Bpp, clip_scan.data(),
-                                      src_extra_alpha.data());
+        CompositeRow_Argb2Rgb_NoBlend(dest_scan, src_scan, width, dest_Bpp,
+                                      clip_scan, src_extra_alpha);
         break;
       case 1 + 2:
-        CompositeRow_Rgb2Rgb_Blend_NoClip(dest_scan.data(), src_scan.data(),
-                                          width, m_BlendType, dest_Bpp,
-                                          src_Bpp);
+        CompositeRow_Rgb2Rgb_Blend_NoClip(dest_scan, src_scan, width,
+                                          m_BlendType, dest_Bpp, src_Bpp);
         break;
       case 1 + 2 + 8:
-        CompositeRow_Rgb2Rgb_Blend_Clip(dest_scan.data(), src_scan.data(),
-                                        width, m_BlendType, dest_Bpp, src_Bpp,
-                                        clip_scan.data());
+        CompositeRow_Rgb2Rgb_Blend_Clip(dest_scan, src_scan, width, m_BlendType,
+                                        dest_Bpp, src_Bpp, clip_scan);
         break;
       case 1 + 2 + 4:
-        CompositeRow_Rgb2Rgb_NoBlend_NoClip(dest_scan.data(), src_scan.data(),
-                                            width, dest_Bpp, src_Bpp);
+        CompositeRow_Rgb2Rgb_NoBlend_NoClip(dest_scan, src_scan, width,
+                                            dest_Bpp, src_Bpp);
         break;
       case 1 + 2 + 4 + 8:
-        CompositeRow_Rgb2Rgb_NoBlend_Clip(dest_scan.data(), src_scan.data(),
-                                          width, dest_Bpp, src_Bpp,
-                                          clip_scan.data());
+        CompositeRow_Rgb2Rgb_NoBlend_Clip(dest_scan, src_scan, width, dest_Bpp,
+                                          src_Bpp, clip_scan);
         break;
     }
   }
@@ -2956,13 +3133,12 @@
       }
       if (m_DestFormat == FXDIB_Format::kArgb) {
         CompositeRow_1bppRgb2Argb_NoBlend_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), src_left, width,
-            m_SrcPalette.Get32BitPalette(), clip_scan.data());
+            dest_scan, src_scan, src_left, width,
+            m_SrcPalette.Get32BitPalette(), clip_scan);
       } else {
         CompositeRow_1bppRgb2Rgb_NoBlend_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), src_left,
-            m_SrcPalette.Get32BitPalette(), width,
-            GetCompsFromFormat(m_DestFormat), clip_scan.data());
+            dest_scan, src_scan, src_left, m_SrcPalette.Get32BitPalette(),
+            width, GetCompsFromFormat(m_DestFormat), clip_scan);
       }
     } else {
       if (m_DestFormat == FXDIB_Format::k8bppRgb) {
@@ -2970,85 +3146,73 @@
       }
       if (m_DestFormat == FXDIB_Format::kArgb) {
         CompositeRow_8bppRgb2Argb_NoBlend_RgbByteOrder(
-            dest_scan.data(), src_scan.data(), width,
-            m_SrcPalette.Get32BitPalette().data(), clip_scan.data());
+            dest_scan, src_scan, width, m_SrcPalette.Get32BitPalette().data(),
+            clip_scan);
       } else {
         CompositeRow_8bppRgb2Rgb_NoBlend_RgbByteOrder(
-            dest_scan.data(), src_scan.data(),
-            m_SrcPalette.Get32BitPalette().data(), width,
-            GetCompsFromFormat(m_DestFormat), clip_scan.data());
+            dest_scan, src_scan, m_SrcPalette.Get32BitPalette().data(), width,
+            GetCompsFromFormat(m_DestFormat), clip_scan);
       }
     }
     return;
   }
   if (m_DestFormat == FXDIB_Format::k8bppMask) {
-    CompositeRow_Rgb2Mask(dest_scan.data(), src_scan.data(), width,
-                          clip_scan.data());
+    CompositeRow_Rgb2Mask(dest_scan, width, clip_scan);
     return;
   }
   if (GetBppFromFormat(m_DestFormat) == 8) {
     if (m_iTransparency & 8) {
       if (GetIsAlphaFromFormat(m_DestFormat)) {
-        CompositeRow_1bppPal2Graya(dest_scan.data(), src_scan.data(), src_left,
+        CompositeRow_1bppPal2Graya(dest_scan, src_scan, src_left,
                                    m_SrcPalette.Get8BitPalette(), width,
-                                   m_BlendType, clip_scan.data(),
-                                   dst_extra_alpha.data());
+                                   m_BlendType, clip_scan, dst_extra_alpha);
       } else {
-        CompositeRow_1bppPal2Gray(dest_scan.data(), src_scan.data(), src_left,
+        CompositeRow_1bppPal2Gray(dest_scan, src_scan, src_left,
                                   m_SrcPalette.Get8BitPalette(), width,
-                                  m_BlendType, clip_scan.data());
+                                  m_BlendType, clip_scan);
       }
     } else {
       if (GetIsAlphaFromFormat(m_DestFormat)) {
         CompositeRow_8bppPal2Graya(
-            dest_scan.data(), src_scan.data(),
-            m_SrcPalette.Get8BitPalette().data(), width, m_BlendType,
-            clip_scan.data(), dst_extra_alpha.data(), src_extra_alpha.data());
+            dest_scan, src_scan, m_SrcPalette.Get8BitPalette(), width,
+            m_BlendType, clip_scan, dst_extra_alpha, src_extra_alpha);
       } else {
-        CompositeRow_8bppPal2Gray(dest_scan.data(), src_scan.data(),
-                                  m_SrcPalette.Get8BitPalette().data(), width,
-                                  m_BlendType, clip_scan.data(),
-                                  src_extra_alpha.data());
+        CompositeRow_8bppPal2Gray(dest_scan, src_scan,
+                                  m_SrcPalette.Get8BitPalette(), width,
+                                  m_BlendType, clip_scan, src_extra_alpha);
       }
     }
   } else {
     switch (m_iTransparency) {
       case 1 + 2:
-        CompositeRow_8bppRgb2Argb_NoBlend(
-            dest_scan.data(), src_scan.data(), width,
-            m_SrcPalette.Get32BitPalette().data(), clip_scan.data(),
-            src_extra_alpha.data());
+        CompositeRow_8bppRgb2Argb_NoBlend(dest_scan, src_scan, width,
+                                          m_SrcPalette.Get32BitPalette(),
+                                          clip_scan, src_extra_alpha);
         break;
       case 1 + 2 + 8:
-        CompositeRow_1bppRgb2Argb_NoBlend(
-            dest_scan.data(), src_scan.data(), src_left, width,
-            m_SrcPalette.Get32BitPalette(), clip_scan.data());
+        CompositeRow_1bppRgb2Argb_NoBlend(dest_scan, src_scan, src_left, width,
+                                          m_SrcPalette.Get32BitPalette(),
+                                          clip_scan);
         break;
       case 0:
         CompositeRow_8bppRgb2Rgb_NoBlend(
-            dest_scan.data(), src_scan.data(),
-            m_SrcPalette.Get32BitPalette().data(), width,
-            GetCompsFromFormat(m_DestFormat), clip_scan.data(),
-            src_extra_alpha.data());
+            dest_scan, src_scan, m_SrcPalette.Get32BitPalette(), width,
+            GetCompsFromFormat(m_DestFormat), clip_scan, src_extra_alpha);
         break;
       case 0 + 8:
         CompositeRow_1bppRgb2Rgb_NoBlend(
-            dest_scan.data(), src_scan.data(), src_left,
-            m_SrcPalette.Get32BitPalette(), width,
-            GetCompsFromFormat(m_DestFormat), clip_scan.data());
+            dest_scan, src_scan, src_left, m_SrcPalette.Get32BitPalette(),
+            width, GetCompsFromFormat(m_DestFormat), clip_scan);
         break;
       case 0 + 2:
         CompositeRow_8bppRgb2Rgb_NoBlend(
-            dest_scan.data(), src_scan.data(),
-            m_SrcPalette.Get32BitPalette().data(), width,
-            GetCompsFromFormat(m_DestFormat), clip_scan.data(),
-            src_extra_alpha.data());
+            dest_scan, src_scan, m_SrcPalette.Get32BitPalette(), width,
+            GetCompsFromFormat(m_DestFormat), clip_scan, src_extra_alpha);
         break;
       case 0 + 2 + 8:
-        CompositeRow_1bppRgb2Rgba_NoBlend(
-            dest_scan.data(), src_scan.data(), src_left, width,
-            m_SrcPalette.Get32BitPalette(), clip_scan.data(),
-            dst_extra_alpha.data());
+        CompositeRow_1bppRgb2Rgba_NoBlend(dest_scan, src_scan, src_left, width,
+                                          m_SrcPalette.Get32BitPalette(),
+                                          clip_scan, dst_extra_alpha);
         break;
     }
   }
@@ -3061,38 +3225,35 @@
     pdfium::span<const uint8_t> clip_scan,
     pdfium::span<uint8_t> dst_extra_alpha) {
   if (m_DestFormat == FXDIB_Format::k8bppMask) {
-    CompositeRow_ByteMask2Mask(dest_scan.data(), src_scan.data(), m_MaskAlpha,
-                               width, clip_scan.data());
+    CompositeRow_ByteMask2Mask(dest_scan, src_scan, m_MaskAlpha, width,
+                               clip_scan);
   } else if (GetBppFromFormat(m_DestFormat) == 8) {
     if (GetIsAlphaFromFormat(m_DestFormat)) {
-      CompositeRow_ByteMask2Graya(dest_scan.data(), src_scan.data(),
-                                  m_MaskAlpha, m_MaskRed, width,
-                                  clip_scan.data(), dst_extra_alpha.data());
+      CompositeRow_ByteMask2Graya(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
+                                  width, clip_scan, dst_extra_alpha);
     } else {
-      CompositeRow_ByteMask2Gray(dest_scan.data(), src_scan.data(), m_MaskAlpha,
-                                 m_MaskRed, width, clip_scan.data());
+      CompositeRow_ByteMask2Gray(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
+                                 width, clip_scan);
     }
   } else if (m_bRgbByteOrder) {
     if (m_DestFormat == FXDIB_Format::kArgb) {
       CompositeRow_ByteMask2Argb_RgbByteOrder(
-          dest_scan.data(), src_scan.data(), m_MaskAlpha, m_MaskRed,
-          m_MaskGreen, m_MaskBlue, width, m_BlendType, clip_scan.data());
+          dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue,
+          width, m_BlendType, clip_scan);
     } else {
       CompositeRow_ByteMask2Rgb_RgbByteOrder(
-          dest_scan.data(), src_scan.data(), m_MaskAlpha, m_MaskRed,
-          m_MaskGreen, m_MaskBlue, width, m_BlendType,
-          GetCompsFromFormat(m_DestFormat), clip_scan.data());
+          dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue,
+          width, m_BlendType, GetCompsFromFormat(m_DestFormat), clip_scan);
     }
   } else if (m_DestFormat == FXDIB_Format::kArgb) {
-    CompositeRow_ByteMask2Argb(dest_scan.data(), src_scan.data(), m_MaskAlpha,
-                               m_MaskRed, m_MaskGreen, m_MaskBlue, width,
-                               m_BlendType, clip_scan.data());
+    CompositeRow_ByteMask2Argb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
+                               m_MaskGreen, m_MaskBlue, width, m_BlendType,
+                               clip_scan);
   } else if (m_DestFormat == FXDIB_Format::kRgb ||
              m_DestFormat == FXDIB_Format::kRgb32) {
-    CompositeRow_ByteMask2Rgb(dest_scan.data(), src_scan.data(), m_MaskAlpha,
-                              m_MaskRed, m_MaskGreen, m_MaskBlue, width,
-                              m_BlendType, GetCompsFromFormat(m_DestFormat),
-                              clip_scan.data());
+    CompositeRow_ByteMask2Rgb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
+                              m_MaskGreen, m_MaskBlue, width, m_BlendType,
+                              GetCompsFromFormat(m_DestFormat), clip_scan);
   }
 }
 
@@ -3104,39 +3265,37 @@
     pdfium::span<const uint8_t> clip_scan,
     pdfium::span<uint8_t> dst_extra_alpha) {
   if (m_DestFormat == FXDIB_Format::k8bppMask) {
-    CompositeRow_BitMask2Mask(dest_scan.data(), src_scan.data(), m_MaskAlpha,
-                              src_left, width, clip_scan.data());
+    CompositeRow_BitMask2Mask(dest_scan, src_scan, m_MaskAlpha, src_left, width,
+                              clip_scan);
   } else if (GetBppFromFormat(m_DestFormat) == 8) {
     if (GetIsAlphaFromFormat(m_DestFormat)) {
-      CompositeRow_BitMask2Graya(dest_scan.data(), src_scan.data(), m_MaskAlpha,
-                                 m_MaskRed, src_left, width, clip_scan.data(),
-                                 dst_extra_alpha.data());
+      CompositeRow_BitMask2Graya(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
+                                 src_left, width, clip_scan, dst_extra_alpha);
     } else {
-      CompositeRow_BitMask2Gray(dest_scan.data(), src_scan.data(), m_MaskAlpha,
-                                m_MaskRed, src_left, width, clip_scan.data());
+      CompositeRow_BitMask2Gray(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
+                                src_left, width, clip_scan);
     }
   } else if (m_bRgbByteOrder) {
     if (m_DestFormat == FXDIB_Format::kArgb) {
       CompositeRow_BitMask2Argb_RgbByteOrder(
-          dest_scan.data(), src_scan.data(), m_MaskAlpha, m_MaskRed,
-          m_MaskGreen, m_MaskBlue, src_left, width, m_BlendType,
-          clip_scan.data());
+          dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue,
+          src_left, width, m_BlendType, clip_scan);
     } else {
       CompositeRow_BitMask2Rgb_RgbByteOrder(
-          dest_scan.data(), src_scan.data(), m_MaskAlpha, m_MaskRed,
-          m_MaskGreen, m_MaskBlue, src_left, width, m_BlendType,
-          GetCompsFromFormat(m_DestFormat), clip_scan.data());
+          dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue,
+          src_left, width, m_BlendType, GetCompsFromFormat(m_DestFormat),
+          clip_scan);
     }
   } else if (m_DestFormat == FXDIB_Format::kArgb) {
-    CompositeRow_BitMask2Argb(dest_scan.data(), src_scan.data(), m_MaskAlpha,
-                              m_MaskRed, m_MaskGreen, m_MaskBlue, src_left,
-                              width, m_BlendType, clip_scan.data());
+    CompositeRow_BitMask2Argb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
+                              m_MaskGreen, m_MaskBlue, src_left, width,
+                              m_BlendType, clip_scan);
   } else if (m_DestFormat == FXDIB_Format::kRgb ||
              m_DestFormat == FXDIB_Format::kRgb32) {
-    CompositeRow_BitMask2Rgb(
-        dest_scan.data(), src_scan.data(), m_MaskAlpha, m_MaskRed, m_MaskGreen,
-        m_MaskBlue, src_left, width, m_BlendType,
-        GetCompsFromFormat(m_DestFormat), clip_scan.data());
+    CompositeRow_BitMask2Rgb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed,
+                             m_MaskGreen, m_MaskBlue, src_left, width,
+                             m_BlendType, GetCompsFromFormat(m_DestFormat),
+                             clip_scan);
   }
 }