Browse Source

LibGfx/JPEGWriter: Move header writing into new add_headers() function

No behavior change.
Nico Weber 1 year ago
parent
commit
e449dba85b
1 changed files with 11 additions and 6 deletions
  1. 11 6
      Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp

+ 11 - 6
Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp

@@ -517,12 +517,8 @@ ErrorOr<void> add_scan_header(Stream& stream)
     return {};
 }
 
-}
-
-ErrorOr<void> JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options const& options)
+ErrorOr<void> add_headers(Stream& stream, JPEGEncodingContext& context, JPEGWriter::Options const& options, IntSize size)
 {
-    JPEGEncodingContext context { JPEGBigEndianOutputBitStream { stream } };
-
     context.set_luminance_quantization_table(s_default_luminance_quantization_table, options.quality);
     context.set_chrominance_quantization_table(s_default_chrominance_quantization_table, options.quality);
 
@@ -537,7 +533,7 @@ ErrorOr<void> JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options c
     if (options.icc_data.has_value())
         TRY(add_icc_data(stream, options.icc_data.value()));
 
-    TRY(add_frame_header(stream, context, bitmap.size()));
+    TRY(add_frame_header(stream, context, size));
 
     TRY(add_quantization_table(stream, context.luminance_quantization_table()));
     TRY(add_quantization_table(stream, context.chrominance_quantization_table()));
@@ -548,6 +544,15 @@ ErrorOr<void> JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options c
     TRY(add_huffman_table(stream, context.ac_chrominance_huffman_table));
 
     TRY(add_scan_header(stream));
+    return {};
+}
+
+}
+
+ErrorOr<void> JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options const& options)
+{
+    JPEGEncodingContext context { JPEGBigEndianOutputBitStream { stream } };
+    TRY(add_headers(stream, context, options, bitmap.size()));
 
     TRY(context.initialize_mcu(bitmap));
     context.fdct_and_quantization();