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;