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);
}