Inline WriteColorResult(). Since it only has 1 caller left, merge it into the caller. Change-Id: Ibd31bf877b27692b4b8d0a03b2a384ad92a20070 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/75633 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 5364a58..a511795 100644 --- a/core/fxge/dib/cfx_imagetransformer.cpp +++ b/core/fxge/dib/cfx_imagetransformer.cpp
@@ -48,31 +48,6 @@ return (r_pos_0 * (255 - res_y) + r_pos_1 * res_y) >> 8; } - -// Let the compiler deduce the type for |func|, which cheaper than specifying it -// with std::function. -template <typename F> -void WriteColorResult(const F& func, - bool bHasAlpha, - FXDIB_Format format, - uint8_t* dest) { - uint8_t blue_c = func(0); - uint8_t green_m = func(1); - uint8_t red_y = func(2); - - uint32_t* dest32 = reinterpret_cast<uint32_t*>(dest); - if (bHasAlpha) { - if (format == FXDIB_Format::kArgb) { - *dest32 = ArgbEncode(func(3), red_y, green_m, blue_c); - } else { - *dest32 = FXCMYK_TODIB(CmykEncode(blue_c, green_m, red_y, func(3))); - } - return; - } - - *dest32 = ArgbEncode(kOpaqueAlpha, red_y, green_m, blue_c); -} - class CPDF_FixedMatrix { public: explicit CPDF_FixedMatrix(const CFX_Matrix& src) @@ -375,12 +350,29 @@ int destBpp = cdata.bitmap->GetBPP() / 8; auto func = [&cdata, format, Bpp, bHasAlpha](const BilinearData& data, uint8_t* dest) { - auto bilinear_interpol_func = [&cdata, &data, Bpp](int offset) { - return bilinear_interpol(cdata.buf, data.row_offset_l, data.row_offset_r, - data.src_col_l, data.src_col_r, data.res_x, - data.res_y, Bpp, offset); - }; - WriteColorResult(bilinear_interpol_func, bHasAlpha, format, dest); + uint8_t blue_c = bilinear_interpol( + cdata.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( + cdata.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( + cdata.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); + + uint32_t* dest32 = reinterpret_cast<uint32_t*>(dest); + if (bHasAlpha) { + uint8_t alpha_k = bilinear_interpol( + cdata.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); + if (format == FXDIB_Format::kArgb) { + *dest32 = ArgbEncode(alpha_k, red_y, green_m, blue_c); + } else { + *dest32 = FXCMYK_TODIB(CmykEncode(blue_c, green_m, red_y, alpha_k)); + } + } else { + *dest32 = ArgbEncode(kOpaqueAlpha, red_y, green_m, blue_c); + } }; DoBilinearLoop(cdata, m_result, m_StretchClip, destBpp, func); }