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 {