Support drag-n-drop image in viewer
diff --git a/skia/viewer/src/main.cpp b/skia/viewer/src/main.cpp
index 204e539..9f22592 100644
--- a/skia/viewer/src/main.cpp
+++ b/skia/viewer/src/main.cpp
@@ -41,6 +41,8 @@
 std::unique_ptr<rive::ArtboardInstance> artboardInstance;
 std::unique_ptr<rive::Scene> currentScene;
 
+sk_sp<SkImage> gImage;
+
 static void delete_file() {
     currentScene = nullptr;
     artboardInstance = nullptr;
@@ -104,8 +106,15 @@
     assert(fileBytes.size() != 0);
     auto file = rive::File::import(rive::toSpan(fileBytes), &skiaFactory);
     if (!file) {
-        fileBytes.clear();
         fprintf(stderr, "failed to import file\n");
+
+        auto data = SkData::MakeWithCopy(fileBytes.data(), fileBytes.size());
+        gImage = SkImage::MakeFromEncoded(data);
+        if (gImage) {
+            fprintf(stderr, "interpreted as image\n");
+        }
+
+        fileBytes.clear();
         return;
     }
 
@@ -333,6 +342,11 @@
 
             currentScene->draw(&renderer);
             renderer.restore();
+        } else {
+            // no scene ...
+            if (gImage) {
+                canvas->drawImage(gImage, 0, 0);
+            }
         }
         context->flush();