Forráskód Böngészése

LibWeb: Fix `new ImageData(width, height)` when width != height

Andreas Kling 1 éve
szülő
commit
c08ba8ac4c

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
Tests/LibWeb/Text/expected/HTML/ImageData-create-with-size.txt


+ 4 - 0
Tests/LibWeb/Text/input/HTML/ImageData-create-with-size.html

@@ -6,6 +6,10 @@
         println(imageData.data);
         println(imageData.data.length);
 
+        imageData = new ImageData(1, 2);
+        println(imageData.data);
+        println(imageData.data.length);
+
         const arr = new Uint8ClampedArray(40_000);
         // Fill the array with the same RGBA values
         for (let i = 0; i < arr.length; i += 4) {

+ 1 - 1
Userland/Libraries/LibWeb/HTML/ImageData.cpp

@@ -73,7 +73,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<ImageData>> ImageData::create(JS::Realm& re
         return WebIDL::IndexSizeError::create(realm, "Source height must be equal to the calculated height of the data."_fly_string);
 
     // 7. Initialize this given sw, sh, settings set to settings, and source set to data.
-    auto bitmap = TRY_OR_THROW_OOM(vm, Gfx::Bitmap::create_wrapper(Gfx::BitmapFormat::RGBA8888, Gfx::IntSize(sw, sw), 1, sw * sizeof(u32), uint8_clamped_array_data.data().data()));
+    auto bitmap = TRY_OR_THROW_OOM(vm, Gfx::Bitmap::create_wrapper(Gfx::BitmapFormat::RGBA8888, Gfx::IntSize(sw, height), 1, sw * sizeof(u32), uint8_clamped_array_data.data().data()));
 
     return realm.heap().allocate<ImageData>(realm, realm, bitmap, uint8_clamped_array_data);
 }

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott