recreate project

This commit is contained in:
root
2026-02-10 22:11:06 -05:00
commit 663c0cdbda
10149 changed files with 1379710 additions and 0 deletions
@@ -0,0 +1,26 @@
<?php
use Mike42\GfxPhp\Image;
/**
* @BeforeMethods({"init"})
* @Revs(1000)
*/
class GifDecodeBenchmark {
private static $blob;
public function init()
{
self::$blob = file_get_contents(__DIR__ . "/../../../resources/pygif/high-color.gif");
}
/**
* @Subject
*/
public function gifDecode()
{
Image::fromBlob(self::$blob, "foo.gif");
}
}
@@ -0,0 +1,52 @@
<?php
use Mike42\GfxPhp\Util\LzwCompression;
/**
* @BeforeMethods({"init"})
* @Revs(100)
*/
class LzwDecodeBenchmark
{
private $blank;
private $random;
private $repeating;
public function init()
{
$this -> blank = LzwCompression::compress(str_repeat("\0", 65536), 0x08);
$this -> random = LzwCompression::compress($this -> random_str(65536), 0x08);
$this -> repeating = LzwCompression::compress(str_repeat($this -> random_str(256), 256), 0x08);
}
/**
* @Subject
*/
public function lzwDecodeBlank() {
LzwCompression::decompress($this -> blank, 0x08);
}
/**
* @Subject
*/
public function lzwDecodeRandom() {
LzwCompression::decompress($this -> random, 0x08);
}
/**
* @Subject
*/
public function lzwDecodeRepeating() {
LzwCompression::decompress($this -> repeating, 0x08);
}
/** Random string, not cryptographically strong */
public static function random_str(int $len)
{
$str = str_repeat("\0", $len);
for($i = 0 ; $i < $len; $i++) {
$str[$i] = chr(rand(0, 255));
}
return $str;
}
}
@@ -0,0 +1,52 @@
<?php
use Mike42\GfxPhp\Util\LzwCompression;
/**
* @BeforeMethods({"init"})
* @Revs(10)
*/
class LzwEncodeBenchmark
{
private $blank;
private $random;
private $repeating;
public function init()
{
$this -> blank = str_repeat("\0", 65536);
$this -> random = $this -> random_str(65536);
$this -> repeating = str_repeat($this -> random_str(256), 256);
}
/**
* @Subject
*/
public function lzwEncodeBlank() {
LzwCompression::compress($this -> blank, 0x08);
}
/**
* @Subject
*/
public function lzwEncodeRandom() {
LzwCompression::compress($this -> random, 0x08);
}
/**
* @Subject
*/
public function lzwEncodeRepeating() {
LzwCompression::compress($this -> repeating, 0x08);
}
/** Random string, not cryptographically strong */
public static function random_str(int $len)
{
$str = str_repeat("\0", $len);
for($i = 0 ; $i < $len; $i++) {
$str[$i] = chr(rand(0, 255));
}
return $str;
}
}
@@ -0,0 +1,26 @@
<?php
use Mike42\GfxPhp\Image;
/**
* @BeforeMethods({"init"})
* @Revs(1000)
*/
class PngDecodeBenchmark {
private static $blob;
public function init()
{
self::$blob = file_get_contents(__DIR__ . "/../../../resources/pngsuite/z09n2c08.png");
}
/**
* @Subject
*/
public function pngDecode()
{
Image::fromBlob(self::$blob, "foo.png");
}
}
@@ -0,0 +1,151 @@
<?php
use Mike42\GfxPhp\Image;
/**
* @BeforeMethods({"init"})
* @Revs(1000)
*/
class ConvertRasterImageBenchmark
{
private static $bw100;
private static $gray100;
private static $indexed100;
private static $rgb100;
public function init()
{
self::$rgb100 = Image::fromFile(__DIR__ . "/../../resources/pngsuite/z09n2c08.png");
self::$bw100 = self::$rgb100 -> toBlackAndWhite();
self::$indexed100 = self::$rgb100 -> toIndexed();
self::$gray100 = self::$rgb100 -> toGrayscale();
}
/**
* @Subject
*/
public function convertBwToBw()
{
self::$bw100->toBlackAndWhite();
}
/**
* @Subject
*/
public function convertBwToGray()
{
self::$bw100->toGrayscale();
}
/**
* @Subject
*/
public function convertBwToIndexed()
{
self::$bw100->toIndexed();
}
/**
* @Subject
*/
public function convertBwToRgb()
{
self::$bw100->toRgb();
}
/**
* @Subject
*/
public function convertGrayToBw()
{
self::$gray100->toBlackAndWhite();
}
/**
* @Subject
*/
public function convertGrayToGray()
{
self::$gray100->toGrayscale();
}
/**
* @Subject
*/
public function convertGrayToIndexed()
{
self::$gray100->toIndexed();
}
/**
* @Subject
*/
public function convertGrayToRgb()
{
self::$gray100->toRgb();
}
/**
* @Subject
*/
public function convertIndexedToBw()
{
self::$indexed100->toBlackAndWhite();
}
/**
* @Subject
*/
public function convertIndexedToGray()
{
self::$indexed100->toGrayscale();
}
/**
* @Subject
*/
public function convertIndexedToIndexed()
{
self::$indexed100->toIndexed();
}
/**
* @Subject
*/
public function convertIndexedToRgb()
{
self::$indexed100->toRgb();
}
/**
* @Subject
*/
public function convertRgbToBw()
{
self::$rgb100->toBlackAndWhite();
}
/**
* @Subject
*/
public function convertRgbToGray()
{
self::$rgb100->toGrayscale();
}
/**
* @Subject
*/
public function convertRgbToIndexed()
{
self::$rgb100->toIndexed();
}
/**
* @Subject
*/
public function convertRgbToRgb()
{
self::$rgb100->toRgb();
}
}
@@ -0,0 +1,58 @@
<?php
use Mike42\GfxPhp\BlackAndWhiteRasterImage;
use Mike42\GfxPhp\GrayscaleRasterImage;
use Mike42\GfxPhp\IndexedRasterImage;
use Mike42\GfxPhp\RgbRasterImage;
/**
* @BeforeMethods({"init"})
* @Revs(10000)
*/
class ScaleDownBenchmark
{
private static $bw100;
private static $rgb100;
private static $indexed100;
private static $gray100;
public function init()
{
self::$bw100 = BlackAndWhiteRasterImage::create(100, 100);
self::$rgb100 = RgbRasterImage::create(100, 100);
self::$indexed100 = IndexedRasterImage::create(100, 100);
self::$gray100 = GrayscaleRasterImage::create(100, 100);
}
/**
* @Subject
*/
public function scaleDownBw()
{
self::$bw100->scale(10, 10);
}
/**
* @Subject
*/
public function scaleDownGrayscale()
{
self::$gray100->scale(10, 10);
}
/**
* @Subject
*/
public function scaleDownIndexed()
{
self::$indexed100->scale(10, 10);
}
/**
* @Subject
*/
public function scaleDownRgb()
{
self::$rgb100->scale(10, 10);
}
}
@@ -0,0 +1,58 @@
<?php
use Mike42\GfxPhp\BlackAndWhiteRasterImage;
use Mike42\GfxPhp\GrayscaleRasterImage;
use Mike42\GfxPhp\IndexedRasterImage;
use Mike42\GfxPhp\RgbRasterImage;
/**
* @BeforeMethods({"init"})
* @Revs(10)
*/
class ScaleUpBenchmark
{
private static $bw10;
private static $rgb10;
private static $indexed10;
private static $gray10;
public function init()
{
self::$bw10 = BlackAndWhiteRasterImage::create(10, 10);
self::$rgb10 = RgbRasterImage::create(10, 10);
self::$indexed10 = IndexedRasterImage::create(10, 10);
self::$gray10 = GrayscaleRasterImage::create(10, 10);
}
/**
* @Subject
*/
public function scaleUpBw()
{
self::$bw10->scale(100, 100);
}
/**
* @Subject
*/
public function scaleUpGrayscale()
{
self::$gray10->scale(100, 100);
}
/**
* @Subject
*/
public function scaleUpIndexed()
{
self::$indexed10->scale(100, 100);
}
/**
* @Subject
*/
public function scaleUpRgb()
{
self::$rgb10->scale(100, 100);
}
}
+7
View File
@@ -0,0 +1,7 @@
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$composer_autoload = __DIR__ . "/../vendor/autoload.php";
require_once($composer_autoload);
+618
View File
@@ -0,0 +1,618 @@
<?php
use Mike42\GfxPhp\Image;
use PHPUnit\Framework\TestCase;
/**
* Simple check that files in the BMP Suite can be read, and have the expected dimensions.
*/
class BmpsuiteTest extends TestCase
{
function loadImage(string $filename)
{
return Image::fromFile(__DIR__ . "/../resources/bmpsuite/$filename");
}
function test_badbitcount()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badbitcount.bmp");
}
function test_badbitssize()
{
$img = $this -> loadImage("b/badbitssize.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_baddens1()
{
$img = $this -> loadImage("b/baddens1.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_baddens2()
{
$img = $this -> loadImage("b/baddens2.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_badfilesize()
{
$img = $this -> loadImage("b/badfilesize.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_badheadersize()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badheadersize.bmp");
}
function test_badpalettesize()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badpalettesize.bmp");
}
function test_badplanes()
{
$img = $this -> loadImage("b/badplanes.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_badrle()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badrle.bmp");
}
function test_badrle4()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badrle4.bmp");
}
function test_badrle4bis()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badrle4bis.bmp");
}
function test_badrle4ter()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badrle4ter.bmp");
}
function test_badrlebis()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badrlebis.bmp");
}
function test_badrleter()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badrleter.bmp");
}
function test_badwidth()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/badwidth.bmp");
}
function test_pal8badindex()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/pal8badindex.bmp");
}
function test_reallybig()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/reallybig.bmp");
}
function test_rgb16_880()
{
$img = $this -> loadImage("b/rgb16-880.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rletopdown()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/rletopdown.bmp");
}
function test_shortfile()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("b/shortfile.bmp");
}
function test_pal1()
{
$img = $this -> loadImage("g/pal1.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal1bg()
{
$img = $this -> loadImage("g/pal1bg.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal1wb()
{
$img = $this -> loadImage("g/pal1wb.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal4()
{
$img = $this -> loadImage("g/pal4.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal4gs()
{
$img = $this -> loadImage("g/pal4gs.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal4rle()
{
$img = $this -> loadImage("g/pal4rle.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8_0()
{
$img = $this -> loadImage("g/pal8-0.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8()
{
$img = $this -> loadImage("g/pal8.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8gs()
{
$img = $this -> loadImage("g/pal8gs.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8nonsquare()
{
$img = $this -> loadImage("g/pal8nonsquare.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(32, $img -> getHeight());
}
function test_pal8os2()
{
$img = $this -> loadImage("g/pal8os2.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8rle()
{
$img = $this -> loadImage("g/pal8rle.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8topdown()
{
$img = $this -> loadImage("g/pal8topdown.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8v4()
{
$img = $this -> loadImage("g/pal8v4.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8v5()
{
$img = $this -> loadImage("g/pal8v5.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8w124()
{
$img = $this -> loadImage("g/pal8w124.bmp");
$this -> assertEquals(124, $img -> getWidth());
$this -> assertEquals(61, $img -> getHeight());
}
function test_pal8w125()
{
$img = $this -> loadImage("g/pal8w125.bmp");
$this -> assertEquals(125, $img -> getWidth());
$this -> assertEquals(62, $img -> getHeight());
}
function test_pal8w126()
{
$img = $this -> loadImage("g/pal8w126.bmp");
$this -> assertEquals(126, $img -> getWidth());
$this -> assertEquals(63, $img -> getHeight());
}
function test_rgb16_565()
{
$img = $this -> loadImage("g/rgb16-565.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb16_565pal()
{
$img = $this -> loadImage("g/rgb16-565pal.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb16()
{
$img = $this -> loadImage("g/rgb16.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb16bfdef()
{
$img = $this -> loadImage("g/rgb16bfdef.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb24()
{
$img = $this -> loadImage("g/rgb24.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb24pal()
{
$img = $this -> loadImage("g/rgb24pal.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb32()
{
$img = $this -> loadImage("g/rgb32.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb32bf()
{
$img = $this -> loadImage("g/rgb32bf.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb32bfdef()
{
$img = $this -> loadImage("g/rgb32bfdef.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal1huff()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("q/pal1huff.bmp");
}
function test_pal1p1()
{
$img = $this -> loadImage("q/pal1p1.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal2()
{
$img = $this -> loadImage("q/pal2.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal2color()
{
$img = $this -> loadImage("q/pal2color.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal4rlecut()
{
$img = $this -> loadImage("q/pal4rlecut.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal4rletrns()
{
$img = $this -> loadImage("q/pal4rletrns.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8offs()
{
$img = $this -> loadImage("q/pal8offs.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8os2_hs()
{
$img = $this -> loadImage("q/pal8os2-hs.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8os2_sz()
{
$img = $this -> loadImage("q/pal8os2-sz.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8os2sp()
{
$img = $this -> loadImage("q/pal8os2sp.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8os2v2_16()
{
$img = $this -> loadImage("q/pal8os2v2-16.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8os2v2_40sz()
{
$img = $this -> loadImage("q/pal8os2v2-40sz.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8os2v2_sz()
{
$img = $this -> loadImage("q/pal8os2v2-sz.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8os2v2()
{
$img = $this -> loadImage("q/pal8os2v2.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8oversizepal()
{
$img = $this -> loadImage("q/pal8oversizepal.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8rlecut()
{
$img = $this -> loadImage("q/pal8rlecut.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_pal8rletrns()
{
$img = $this -> loadImage("q/pal8rletrns.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb16_231()
{
$img = $this -> loadImage("q/rgb16-231.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb16_3103()
{
$img = $this -> loadImage("q/rgb16-3103.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb16faketrns()
{
$img = $this -> loadImage("q/rgb16faketrns.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb24jpeg()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("q/rgb24jpeg.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb24largepal()
{
$img = $this -> loadImage("q/rgb24largepal.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb24lprof()
{
$img = $this -> loadImage("q/rgb24lprof.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb24png()
{
$this -> expectException(Exception::class);
$img = $this -> loadImage("q/rgb24png.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb24prof()
{
$img = $this -> loadImage("q/rgb24prof.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb24prof2()
{
$img = $this -> loadImage("q/rgb24prof2.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb32_111110()
{
$img = $this -> loadImage("q/rgb32-111110.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb32_7187()
{
$img = $this -> loadImage("q/rgb32-7187.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb32_xbgr()
{
$img = $this -> loadImage("q/rgb32-xbgr.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb32fakealpha()
{
$img = $this -> loadImage("q/rgb32fakealpha.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgb32h52()
{
$img = $this -> loadImage("q/rgb32h52.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgba16_1924()
{
$img = $this -> loadImage("q/rgba16-1924.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgba16_4444()
{
$img = $this -> loadImage("q/rgba16-4444.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgba16_5551()
{
$img = $this -> loadImage("q/rgba16-5551.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgba32_1010102()
{
$img = $this -> loadImage("q/rgba32-1010102.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgba32_61754()
{
$img = $this -> loadImage("q/rgba32-61754.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgba32_81284()
{
$img = $this -> loadImage("q/rgba32-81284.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgba32()
{
$img = $this -> loadImage("q/rgba32.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgba32abf()
{
$img = $this -> loadImage("q/rgba32abf.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_rgba32h56()
{
$img = $this -> loadImage("q/rgba32h56.bmp");
$this -> assertEquals(127, $img -> getWidth());
$this -> assertEquals(64, $img -> getHeight());
}
function test_ba_bm()
{
// Different container format, not recognised as bitmap at all
$this -> expectException(Exception::class);
$img = $this -> loadImage("x/ba-bm.bmp");
}
}
+494
View File
@@ -0,0 +1,494 @@
<?php
use Mike42\GfxPhp\Image;
use Mike42\GfxPhp\RgbRasterImage;
use PHPUnit\Framework\TestCase;
use Mike42\GfxPhp\BlackAndWhiteRasterImage;
use Mike42\GfxPhp\GrayscaleRasterImage;
use Mike42\GfxPhp\IndexedRasterImage;
/**
* Simple check that files in the PyGIF test suite can be read, and have the expected dimensions.
*/
class GifsuiteTest extends TestCase
{
function loadImage(string $filename) {
return Image::fromFile(__DIR__ . "/../resources/pygif/$filename");
}
function test_255_codes() {
$img = $this -> loadImage("255-codes.gif");
$this -> assertEquals(100, $img -> getWidth());
$this -> assertEquals(100, $img -> getHeight());
}
function test_4095_codes_clear() {
$img = $this -> loadImage("4095-codes-clear.gif");
$this -> assertEquals(100, $img -> getWidth());
$this -> assertEquals(100, $img -> getHeight());
}
function test_4095_codes() {
$img = $this -> loadImage("4095-codes.gif");
$this -> assertEquals(100, $img -> getWidth());
$this -> assertEquals(100, $img -> getHeight());
}
function test_all_blues() {
$img = $this -> loadImage("all-blues.gif");
$this -> assertEquals(16, $img -> getWidth());
$this -> assertEquals(16, $img -> getHeight());
}
function test_all_greens() {
$img = $this -> loadImage("all-greens.gif");
$this -> assertEquals(16, $img -> getWidth());
$this -> assertEquals(16, $img -> getHeight());
}
function test_all_reds() {
$img = $this -> loadImage("all-reds.gif");
$this -> assertEquals(16, $img -> getWidth());
$this -> assertEquals(16, $img -> getHeight());
}
function test_animation() {
$img = $this -> loadImage("animation.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_animation_multi_image_explicit_zero_delay() {
$img = $this -> loadImage("animation-multi-image-explicit-zero-delay.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_animation_multi_image() {
$img = $this -> loadImage("animation-multi-image.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_animation_no_delays() {
$img = $this -> loadImage("animation-no-delays.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_animation_speed() {
$img = $this -> loadImage("animation-speed.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_animation_zero_delays() {
$img = $this -> loadImage("animation-zero-delays.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_comment() {
$img = $this -> loadImage("comment.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_depth1() {
$img = $this -> loadImage("depth1.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_depth2() {
$img = $this -> loadImage("depth2.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_depth3() {
$img = $this -> loadImage("depth3.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_depth4() {
$img = $this -> loadImage("depth4.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_depth5() {
$img = $this -> loadImage("depth5.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_depth6() {
$img = $this -> loadImage("depth6.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_depth7() {
$img = $this -> loadImage("depth7.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_depth8() {
$img = $this -> loadImage("depth8.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_disabled_transparent() {
$img = $this -> loadImage("disabled-transparent.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_dispose_keep() {
$img = $this -> loadImage("dispose-keep.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_dispose_none() {
$img = $this -> loadImage("dispose-none.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_dispose_restore_background() {
$img = $this -> loadImage("dispose-restore-background.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_dispose_restore_previous() {
$img = $this -> loadImage("dispose-restore-previous.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_double_clears() {
$img = $this -> loadImage("double-clears.gif");
$this -> assertEquals(8, $img -> getWidth());
$this -> assertEquals(8, $img -> getHeight());
}
function test_extra_data() {
$img = $this -> loadImage("extra-data.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_extra_pixels() {
$img = $this -> loadImage("extra-pixels.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_four_colors() {
$img = $this -> loadImage("four-colors.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_gif87a_animation() {
$img = $this -> loadImage("gif87a-animation.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_gif87a() {
$img = $this -> loadImage("gif87a.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_high_color() {
$img = $this -> loadImage("high-color.gif");
$this -> assertEquals(16, $img -> getWidth());
$this -> assertEquals(16, $img -> getHeight());
}
function test_icc_color_profile_empty() {
$img = $this -> loadImage("icc-color-profile-empty.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_icc_color_profile() {
$img = $this -> loadImage("icc-color-profile.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_image_inside_bg() {
$img = $this -> loadImage("image-inside-bg.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_image_outside_bg() {
$img = $this -> loadImage("image-outside-bg.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_image_overlap_bg() {
$img = $this -> loadImage("image-overlap-bg.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_images_combine() {
$img = $this -> loadImage("images-combine.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_images_overlap() {
$img = $this -> loadImage("images-overlap.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_image_zero_height() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("image-zero-height.gif");
}
function test_image_zero_size() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("image-zero-size.gif");
}
function test_image_zero_width() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("image-zero-width.gif");
}
function test_interlace() {
$img = $this -> loadImage("interlace.gif");
$this -> assertEquals(16, $img -> getWidth());
$this -> assertEquals(16, $img -> getHeight());
}
function test_invalid_ascii_comment() {
$img = $this -> loadImage("invalid-ascii-comment.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_invalid_background() {
$img = $this -> loadImage("invalid-background.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_invalid_code() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("invalid-code.gif");
}
function test_invalid_colors() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("invalid-colors.gif");
}
function test_invalid_transparent() {
$img = $this -> loadImage("invalid-transparent.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_invalid_utf8_comment() {
$img = $this -> loadImage("invalid-utf8-comment.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_large_codes() {
$img = $this -> loadImage("large-codes.gif");
$this -> assertEquals(100, $img -> getWidth());
$this -> assertEquals(100, $img -> getHeight());
}
function test_large_comment() {
$img = $this -> loadImage("large-comment.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_local_color_table() {
$img = $this -> loadImage("local-color-table.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_loop_animexts() {
$img = $this -> loadImage("loop-animexts.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_loop_buffer() {
$img = $this -> loadImage("loop-buffer.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_loop_buffer_max() {
$img = $this -> loadImage("loop-buffer_max.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_loop_infinite() {
$img = $this -> loadImage("loop-infinite.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_loop_max() {
$img = $this -> loadImage("loop-max.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_loop_once() {
$img = $this -> loadImage("loop-once.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_many_clears() {
$img = $this -> loadImage("many-clears.gif");
$this -> assertEquals(8, $img -> getWidth());
$this -> assertEquals(8, $img -> getHeight());
}
function test_max_codes() {
$img = $this -> loadImage("max-codes.gif");
$this -> assertEquals(100, $img -> getWidth());
$this -> assertEquals(100, $img -> getHeight());
}
function test_max_height() {
$img = $this -> loadImage("max-height.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(65535, $img -> getHeight());
}
function test_max_size() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("max-size.gif");
}
function test_max_width() {
$img = $this -> loadImage("max-width.gif");
$this -> assertEquals(65535, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_missing_pixels() {
$img = $this -> loadImage("missing-pixels.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_no_clear_and_eoi() {
$img = $this -> loadImage("no-clear-and-eoi.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_no_clear() {
$img = $this -> loadImage("no-clear.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_no_data() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("no-data.gif");
}
function test_no_eoi() {
$img = $this -> loadImage("no-eoi.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_no_global_color_table() {
$img = $this -> loadImage("no-global-color-table.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_nul_application_extension() {
$img = $this -> loadImage("nul-application-extension.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_nul_comment() {
$img = $this -> loadImage("nul-comment.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_plain_text() {
$img = $this -> loadImage("plain-text.gif");
$this -> assertEquals(40, $img -> getWidth());
$this -> assertEquals(8, $img -> getHeight());
}
function test_transparent() {
$img = $this -> loadImage("transparent.gif");
$this -> assertEquals(2, $img -> getWidth());
$this -> assertEquals(2, $img -> getHeight());
}
function test_unknown_application_extension() {
$img = $this -> loadImage("unknown-application-extension.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_unknown_extension() {
$img = $this -> loadImage("unknown-extension.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_xmp_data_empty() {
$img = $this -> loadImage("xmp-data-empty.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_xmp_data() {
$img = $this -> loadImage("xmp-data.gif");
$this -> assertEquals(1, $img -> getWidth());
$this -> assertEquals(1, $img -> getHeight());
}
function test_zero_height() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("zero-height.gif");
}
function test_zero_size() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("zero-size.gif");
}
function test_zero_width() {
$this -> expectException(Exception::class);
$img = $this -> loadImage("zero-width.gif");
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,77 @@
<?php
use Mike42\GfxPhp\Image;
use PHPUnit\Framework\TestCase;
class SmallFileTest extends TestCase
{
function loadImage(string $filename) {
$img = Image::fromFile(__DIR__ . "/../resources/small-files/$filename");
return $img -> toBlackAndWhite();
}
function testWhite() {
$expected = " \n";
$width = 1;
$height = 1;
foreach(['canvas_white.gif', 'canvas_white.png'] as $fn) { // Also jpg and bmp
$img = $this -> loadImage($fn);
$this -> assertEquals($expected, $img -> toString());
$this -> assertEquals($height, $img -> getHeight());
$this -> assertEquals($width, $img -> getWidth());
}
}
function testBlack() {
$expected = "\n";
$width = 1;
$height = 1;
foreach(['canvas_black.gif', 'canvas_black.png'] as $fn) { // Also jpg and bmp
$img = $this -> loadImage($fn);
$this -> assertEquals($expected, $img -> toString());
$this -> assertEquals($height, $img -> getHeight());
$this -> assertEquals($width, $img -> getWidth());
}
}
function testBlackWhite() {
$expected = "▀▀\n";
$width = 2;
$height = 2;
foreach(['black_white.gif', 'black_white.png'] as $fn) { // Also jpg and bmp
$img = $this -> loadImage($fn);
$this -> assertEquals($expected, $img -> toString());
$this -> assertEquals($height, $img -> getHeight());
$this -> assertEquals($width, $img -> getWidth());
}
}
function testBlackTransparent() {
$expected = "▀▀\n";
$width = 2;
$height = 2;
foreach(['black_transparent.gif', 'black_transparent.png'] as $fn) { // Also jpg and bmp
$img = $this -> loadImage($fn);
$this -> assertEquals($expected, $img -> toString());
$this -> assertEquals($height, $img -> getHeight());
$this -> assertEquals($width, $img -> getWidth());
}
}
function testBlackWhiteTall() {
$expected = "██\n" .
"██\n" .
"██\n" .
"██\n" .
" \n" .
" \n" .
" \n" .
" \n";
$width = 2;
$height = 16;
$img = $this -> loadImage('black_white_tall.png');
$this -> assertEquals($expected, $img -> toString());
$this -> assertEquals($height, $img -> getHeight());
$this -> assertEquals($width, $img -> getWidth());
}
}
+15
View File
@@ -0,0 +1,15 @@
<?php
// Read an image file,
require_once("../../vendor/autoload.php");
use Mike42\GfxPhp\Image;
if(!isset($argv[1])) {
die("Usage " . $argv[0] . " IMAGE\n");
}
$filename = $argv[1];
$outp = basename($filename, '.png');
echo "Opening file $filename\n";
$img = Image::fromFile($filename);
$img -> write('out/' . $outp . ".ppm");
echo $img -> toBlackAndWhite() -> toString() . "\n";
+90
View File
@@ -0,0 +1,90 @@
#!/bin/bash
TEST_OK=0
TEST_FAIL=0
function test_end {
echo ""
echo ""
printf "%-40s" "$1 test failures found"
if [ $1 -gt 0 ]; then
log_fail
else
log_ok
fi
return "$1"
}
function test_start {
TEST_OK=0
TEST_FAIL=0
}
function log_ok {
echo -e "[ \033[0;32mPASS\033[0m ]"
}
function log_fail {
echo -e "[ \033[0;31mFAIL\033[0m ]"
}
function expect_failure {
temp_file=$(mktemp)
printf "%-40s" "$1"
shift
$@ &> log.txt
if [ $? -ne 0 ]; then
log_ok
TEST_OK=$((TEST_OK+1))
else
log_fail
#cat ${temp_file}
TEST_FAIL=$((TEST_FAIL+1))
fi
rm ${temp_file}
}
function expect_success {
temp_file=$(mktemp)
printf "%-40s" "$1"
shift
$@ &> ${temp_file}
if [ $? -ne 0 ]; then
log_fail
#cat ${temp_file}
TEST_FAIL=$((TEST_FAIL+1))
else
log_ok
TEST_OK=$((TEST_OK+1))
fi
rm ${temp_file}
}
function test_commands {
PNGSUITE="../resources/pngsuite/"
for i in $(find $PNGSUITE -type f -name '*.png' | sort | grep -v pngsuite/x); do
echo $0 expect_success "$(basename $i)" php read.php "$i"
done
for i in $(find $PNGSUITE -type f -name '*.png' | sort | grep pngsuite/x); do
echo $0 expect_failure "$(basename $i)" php read.php "$i"&
done
}
set -u -o pipefail
if [ $# -eq 0 ]; then
mkdir -p out/
test_start
test_commands | parallel --no-notice
test_end $?
else
subcmd=$1
shift
test_start
if [ $subcmd == "expect_success" ]; then
expect_success $@
elif [ $subcmd == "expect_failure" ]; then
expect_failure $@
fi
exit $TEST_FAIL
fi
@@ -0,0 +1,16 @@
# BMP Suite
The images in this directory from BMP Suite 2.5 by Jason Summers, with
contributions by Matthieu Darbois.
The utility which generated the test images is available at the following URL:
- http://entropymine.com/jason/bmpsuite/
According to the `readme.txt` which ships with BMP Suite, the image files
themselves are in the public domain.
> Image files generated by this program are not covered by this license, and are
in the public domain.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Some files were not shown because too many files have changed in this diff Show More