Browse Source

Utilities: Make `file` print more information for animated images

Nico Weber 2 years ago
parent
commit
5d5f9f52a0
1 changed files with 12 additions and 1 deletions
  1. 12 1
      Userland/Utilities/file.cpp

+ 12 - 1
Userland/Utilities/file.cpp

@@ -37,7 +37,18 @@ static Optional<DeprecatedString> image_details(DeprecatedString const& descript
     if (!image_decoder)
     if (!image_decoder)
         return {};
         return {};
 
 
-    return DeprecatedString::formatted("{}, {} x {}", description, image_decoder->width(), image_decoder->height());
+    StringBuilder builder;
+    builder.appendff("{}, {} x {}", description, image_decoder->width(), image_decoder->height());
+    if (image_decoder->is_animated()) {
+        builder.appendff(", animated with {} frames that loop", image_decoder->frame_count());
+        int loop_count = image_decoder->loop_count();
+        if (loop_count == 0)
+            builder.appendff(" indefinitely");
+        else
+            builder.appendff(" {} {}", loop_count, loop_count == 1 ? "time" : "times");
+    }
+
+    return builder.to_deprecated_string();
 }
 }
 
 
 static Optional<DeprecatedString> gzip_details(DeprecatedString description, DeprecatedString const& path)
 static Optional<DeprecatedString> gzip_details(DeprecatedString description, DeprecatedString const& path)