Преглед на файлове

PixelPaint: Encode layers in PixelPaint project files as PNG

Previously layers weren't compressed at all and the file size could go
up really fast in a project with multiple layers.  By switching to PNG,
the situation is slightly better now.

Interestingly enough, this change won't break compatibility with old
files, as PixelPaint loads layers using ImageDecoder which will try
every codec possible. :^)
Karol Kosek преди 2 години
родител
ревизия
5049b103c0
променени са 1 файла, в които са добавени 2 реда и са изтрити 3 реда
  1. 2 3
      Userland/Applications/PixelPaint/Image.cpp

+ 2 - 3
Userland/Applications/PixelPaint/Image.cpp

@@ -128,7 +128,6 @@ ErrorOr<void> Image::serialize_as_json(JsonObjectSerializer<StringBuilder>& json
     {
     {
         auto json_layers = TRY(json.add_array("layers"sv));
         auto json_layers = TRY(json.add_array("layers"sv));
         for (auto const& layer : m_layers) {
         for (auto const& layer : m_layers) {
-            Gfx::BMPWriter bmp_writer;
             auto json_layer = TRY(json_layers.add_object());
             auto json_layer = TRY(json_layers.add_object());
             TRY(json_layer.add("width"sv, layer.size().width()));
             TRY(json_layer.add("width"sv, layer.size().width()));
             TRY(json_layer.add("height"sv, layer.size().height()));
             TRY(json_layer.add("height"sv, layer.size().height()));
@@ -138,9 +137,9 @@ ErrorOr<void> Image::serialize_as_json(JsonObjectSerializer<StringBuilder>& json
             TRY(json_layer.add("opacity_percent"sv, layer.opacity_percent()));
             TRY(json_layer.add("opacity_percent"sv, layer.opacity_percent()));
             TRY(json_layer.add("visible"sv, layer.is_visible()));
             TRY(json_layer.add("visible"sv, layer.is_visible()));
             TRY(json_layer.add("selected"sv, layer.is_selected()));
             TRY(json_layer.add("selected"sv, layer.is_selected()));
-            TRY(json_layer.add("bitmap"sv, encode_base64(bmp_writer.dump(layer.content_bitmap()))));
+            TRY(json_layer.add("bitmap"sv, encode_base64(TRY(Gfx::PNGWriter::encode(layer.content_bitmap())))));
             if (layer.is_masked())
             if (layer.is_masked())
-                TRY(json_layer.add("mask"sv, encode_base64(bmp_writer.dump(*layer.mask_bitmap()))));
+                TRY(json_layer.add("mask"sv, encode_base64(TRY(Gfx::PNGWriter::encode(*layer.mask_bitmap())))));
             TRY(json_layer.finish());
             TRY(json_layer.finish());
         }
         }