Remove uses of SkColorPriv functions

These APIs are not meant for clients to use. Also remove references
to SkScalar, which is now *always* a float.

Change-Id: I5c1c7fa998b53a40039e3dad1c030c177262c516
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/129130
Reviewed-by: Lei Zhang <thestig@chromium.org>
Auto-Submit: Kaylee Lubick <kjlubick@google.com>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Commit-Queue: Kaylee Lubick <kjlubick@google.com>
diff --git a/core/fxge/skia/cfx_dibbase_skia.cpp b/core/fxge/skia/cfx_dibbase_skia.cpp
index 18f2184..e5f1135 100644
--- a/core/fxge/skia/cfx_dibbase_skia.cpp
+++ b/core/fxge/skia/cfx_dibbase_skia.cpp
@@ -243,8 +243,8 @@
     case 24:
       return CreateSkiaImageFromTransformedDib</*source_bits_per_pixel=*/24>(
           *this, kBGRA_8888_SkColorType, kOpaque_SkAlphaType,
-          [](uint8_t red, uint8_t green, uint8_t blue) {
-            return SkPackARGB32(0xFF, red, green, blue);
+          [](uint8_t red, uint8_t green, uint8_t blue) -> SkColor {
+            return SkColorSetRGB(red, green, blue);
           });
 
     case 32:
@@ -253,8 +253,8 @@
           return CreateSkiaImageFromTransformedDib<
               /*source_bits_per_pixel=*/32>(
               *this, kBGRA_8888_SkColorType, kOpaque_SkAlphaType,
-              [](uint8_t red, uint8_t green, uint8_t blue) {
-                return SkPackARGB32(0xFF, red, green, blue);
+              [](uint8_t red, uint8_t green, uint8_t blue) -> SkColor {
+                return SkColorSetRGB(red, green, blue);
               });
         case FXDIB_Format::kBgra:
           return CreateSkiaImageFromDib(this, kBGRA_8888_SkColorType,
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index cebb6e8..236061d 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -115,7 +115,7 @@
 void DebugShowCanvasClip(CFX_SkiaDeviceDriver* driver, const SkCanvas* canvas) {
 #if SHOW_SKIA_PATH
   SkMatrix matrix = canvas->getTotalMatrix();
-  SkScalar m[9];
+  float m[9];
   matrix.get9(m);
   printf("matrix (%g,%g,%g) (%g,%g,%g) (%g,%g,%g)\n", m[0], m[1], m[2], m[3],
          m[4], m[5], m[6], m[7], m[8]);
@@ -230,7 +230,7 @@
 }
 
 // use when pdf's y-axis points up instead of down
-SkMatrix ToFlippedSkMatrix(const CFX_Matrix& m, SkScalar flip) {
+SkMatrix ToFlippedSkMatrix(const CFX_Matrix& m, float flip) {
   SkMatrix skMatrix;
   skMatrix.setAll(m.a * flip, -m.c * flip, m.e, m.b * flip, -m.d * flip, m.f, 0,
                   0, 1);
@@ -274,6 +274,11 @@
   }
 }
 
+// Clamps and scales a float in range [0.0, 1.0] to 0-255.
+uint8_t ClampFloatToByte(float f) {
+  return static_cast<uint8_t>(std::clamp(f, 0.0f, 1.0f) * 255.f + 0.5f);
+}
+
 // Add begin & end colors into `colors` array for each gradient transition.
 //
 // `is_encode_reversed` must be set to true when the parent function of `func`
@@ -294,28 +299,29 @@
 
   pdfium::span<const float> begin_values = func->GetBeginValues();
   pdfium::span<const float> end_values = func->GetEndValues();
-  if (is_encode_reversed)
+  if (is_encode_reversed) {
     std::swap(begin_values, end_values);
+  }
 
-  colors.push_back(SkColorSetARGB(0xFF,
-                                  SkUnitScalarClampToByte(begin_values[0]),
-                                  SkUnitScalarClampToByte(begin_values[1]),
-                                  SkUnitScalarClampToByte(begin_values[2])));
-  colors.push_back(SkColorSetARGB(0xFF, SkUnitScalarClampToByte(end_values[0]),
-                                  SkUnitScalarClampToByte(end_values[1]),
-                                  SkUnitScalarClampToByte(end_values[2])));
+  colors.push_back(SkColorSetRGB(ClampFloatToByte(begin_values[0]),
+                                 ClampFloatToByte(begin_values[1]),
+                                 ClampFloatToByte(begin_values[2])));
+  colors.push_back(SkColorSetRGB(ClampFloatToByte(end_values[0]),
+                                 ClampFloatToByte(end_values[1]),
+                                 ClampFloatToByte(end_values[2])));
   return true;
 }
 
+// Scale a float in range [0.0, 1.0] to 0-255.
 uint8_t FloatToByte(float f) {
   DCHECK(f >= 0);
   DCHECK(f <= 1);
-  return (uint8_t)(f * 255.99f);
+  return static_cast<uint8_t>(f * 255.99f);
 }
 
 bool AddSamples(const CPDF_SampledFunc* func,
                 DataVector<SkColor>& colors,
-                DataVector<SkScalar>& pos) {
+                DataVector<float>& pos) {
   if (func->InputCount() != 1) {
     return false;
   }
@@ -359,9 +365,9 @@
         float_colors[j] =
             colors_min[j] + (colors_max[j] - colors_min[j]) * interp;
       }
-      colors.push_back(SkPackARGB32(0xFF, FloatToByte(float_colors[0]),
-                                    FloatToByte(float_colors[1]),
-                                    FloatToByte(float_colors[2])));
+      colors.push_back(SkColorSetRGB(FloatToByte(float_colors[0]),
+                                     FloatToByte(float_colors[1]),
+                                     FloatToByte(float_colors[2])));
       pos.push_back(static_cast<float>(i) / (sample_count - 1));
     }
   return true;
@@ -369,7 +375,7 @@
 
 bool AddStitching(const CPDF_StitchFunc* func,
                   DataVector<SkColor>& colors,
-                  DataVector<SkScalar>& pos) {
+                  DataVector<float>& pos) {
   float bounds_start = func->GetDomain(0);
 
   const auto& sub_functions = func->GetSubFunctions();
@@ -394,9 +400,9 @@
 }
 
 // see https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line
-SkScalar LineSide(const SkPoint& line_start,
-                  const SkPoint& line_end,
-                  const SkPoint& pt) {
+float LineSide(const SkPoint& line_start,
+               const SkPoint& line_end,
+               const SkPoint& pt) {
   return (line_end.fY - line_start.fY) * pt.fX -
          (line_end.fX - line_start.fX) * pt.fY + line_end.fX * line_start.fY -
          line_end.fY * line_start.fX;
@@ -406,13 +412,13 @@
                        const SkVector& paraRay,
                        const SkPoint& perpendicularPt) {
   SkVector perpRay = {paraRay.fY, -paraRay.fX};
-  SkScalar denom = perpRay.fY * paraRay.fX - paraRay.fY * perpRay.fX;
+  float denom = perpRay.fY * paraRay.fX - paraRay.fY * perpRay.fX;
   if (!denom) {
     SkPoint zeroPt = {0, 0};
     return zeroPt;
   }
   SkVector ab0 = parallelPt - perpendicularPt;
-  SkScalar numerA = ab0.fY * perpRay.fX - perpRay.fY * ab0.fX;
+  float numerA = ab0.fY * perpRay.fX - perpRay.fY * ab0.fX;
   numerA /= denom;
   SkPoint result = {parallelPt.fX + paraRay.fX * numerA,
                     parallelPt.fY + paraRay.fY * numerA};
@@ -425,8 +431,8 @@
                         bool clip_end,
                         SkPath* clip) {
   // find the corners furthest from the gradient perpendiculars
-  SkScalar minPerpDist = SK_ScalarMax;
-  SkScalar maxPerpDist = SK_ScalarMin;
+  float minPerpDist = std::numeric_limits<float>::max();
+  float maxPerpDist = std::numeric_limits<float>::lowest();
   int minPerpPtIndex = -1;
   int maxPerpPtIndex = -1;
   SkVector slope = pts[1] - pts[0];
@@ -435,19 +441,19 @@
   const SkPoint end_perp[2] = {pts[1],
                                {pts[1].fX + slope.fY, pts[1].fY - slope.fX}};
   for (int i = 0; i < 4; ++i) {
-    SkScalar sDist = LineSide(start_perp[0], start_perp[1], rect_pts[i]);
-    SkScalar eDist = LineSide(end_perp[0], end_perp[1], rect_pts[i]);
+    float sDist = LineSide(start_perp[0], start_perp[1], rect_pts[i]);
+    float eDist = LineSide(end_perp[0], end_perp[1], rect_pts[i]);
     if (sDist * eDist <= 0) {  // if the signs are different,
       continue;                // the point is inside the gradient
     }
     if (sDist < 0) {
-      SkScalar smaller = std::min(sDist, eDist);
+      float smaller = std::min(sDist, eDist);
       if (minPerpDist > smaller) {
         minPerpDist = smaller;
         minPerpPtIndex = i;
       }
     } else {
-      SkScalar larger = std::max(sDist, eDist);
+      float larger = std::max(sDist, eDist);
       if (maxPerpDist < larger) {
         maxPerpDist = larger;
         maxPerpPtIndex = i;
@@ -477,12 +483,12 @@
   const SkPoint& endEdgePt = clip_end ? pts[1] : rect_pts[noClipEndIndex];
 
   // find the corners that bound the gradient
-  SkScalar minDist = SK_ScalarMax;
-  SkScalar maxDist = SK_ScalarMin;
+  float minDist = std::numeric_limits<float>::max();
+  float maxDist = std::numeric_limits<float>::lowest();
   int minBounds = -1;
   int maxBounds = -1;
   for (int i = 0; i < 4; ++i) {
-    SkScalar dist = LineSide(pts[0], pts[1], rect_pts[i]);
+    float dist = LineSide(pts[0], pts[1], rect_pts[i]);
     if (minDist > dist) {
       minDist = dist;
       minBounds = i;
@@ -553,7 +559,7 @@
   const std::vector<float>& dash_array = graph_state->dash_array();
   if (!dash_array.empty()) {
     size_t count = (dash_array.size() + 1) / 2;
-    DataVector<SkScalar> intervals(count * 2);
+    DataVector<float> intervals(count * 2);
     // Set dash pattern
     for (size_t i = 0; i < count; i++) {
       float on = dash_array[i * 2];
@@ -800,8 +806,8 @@
   font.setEdging(GetFontEdgingType(options));
 
   SkAutoCanvasRestore scoped_save_restore(m_pCanvas, /*doSave=*/true);
-  const SkScalar horizontal_flip = font_size < 0 ? -1 : 1;
-  const SkScalar vertical_flip = pFont->IsVertical() ? -1 : 1;
+  const float horizontal_flip = font_size < 0 ? -1.f : 1.f;
+  const float vertical_flip = pFont->IsVertical() ? -1.f : 1.f;
   SkMatrix skMatrix = ToFlippedSkMatrix(mtObject2Device, horizontal_flip);
   m_pCanvas->concat(skMatrix);
   DataVector<SkPoint> positions(pCharPos.size());
@@ -879,8 +885,8 @@
     m_rsxform.resize(0);
   }
 
-  const SkScalar horizontal_flip = font_size < 0 ? -1 : 1;
-  const SkScalar vertical_flip = pFont->IsVertical() ? -1 : 1;
+  const float horizontal_flip = font_size < 0 ? -1.f : 1.f;
+  const float vertical_flip = pFont->IsVertical() ? -1.f : 1.f;
   for (size_t index = 0; index < char_pos.size(); ++index) {
     const TextCharPos& cp = char_pos[index];
     m_charDetails.SetPositionAt(index, {cp.m_Origin.x * horizontal_flip,
@@ -1185,7 +1191,7 @@
   // TODO(caryclark) Respect Domain[0], Domain[1]. (Don't know what they do
   // yet.)
   DataVector<SkColor> sk_colors;
-  DataVector<SkScalar> sk_pos;
+  DataVector<float> sk_pos;
   for (size_t j = 0; j < nFuncs; j++) {
     if (!pFuncs[j])
       continue;