Switch testing/image_diff/ code to use uint8_t instead of unsigned char.
Specify exactly how big each element of an array of bytes should be.
Also make the same change to the callers.
Change-Id: Ic19ec36bc7732358573bb18e32d3ca2420ec8b3f
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/64230
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/samples/pdfium_test_write_helper.cc b/samples/pdfium_test_write_helper.cc
index b89b38a..6977707 100644
--- a/samples/pdfium_test_write_helper.cc
+++ b/samples/pdfium_test_write_helper.cc
@@ -133,12 +133,12 @@
return "";
}
-std::vector<unsigned char> EncodePng(const unsigned char* buffer,
- int width,
- int height,
- int stride,
- int format) {
- std::vector<unsigned char> png;
+std::vector<uint8_t> EncodePng(const uint8_t* buffer,
+ int width,
+ int height,
+ int stride,
+ int format) {
+ std::vector<uint8_t> png;
switch (format) {
case FPDFBitmap_Unknown:
break;
@@ -383,9 +383,9 @@
if (!CheckDimensions(stride, width, height))
return "";
- std::vector<unsigned char> png_encoding =
- EncodePng(static_cast<const unsigned char*>(buffer), width, height,
- stride, FPDFBitmap_BGRA);
+ std::vector<uint8_t> png_encoding =
+ EncodePng(static_cast<const uint8_t*>(buffer), width, height, stride,
+ FPDFBitmap_BGRA);
if (png_encoding.empty()) {
fprintf(stderr, "Failed to convert bitmap to PNG\n");
return "";
@@ -583,14 +583,14 @@
fclose(fp);
}
-std::vector<unsigned char> EncodeBitmapToPng(ScopedFPDFBitmap bitmap) {
- std::vector<unsigned char> png_encoding;
+std::vector<uint8_t> EncodeBitmapToPng(ScopedFPDFBitmap bitmap) {
+ std::vector<uint8_t> png_encoding;
int format = FPDFBitmap_GetFormat(bitmap.get());
if (format == FPDFBitmap_Unknown)
return png_encoding;
- const unsigned char* buffer =
- static_cast<const unsigned char*>(FPDFBitmap_GetBuffer(bitmap.get()));
+ const uint8_t* buffer =
+ static_cast<const uint8_t*>(FPDFBitmap_GetBuffer(bitmap.get()));
int width = FPDFBitmap_GetWidth(bitmap.get());
int height = FPDFBitmap_GetHeight(bitmap.get());
@@ -671,8 +671,7 @@
continue;
}
- std::vector<unsigned char> png_encoding =
- EncodeBitmapToPng(std::move(bitmap));
+ std::vector<uint8_t> png_encoding = EncodeBitmapToPng(std::move(bitmap));
if (png_encoding.empty()) {
fprintf(stderr,
"Failed to convert image object #%d, on page #%d to png.\n",
@@ -757,7 +756,7 @@
return;
}
- std::vector<unsigned char> png_encoding =
+ std::vector<uint8_t> png_encoding =
EncodeBitmapToPng(std::move(thumb_bitmap));
if (png_encoding.empty()) {
fprintf(stderr, "Failed to convert thumbnail of page #%d to png.\n",
diff --git a/testing/image_diff/image_diff.cpp b/testing/image_diff/image_diff.cpp
index 366990e..d7abadf 100644
--- a/testing/image_diff/image_diff.cpp
+++ b/testing/image_diff/image_diff.cpp
@@ -44,7 +44,7 @@
bool has_image() const { return w_ > 0 && h_ > 0; }
int w() const { return w_; }
int h() const { return h_; }
- const unsigned char* data() const { return &data_.front(); }
+ const uint8_t* data() const { return &data_.front(); }
// Creates the image from the given filename on disk, and returns true on
// success.
@@ -84,9 +84,9 @@
if (!f)
return false;
- std::vector<unsigned char> compressed;
+ std::vector<uint8_t> compressed;
const size_t kBufSize = 1024;
- unsigned char buf[kBufSize];
+ uint8_t buf[kBufSize];
size_t num_read = 0;
while ((num_read = fread(buf, 1, kBufSize, f)) > 0) {
compressed.insert(compressed.end(), buf, buf + num_read);
@@ -112,7 +112,7 @@
int w_;
int h_;
- std::vector<unsigned char> data_;
+ std::vector<uint8_t> data_;
};
float CalculateDifferencePercentage(const Image& actual, int pixels_different) {
@@ -295,7 +295,7 @@
if (same)
return kStatusSame;
- std::vector<unsigned char> png_encoding = image_diff_png::EncodeRGBAPNG(
+ std::vector<uint8_t> png_encoding = image_diff_png::EncodeRGBAPNG(
diff_image.data(), diff_image.w(), diff_image.h(), diff_image.w() * 4);
if (png_encoding.empty())
return kStatusError;
diff --git a/testing/image_diff/image_diff_png.cpp b/testing/image_diff/image_diff_png.cpp
index 2336b29..9b6e69b 100644
--- a/testing/image_diff/image_diff_png.cpp
+++ b/testing/image_diff/image_diff_png.cpp
@@ -61,13 +61,13 @@
};
// Converts BGRA->RGBA and RGBA->BGRA.
-void ConvertBetweenBGRAandRGBA(const unsigned char* input,
+void ConvertBetweenBGRAandRGBA(const uint8_t* input,
int pixel_width,
- unsigned char* output,
+ uint8_t* output,
bool* is_opaque) {
for (int x = 0; x < pixel_width; x++) {
- const unsigned char* pixel_in = &input[x * 4];
- unsigned char* pixel_out = &output[x * 4];
+ const uint8_t* pixel_in = &input[x * 4];
+ uint8_t* pixel_out = &output[x * 4];
pixel_out[0] = pixel_in[2];
pixel_out[1] = pixel_in[1];
pixel_out[2] = pixel_in[0];
@@ -75,26 +75,26 @@
}
}
-void ConvertBGRtoRGB(const unsigned char* bgr,
+void ConvertBGRtoRGB(const uint8_t* bgr,
int pixel_width,
- unsigned char* rgb,
+ uint8_t* rgb,
bool* is_opaque) {
for (int x = 0; x < pixel_width; x++) {
- const unsigned char* pixel_in = &bgr[x * 3];
- unsigned char* pixel_out = &rgb[x * 3];
+ const uint8_t* pixel_in = &bgr[x * 3];
+ uint8_t* pixel_out = &rgb[x * 3];
pixel_out[0] = pixel_in[2];
pixel_out[1] = pixel_in[1];
pixel_out[2] = pixel_in[0];
}
}
-void ConvertRGBAtoRGB(const unsigned char* rgba,
+void ConvertRGBAtoRGB(const uint8_t* rgba,
int pixel_width,
- unsigned char* rgb,
+ uint8_t* rgb,
bool* is_opaque) {
for (int x = 0; x < pixel_width; x++) {
- const unsigned char* pixel_in = &rgba[x * 4];
- unsigned char* pixel_out = &rgb[x * 3];
+ const uint8_t* pixel_in = &rgba[x * 4];
+ uint8_t* pixel_out = &rgb[x * 3];
pixel_out[0] = pixel_in[0];
pixel_out[1] = pixel_in[1];
pixel_out[2] = pixel_in[2];
@@ -116,7 +116,7 @@
class PngDecoderState {
public:
- PngDecoderState(ColorFormat ofmt, std::vector<unsigned char>* out)
+ PngDecoderState(ColorFormat ofmt, std::vector<uint8_t>* out)
: output_format(ofmt), output(out) {}
const ColorFormat output_format;
@@ -127,13 +127,13 @@
bool is_opaque = true;
// An intermediary buffer for decode output.
- std::vector<unsigned char>* const output;
+ std::vector<uint8_t>* const output;
// Called to convert a row from the library to the correct output format.
// When null, no conversion is necessary.
- void (*row_converter)(const unsigned char* in,
+ void (*row_converter)(const uint8_t* in,
int w,
- unsigned char* out,
+ uint8_t* out,
bool* is_opaque) = nullptr;
// Size of the image, set in the info callback.
@@ -144,13 +144,13 @@
bool done = false;
};
-void ConvertRGBtoRGBA(const unsigned char* rgb,
+void ConvertRGBtoRGBA(const uint8_t* rgb,
int pixel_width,
- unsigned char* rgba,
+ uint8_t* rgba,
bool* is_opaque) {
for (int x = 0; x < pixel_width; x++) {
- const unsigned char* pixel_in = &rgb[x * 3];
- unsigned char* pixel_out = &rgba[x * 4];
+ const uint8_t* pixel_in = &rgb[x * 3];
+ uint8_t* pixel_out = &rgba[x * 4];
pixel_out[0] = pixel_in[0];
pixel_out[1] = pixel_in[1];
pixel_out[2] = pixel_in[2];
@@ -158,13 +158,13 @@
}
}
-void ConvertRGBtoBGRA(const unsigned char* rgb,
+void ConvertRGBtoBGRA(const uint8_t* rgb,
int pixel_width,
- unsigned char* bgra,
+ uint8_t* bgra,
bool* is_opaque) {
for (int x = 0; x < pixel_width; x++) {
- const unsigned char* pixel_in = &rgb[x * 3];
- unsigned char* pixel_out = &bgra[x * 4];
+ const uint8_t* pixel_in = &rgb[x * 3];
+ uint8_t* pixel_out = &bgra[x * 4];
pixel_out[0] = pixel_in[2];
pixel_out[1] = pixel_in[1];
pixel_out[2] = pixel_in[0];
@@ -295,10 +295,10 @@
return;
}
- unsigned char* base = nullptr;
+ uint8_t* base = nullptr;
base = &state->output->front();
- unsigned char* dest = &base[state->width * state->output_channels * row_num];
+ uint8_t* dest = &base[state->width * state->output_channels * row_num];
if (state->row_converter)
state->row_converter(new_row, state->width, dest, &state->is_opaque);
else
@@ -326,7 +326,7 @@
png_info** pi_;
};
-bool BuildPNGStruct(const unsigned char* input,
+bool BuildPNGStruct(const uint8_t* input,
size_t input_size,
png_struct** png_ptr,
png_info** info_ptr) {
@@ -334,7 +334,7 @@
return false; // Input data too small to be a png
// Have libpng check the signature, it likes the first 8 bytes.
- if (png_sig_cmp(const_cast<unsigned char*>(input), 0, 8) != 0)
+ if (png_sig_cmp(const_cast<uint8_t*>(input), 0, 8) != 0)
return false;
*png_ptr =
@@ -351,12 +351,12 @@
return true;
}
-std::vector<unsigned char> Decode(const unsigned char* input,
- size_t input_size,
- ColorFormat format,
- int* w,
- int* h) {
- std::vector<unsigned char> output;
+std::vector<uint8_t> Decode(const uint8_t* input,
+ size_t input_size,
+ ColorFormat format,
+ int* w,
+ int* h) {
+ std::vector<uint8_t> output;
png_struct* png_ptr = nullptr;
png_info* info_ptr = nullptr;
if (!BuildPNGStruct(input, input_size, &png_ptr, &info_ptr))
@@ -374,8 +374,7 @@
png_set_progressive_read_fn(png_ptr, &state, &DecodeInfoCallback,
&DecodeRowCallback, &DecodeEndCallback);
- png_process_data(png_ptr, info_ptr, const_cast<unsigned char*>(input),
- input_size);
+ png_process_data(png_ptr, info_ptr, const_cast<uint8_t*>(input), input_size);
if (!state.done) {
// Fed it all the data but the library didn't think we got all the data, so
@@ -397,8 +396,8 @@
// Passed around as the io_ptr in the png structs so our callbacks know where
// to write data.
struct PngEncoderState {
- explicit PngEncoderState(std::vector<unsigned char>* o) : out(o) {}
- std::vector<unsigned char>* out;
+ explicit PngEncoderState(std::vector<uint8_t>* o) : out(o) {}
+ std::vector<uint8_t>* out;
};
// Called by libpng to flush its internal buffer to ours.
@@ -414,13 +413,13 @@
// we're required to provide this function by libpng.
}
-void ConvertBGRAtoRGB(const unsigned char* bgra,
+void ConvertBGRAtoRGB(const uint8_t* bgra,
int pixel_width,
- unsigned char* rgb,
+ uint8_t* rgb,
bool* is_opaque) {
for (int x = 0; x < pixel_width; x++) {
- const unsigned char* pixel_in = &bgra[x * 4];
- unsigned char* pixel_out = &rgb[x * 3];
+ const uint8_t* pixel_in = &bgra[x * 4];
+ uint8_t* pixel_out = &rgb[x * 3];
pixel_out[0] = pixel_in[2];
pixel_out[1] = pixel_in[1];
pixel_out[2] = pixel_in[0];
@@ -481,9 +480,9 @@
#endif // PNG_TEXT_SUPPORTED
// The type of functions usable for converting between pixel formats.
-typedef void (*FormatConverter)(const unsigned char* in,
+typedef void (*FormatConverter)(const uint8_t* in,
int w,
- unsigned char* out,
+ uint8_t* out,
bool* is_opaque);
// libpng uses a wacky setjmp-based API, which makes the compiler nervous.
@@ -496,7 +495,7 @@
int width,
int height,
int row_byte_width,
- const unsigned char* input,
+ const uint8_t* input,
int compression_level,
int png_output_color_type,
int output_color_components,
@@ -505,7 +504,7 @@
#ifdef PNG_TEXT_SUPPORTED
CommentWriter comment_writer(comments);
#endif
- unsigned char* row_buffer = nullptr;
+ uint8_t* row_buffer = nullptr;
// Make sure to not declare any locals here -- locals in the presence
// of setjmp() in C++ code makes gcc complain.
@@ -536,12 +535,11 @@
if (!converter) {
// No conversion needed, give the data directly to libpng.
for (int y = 0; y < height; y++) {
- png_write_row(png_ptr,
- const_cast<unsigned char*>(&input[y * row_byte_width]));
+ png_write_row(png_ptr, const_cast<uint8_t*>(&input[y * row_byte_width]));
}
} else {
// Needs conversion using a separate buffer.
- row_buffer = new unsigned char[width * output_color_components];
+ row_buffer = new uint8_t[width * output_color_components];
for (int y = 0; y < height; y++) {
converter(&input[y * row_byte_width], width, row_buffer, nullptr);
png_write_row(png_ptr, row_buffer);
@@ -553,8 +551,8 @@
return true;
}
-std::vector<unsigned char> EncodeWithCompressionLevel(
- const unsigned char* input,
+std::vector<uint8_t> EncodeWithCompressionLevel(
+ const uint8_t* input,
ColorFormat format,
const int width,
const int height,
@@ -562,7 +560,7 @@
bool discard_transparency,
const std::vector<Comment>& comments,
int compression_level) {
- std::vector<unsigned char> output;
+ std::vector<uint8_t> output;
// Run to convert an input row into the output row format, nullptr means no
// conversion is necessary.
@@ -645,13 +643,13 @@
return output;
}
-std::vector<unsigned char> Encode(const unsigned char* input,
- ColorFormat format,
- const int width,
- const int height,
- int row_byte_width,
- bool discard_transparency,
- const std::vector<Comment>& comments) {
+std::vector<uint8_t> Encode(const uint8_t* input,
+ ColorFormat format,
+ const int width,
+ const int height,
+ int row_byte_width,
+ bool discard_transparency,
+ const std::vector<Comment>& comments) {
return EncodeWithCompressionLevel(input, format, width, height,
row_byte_width, discard_transparency,
comments, Z_DEFAULT_COMPRESSION);
@@ -659,43 +657,43 @@
} // namespace
-std::vector<unsigned char> DecodePNG(pdfium::span<const unsigned char> input,
- bool reverse_byte_order,
- int* width,
- int* height) {
+std::vector<uint8_t> DecodePNG(pdfium::span<const uint8_t> input,
+ bool reverse_byte_order,
+ int* width,
+ int* height) {
ColorFormat format = reverse_byte_order ? FORMAT_BGRA : FORMAT_RGBA;
return Decode(input.data(), input.size(), format, width, height);
}
-std::vector<unsigned char> EncodeBGRPNG(const unsigned char* input,
- int width,
- int height,
- int row_byte_width) {
+std::vector<uint8_t> EncodeBGRPNG(const uint8_t* input,
+ int width,
+ int height,
+ int row_byte_width) {
return Encode(input, FORMAT_BGR, width, height, row_byte_width, false,
std::vector<Comment>());
}
-std::vector<unsigned char> EncodeRGBAPNG(const unsigned char* input,
- int width,
- int height,
- int row_byte_width) {
+std::vector<uint8_t> EncodeRGBAPNG(const uint8_t* input,
+ int width,
+ int height,
+ int row_byte_width) {
return Encode(input, FORMAT_RGBA, width, height, row_byte_width, false,
std::vector<Comment>());
}
-std::vector<unsigned char> EncodeBGRAPNG(const unsigned char* input,
- int width,
- int height,
- int row_byte_width,
- bool discard_transparency) {
+std::vector<uint8_t> EncodeBGRAPNG(const uint8_t* input,
+ int width,
+ int height,
+ int row_byte_width,
+ bool discard_transparency) {
return Encode(input, FORMAT_BGRA, width, height, row_byte_width,
discard_transparency, std::vector<Comment>());
}
-std::vector<unsigned char> EncodeGrayPNG(const unsigned char* input,
- int width,
- int height,
- int row_byte_width) {
+std::vector<uint8_t> EncodeGrayPNG(const uint8_t* input,
+ int width,
+ int height,
+ int row_byte_width) {
return Encode(input, FORMAT_GRAY, width, height, row_byte_width, false,
std::vector<Comment>());
}
diff --git a/testing/image_diff/image_diff_png.h b/testing/image_diff/image_diff_png.h
index 911e2f0..462003b 100644
--- a/testing/image_diff/image_diff_png.h
+++ b/testing/image_diff/image_diff_png.h
@@ -15,35 +15,35 @@
// Decode a PNG into an RGBA pixel array, or BGRA pixel array if
// |reverse_byte_order| is set to true.
-std::vector<unsigned char> DecodePNG(pdfium::span<const unsigned char> input,
- bool reverse_byte_order,
- int* width,
- int* height);
+std::vector<uint8_t> DecodePNG(pdfium::span<const uint8_t> input,
+ bool reverse_byte_order,
+ int* width,
+ int* height);
// Encode a BGR pixel array into a PNG.
-std::vector<unsigned char> EncodeBGRPNG(const unsigned char* input,
- int width,
- int height,
- int row_byte_width);
+std::vector<uint8_t> EncodeBGRPNG(const uint8_t* input,
+ int width,
+ int height,
+ int row_byte_width);
// Encode an RGBA pixel array into a PNG.
-std::vector<unsigned char> EncodeRGBAPNG(const unsigned char* input,
- int width,
- int height,
- int row_byte_width);
+std::vector<uint8_t> EncodeRGBAPNG(const uint8_t* input,
+ int width,
+ int height,
+ int row_byte_width);
// Encode an BGRA pixel array into a PNG.
-std::vector<unsigned char> EncodeBGRAPNG(const unsigned char* input,
- int width,
- int height,
- int row_byte_width,
- bool discard_transparency);
+std::vector<uint8_t> EncodeBGRAPNG(const uint8_t* input,
+ int width,
+ int height,
+ int row_byte_width,
+ bool discard_transparency);
// Encode a grayscale pixel array into a PNG.
-std::vector<unsigned char> EncodeGrayPNG(const unsigned char* input,
- int width,
- int height,
- int row_byte_width);
+std::vector<uint8_t> EncodeGrayPNG(const uint8_t* input,
+ int width,
+ int height,
+ int row_byte_width);
} // namespace image_diff_png
diff --git a/testing/utils/bitmap_saver.cpp b/testing/utils/bitmap_saver.cpp
index bba5cd5..7b7e475 100644
--- a/testing/utils/bitmap_saver.cpp
+++ b/testing/utils/bitmap_saver.cpp
@@ -17,9 +17,9 @@
const int width = FPDFBitmap_GetWidth(bitmap);
const int height = FPDFBitmap_GetHeight(bitmap);
const auto* buffer =
- static_cast<const unsigned char*>(FPDFBitmap_GetBuffer(bitmap));
+ static_cast<const uint8_t*>(FPDFBitmap_GetBuffer(bitmap));
- std::vector<unsigned char> png;
+ std::vector<uint8_t> png;
if (FPDFBitmap_GetFormat(bitmap) == FPDFBitmap_Gray) {
png = image_diff_png::EncodeGrayPNG(buffer, width, height, stride);
} else {