Remove dead code in CStretchEngine.
Since CStretchEngine is only instantiated by CFX_ImageStretcher,
GetStretchedFormat() in cfx_imagestretcher.cpp limits what formats
CStretchEngine deals with. As a result, some TransformMethod types that
CStretchEngine handles are never actually used. Remove these blocks of
dead code.
Change-Id: I26eca50488bb254ca9b792ae75d2a9009810f453
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/101871
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxge/dib/cstretchengine.cpp b/core/fxge/dib/cstretchengine.cpp
index 4a851f8..e9629fc 100644
--- a/core/fxge/dib/cstretchengine.cpp
+++ b/core/fxge/dib/cstretchengine.cpp
@@ -197,6 +197,13 @@
m_DestWidth(dest_width),
m_DestHeight(dest_height),
m_DestClip(clip_rect) {
+ if (m_bHasAlpha) {
+ DCHECK_EQ(m_DestFormat, FXDIB_Format::kArgb);
+ DCHECK_EQ(m_DestBpp, GetBppFromFormat(FXDIB_Format::kArgb));
+ DCHECK_EQ(m_pSource->GetFormat(), FXDIB_Format::kArgb);
+ DCHECK_EQ(m_SrcBpp, GetBppFromFormat(FXDIB_Format::kArgb));
+ }
+
absl::optional<uint32_t> maybe_size =
fxge::CalculatePitch32(m_DestBpp, clip_rect.Width());
if (!maybe_size.has_value())
@@ -242,13 +249,8 @@
: TransformMethod::k1BppToManyBpp;
break;
case 8:
- if (m_DestBpp == 8) {
- m_TransMethod = m_bHasAlpha ? TransformMethod::k8BppTo8BppWithAlpha
- : TransformMethod::k8BppTo8Bpp;
- } else {
- m_TransMethod = m_bHasAlpha ? TransformMethod::k8BppToManyBppWithAlpha
- : TransformMethod::k8BppToManyBpp;
- }
+ m_TransMethod = m_DestBpp == 8 ? TransformMethod::k8BppTo8Bpp
+ : TransformMethod::k8BppToManyBpp;
break;
default:
m_TransMethod = m_bHasAlpha ? TransformMethod::kManyBpptoManyBppWithAlpha
@@ -315,9 +317,6 @@
pdfium::span<uint8_t> dest_span = m_InterBuf.writable_span().subspan(
(m_CurRow - m_SrcClip.top) * m_InterPitch, m_InterPitch);
size_t dest_span_index = 0;
- // TODO(thestig): Audit suspicious variable usage.
- const uint8_t* src_scan_mask = nullptr;
- uint8_t* dest_scan_mask = nullptr;
// TODO(npm): reduce duplicated code here
switch (m_TransMethod) {
case TransformMethod::k1BppTo8Bpp:
@@ -346,22 +345,6 @@
}
break;
}
- case TransformMethod::k8BppTo8BppWithAlpha: {
- for (int col = m_DestClip.left; col < m_DestClip.right; ++col) {
- PixelWeight* pWeights = m_WeightTable.GetPixelWeight(col);
- uint32_t dest_a = 0;
- uint32_t dest_r = 0;
- for (int j = pWeights->m_SrcStart; j <= pWeights->m_SrcEnd; ++j) {
- uint32_t pixel_weight = pWeights->GetWeightForPosition(j);
- pixel_weight = pixel_weight * src_scan_mask[j] / 255;
- dest_r += pixel_weight * src_scan[j];
- dest_a += pixel_weight;
- }
- dest_span[dest_span_index++] = PixelFromFixed(dest_r);
- *dest_scan_mask++ = PixelFromFixed(255 * dest_a);
- }
- break;
- }
case TransformMethod::k8BppToManyBpp: {
for (int col = m_DestClip.left; col < m_DestClip.right; ++col) {
PixelWeight* pWeights = m_WeightTable.GetPixelWeight(col);
@@ -387,29 +370,6 @@
}
break;
}
- case TransformMethod::k8BppToManyBppWithAlpha: {
- for (int col = m_DestClip.left; col < m_DestClip.right; ++col) {
- PixelWeight* pWeights = m_WeightTable.GetPixelWeight(col);
- uint32_t dest_a = 0;
- uint32_t dest_r = 0;
- uint32_t dest_g = 0;
- uint32_t dest_b = 0;
- for (int j = pWeights->m_SrcStart; j <= pWeights->m_SrcEnd; ++j) {
- uint32_t pixel_weight = pWeights->GetWeightForPosition(j);
- pixel_weight = pixel_weight * src_scan_mask[j] / 255;
- unsigned long argb = m_pSrcPalette[src_scan[j]];
- dest_b += pixel_weight * static_cast<uint8_t>(argb >> 24);
- dest_g += pixel_weight * static_cast<uint8_t>(argb >> 16);
- dest_r += pixel_weight * static_cast<uint8_t>(argb >> 8);
- dest_a += pixel_weight;
- }
- dest_span[dest_span_index++] = PixelFromFixed(dest_b);
- dest_span[dest_span_index++] = PixelFromFixed(dest_g);
- dest_span[dest_span_index++] = PixelFromFixed(dest_r);
- *dest_scan_mask++ = PixelFromFixed(255 * dest_a);
- }
- break;
- }
case TransformMethod::kManyBpptoManyBpp: {
for (int col = m_DestClip.left; col < m_DestClip.right; ++col) {
PixelWeight* pWeights = m_WeightTable.GetPixelWeight(col);
@@ -431,6 +391,7 @@
break;
}
case TransformMethod::kManyBpptoManyBppWithAlpha: {
+ DCHECK(m_bHasAlpha);
for (int col = m_DestClip.left; col < m_DestClip.right; ++col) {
PixelWeight* pWeights = m_WeightTable.GetPixelWeight(col);
uint32_t dest_a = 0;
@@ -438,13 +399,9 @@
uint32_t dest_g = 0;
uint32_t dest_b = 0;
for (int j = pWeights->m_SrcStart; j <= pWeights->m_SrcEnd; ++j) {
- uint32_t pixel_weight = pWeights->GetWeightForPosition(j);
const uint8_t* src_pixel = src_scan + j * Bpp;
- if (m_DestFormat == FXDIB_Format::kArgb) {
- pixel_weight = pixel_weight * src_pixel[3] / 255;
- } else {
- pixel_weight = pixel_weight * src_scan_mask[j] / 255;
- }
+ uint32_t pixel_weight =
+ pWeights->GetWeightForPosition(j) * src_pixel[3] / 255;
dest_b += pixel_weight * (*src_pixel++);
dest_g += pixel_weight * (*src_pixel++);
dest_r += pixel_weight * (*src_pixel);
@@ -453,10 +410,7 @@
dest_span[dest_span_index++] = PixelFromFixed(dest_b);
dest_span[dest_span_index++] = PixelFromFixed(dest_g);
dest_span[dest_span_index++] = PixelFromFixed(dest_r);
- if (m_DestFormat == FXDIB_Format::kArgb)
- dest_span[dest_span_index] = PixelFromFixed(255 * dest_a);
- if (dest_scan_mask)
- *dest_scan_mask++ = PixelFromFixed(255 * dest_a);
+ dest_span[dest_span_index] = PixelFromFixed(255 * dest_a);
dest_span_index += Bpp - 3;
}
break;
@@ -481,8 +435,6 @@
const int DestBpp = m_DestBpp / 8;
for (int row = m_DestClip.top; row < m_DestClip.bottom; ++row) {
unsigned char* dest_scan = m_DestScanline.data();
- // TODO(thestig): Audit suspicious variable usage.
- unsigned char* dest_scan_mask = nullptr;
PixelWeight* pWeights = table.GetPixelWeight(row);
switch (m_TransMethod) {
case TransformMethod::k1BppTo8Bpp:
@@ -502,28 +454,6 @@
}
break;
}
- case TransformMethod::k8BppTo8BppWithAlpha: {
- for (int col = m_DestClip.left; col < m_DestClip.right; ++col) {
- pdfium::span<const uint8_t> src_span =
- m_InterBuf.span().subspan((col - m_DestClip.left) * DestBpp);
- // TODO(thestig): Audit suspicious variable usage.
- unsigned char* src_scan_mask =
- reinterpret_cast<unsigned char*>(col - m_DestClip.left);
- uint32_t dest_a = 0;
- uint32_t dest_k = 0;
- for (int j = pWeights->m_SrcStart; j <= pWeights->m_SrcEnd; ++j) {
- uint32_t pixel_weight = pWeights->GetWeightForPosition(j);
- dest_k +=
- pixel_weight * src_span[(j - m_SrcClip.top) * m_InterPitch];
- dest_a += pixel_weight *
- src_scan_mask[(j - m_SrcClip.top) * m_ExtraMaskPitch];
- }
- *dest_scan = PixelFromFixed(dest_k);
- dest_scan += DestBpp;
- *dest_scan_mask++ = PixelFromFixed(dest_a);
- }
- break;
- }
case TransformMethod::k8BppToManyBpp:
case TransformMethod::kManyBpptoManyBpp: {
for (int col = m_DestClip.left; col < m_DestClip.right; ++col) {
@@ -547,37 +477,24 @@
}
break;
}
- case TransformMethod::k8BppToManyBppWithAlpha:
case TransformMethod::kManyBpptoManyBppWithAlpha: {
+ DCHECK(m_bHasAlpha);
for (int col = m_DestClip.left; col < m_DestClip.right; ++col) {
pdfium::span<const uint8_t> src_span =
m_InterBuf.span().subspan((col - m_DestClip.left) * DestBpp);
- // TODO(thestig): Audit suspicious variable usage.
- unsigned char* src_scan_mask = nullptr;
- if (m_DestFormat != FXDIB_Format::kArgb) {
- src_scan_mask =
- reinterpret_cast<unsigned char*>(col - m_DestClip.left);
- }
uint32_t dest_a = 0;
uint32_t dest_r = 0;
uint32_t dest_g = 0;
uint32_t dest_b = 0;
- const size_t pixel_bytes =
- m_DestFormat == FXDIB_Format::kArgb ? 4 : 3;
+ constexpr size_t kPixelBytes = 4;
for (int j = pWeights->m_SrcStart; j <= pWeights->m_SrcEnd; ++j) {
uint32_t pixel_weight = pWeights->GetWeightForPosition(j);
pdfium::span<const uint8_t> src_pixel = src_span.subspan(
- (j - m_SrcClip.top) * m_InterPitch, pixel_bytes);
- int mask_v = 255;
- if (src_scan_mask)
- mask_v = src_scan_mask[(j - m_SrcClip.top) * m_ExtraMaskPitch];
+ (j - m_SrcClip.top) * m_InterPitch, kPixelBytes);
dest_b += pixel_weight * src_pixel[0];
dest_g += pixel_weight * src_pixel[1];
dest_r += pixel_weight * src_pixel[2];
- if (m_DestFormat == FXDIB_Format::kArgb)
- dest_a += pixel_weight * src_pixel[3];
- else
- dest_a += pixel_weight * mask_v;
+ dest_a += pixel_weight * src_pixel[3];
}
if (dest_a) {
int r = static_cast<uint32_t>(dest_r) * 255 / dest_a;
@@ -587,13 +504,8 @@
dest_scan[1] = pdfium::clamp(g, 0, 255);
dest_scan[2] = pdfium::clamp(r, 0, 255);
}
- if (m_DestFormat == FXDIB_Format::kArgb)
- dest_scan[3] = PixelFromFixed(dest_a);
- else
- *dest_scan_mask = PixelFromFixed(dest_a);
+ dest_scan[3] = PixelFromFixed(dest_a);
dest_scan += DestBpp;
- if (dest_scan_mask)
- dest_scan_mask++;
}
break;
}
diff --git a/core/fxge/dib/cstretchengine.h b/core/fxge/dib/cstretchengine.h
index 6dabcb1..2ee1477 100644
--- a/core/fxge/dib/cstretchengine.h
+++ b/core/fxge/dib/cstretchengine.h
@@ -132,9 +132,7 @@
k1BppTo8Bpp,
k1BppToManyBpp,
k8BppTo8Bpp,
- k8BppTo8BppWithAlpha,
k8BppToManyBpp,
- k8BppToManyBppWithAlpha,
kManyBpptoManyBpp,
kManyBpptoManyBppWithAlpha
};