Add enum class ProgressiveDecoder::TransferMethod
Give a field that holds various integer values some meaning.
Change-Id: I0d7b0c7e20d43a9bd6731793519eafbbb4107744
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/122371
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@google.com>
diff --git a/core/fxcodec/progressive_decoder.cpp b/core/fxcodec/progressive_decoder.cpp
index c552f67..09ce0ad 100644
--- a/core/fxcodec/progressive_decoder.cpp
+++ b/core/fxcodec/progressive_decoder.cpp
@@ -314,7 +314,7 @@
pdfium::span<uint8_t> scan_span =
pDevice->GetWritableScanline(row + startY).subspan(startX * Bpp);
switch (m_TransMethod) {
- case 8: {
+ case TransformMethod::k8BppRgbToRgbNoAlpha: {
uint8_t* pScanline = scan_span.data();
UNSAFE_TODO({
for (int col = 0; col < sizeX; col++) {
@@ -326,7 +326,7 @@
});
break;
}
- case 12: {
+ case TransformMethod::k8BppRgbToArgb: {
uint8_t* pScanline = scan_span.data();
UNSAFE_TODO({
for (int col = 0; col < sizeX; col++) {
@@ -336,6 +336,8 @@
});
break;
}
+ default:
+ break;
}
}
return true;
@@ -1160,21 +1162,21 @@
case FXDIB_Format::kRgb: {
switch (m_SrcFormat) {
case FXCodec_Invalid:
- m_TransMethod = -1;
+ m_TransMethod = TransformMethod::kInvalid;
break;
case FXCodec_8bppGray:
- m_TransMethod = 7;
+ m_TransMethod = TransformMethod::k8BppGrayToRgbMaybeAlpha;
break;
case FXCodec_8bppRgb:
- m_TransMethod = 8;
+ m_TransMethod = TransformMethod::k8BppRgbToRgbNoAlpha;
break;
case FXCodec_Rgb:
case FXCodec_Rgb32:
case FXCodec_Argb:
- m_TransMethod = 9;
+ m_TransMethod = TransformMethod::kRgbMaybeAlphaToRgbMaybeAlpha;
break;
case FXCodec_Cmyk:
- m_TransMethod = 10;
+ m_TransMethod = TransformMethod::kCmykToRgbMaybeAlpha;
break;
}
break;
@@ -1183,27 +1185,27 @@
case FXDIB_Format::kArgb: {
switch (m_SrcFormat) {
case FXCodec_Invalid:
- m_TransMethod = -1;
+ m_TransMethod = TransformMethod::kInvalid;
break;
case FXCodec_8bppGray:
- m_TransMethod = 7;
+ m_TransMethod = TransformMethod::k8BppGrayToRgbMaybeAlpha;
break;
case FXCodec_8bppRgb:
if (m_pDeviceBitmap->GetFormat() == FXDIB_Format::kArgb) {
- m_TransMethod = 12;
+ m_TransMethod = TransformMethod::k8BppRgbToArgb;
} else {
- m_TransMethod = 8;
+ m_TransMethod = TransformMethod::k8BppRgbToRgbNoAlpha;
}
break;
case FXCodec_Rgb:
case FXCodec_Rgb32:
- m_TransMethod = 9;
+ m_TransMethod = TransformMethod::kRgbMaybeAlphaToRgbMaybeAlpha;
break;
case FXCodec_Cmyk:
- m_TransMethod = 10;
+ m_TransMethod = TransformMethod::kCmykToRgbMaybeAlpha;
break;
case FXCodec_Argb:
- m_TransMethod = 11;
+ m_TransMethod = TransformMethod::kArgbToArgb;
break;
}
break;
@@ -1223,9 +1225,9 @@
for (int dest_col = 0; dest_col < m_SrcWidth; dest_col++) {
PixelWeight* pPixelWeights = m_WeightHorz.GetPixelWeight(dest_col);
switch (m_TransMethod) {
- case -1:
+ case TransformMethod::kInvalid:
return;
- case 7: {
+ case TransformMethod::k8BppGrayToRgbMaybeAlpha: {
UNSAFE_TODO({
uint32_t dest_g = 0;
for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
@@ -1239,7 +1241,7 @@
break;
});
}
- case 8: {
+ case TransformMethod::k8BppRgbToRgbNoAlpha: {
UNSAFE_TODO({
uint32_t dest_r = 0;
uint32_t dest_g = 0;
@@ -1260,7 +1262,7 @@
break;
});
}
- case 12: {
+ case TransformMethod::k8BppRgbToArgb: {
#ifdef PDF_ENABLE_XFA_BMP
if (m_pBmpContext) {
UNSAFE_TODO({
@@ -1306,7 +1308,7 @@
break;
});
}
- case 9: {
+ case TransformMethod::kRgbMaybeAlphaToRgbMaybeAlpha: {
UNSAFE_TODO({
uint32_t dest_b = 0;
uint32_t dest_g = 0;
@@ -1327,7 +1329,7 @@
break;
});
}
- case 10: {
+ case TransformMethod::kCmykToRgbMaybeAlpha: {
UNSAFE_TODO({
uint32_t dest_b = 0;
uint32_t dest_g = 0;
@@ -1351,7 +1353,7 @@
break;
});
}
- case 11: {
+ case TransformMethod::kArgbToArgb: {
UNSAFE_TODO({
uint32_t dest_alpha = 0;
uint32_t dest_r = 0;
@@ -1375,8 +1377,6 @@
break;
});
}
- default:
- NOTREACHED_NORETURN();
}
}
}
diff --git a/core/fxcodec/progressive_decoder.h b/core/fxcodec/progressive_decoder.h
index 3421add..1efd78b 100644
--- a/core/fxcodec/progressive_decoder.h
+++ b/core/fxcodec/progressive_decoder.h
@@ -118,6 +118,16 @@
using WeightTable = CStretchEngine::WeightTable;
using PixelWeight = CStretchEngine::PixelWeight;
+ enum class TransformMethod : uint8_t {
+ kInvalid,
+ k8BppGrayToRgbMaybeAlpha,
+ k8BppRgbToRgbNoAlpha,
+ k8BppRgbToArgb,
+ kRgbMaybeAlphaToRgbMaybeAlpha,
+ kCmykToRgbMaybeAlpha,
+ kArgbToArgb,
+ };
+
class HorzTable {
public:
HorzTable();
@@ -215,7 +225,7 @@
int m_SrcHeight = 0;
int m_SrcComponents = 0;
int m_SrcBPC = 0;
- int m_TransMethod = -1;
+ TransformMethod m_TransMethod;
int m_SrcRow = 0;
FXCodec_Format m_SrcFormat = FXCodec_Invalid;
int m_SrcPassNumber = 0;