Make GetShadingSteps() return a std::array.
Instead of passing a normal array as an out parameter. Also change array
type to FX_ARGB to make it obvious what the elements are.
Change-Id: Id13287dfa46faffddf1ca2a15bc8dfa89ef1ca18
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/55753
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 740c184..9d89dc4 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -7,6 +7,7 @@
#include "core/fpdfapi/render/cpdf_renderstatus.h"
#include <algorithm>
+#include <array>
#include <cmath>
#include <limits>
#include <memory>
@@ -117,15 +118,16 @@
return funcs_outputs ? std::max(funcs_outputs, pCS->CountComponents()) : 0;
}
-void GetShadingSteps(float t_min,
- float t_max,
- const std::vector<std::unique_ptr<CPDF_Function>>& funcs,
- const RetainPtr<CPDF_ColorSpace>& pCS,
- int alpha,
- size_t results_count,
- uint32_t* rgb_array) {
+std::array<FX_ARGB, kShadingSteps> GetShadingSteps(
+ float t_min,
+ float t_max,
+ const std::vector<std::unique_ptr<CPDF_Function>>& funcs,
+ const RetainPtr<CPDF_ColorSpace>& pCS,
+ int alpha,
+ size_t results_count) {
ASSERT(results_count >= CountOutputsFromFunctions(funcs));
ASSERT(results_count >= pCS->CountComponents());
+ std::array<FX_ARGB, kShadingSteps> shading_steps;
std::vector<float> result_array(results_count);
float diff = t_max - t_min;
for (int i = 0; i < kShadingSteps; ++i) {
@@ -142,10 +144,11 @@
float G = 0.0f;
float B = 0.0f;
pCS->GetRGB(result_array.data(), &R, &G, &B);
- rgb_array[i] =
+ shading_steps[i] =
FXARGB_TODIB(ArgbEncode(alpha, FXSYS_round(R * 255),
FXSYS_round(G * 255), FXSYS_round(B * 255)));
}
+ return shading_steps;
}
void DrawAxialShading(const RetainPtr<CFX_DIBitmap>& pBitmap,
@@ -188,8 +191,8 @@
float y_span = end_y - start_y;
float axis_len_square = (x_span * x_span) + (y_span * y_span);
- uint32_t rgb_array[kShadingSteps];
- GetShadingSteps(t_min, t_max, funcs, pCS, alpha, total_results, rgb_array);
+ std::array<FX_ARGB, kShadingSteps> shading_steps =
+ GetShadingSteps(t_min, t_max, funcs, pCS, alpha, total_results);
int pitch = pBitmap->GetPitch();
CFX_Matrix matrix = mtObject2Bitmap.GetInverse();
@@ -214,7 +217,7 @@
index = kShadingSteps - 1;
}
- dib_buf[column] = rgb_array[index];
+ dib_buf[column] = shading_steps[index];
}
}
}
@@ -256,8 +259,8 @@
bEndExtend = !!pArray->GetIntegerAt(1);
}
- uint32_t rgb_array[kShadingSteps];
- GetShadingSteps(t_min, t_max, funcs, pCS, alpha, total_results, rgb_array);
+ std::array<FX_ARGB, kShadingSteps> shading_steps =
+ GetShadingSteps(t_min, t_max, funcs, pCS, alpha, total_results);
const float dx = end_x - start_x;
const float dy = end_y - start_y;
@@ -317,7 +320,7 @@
continue;
index = kShadingSteps - 1;
}
- dib_buf[column] = rgb_array[index];
+ dib_buf[column] = shading_steps[index];
}
}
}