Reduce the number of parameters in bilinear_interpol().
Also rename the function to BilinearInterpolate().
Change-Id: I434189bd59bf8e602595949bb846e87e384da7f4
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/75655
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxge/dib/cfx_imagetransformer.cpp b/core/fxge/dib/cfx_imagetransformer.cpp
index d751ada..7114167 100644
--- a/core/fxge/dib/cfx_imagetransformer.cpp
+++ b/core/fxge/dib/cfx_imagetransformer.cpp
@@ -25,27 +25,22 @@
constexpr float kFix16 = 0.05f;
constexpr uint8_t kOpaqueAlpha = 0xff;
-uint8_t bilinear_interpol(const uint8_t* buf,
- int row_offset_l,
- int row_offset_r,
- int src_col_l,
- int src_col_r,
- int res_x,
- int res_y,
- int bpp,
- int c_offset) {
- int i_resx = 255 - res_x;
- int col_bpp_l = src_col_l * bpp;
- int col_bpp_r = src_col_r * bpp;
- const uint8_t* buf_u = buf + row_offset_l + c_offset;
- const uint8_t* buf_d = buf + row_offset_r + c_offset;
+uint8_t BilinearInterpolate(const uint8_t* buf,
+ const CFX_ImageTransformer::BilinearData& data,
+ int bpp,
+ int c_offset) {
+ int i_resx = 255 - data.res_x;
+ int col_bpp_l = data.src_col_l * bpp;
+ int col_bpp_r = data.src_col_r * bpp;
+ const uint8_t* buf_u = buf + data.row_offset_l + c_offset;
+ const uint8_t* buf_d = buf + data.row_offset_r + c_offset;
const uint8_t* src_pos0 = buf_u + col_bpp_l;
const uint8_t* src_pos1 = buf_u + col_bpp_r;
const uint8_t* src_pos2 = buf_d + col_bpp_l;
const uint8_t* src_pos3 = buf_d + col_bpp_r;
- uint8_t r_pos_0 = (*src_pos0 * i_resx + *src_pos1 * res_x) >> 8;
- uint8_t r_pos_1 = (*src_pos2 * i_resx + *src_pos3 * res_x) >> 8;
- return (r_pos_0 * (255 - res_y) + r_pos_1 * res_y) >> 8;
+ uint8_t r_pos_0 = (*src_pos0 * i_resx + *src_pos1 * data.res_x) >> 8;
+ uint8_t r_pos_1 = (*src_pos2 * i_resx + *src_pos3 * data.res_x) >> 8;
+ return (r_pos_0 * (255 - data.res_y) + r_pos_1 * data.res_y) >> 8;
}
class CFX_BilinearMatrix {
@@ -293,18 +288,14 @@
void CFX_ImageTransformer::CalcMask(const CalcData& calc_data) {
auto func = [&calc_data](const BilinearData& data, uint8_t* dest) {
- *dest = bilinear_interpol(calc_data.buf, data.row_offset_l,
- data.row_offset_r, data.src_col_l, data.src_col_r,
- data.res_x, data.res_y, 1, 0);
+ *dest = BilinearInterpolate(calc_data.buf, data, 1, 0);
};
DoBilinearLoop(calc_data, m_result, m_StretchClip, 1, func);
}
void CFX_ImageTransformer::CalcAlpha(const CalcData& calc_data) {
auto func = [&calc_data](const BilinearData& data, uint8_t* dest) {
- *dest = bilinear_interpol(calc_data.buf, data.row_offset_l,
- data.row_offset_r, data.src_col_l, data.src_col_r,
- data.res_x, data.res_y, 1, 0);
+ *dest = BilinearInterpolate(calc_data.buf, data, 1, 0);
};
DoBilinearLoop(calc_data, m_result, m_StretchClip, 1, func);
}
@@ -322,9 +313,7 @@
}
int destBpp = calc_data.bitmap->GetBPP() / 8;
auto func = [&calc_data, &argb](const BilinearData& data, uint8_t* dest) {
- uint8_t idx = bilinear_interpol(
- calc_data.buf, data.row_offset_l, data.row_offset_r, data.src_col_l,
- data.src_col_r, data.res_x, data.res_y, 1, 0);
+ uint8_t idx = BilinearInterpolate(calc_data.buf, data, 1, 0);
*reinterpret_cast<uint32_t*>(dest) = argb[idx];
};
DoBilinearLoop(calc_data, m_result, m_StretchClip, destBpp, func);
@@ -338,21 +327,13 @@
int destBpp = calc_data.bitmap->GetBPP() / 8;
auto func = [&calc_data, format, Bpp, bHasAlpha](const BilinearData& data,
uint8_t* dest) {
- uint8_t blue_c = bilinear_interpol(
- calc_data.buf, data.row_offset_l, data.row_offset_r, data.src_col_l,
- data.src_col_r, data.res_x, data.res_y, Bpp, 0);
- uint8_t green_m = bilinear_interpol(
- calc_data.buf, data.row_offset_l, data.row_offset_r, data.src_col_l,
- data.src_col_r, data.res_x, data.res_y, Bpp, 1);
- uint8_t red_y = bilinear_interpol(
- calc_data.buf, data.row_offset_l, data.row_offset_r, data.src_col_l,
- data.src_col_r, data.res_x, data.res_y, Bpp, 2);
+ uint8_t blue_c = BilinearInterpolate(calc_data.buf, data, Bpp, 0);
+ uint8_t green_m = BilinearInterpolate(calc_data.buf, data, Bpp, 1);
+ uint8_t red_y = BilinearInterpolate(calc_data.buf, data, Bpp, 2);
uint32_t* dest32 = reinterpret_cast<uint32_t*>(dest);
if (bHasAlpha) {
- uint8_t alpha_k = bilinear_interpol(
- calc_data.buf, data.row_offset_l, data.row_offset_r, data.src_col_l,
- data.src_col_r, data.res_x, data.res_y, Bpp, 3);
+ uint8_t alpha_k = BilinearInterpolate(calc_data.buf, data, Bpp, 3);
if (format == FXDIB_Format::kArgb) {
*dest32 = ArgbEncode(alpha_k, red_y, green_m, blue_c);
} else {