Add CFX_BmpDecompressor::ReadNextScanline().
All the ReadScanline() calls pass in the same arguments. Place those
inside ReadScanline() and rename the method to better reflect what it
does now. Also change the |row_num_| and |col_num_| member variables
from type size_t to uint32_t, since their range is limited by
|kBmpMaxImageDimension|.
Change-Id: Id05da4fd7b5f368b0c80937bebd49c803e05dbcf
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/56050
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxcodec/bmp/cfx_bmpdecompressor.cpp b/core/fxcodec/bmp/cfx_bmpdecompressor.cpp
index 63aa145..e727147 100644
--- a/core/fxcodec/bmp/cfx_bmpdecompressor.cpp
+++ b/core/fxcodec/bmp/cfx_bmpdecompressor.cpp
@@ -61,9 +61,10 @@
longjmp(jmpbuf_, 1);
}
-void CFX_BmpDecompressor::ReadScanline(uint32_t row_num,
- const std::vector<uint8_t>& row_buf) {
- context_->m_pDelegate->BmpReadScanline(row_num, row_buf);
+void CFX_BmpDecompressor::ReadNextScanline() {
+ uint32_t row = img_tb_flag_ ? row_num_ : (height_ - 1 - row_num_);
+ context_->m_pDelegate->BmpReadScanline(row, out_row_buffer_);
+ ++row_num_;
}
bool CFX_BmpDecompressor::GetDataPosition(uint32_t rcd_pos) {
@@ -440,8 +441,7 @@
if (!ValidateColorIndex(byte))
return 0;
}
- ReadScanline(img_tb_flag_ ? row_num_++ : (height_ - 1 - row_num_++),
- out_row_buffer_);
+ ReadNextScanline();
}
SaveDecodingStatus(DecodeStatus::kTail);
return 1;
@@ -467,19 +467,15 @@
NOTREACHED();
}
- ReadScanline(img_tb_flag_ ? row_num_++ : (height_ - 1 - row_num_++),
- out_row_buffer_);
+ ReadNextScanline();
col_num_ = 0;
std::fill(out_row_buffer_.begin(), out_row_buffer_.end(), 0);
SaveDecodingStatus(DecodeStatus::kData);
continue;
}
case kRleEoi: {
- if (row_num_ < height_) {
- ReadScanline(
- img_tb_flag_ ? row_num_++ : (height_ - 1 - row_num_++),
- out_row_buffer_);
- }
+ if (row_num_ < height_)
+ ReadNextScanline();
SaveDecodingStatus(DecodeStatus::kTail);
return 1;
}
@@ -497,9 +493,7 @@
while (row_num_ < bmp_row_num__next) {
std::fill(out_row_buffer_.begin(), out_row_buffer_.end(), 0);
- ReadScanline(
- img_tb_flag_ ? row_num_++ : (height_ - 1 - row_num_++),
- out_row_buffer_);
+ ReadNextScanline();
}
break;
}
@@ -571,19 +565,15 @@
NOTREACHED();
}
- ReadScanline(img_tb_flag_ ? row_num_++ : (height_ - 1 - row_num_++),
- out_row_buffer_);
+ ReadNextScanline();
col_num_ = 0;
std::fill(out_row_buffer_.begin(), out_row_buffer_.end(), 0);
SaveDecodingStatus(DecodeStatus::kData);
continue;
}
case kRleEoi: {
- if (row_num_ < height_) {
- ReadScanline(
- img_tb_flag_ ? row_num_++ : (height_ - 1 - row_num_++),
- out_row_buffer_);
- }
+ if (row_num_ < height_)
+ ReadNextScanline();
SaveDecodingStatus(DecodeStatus::kTail);
return 1;
}
@@ -601,9 +591,7 @@
while (row_num_ < bmp_row_num__next) {
std::fill(out_row_buffer_.begin(), out_row_buffer_.end(), 0);
- ReadScanline(
- img_tb_flag_ ? row_num_++ : (height_ - 1 - row_num_++),
- out_row_buffer_);
+ ReadNextScanline();
}
break;
}
diff --git a/core/fxcodec/bmp/cfx_bmpdecompressor.h b/core/fxcodec/bmp/cfx_bmpdecompressor.h
index 1f88c73..5144b98 100644
--- a/core/fxcodec/bmp/cfx_bmpdecompressor.h
+++ b/core/fxcodec/bmp/cfx_bmpdecompressor.h
@@ -49,7 +49,7 @@
};
bool GetDataPosition(uint32_t cur_pos);
- void ReadScanline(uint32_t row_num, const std::vector<uint8_t>& row_buf);
+ void ReadNextScanline();
int32_t DecodeRGB();
int32_t DecodeRLE8();
int32_t DecodeRLE4();
@@ -77,8 +77,8 @@
int32_t pal_type_ = 0;
uint32_t data_size_ = 0;
uint32_t img_ifh_size_ = 0;
- size_t row_num_ = 0;
- size_t col_num_ = 0;
+ uint32_t row_num_ = 0;
+ uint32_t col_num_ = 0;
int32_t dpi_x_ = 0;
int32_t dpi_y_ = 0;
uint32_t mask_red_ = 0;