diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 94cc5403..b8c75ccb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,7 +22,7 @@ jobs: continue-on-error: "${{ matrix.experimental }}" strategy: matrix: - php-versions: ['7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4'] + php-versions: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4'] experimental: [false] # uncomment this to start testing on development release # include: diff --git a/CHANGELOG.md b/CHANGELOG.md index 88199c99..457e2897 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ## 2.0.0 (not yet released) * CHANGED: Remove page template (#265) * CHANGED: Jdenticons are now used as the default icons +* CHANGED: Upgrading libraries to: jdenticon 2.0.0 +* CHANGED: Minimum required PHP version is 7.4, due to a change in the jdenticon library * FIXED: Name mismatches in attached files (#1584) * FIXED: Unable to paste attachments from clipboard (#1589) diff --git a/composer.json b/composer.json index 47aa2ef8..ee1ad842 100644 --- a/composer.json +++ b/composer.json @@ -24,8 +24,8 @@ "docs" : "https://privatebin.info/codedoc/" }, "require" : { - "php": "^7.3 || ^8.0", - "jdenticon/jdenticon": "1.0.2", + "php": "^7.4 || ^8.0", + "jdenticon/jdenticon": "2.0.0", "mlocati/ip-lib": "1.20.0", "symfony/polyfill-php80": "1.31.0", "yzalis/identicon": "2.0.0" @@ -48,7 +48,7 @@ "preferred-install": "dist", "sort-packages": true, "platform": { - "php": "7.3" + "php": "7.4" } } } diff --git a/composer.lock b/composer.lock index dfb58c46..b032e9c4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,27 +4,27 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6c7e6dea19e8bfd5641b220cb68c4b65", + "content-hash": "cc778a671eac2ba1ec70bf9398b2e1bf", "packages": [ { "name": "jdenticon/jdenticon", - "version": "1.0.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/dmester/jdenticon-php.git", - "reference": "cabb7a44c413c318392a341c5d3ca30fcdd57a6f" + "reference": "fb39a98a0a54982a130b7e7b06305d4fd8c9717e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dmester/jdenticon-php/zipball/cabb7a44c413c318392a341c5d3ca30fcdd57a6f", - "reference": "cabb7a44c413c318392a341c5d3ca30fcdd57a6f", + "url": "https://api.github.com/repos/dmester/jdenticon-php/zipball/fb39a98a0a54982a130b7e7b06305d4fd8c9717e", + "reference": "fb39a98a0a54982a130b7e7b06305d4fd8c9717e", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.4.0" }, "require-dev": { - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^9" }, "type": "library", "autoload": { @@ -53,7 +53,7 @@ "issues": "https://github.com/dmester/jdenticon-php/issues", "source": "https://github.com/dmester/jdenticon-php" }, - "time": "2022-10-30T17:15:02+00:00" + "time": "2025-07-14T18:30:29+00:00" }, { "name": "mlocati/ip-lib", @@ -337,16 +337,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.13.0", + "version": "1.13.3", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414" + "reference": "faed855a7b5f4d4637717c2b3863e277116beb36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36", + "reference": "faed855a7b5f4d4637717c2b3863e277116beb36", "shasum": "" }, "require": { @@ -385,7 +385,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.3" }, "funding": [ { @@ -393,29 +393,31 @@ "type": "tidelift" } ], - "time": "2025-02-12T12:17:51+00:00" + "time": "2025-07-05T12:25:42+00:00" }, { "name": "nikic/php-parser", - "version": "v4.19.4", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", - "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.1" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -423,7 +425,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -447,9 +449,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" }, - "time": "2024-09-29T15:01:53+00:00" + "time": "2025-05-31T08:24:38+00:00" }, { "name": "phar-io/manifest", @@ -890,16 +892,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.22", + "version": "9.6.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c" + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c", - "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", "shasum": "" }, "require": { @@ -910,7 +912,7 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", + "myclabs/deep-copy": "^1.13.1", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=7.3", @@ -973,7 +975,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.22" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.23" }, "funding": [ { @@ -984,12 +986,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2024-12-05T13:48:26+00:00" + "time": "2025-05-02T06:40:34+00:00" }, { "name": "sebastian/cli-parser", @@ -2011,11 +2021,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.3 || ^8.0" + "php": "^7.4 || ^8.0" }, "platform-dev": [], "platform-overrides": { - "php": "7.3" + "php": "7.4" }, "plugin-api-version": "2.3.0" } diff --git a/doc/Installation.md b/doc/Installation.md index 13c57d80..c0d141c2 100644 --- a/doc/Installation.md +++ b/doc/Installation.md @@ -21,7 +21,7 @@ for more information. ### Minimal Requirements -- PHP version 7.3 or above +- PHP version 7.4 or above - GD extension (when using identicon or vizhash icons, jdenticon works without it) - zlib extension - some disk space or a database supported by [PDO](https://php.net/manual/book.pdo.php) diff --git a/lib/Configuration.php b/lib/Configuration.php index 39a584b6..fc3c4305 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -118,7 +118,7 @@ class Configuration 'js/kjua-0.9.0.js' => 'sha512-CVn7af+vTMBd9RjoS4QM5fpLFEOtBCoB0zPtaqIDC7sF4F8qgUSRFQQpIyEDGsr6yrjbuOLzdf20tkHHmpaqwQ==', 'js/legacy.js' => 'sha512-UxW/TOZKon83n6dk/09GsYKIyeO5LeBHokxyIq+r7KFS5KMBeIB/EM7NrkVYIezwZBaovnyNtY2d9tKFicRlXg==', 'js/prettify.js' => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==', - 'js/privatebin.js' => 'sha512-ErR4jczmxS4WnJ878GLIFYVmVzfDD9BYrdwBM3oUe86kanUD7DfS+fYW23Jg4OHKgrmmJkpBRus9ylVoWqhrFw==', + 'js/privatebin.js' => 'sha512-mPPCBJRbTT7LCOhjv2xL01yhJqwKOgwalktUuQVgsno14vXAs8iAr7qQ6aYh9jUqTarUoXpZJSqxijpziSzhuA==', 'js/purify-3.2.6.js' => 'sha512-zqwL4OoBLFx89QPewkz4Lz5CSA2ktU+f31fuECkF0iK3Id5qd3Zpq5dMby8KwHjIEpsUgOqwF58cnmcaNem0EA==', 'js/rawinflate-0.3.js' => 'sha512-g8uelGgJW9A/Z1tB6Izxab++oj5kdD7B4qC7DHwZkB6DGMXKyzx7v5mvap2HXueI2IIn08YlRYM56jwWdm2ucQ==', 'js/showdown-2.1.0.js' => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==', diff --git a/lib/Controller.php b/lib/Controller.php index 7cc7362e..865fca31 100644 --- a/lib/Controller.php +++ b/lib/Controller.php @@ -34,7 +34,7 @@ class Controller * * @const string */ - const MIN_PHP_VERSION = '7.3.0'; + const MIN_PHP_VERSION = '7.4.0'; /** * show the same error message if the paste expired or does not exist diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 410ccc32..6be3e28e 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -65,7 +65,6 @@ return array( 'Jdenticon\\Shapes\\Shape' => $vendorDir . '/jdenticon/jdenticon/src/Shapes/Shape.php', 'Jdenticon\\Shapes\\ShapeCategory' => $vendorDir . '/jdenticon/jdenticon/src/Shapes/ShapeCategory.php', 'Jdenticon\\Shapes\\ShapeDefinitions' => $vendorDir . '/jdenticon/jdenticon/src/Shapes/ShapeDefinitions.php', - 'Jdenticon\\Shapes\\ShapePosition' => $vendorDir . '/jdenticon/jdenticon/src/Shapes/ShapePosition.php', 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'PrivateBin\\Configuration' => $baseDir . '/lib/Configuration.php', 'PrivateBin\\Controller' => $baseDir . '/lib/Controller.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index f22789f7..aa289799 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -113,7 +113,6 @@ class ComposerStaticInitDontChange 'Jdenticon\\Shapes\\Shape' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Shapes/Shape.php', 'Jdenticon\\Shapes\\ShapeCategory' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Shapes/ShapeCategory.php', 'Jdenticon\\Shapes\\ShapeDefinitions' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Shapes/ShapeDefinitions.php', - 'Jdenticon\\Shapes\\ShapePosition' => __DIR__ . '/..' . '/jdenticon/jdenticon/src/Shapes/ShapePosition.php', 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', 'PrivateBin\\Configuration' => __DIR__ . '/../..' . '/lib/Configuration.php', 'PrivateBin\\Controller' => __DIR__ . '/../..' . '/lib/Controller.php', diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 75408ed0..8519f72e 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'privatebin/privatebin', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '7825471d70c39baf6042c52a453c8fe705d9ed75', + 'reference' => '3ba29ea29e04d8a16d64e0f49994ba416c1b008f', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -11,9 +11,9 @@ ), 'versions' => array( 'jdenticon/jdenticon' => array( - 'pretty_version' => '1.0.2', - 'version' => '1.0.2.0', - 'reference' => 'cabb7a44c413c318392a341c5d3ca30fcdd57a6f', + 'pretty_version' => '2.0.0', + 'version' => '2.0.0.0', + 'reference' => 'fb39a98a0a54982a130b7e7b06305d4fd8c9717e', 'type' => 'library', 'install_path' => __DIR__ . '/../jdenticon/jdenticon', 'aliases' => array(), @@ -31,7 +31,7 @@ 'privatebin/privatebin' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '7825471d70c39baf6042c52a453c8fe705d9ed75', + 'reference' => '3ba29ea29e04d8a16d64e0f49994ba416c1b008f', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index 92370c5a..580fa960 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -4,8 +4,8 @@ $issues = array(); -if (!(PHP_VERSION_ID >= 70300)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.'; +if (!(PHP_VERSION_ID >= 70400)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.'; } if ($issues) { diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Canvas.php b/vendor/jdenticon/jdenticon/src/Canvas/Canvas.php index 6c5222f2..c00dfdfb 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Canvas.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Canvas.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -11,7 +11,6 @@ namespace Jdenticon\Canvas; -use Jdenticon\Canvas\Rasterization\Edge; use Jdenticon\Canvas\Rasterization\EdgeTable; use Jdenticon\Canvas\Rasterization\Rasterizer; use Jdenticon\Canvas\Png\PngPalette; @@ -21,15 +20,15 @@ use Jdenticon\Canvas\ColorUtils; class Canvas { - private $edges; + private EdgeTable $edges; /** * Creates a new canvas with the specified dimensions given in pixels. * - * @param integer $width Canvas width in pixels. - * @param integer $height Canvas height in pixels. + * @param int $width Canvas width in pixels. + * @param int $height Canvas height in pixels. */ - public function __construct($width, $height) + public function __construct(int $width, int $height) { $this->width = $width; $this->height = $height; @@ -38,17 +37,13 @@ class Canvas /** * The width of the canvas in pixels. - * - * @var integer */ - public $width = 0; + public int $width = 0; /** * The height of the canvas in pixels. - * - * @var integer */ - public $height = 0; + public int $height = 0; /** * Specifies the background color. Allowed values are: @@ -57,16 +52,16 @@ class Canvas * - strings on the format #RRGGBB * - strings on the format #RRGGBBAA * - * @var integer|string + * @var int|string */ public $backColor = 0x00000000; /** * Gets a context used to draw polygons on this canvas. * - * @returns \Jdenticon\Canvas\CanvasContext + * @return \Jdenticon\Canvas\CanvasContext */ - public function getContext() + public function getContext(): CanvasContext { return new CanvasContext($this, $this->edges); } @@ -74,13 +69,13 @@ class Canvas /** * Renders the canvas as a PNG data stream. * - * @param array $keywords Keywords to be written to the PNG stream. + * @param array $keywords Keywords to be written to the PNG stream. * See https://www.w3.org/TR/PNG/#11keywords. - * @returns string + * @return string */ - public function toPng($keywords = array()) + public function toPng(array $keywords = []): string { - $colorRanges = array(); + $colorRanges = []; Rasterizer::rasterize( $colorRanges, $this->edges, diff --git a/vendor/jdenticon/jdenticon/src/Canvas/CanvasContext.php b/vendor/jdenticon/jdenticon/src/Canvas/CanvasContext.php index 9acfe5b1..b930d630 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/CanvasContext.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/CanvasContext.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -12,26 +12,27 @@ namespace Jdenticon\Canvas; use Jdenticon\Canvas\ColorUtils; -use Jdenticon\Canvas\CanvasState; use Jdenticon\Canvas\Rasterization\EdgeTable; use Jdenticon\Canvas\Rasterization\Edge; use Jdenticon\Canvas\Matrix; class CanvasContext { - private $savedStates = array(); - private $edges; - private $transform; - private $paths; - private $canvas; + /** @var array */ + private array $savedStates = []; + private EdgeTable $edges; + private Matrix $transform; + /** @var array */ + private array $paths; + private Canvas $canvas; /** * Creates a new canvas with the specified dimensions given in pixels. * * @param \Jdenticon\Canvas\Canvas $canvas The owner canvas. - * @param array $edges The owner canvas' edge buffer. + * @param \Jdenticon\Canvas\Rasterization\EdgeTable $edges The owner canvas' edge buffer. */ - public function __construct($canvas, &$edges) + public function __construct(Canvas $canvas, EdgeTable &$edges) { $this->edges = $edges; $this->canvas = $canvas; @@ -46,25 +47,25 @@ class CanvasContext * - strings on the format #RRGGBB * - strings on the format #RRGGBBAA * - * @var integer|string + * @var int|string */ public $fillStyle = 0x000000ff; /** * Saves the current state to the state stack. */ - public function save() + public function save(): void { - array_push($this->savedStates, array( + array_push($this->savedStates, [ 'transform' => $this->transform, 'fillStyle' => $this->fillStyle - )); + ]); } /** * Restores the last saved state of the CanvasContext. */ - public function restore() + public function restore(): void { $state = array_pop($this->savedStates); if ($state != NULL) { @@ -76,7 +77,7 @@ class CanvasContext /** * Resets the internal path buffer and begins a new path. */ - public function resetTransform() + public function resetTransform(): void { $this->transform = new Matrix(1, 0, 0, 1, 0, 0); } @@ -84,36 +85,16 @@ class CanvasContext /** * Multiplies the current transformation matrix with the specified values. */ - public function transform($a, $b, $c, $d, $e, $f) + public function transform(float $a, float $b, float $c, float $d, float $e, float $f): void { - if (gettype($a) != 'integer' || - gettype($b) != 'integer' || - gettype($c) != 'integer' || - gettype($d) != 'integer' || - gettype($e) != 'integer' || - gettype($f) != 'integer' - ) { - return; - } - $this->transform = $this->transform->multiply($a, $b, $c, $d, $e, $f); } /** * Sets the transformation matrix to the specified matrix. */ - public function setTransform($a, $b, $c, $d, $e, $f) + public function setTransform(float $a, float $b, float $c, float $d, float $e, float $f): void { - if (gettype($a) != 'integer' || - gettype($b) != 'integer' || - gettype($c) != 'integer' || - gettype($d) != 'integer' || - gettype($e) != 'integer' || - gettype($f) != 'integer' - ) { - return; - } - $this->transform = new Matrix($a, $b, $c, $d, $e, $f); } @@ -123,7 +104,7 @@ class CanvasContext * @param float $x Distance to move in the horizontal direction in pixels. * @param float $y Distance to move in the vertical direction in pixels. */ - public function translate($x, $y) + public function translate(float $x, float $y): void { $this->transform = $this->transform->translate($x, $y); } @@ -134,7 +115,7 @@ class CanvasContext * @param float $x Scale in the horizontal direction. 1 means no scale. * @param float $y Scale in the vertical direction. 1 means no scale. */ - public function scale($x, $y) + public function scale(float $x, float $y): void { $this->transform = $this->transform->scale($x, $y); } @@ -142,10 +123,9 @@ class CanvasContext /** * Applies a rotation transformation to the canvas around its current origo. * - * @param float $angle Angle in radians measured clockwise from the - * positive x axis. + * @param float $angle Angle in radians measured clockwise from the positive x axis. */ - public function rotate($angle) + public function rotate(float $angle): void { $this->transform = $this->transform->rotate($angle); } @@ -153,16 +133,16 @@ class CanvasContext /** * Removes all existing subpaths and begins a new path. */ - public function beginPath() + public function beginPath(): void { - $this->paths = array(); + $this->paths = []; } /** * Starts a new subpath that begins in the same point as the start and end * point of the previous one. */ - public function closePath() + public function closePath(): void { $pathsCount = count($this->paths); if ($pathsCount > 0) { @@ -179,7 +159,7 @@ class CanvasContext } // Begin a new path - $this->paths[] = array($path[0], $path[1]); + $this->paths[] = [$path[0], $path[1]]; } } } @@ -187,27 +167,26 @@ class CanvasContext /** * Begins a new subpath by moving the cursor to the specified position. * - * @param float $x X coordinate. - * @param float $y Y coordinate. + * @param float $x X coordinate. + * @param float $y Y coordinate. */ - public function moveTo($x, $y) + public function moveTo(float $x, float $y): void { $p = $this->transform->multiplyPoint($x, $y); - $this->paths[] = array($p->x, $p->y); + $this->paths[] = [$p->x, $p->y]; } /** * Inserts an edge between the last and specified position. * - * @param float $x Target X coordinate. - * @param float $y Target Y coordinate. - * @public + * @param float $x Target X coordinate. + * @param float $y Target Y coordinate. */ - public function lineTo($x, $y) + public function lineTo(float $x, float $y): void { $pathsCount = count($this->paths); if ($pathsCount == 0) { - $this->paths[] = array(); + $this->paths[] = []; $pathsCount++; } @@ -227,10 +206,10 @@ class CanvasContext * measured clockwise from the positive x axis. * @param float $endAngle The angle in radians at which the arc end, * measured clockwise from the positive x axis. - * @param boolean $anticlockwise Specifies whether the arc will be drawn + * @param bool $anticlockwise Specifies whether the arc will be drawn * counter clockwise. Default is clockwise. */ - public function arc($x, $y, $radius, $startAngle, $endAngle, $anticlockwise) + public function arc(float $x, float $y, float $radius, float $startAngle, float $endAngle, bool $anticlockwise): void { $TARGET_CHORD_LENGTH_PIXELS = 3; @@ -269,8 +248,6 @@ class CanvasContext } } - $dx; - $dy; $sectors = ($endAngle - $startAngle) / $sectorAngle; $angle = $startAngle; @@ -296,7 +273,7 @@ class CanvasContext * @param float $width Width of the rectangle. * @param float $height Height of the rectangle. */ - public function clearRect($x, $y, $width, $height) + public function clearRect(float $x, float $y, float $width, float $height): void { $fullCanvas = false; @@ -330,23 +307,23 @@ class CanvasContext * @param float $width Width of the rectangle. * @param float $height Height of the rectangle. */ - public function fillRect($x, $y, $width, $height) + public function fillRect(float $x, float $y, float $width, float $height): void { $fillColor = ColorUtils::parse($this->fillStyle); $this->_fillRect($fillColor, $x, $y, $width, $height); } - private function _fillRect($fillColor, $x, $y, $width, $height) + private function _fillRect(int $fillColor, float $x, float $y, float $width, float $height): void { $polygonId = $this->edges->getNextPolygonId(); - $points = array( + $points = [ $this->transform->multiplyPoint($x, $y), $this->transform->multiplyPoint($x + $width, $y), $this->transform->multiplyPoint($x + $width, $y + $height), $this->transform->multiplyPoint($x, $y + $height), $this->transform->multiplyPoint($x, $y) - ); + ]; $pointsCount = count($points); for ($i = 1; $i < $pointsCount; $i++) { @@ -363,11 +340,11 @@ class CanvasContext /** * Fills the defined paths. * - * @param string $windingRule The winding rule to be used for determining + * @param string $windingRule The winding rule to be used for determining * which areas are covered by the current path. Valid values are * "evenodd" and "nonzero". Default is "nonzero". */ - public function fill($windingRule = "nonzero") + public function fill(string $windingRule = "nonzero"): void { $polygonId = $this->edges->getNextPolygonId(); $fillColor = ColorUtils::parse($this->fillStyle); diff --git a/vendor/jdenticon/jdenticon/src/Canvas/ColorUtils.php b/vendor/jdenticon/jdenticon/src/Canvas/ColorUtils.php index 7709027d..5b17cccf 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/ColorUtils.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/ColorUtils.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -15,9 +15,9 @@ class ColorUtils { /** * Transparent color. - * @var integer + * @var int */ - const TRANSPARENT = 0; + public const TRANSPARENT = 0; /** * Specifies a transparent color that will not blend with layers below the @@ -25,15 +25,15 @@ class ColorUtils * * @var float */ - const FORCE_TRANSPARENT = INF; + public const FORCE_TRANSPARENT = INF; /** * Creates a color on the format 0xRRGGBBAA from the specified * color components. * - * @return integer + * @return int */ - public static function from($a, $r, $g, $b) + public static function from(int $a, int $r, int $g, int $b): int { return ($r << 24) | ($g << 16) | ($b << 8) | $a; } @@ -41,10 +41,10 @@ class ColorUtils /** * Gets the alpha component of a color. * - * @param integer $color 32-bit color value on the format 0xRRGGBBAA. - * @return integer Alpha in the range [0, 255]. + * @param int $color 32-bit color value on the format 0xRRGGBBAA. + * @return int Alpha in the range [0, 255]. */ - public static function alpha($color) + public static function alpha(int $color): int { return $color & 0xff; } @@ -52,10 +52,10 @@ class ColorUtils /** * Gets the red component of a color. * - * @param integer $color 32-bit color value on the format 0xRRGGBBAA. - * @return integer Red component in the range [0, 255]. + * @param int $color 32-bit color value on the format 0xRRGGBBAA. + * @return int Red component in the range [0, 255]. */ - public static function red($color) + public static function red(int $color): int { return ($color >> 24) & 0xff; } @@ -63,10 +63,10 @@ class ColorUtils /** * Gets the green component of a color. * - * @param integer $color 32-bit color value on the format 0xRRGGBBAA. - * @return integer Green component in the range [0, 255]. + * @param int $color 32-bit color value on the format 0xRRGGBBAA. + * @return int Green component in the range [0, 255]. */ - public static function green($color) + public static function green(int $color): int { return ($color >> 16) & 0xff; } @@ -74,10 +74,10 @@ class ColorUtils /** * Gets the blue component of a color. * - * @param integer $color 32-bit color value on the format 0xRRGGBBAA. - * @return integer Blue component in the range [0, 255]. + * @param int $color 32-bit color value on the format 0xRRGGBBAA. + * @return int Blue component in the range [0, 255]. */ - public static function blue($color) + public static function blue(int $color): int { return ($color >> 8) & 0xff; } @@ -85,10 +85,10 @@ class ColorUtils /** * Formats a color as a string. * - * @param integer $color Color to format. + * @param int $color Color to format. * @return string */ - public static function format($color) + public static function format(int $color): string { return bin2hex(pack('N', $color)); } @@ -97,13 +97,13 @@ class ColorUtils * Computes a mix of the two specified colors, with the proportion given * by the specified weight. * - * @param integer $color1 First color to mix. - * @param integer $color2 Second color to mix. + * @param int $color1 First color to mix. + * @param int $color2 Second color to mix. * @param float $weight Weight in the range [0,1]. * 0 gives $color1, 1 gives $color2. - * @return integer Mixed color. + * @return int Mixed color. */ - public static function mix($color1, $color2, $weight) + public static function mix(int $color1, int $color2, float $weight): int { if ($weight < 0) { $weight = 0; @@ -142,10 +142,10 @@ class ColorUtils /** * Parses a value to a 32-bit color on the format 0xRRGGBBAA. * - * @param integer|string $color The value to parse. - * @return integer + * @param int|string $color The value to parse. + * @return int */ - public static function parse($color) + public static function parse($color): int { if (gettype($color) == "integer") { return $color & 0xffffffff; @@ -187,11 +187,11 @@ class ColorUtils /** * Blends this color with another color using the over blending operation. * - * @param integer $fore The foreground color. - * @param integer $back The background color. - * @return integer + * @param int $fore The foreground color. + * @param int $back The background color. + * @return int */ - public static function over($fore, $back) + public static function over(int $fore, int $back): int { $foreA = ($fore & 0xff); $backA = ($back & 0xff); diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Matrix.php b/vendor/jdenticon/jdenticon/src/Canvas/Matrix.php index 9ce00dcb..aa329b2f 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Matrix.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Matrix.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -15,17 +15,17 @@ use Jdenticon\Canvas\Point; class Matrix { - private $a; - private $b; - private $c; - private $d; - private $e; - private $f; + private float $a; + private float $b; + private float $c; + private float $d; + private float $e; + private float $f; /** * Creates a new transformation matrix. */ - public function __construct($a, $b, $c, $d, $e, $f) + public function __construct(float $a, float $b, float $c, float $d, float $e, float $f) { $this->a = $a; $this->b = $b; @@ -40,7 +40,7 @@ class Matrix * * @return boolean */ - public function hasSkewing() + public function hasSkewing(): bool { return $this->b || $this->c; } @@ -50,7 +50,7 @@ class Matrix * * @return boolean */ - public function hasTranslation() + public function hasTranslation(): bool { return $this->e || $this->f; } @@ -60,7 +60,7 @@ class Matrix * * @return boolean */ - public function hasScaling() + public function hasScaling(): bool { return $this->a != 1 || $this->d != 1; } @@ -71,7 +71,7 @@ class Matrix * * @return \Jdenticon\Canvas\Matrix */ - public function multiply($a, $b, $c, $d, $e, $f) + public function multiply(float $a, float $b, float $c, float $d, float $e, float $f): Matrix { return new Matrix( $this->a * $a + $this->c * $b, @@ -91,7 +91,7 @@ class Matrix * @param float $y Y coordinate. * @return \Jdenticon\Canvas\Point */ - public function multiplyPoint($x, $y) + public function multiplyPoint(float $x, float $y): Point { return new Point( $this->a * $x + $this->c * $y + $this->e, @@ -106,7 +106,7 @@ class Matrix * @param float $angle Rotation angle in radians. * @return \Jdenticon\Canvas\Matrix */ - public function rotate($angle) + public function rotate(float $angle): Matrix { $sin = sin($angle); $cos = cos($angle); @@ -121,7 +121,7 @@ class Matrix * @param float $y Vertical move distance. * @return \Jdenticon\Canvas\Matrix */ - public function translate($x, $y) + public function translate(float $x, float $y): Matrix { return $this->multiply(1, 0, 0, 1, $x, $y); } @@ -134,7 +134,7 @@ class Matrix * @param float $y Vertical scale. * @return \Jdenticon\Canvas\Matrix */ - public function scale($x, $y) + public function scale(float $x, float $y): Matrix { return $this->multiply($x, 0, 0, $y, 0, 0); } diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Png/PngBuffer.php b/vendor/jdenticon/jdenticon/src/Canvas/Png/PngBuffer.php index 78a90ba5..4a5e9e66 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Png/PngBuffer.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Png/PngBuffer.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -13,15 +13,15 @@ namespace Jdenticon\Canvas\Png; class PngBuffer { - private $buffer = ''; - private $chunkPreviousBuffer = ''; + private string $buffer = ''; + private string $chunkPreviousBuffer = ''; /** * Writes a string to the buffer. * * @param string $str String to write. */ - public function writeString($str) + public function writeString(string $str): void { $this->buffer .= $str; } @@ -31,7 +31,7 @@ class PngBuffer * * @param integer $value Value to write. */ - public function writeUInt32BE($value) + public function writeUInt32BE(int $value): void { $this->buffer .= pack('N', $value); } @@ -41,7 +41,7 @@ class PngBuffer * * @param integer $value Value to write. */ - public function writeUInt8($value) + public function writeUInt8(int $value): void { $this->buffer .= pack('C', $value); } @@ -52,7 +52,7 @@ class PngBuffer * @param string $type Name of the chunk. Must contain exactly 4 * ASCII characters. */ - public function startChunk($type) + public function startChunk(string $type): void { $this->chunkPreviousBuffer = $this->buffer; $this->buffer = $type; @@ -61,7 +61,7 @@ class PngBuffer /** * Closes the current PNG chunk. */ - public function endChunk() + public function endChunk(): void { // Compute Crc32 for type + data $data = $this->buffer; @@ -85,7 +85,7 @@ class PngBuffer * * @return string */ - public function getBuffer() + public function getBuffer(): string { return $this->buffer; } diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Png/PngEncoder.php b/vendor/jdenticon/jdenticon/src/Canvas/Png/PngEncoder.php index 5927e704..033b24b7 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Png/PngEncoder.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Png/PngEncoder.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -13,7 +13,6 @@ namespace Jdenticon\Canvas\Png; use Jdenticon\Canvas\Png\PngPalette; use Jdenticon\Canvas\Png\PngBuffer; -use Jdenticon\Canvas\ColorUtils; class PngEncoder { @@ -23,7 +22,7 @@ class PngEncoder const GRAYSCALE_WITH_ALPHA = 4; const TRUE_COLOR_WITH_ALPHA = 6; - private $buffer; + private PngBuffer $buffer; public function __construct() { @@ -36,10 +35,10 @@ class PngEncoder * * @param int $width Image width in pixels. * @param int $height Image height in pixels. - * @param int $colorType Color depth, speocfy one of the constants in + * @param int $colorType Color depth, specify one of the constants in * PngEncoder. */ - public function writeImageHeader($width, $height, $colorType) + public function writeImageHeader(int $width, int $height, int $colorType): void { $this->buffer->startChunk("IHDR"); $this->buffer->writeUInt32BE($width); @@ -57,7 +56,7 @@ class PngEncoder * * @param int $gamma Gamma value. */ - public function writeImageGamma($gamma = 45455) + public function writeImageGamma(int $gamma = 45455): void { $this->buffer->startChunk("gAMA"); $this->buffer->writeUInt32BE($gamma); @@ -68,12 +67,11 @@ class PngEncoder * Writes an IDAT chunk of truecolor encoded image data. * * @param array $colorRanges Image data on the format - * array(count0, color0, count1, color1, ...) + * [count0, color0, count1, color1, ...] * @param int $width Image width in pixels. * @param int $height Image height in pixels. */ - public function writeTrueColorWithAlpha( - array & $colorRanges, $width, $height) + public function writeTrueColorWithAlpha(array &$colorRanges, int $width, int $height): void { $this->buffer->startChunk("IDAT"); @@ -111,16 +109,13 @@ class PngEncoder * Writes an IDAT chunk of indexed image data. * * @param array $colorRanges Image data on the format - * array(count0, color0, count1, color1, ...) + * [count0, color0, count1, color1, ...] * @param \Jdenticon\Canvas\Png\PngPalette $palette Palette containing the * indexed colors. * @param int $width Image width in pixels. * @param int $height Image height in pixels. */ - public function writeIndexed( - array & $colorRanges, - PngPalette $palette, - $width, $height) + public function writeIndexed(array &$colorRanges, PngPalette $palette, int $width, int $height): void { $this->buffer->startChunk("IDAT"); @@ -162,7 +157,7 @@ class PngEncoder * @param \Jdenticon\Canvas\Png\PngPalette $palette Palette containing the * indexed colors. */ - public function writePalette(PngPalette $palette) + public function writePalette(PngPalette $palette): void { if ($palette && $palette->isValid) { $this->buffer->startChunk("PLTE"); @@ -184,7 +179,7 @@ class PngEncoder * @param \Jdenticon\Canvas\Png\PngPalette $palette Palette containing the * indexed colors. */ - public function writeTransparency(PngPalette $palette) + public function writeTransparency(PngPalette $palette): void { if ($palette && $palette->isValid && $palette->hasAlphaChannel) { $this->buffer->startChunk("tRNS"); @@ -208,7 +203,7 @@ class PngEncoder * {@link https://www.w3.org/TR/2003/REC-PNG-20031110/#11keywords} * @param string $value Value. */ - public function writeTextualData($key, $value) + public function writeTextualData(string $key, string $value): void { $this->buffer->startChunk("tEXt"); $this->buffer->writeString($key); @@ -220,7 +215,7 @@ class PngEncoder /** * Writes an IEND chunk to the png data stream. */ - public function writeImageEnd() + public function writeImageEnd(): void { $this->buffer->startChunk("IEND"); $this->buffer->endChunk(); @@ -231,7 +226,7 @@ class PngEncoder * * @return string */ - public function getBuffer() + public function getBuffer(): string { return $this->buffer->getBuffer(); } diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Png/PngPalette.php b/vendor/jdenticon/jdenticon/src/Canvas/Png/PngPalette.php index 37887b65..609b2046 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Png/PngPalette.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Png/PngPalette.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -11,8 +11,6 @@ namespace Jdenticon\Canvas\Png; -use Jdenticon\Canvas\ColorUtils; - /** * Contains the colors of a PNG color palette. */ @@ -21,13 +19,13 @@ class PngPalette /** * Creates a PNG color palette for the specified bitmap data. * - * @param array(integer) $colorRanges Array of interleaved values on the - * format array(count0, color0, count1, color1, ...). + * @param array $colorRanges Array of interleaved values on the + * format [count0, color0, count1, color1, ...] */ - function __construct(& $colorRanges) + function __construct(array &$colorRanges) { - $lookup = array(); - $colors = array(); + $lookup = []; + $colors = []; $hasAlphaChannel = false; $colorsCount = 0; @@ -63,30 +61,22 @@ class PngPalette /** * Specifies if the palette is valid to be used for encoding a PNG image. - * - * @var boolean */ - public $isValid; + public bool $isValid; /** * Specifies if the palette has any partial or fully transparent * colors. - * - * @var boolean */ - public $hasAlphaChannel; + public bool $hasAlphaChannel; /** * Array of colors in the palette. - * - * @var array */ - public $colors; + public array $colors; /** * Lookup table from 32-bit color value to color index. - * - * @var array */ - public $lookup; + public array $lookup; } diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Point.php b/vendor/jdenticon/jdenticon/src/Canvas/Point.php index 0c73133f..edda9f36 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Point.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Point.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -15,17 +15,13 @@ class Point { /** * X coordinate. - * - * @var float */ - public $x; + public float $x; /** * Y coordinate. - * - * @var float */ - public $y; + public float $y; /** * Creates a new 2D point. @@ -33,7 +29,7 @@ class Point * @param float $x X coordinate. * @param float $y Y coordinate. */ - public function __construct($x, $y) + public function __construct(float $x, float $y) { $this->x = $x; $this->y = $y; diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Edge.php b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Edge.php index d554b91d..f7cef4f2 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Edge.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Edge.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -13,16 +13,22 @@ namespace Jdenticon\Canvas\Rasterization; class Edge { - public $polygonId; - public $x0; - public $x1; - public $y0; - public $y1; - public $color; - public $windingRule; + public int $polygonId; + public float $x0; + public float $x1; + public float $y0; + public float $y1; + public int $color; + public string $windingRule; public function __construct( - $polygonId, $x0, $y0, $x1, $y1, $color, $windingRule = null) + int $polygonId, + float $x0, + float $y0, + float $x1, + float $y1, + int $color, + string $windingRule = "nonzero") { $this->polygonId = $polygonId; $this->x0 = $x0; @@ -33,7 +39,7 @@ class Edge $this->windingRule = $windingRule; } - public function intersection($y) + public function intersection(float $y): float { $dx = ($this->x1 - $this->x0) * ($this->y0 - $y) / diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeIntersection.php b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeIntersection.php index 59f0ef37..3186bf12 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeIntersection.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeIntersection.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -13,11 +13,11 @@ namespace Jdenticon\Canvas\Rasterization; class EdgeIntersection { - public $fromX; - public $width; - public $edge; + public int $fromX; + public int $width; + public Edge $edge; - public function __construct($fromX, $width, $edge) + public function __construct(int $fromX, int $width, Edge $edge) { $this->fromX = $fromX; $this->width = $width; diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeSuperSampleIntersection.php b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeSuperSampleIntersection.php index b88a2711..8fa8374b 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeSuperSampleIntersection.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeSuperSampleIntersection.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -13,10 +13,10 @@ namespace Jdenticon\Canvas\Rasterization; class EdgeSuperSampleIntersection { - public $x; - public $edge; + public float $x; + public Edge $edge; - public function __construct($x, $edge) + public function __construct(float $x, Edge $edge) { $this->x = $x; $this->edge = $edge; diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeTable.php b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeTable.php index 6a67f505..95327184 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeTable.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/EdgeTable.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -11,20 +11,25 @@ namespace Jdenticon\Canvas\Rasterization; +use Jdenticon\Canvas\Rasterization\Edge; + class EdgeTable { - private $scanlines; - private $nextPolygonId; - private $width; - private $height; + /** + * @var array> + */ + private array $scanlines; + private int $nextPolygonId; + private int $width; + private int $height; /** * Keeps a list of edges per scanline. * - * @param integer $width Clipping width. - * @param integer $height Clipping height. + * @param int $width Clipping width. + * @param int $height Clipping height. */ - public function __construct($width, $height) + public function __construct(int $width, int $height) { $this->width = $width; $this->height = $height; @@ -34,9 +39,9 @@ class EdgeTable /** * Sorts the edges of each scanline in ascending x coordinates. */ - public function clear() + public function clear(): void { - $this->scanlines = array(); + $this->scanlines = []; $this->nextPolygonId = 1; } @@ -45,18 +50,19 @@ class EdgeTable * * @return int */ - public function getNextPolygonId() + public function getNextPolygonId(): int { return $this->nextPolygonId++; } /** - * Gets the scaline for the specified Y coordinate, or NULL if there are + * Gets the scanline for the specified Y coordinate, or NULL if there are * no edges for the specified Y coordinate. * - * @return array|null. + * @param int $y + * @return array|null */ - public function getScanline($y) + public function getScanline(int $y): ?array { return isset($this->scanlines[$y]) ? $this->scanlines[$y] : null; } @@ -66,7 +72,7 @@ class EdgeTable * * @param \Jdenticon\Canvas\Rasterization\Edge $edge */ - public function add(\Jdenticon\Canvas\Rasterization\Edge $edge) + public function add(Edge $edge): void { $minY = 0; $maxY = 0; @@ -121,7 +127,7 @@ class EdgeTable if ($fromX < $this->width) { if (!isset($this->scanlines[$y])) { - $this->scanlines[$y] = array(); + $this->scanlines[$y] = []; } $this->scanlines[$y][] = new EdgeIntersection( @@ -134,7 +140,7 @@ class EdgeTable } } - private static function edge_cmp($x, $y) + private static function edge_cmp(EdgeIntersection $x, EdgeIntersection $y): int { if ($x->fromX < $y->fromX) { return -1; @@ -148,11 +154,10 @@ class EdgeTable /** * Sorts the edges of each scanline in ascending x coordinates. */ - public function sort() + public function sort(): void { foreach ($this->scanlines as $i => &$scanline) { - usort($scanline, array( - 'Jdenticon\\Canvas\\Rasterization\\EdgeTable', 'edge_cmp')); + usort($scanline, [self::class, 'edge_cmp']); } } } \ No newline at end of file diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Layer.php b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Layer.php index f3d83bf0..9243939b 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Layer.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Layer.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -13,14 +13,21 @@ namespace Jdenticon\Canvas\Rasterization; class Layer { - public $polygonId; - public $color; - public $winding; - public $windingRule; + public int $polygonId; + public int $color; + public int $winding; + public string $windingRule; + public ?Layer $nextLayer = null; - public $nextLayer; - - public function __construct($polygonId, $color, $winding, $windingRule) + /** + * Creates a new layer. + * + * @param int $polygonId Unique id for this layer. + * @param int $color Color on the format 0xRRGGBBAA. + * @param int $winding Differential winding value, either 1 or -1. + * @param string $windingRule Winding rule for the polygon, either "evenodd" or "nonzero". + */ + public function __construct(int $polygonId, int $color, int $winding, string $windingRule) { $this->polygonId = $polygonId; $this->color = $color; diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/LayerManager.php b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/LayerManager.php index 98592729..1c4b0d93 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/LayerManager.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/LayerManager.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -21,13 +21,12 @@ use Jdenticon\Canvas\Rasterization\Edge; */ class LayerManager { - public $topLayer; + public ?Layer $topLayer = null; /** * The current visible color. - * @var integer */ - public $color; + public int $color; public function __construct() { @@ -40,7 +39,7 @@ class LayerManager * @param \Jdenticon\Canvas\Rasterization\LayerManager $other The * LayerManager to copy all layers to. */ - public function copyTo(LayerManager $other) + public function copyTo(LayerManager $other): void { $other->color = $this->color; @@ -72,7 +71,7 @@ class LayerManager * * @param \Jdenticon\Canvas\Rasterization\Edge edge */ - public function add(Edge $edge) + public function add(Edge $edge): void { $dwinding = $edge->y0 < $edge->y1 ? 1 : -1; diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Rasterizer.php b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Rasterizer.php index 0a5269af..c6a4daa4 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Rasterizer.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/Rasterizer.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -37,15 +37,18 @@ class Rasterizer /** * Rasterizes the edges in the edge table to a list of color ranges. No * range will span multiple scanlines. + * + * @param array $colorData + * @return array */ - public static function rasterize(& $colorData, $edgeTable, $width, $height) + public static function rasterize(array &$colorData, EdgeTable $edgeTable, int $width, int $height): array { $edgeTable->sort(); $superSampleBuffer = new SuperSampleBuffer( $width, self::SAMPLES_PER_PIXEL_X); - $layers = array(); + $layers = []; $color = 0; // Keeps track of how many of the subpixellayers that are used for @@ -278,7 +281,7 @@ class Rasterizer return $colorData; } - private static function intersection_cmp($a, $b) + private static function intersection_cmp(EdgeSuperSampleIntersection $a, EdgeSuperSampleIntersection $b): int { if ($a->x < $b->x) { return -1; @@ -296,14 +299,14 @@ class Rasterizer * y coordinate. For each intersecting edge the intersecting x coordinate is * returned. * - * @param array $edges Array of edges in the current scanline. - * @param int $y Y coordinate of the current scanline. - * @return array Array containing EdgeSuperSampleIntersection. Objects - * are sorted ascending by x coordinate. + * @param array $edges Array of edges in the current scanline. + * @param float $y Y coordinate of the current scanline. + * @return array Intersections sorted ascending by x coordinate. */ - private static function getIntersections($edges, $y) + private static function getIntersections(array $edges, float $y): array { - $intersections = array(); + /** @var array */ + $intersections = []; foreach ($edges as $edge) { if ($edge->y0 < $y && $edge->y1 >= $y || @@ -317,9 +320,7 @@ class Rasterizer } } - usort($intersections, array( - 'Jdenticon\\Canvas\\Rasterization\\Rasterizer', - 'intersection_cmp')); + usort($intersections, [self::class, 'intersection_cmp']); return $intersections; } @@ -327,12 +328,13 @@ class Rasterizer /** * Determines what ranges of a scanline that needs to be supersampled. * - * @param array $scanline Array of edges in the current scanline. - * @return array Array of SuperSampleRange. + * @param array $scanline Array of edges in the current scanline. + * @param int $width + * @return array */ - private static function getSuperSampleRanges(&$scanline, $width) + private static function getSuperSampleRanges(array &$scanline, int $width): array { - $superSampleRanges = array(); + $superSampleRanges = []; $rangeIndex = 0; $scanlineCount = count($scanline); diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/SuperSampleBuffer.php b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/SuperSampleBuffer.php index 45a611de..14d81453 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/SuperSampleBuffer.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/SuperSampleBuffer.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -21,25 +21,25 @@ class SuperSampleBuffer const IDX_G = 3; const IDX_B = 4; - private $samples; - private $samplesPerPixel; + private array $samples; + private int $samplesPerPixel; - private $pixelOffset; - private $subPixelOffset; + private int $pixelOffset; + private int $subPixelOffset; - private $width; - private $used; + private int $width; + private int $used; /** * Creates a color buffer keeping an average color out of several * color samples per pixel. * - * @param integer $width Width of the buffer in pixels. - * @param integer $samplesPerPixel Number of samples to keep per pixel. + * @param int $width Width of the buffer in pixels. + * @param int $samplesPerPixel Number of samples to keep per pixel. */ - public function __construct($width, $samplesPerPixel) + public function __construct(int $width, int $samplesPerPixel) { - $this->samples = array(); + $this->samples = []; $this->samplesPerPixel = $samplesPerPixel; $this->pixelOffset = 0; @@ -52,7 +52,7 @@ class SuperSampleBuffer /** * Rewinds the cursor to the beginning of the buffer. */ - public function rewind() + public function rewind(): void { $this->pixelOffset = 0; $this->subPixelOffset = 0; @@ -61,7 +61,7 @@ class SuperSampleBuffer /** * Clears the samples in this buffer. */ - public function clear() + public function clear(): void { $this->pixelOffset = 0; $this->subPixelOffset = 0; @@ -71,11 +71,11 @@ class SuperSampleBuffer /** * Writes the average color of each pixel to a specified color array. * - * @param array $colorData The average colors will be written to this + * @param array $colorData The average colors will be written to this * color array. - * @param integer $count Number of pixels to write. + * @param int $count Number of pixels to write. */ - public function emptyTo(& $colorData, $count) + public function emptyTo(array &$colorData, int $count): void { for ($i = 0; $i < $count; $i++) { $sampleCount = $this->samples[$i * 5 + self::IDX_COUNT]; @@ -100,10 +100,10 @@ class SuperSampleBuffer /** * Gets the average color of the pixel at a specified index. * - * @param integer $index The index of the pixel. - * @return integer + * @param int $index The index of the pixel. + * @return int */ - public function colorAt($index) + public function colorAt(int $index): int { $sampleCount = $this->samples[$index * 5 + self::IDX_COUNT]; $alphaSum = $this->samples[$index * 5 + self::IDX_A]; @@ -119,10 +119,14 @@ class SuperSampleBuffer /** * Adds a color to the current pixel in the buffer. * - * @param integer $count Number of samples of the color to be added to + * @param int $count Number of samples of the color to be added to * the buffer. + * @param int $a Alpha value. + * @param int $r Red value. + * @param int $g Green value. + * @param int $b Blue value. */ - private function _add($count, $a, $r, $g, $b) + private function _add(int $count, int $a, int $r, int $g, int $b): void { if ($this->used < $this->pixelOffset) { $this->used = $this->pixelOffset; @@ -147,11 +151,11 @@ class SuperSampleBuffer /** * Adds a color to the buffer up until the specified x index. * - * @param integer $color Color to write. - * @param float $untilX Samples of the color will be added the buffer until + * @param int $color Color to write. + * @param float $untilX Samples of the color will be added to the buffer until * the cursor reaches this coordinate. */ - public function add($color, $untilX) + public function add(int $color, float $untilX): void { $samplesLeft = (int)($untilX * $this->samplesPerPixel) - diff --git a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/SuperSampleRange.php b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/SuperSampleRange.php index d65b1768..04306efa 100644 --- a/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/SuperSampleRange.php +++ b/vendor/jdenticon/jdenticon/src/Canvas/Rasterization/SuperSampleRange.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -13,15 +13,16 @@ namespace Jdenticon\Canvas\Rasterization; class SuperSampleRange { - public $fromX; - public $toXExcl; - public $edges; - public $width; + public int $fromX; + public int $toXExcl; + /** @var array */ + public array $edges; + public int $width; - public function __construct($fromX, $toXExcl) + public function __construct(int $fromX, int $toXExcl) { $this->fromX = $fromX; $this->toXExcl = $toXExcl; - $this->edges = array(); + $this->edges = []; } } \ No newline at end of file diff --git a/vendor/jdenticon/jdenticon/src/Color.php b/vendor/jdenticon/jdenticon/src/Color.php index c07c9054..b657a348 100644 --- a/vendor/jdenticon/jdenticon/src/Color.php +++ b/vendor/jdenticon/jdenticon/src/Color.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -16,32 +16,28 @@ namespace Jdenticon; */ class Color { - private static $lightnessCompensations = array( - 0.55, 0.5, 0.5, 0.46, 0.6, 0.55, 0.55); + /** @var array */ + private static array $lightnessCompensations = [0.55, 0.5, 0.5, 0.46, 0.6, 0.55, 0.55]; /** * The red component of the color in the range [0, 255]. - * @var int */ - public $r; + public int $r; /** * The green component of the color in the range [0, 255]. - * @var int */ - public $g; + public int $g; /** * The blue component of the color in the range [0, 255]. - * @var int */ - public $b; + public int $b; /** * The alpha component of the color in the range [0, 255]. - * @var int */ - public $a; + public int $a; // Users of the struct should use the static factory methods // to create Color value. @@ -52,12 +48,13 @@ class Color /** * Creates a Color from an RGB value. * - * @param int $alpha Alpha channel value in the range [0, 255]. * @param int $red Red component in the range [0, 255]. - * @param int $green GReen component in the range [0, 255]. + * @param int $green Green component in the range [0, 255]. * @param int $blue Blue component in the range [0, 255]. + * @param int $alpha Alpha channel value in the range [0, 255]. + * @return \Jdenticon\Color */ - public static function fromRgb($red, $green, $blue, $alpha = 255) + public static function fromRgb(int $red, int $green, int $blue, int $alpha = 255): Color { $color = new Color(); $color->r = $red; @@ -70,12 +67,13 @@ class Color /** * Creates a Color instance from HSL color parameters. * - * @param float $hue Hue in the range [0, 1] - * @param float $saturation Saturation in the range [0, 1] - * @param float $lightness Lightness in the range [0, 1] + * @param float $hue Hue in the range [0, 1]. + * @param float $saturation Saturation in the range [0, 1]. + * @param float $lightness Lightness in the range [0, 1]. * @param float $alpha Alpha channel value in the range [0, 1]. + * @return \Jdenticon\Color */ - public static function fromHsl($hue, $saturation, $lightness, $alpha = 1.0) + public static function fromHsl(float $hue, float $saturation, float $lightness, float $alpha = 1.0): Color { if ($hue < 0) $hue = 0; if ($hue > 1) $hue = 1; @@ -111,15 +109,16 @@ class Color } /** - * Creates a Color> instance from HSL color parameters and will compensate + * Creates a Color instance from HSL color parameters and compensates * the lightness for hues that appear to be darker than others. * * @param float $hue Hue in the range [0, 1]. * @param float $saturation Saturation in the range [0, 1]. * @param float $lightness Lightness in the range [0, 1]. * @param float $alpha Alpha channel value in the range [0, 1]. + * @return \Jdenticon\Color */ - public static function fromHslCompensated($hue, $saturation, $lightness, $alpha = 1.0) + public static function fromHslCompensated(float $hue, float $saturation, float $lightness, float $alpha = 1.0): Color { if ($hue < 0) $hue = 0; if ($hue > 1) $hue = 1; @@ -135,7 +134,7 @@ class Color } // Helper method for FromHsl - private static function hueToRgb($m1, $m2, $h) + private static function hueToRgb(float $m1, float $m2, float $h): int { if ($h < 0) { $h = $h + 6; @@ -161,7 +160,7 @@ class Color * * @return int */ - public function toRgba() + public function toRgba(): int { return ($this->r << 24) | @@ -175,7 +174,7 @@ class Color * * @return string */ - public function __toString() + public function __toString(): string { return '#' . bin2hex(pack('N', $this->toRgba())); } @@ -183,9 +182,10 @@ class Color /** * Gets a hexadecimal representation of this color on the format #rrggbbaa. * + * @param int $length Length of the hex string (6 or 8). * @return string */ - public function toHexString($length = 8) + public function toHexString(int $length = 8): string { if ($length === 8) { return $this->__toString(); @@ -197,10 +197,11 @@ class Color * Tries to parse a value as a Color. * * @param mixed $value Value to parse. - * @throws InvalidArgumentException + * @throws \InvalidArgumentException * @return \Jdenticon\Color */ - public static function parse($value) { + public static function parse($value): Color + { if ($value instanceof Color) { return $value; } @@ -252,7 +253,7 @@ class Color * * @return boolean */ - private static function parsePercent($input, &$result) + private static function parsePercent(string $input, ?float &$result): bool { // Detect and remove percent sign if (preg_match('/^\\s*(\\d*(?:\\.\\d*)?)%\\s*$/', $input, $matches)) { @@ -274,7 +275,7 @@ class Color * * @return boolean */ - private static function parseAlpha($input, &$result) + private static function parseAlpha(?string $input, ?float &$result): bool { if ($input === null || $input === '' @@ -303,21 +304,21 @@ class Color /** * Parses an RGB component. * - * @param string $input Input string. - * @param float $result Hue in range [0, 255]. + * @param string $input Input string. + * @param int $result RGB component in range [0, 255]. * * @return boolean */ - private static function parseRgbComponent($input, &$result) + private static function parseRgbComponent(string $input, ?int &$result): bool { if (preg_match('/^\\s*(\\d*(?:\\.\\d*)?)(%?)\\s*$/', $input, $matches)) { - $result = floatval($matches[1]); + $float = floatval($matches[1]); if ($matches[2] === '%') { - $result = 255 * $result / 100; + $float = 255 * $float / 100; } - $result = (int)$result; + $result = (int)$float; if ($result < 0) $result = 0; if ($result > 255) $result = 255; @@ -327,7 +328,7 @@ class Color return false; } - /** + /** * Parses a hue component. * * @param string $input Input string. @@ -335,7 +336,7 @@ class Color * * @return boolean */ - private static function parseHue($input, &$result) + private static function parseHue(string $input, ?float &$result): bool { if (preg_match( '/^\s*(\d*(?:\.\d*)?)(deg|grad|rad|turn|)\s*$/', @@ -355,7 +356,7 @@ class Color break; case "turn": // Turns: range 0 - 1 - $result = $result; + // No change break; default: // Degree: range 0 - 360 @@ -373,16 +374,16 @@ class Color } return false; } - + /** * Parses a hex color string. * * @param string $input Input string. - * @param float $result Hue in range [0, 1]. + * @param \Jdenticon\Color $result Parsed color. * * @return boolean */ - private static function parseHexColor($input, &$result) + private static function parseHexColor(string $input, ?Color &$result): bool { if ($input[0] === '#') { $input = substr($input, 1); @@ -444,9 +445,9 @@ class Color * * @param string $input Input string. * - * @return \Jdenticon\Color + * @return \Jdenticon\Color|null */ - private static function parseNamedColor($input) + private static function parseNamedColor(string $input): ?Color { // Source: https://www.w3.org/TR/css-color-4/#named-colors switch ($input) { diff --git a/vendor/jdenticon/jdenticon/src/Identicon.php b/vendor/jdenticon/jdenticon/src/Identicon.php index 5d072577..9e9a24d1 100644 --- a/vendor/jdenticon/jdenticon/src/Identicon.php +++ b/vendor/jdenticon/jdenticon/src/Identicon.php @@ -3,7 +3,8 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi + * Copyright (c) 2024 Peter Putzer * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -29,37 +30,17 @@ class Identicon */ private $value; - /** - * @var boolean - */ - private $valueSet = false; + private bool $valueSet = false; /** * Defaults to hash of an empty string. - * - * @var string */ - private $hash = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'; + private string $hash = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'; - /** - * @var integer - */ - private $size = 100; - - /** - * @var Jdenticon\Rendering\IconGenerator - */ - private $iconGenerator; - - /** - * @var Jdenticon\IdenticonStyle - */ - private $style; - - /** - * @var bool - */ - private $enableImageMagick; + private int $size = 100; + private IconGenerator $iconGenerator; + private ?IdenticonStyle $style = null; + private ?bool $enableImageMagick = null; /** * Creates an Identicon instance with the specified hash. @@ -69,7 +50,7 @@ class Identicon * @param int|float|double $size The size of the icon in pixels (the icon * is quadratic). */ - public function __construct($options = null) + public function __construct(?array $options = null) { $this->iconGenerator = IconGenerator::getDefaultGenerator(); @@ -90,9 +71,9 @@ class Identicon * @param int $size The size of the icon in pixels (the icon is quadratic). * @return \Jdenticon\Identicon */ - public static function fromHash($hash, $size) + public static function fromHash(string $hash, int $size): self { - return new Identicon(array('hash' => $hash, 'size' => $size)); + return new Identicon(['hash' => $hash, 'size' => $size]); } /** @@ -104,19 +85,19 @@ class Identicon * @param int $size The size of the icon in pixels (the icon is quadratic). * @return \Jdenticon\Identicon */ - public static function fromValue($value, $size) + public static function fromValue($value, int $size): self { - return new Identicon(array('value' => $value, 'size' => $size)); + return new Identicon(['value' => $value, 'size' => $size]); } /** * Gets an associative array of all options of this identicon. * - * @return array + * @return array */ - public function getOptions() + public function getOptions(): array { - $options = array(); + $options = []; if ($this->valueSet) { $options['value'] = $this->getValue(); @@ -142,10 +123,10 @@ class Identicon * Sets options in this identicon by specifying an associative array of * option values. * - * @param array $options Options to set. + * @param array $options Options to set. * @return self */ - public function setOptions(array $options) + public function setOptions(array $options): self { foreach ($options as $key => $value) { $this->__set($key, $value); @@ -153,7 +134,7 @@ class Identicon return $this; } - public function __get($name) + public function __get(string $name) { switch (strtolower($name)) { case 'size': @@ -174,7 +155,7 @@ class Identicon } } - public function __set($name, $value) + public function __set(string $name, $value) { switch (strtolower($name)) { case 'size': @@ -204,7 +185,7 @@ class Identicon /** * Gets the size of the icon in pixels. */ - public function getSize() + public function getSize(): int { return $this->size; } @@ -214,7 +195,7 @@ class Identicon * * @param int|float|double $size The width and height of the icon. */ - public function setSize($size) + public function setSize($size): void { if (!is_numeric($size) || $size < 1) { throw new \InvalidArgumentException( @@ -228,13 +209,12 @@ class Identicon /** * Gets the size of the icon in pixels. */ - public function getEnableImageMagick() + public function getEnableImageMagick(): bool { - // Enable ImageMagick on PHP < 7. On PHP 7 the performance increase - // is not as obvious as on PHP 5. Since the ImageMagick renderer has a - // lot of quirks, we don't want to use it unless really needed. + // Performance of using Imagick on PHP 7 and later is generally worse than using + // the internal renderer. Because of this, default to false. if ($this->enableImageMagick === null) { - return PHP_MAJOR_VERSION < 7 && extension_loaded('imagick'); + return false; } return $this->enableImageMagick; @@ -245,13 +225,8 @@ class Identicon * * @param bool $enable true to enable ImageMagick. */ - public function setEnableImageMagick($enable) + public function setEnableImageMagick(bool $enable): void { - if (!is_bool($enable)) { - throw new \InvalidArgumentException( - "enableImageMagick can only assume boolean values. Specified value: $enable."); - } - // Verify that the Imagick extension is installed if ($enable && !extension_loaded('imagick')) { throw new \Exception( @@ -267,7 +242,7 @@ class Identicon * * @return \Jdenticon\Rendering\IconGenerator */ - public function getIconGenerator() + public function getIconGenerator(): IconGenerator { return $this->iconGenerator; } @@ -279,7 +254,7 @@ class Identicon * that will render the shapes of the identicon. * @return \Jdenticon\Identicon */ - public function setIconGenerator(IconGenerator $iconGenerator) + public function setIconGenerator(IconGenerator $iconGenerator): self { if ($iconGenerator === null) { $iconGenerator = IconGenerator::getDefaultGenerator(); @@ -293,7 +268,7 @@ class Identicon * * @return \Jdenticon\IdenticonStyle */ - public function getStyle() + public function getStyle(): IdenticonStyle { return $this->style; } @@ -301,11 +276,11 @@ class Identicon /** * Gets or sets the style of the icon. * - * @param array|\Jdenticon\IdenticonStyle $style The new style of the icon. + * @param array|\Jdenticon\IdenticonStyle $style The new style of the icon. * NULL will revert the identicon to use the default style. * @return self */ - public function setStyle($style) + public function setStyle($style): self { if ($style == null) { $this->style = new IdenticonStyle(); @@ -327,7 +302,7 @@ class Identicon * Gets a binary string containing the hash that is used as base for this * icon. */ - public function getHash() + public function getHash(): string { return $this->hash; } @@ -338,13 +313,8 @@ class Identicon * * @param string $hash Binary string containing the hash. */ - public function setHash($hash) + public function setHash(string $hash): self { - if (!is_string($hash)) { - throw new \InvalidArgumentException( - 'An invalid $hash was passed to Identicon. ' . - 'A binary string was expected.'); - } if (strlen($hash) < 6) { throw new \InvalidArgumentException( 'An invalid $hash was passed to Identicon. ' . @@ -372,7 +342,7 @@ class Identicon * * @param mixed $value Value that will be hashed. */ - public function setValue($value) + public function setValue($value): self { $this->hash = sha1("$value"); $this->value = $value; @@ -385,7 +355,7 @@ class Identicon * * @return \Jdenticon\Rendering\Rectangle */ - public function getIconBounds() + public function getIconBounds(): Rectangle { // Round padding to nearest integer $padding = (int)($this->style->getPadding() * $this->size + 0.5); @@ -396,7 +366,7 @@ class Identicon $this->size - $padding * 2); } - private function getRenderer($imageFormat) + private function getRenderer(string $imageFormat): RendererInterface { switch (strtolower($imageFormat)) { case 'svg': @@ -424,10 +394,7 @@ class Identicon * is omitted, the rectangle is calculated from the current icon * size and padding. */ - public function draw( - \Jdenticon\Rendering\RendererInterface $renderer, - ?\Jdenticon\Rendering\Rectangle $rect = null) - { + public function draw(RendererInterface $renderer, ?Rectangle $rect = null): void { if ($rect === null) { $rect = $this->getIconBounds(); } @@ -445,7 +412,7 @@ class Identicon * @param string $imageFormat The image format of the output. * Supported values are 'png' and 'svg'. */ - public function displayImage($imageFormat = 'png') + public function displayImage(string $imageFormat = 'png'): void { $renderer = $this->getRenderer($imageFormat); $this->draw($renderer, $this->getIconBounds()); @@ -462,7 +429,7 @@ class Identicon * Supported values are 'png' and 'svg'. * @return string */ - public function getImageData($imageFormat = 'png') + public function getImageData(string $imageFormat = 'png'): string { $renderer = $this->getRenderer($imageFormat); $this->draw($renderer, $this->getIconBounds()); @@ -479,7 +446,7 @@ class Identicon * Supported values are 'png' and 'svg'. * @return string */ - public function getImageDataUri($imageFormat = 'png') + public function getImageDataUri(string $imageFormat = 'png'): string { $renderer = $this->getRenderer($imageFormat); $this->draw($renderer, $this->getIconBounds()); @@ -488,5 +455,3 @@ class Identicon return "data:$mimeType;base64,$base64"; } } - - diff --git a/vendor/jdenticon/jdenticon/src/IdenticonStyle.php b/vendor/jdenticon/jdenticon/src/IdenticonStyle.php index 62453516..8def2ce1 100644 --- a/vendor/jdenticon/jdenticon/src/IdenticonStyle.php +++ b/vendor/jdenticon/jdenticon/src/IdenticonStyle.php @@ -3,7 +3,8 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi + * Copyright (c) 2024 Peter Putzer * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -18,40 +19,13 @@ use Jdenticon\Color; */ class IdenticonStyle { - /** - * @var \Jdenticon\Color - */ - private $backgroundColor; - - /** - * @var float - */ - private $padding; - - /** - * @var float - */ - private $colorSaturation; - - /** - * @var float - */ - private $grayscaleSaturation; - - /** - * @var array(float) - */ - private $colorLightness; - - /** - * @var array(float) - */ - private $grayscaleLightness; - - /** - * @var array(integer) - */ - private $hues; + private Color $backgroundColor; + private float $padding; + private float $colorSaturation; + private float $grayscaleSaturation; + private array $colorLightness; + private array $grayscaleLightness; + private ?array $hues = null; public function __construct(?array $options = null) { @@ -72,9 +46,9 @@ class IdenticonStyle * * @return array */ - public function getOptions() + public function getOptions(): array { - $options = array(); + $options = []; $options['backgroundColor'] = $this->getBackgroundColor()->__toString(); $options['padding'] = $this->getPadding(); @@ -97,7 +71,7 @@ class IdenticonStyle * @param array $options Options to set. * @return self */ - public function setOptions(array $options) + public function setOptions(array $options): self { foreach ($options as $key => $value) { $this->__set($key, $value); @@ -105,7 +79,7 @@ class IdenticonStyle return $this; } - public function __get($name) + public function __get(string $name) { switch (strtolower($name)) { case 'backgroundcolor': @@ -128,7 +102,7 @@ class IdenticonStyle } } - public function __set($name, $value) + public function __set(string $name, $value): void { switch (strtolower($name)) { case 'backgroundcolor': @@ -161,17 +135,17 @@ class IdenticonStyle /** * Normalizes a hue to the first turn [0, 360). * - * @param mixed $hue + * @param int|float $hue * @return integer */ - private static function normalizeHue($hue) + private static function normalizeHue($hue): int { if (!is_numeric($hue)) { throw new \InvalidArgumentException( "'$hue' is not a valid hue."); } - $hue = $hue % 360; + $hue = (int)$hue % 360; if ($hue < 0) { $hue += 360; } @@ -182,9 +156,9 @@ class IdenticonStyle /** * Gets an array of allowed hues, or null if there are no restrictions. * - * @return array(int)|null + * @return array|null */ - public function getHues() + public function getHues(): ?array { return $this->hues; } @@ -192,14 +166,14 @@ class IdenticonStyle /** * Sets the allowed hues of generated icons. * - * @param array(integer)|integer|null $value A hue specified in degrees, + * @param array|integer|null $value A hue specified in degrees, * or an array of hues specified in degrees. If set to null, the hue * list is cleared. * @return self */ - public function setHues($value) + public function setHues($value): self { - $hues = array(); + $hues = []; if ($value !== null) { if (is_array($value)) { @@ -220,7 +194,7 @@ class IdenticonStyle * * @return float */ - public function getPadding() + public function getPadding(): float { return $this->padding; } @@ -231,9 +205,9 @@ class IdenticonStyle * @param float $value New padding in the range [0.0, 0.4]. * @return self */ - public function setPadding($value) + public function setPadding(float $value): self { - if (!is_numeric($value) || $value < 0 || $value > 0.4) { + if ($value < 0 || $value > 0.4) { throw new \InvalidArgumentException( "Padding '$value' out of range. ". "Values in the range [0.0, 0.4] are allowed."); @@ -247,7 +221,7 @@ class IdenticonStyle * * @return \Jdenticon\Color */ - public function getBackgroundColor() + public function getBackgroundColor(): Color { return $this->backgroundColor; } @@ -258,7 +232,7 @@ class IdenticonStyle * @param \Jdenticon\Color|string $value New background color. * @return \Jdenticon\IdenticonStyle */ - public function setBackgroundColor($value) + public function setBackgroundColor($value): self { if ($value instanceof Color) { $this->backgroundColor = $value; @@ -274,7 +248,7 @@ class IdenticonStyle * * @return float Saturation in the range [0.0, 1.0]. */ - public function getGrayscaleSaturation() + public function getGrayscaleSaturation(): float { return $this->grayscaleSaturation; } @@ -285,11 +259,9 @@ class IdenticonStyle * @param $value float Saturation in the range [0.0, 1.0]. * @return self */ - public function setGrayscaleSaturation($value) + public function setGrayscaleSaturation(float $value): self { - if (!is_numeric($value) || - $value < 0 || $value > 1 - ) { + if ($value < 0 || $value > 1) { throw new \InvalidArgumentException( "The grayscale saturation was invalid. ". "Only values in the range [0.0, 1.0] are allowed."); @@ -303,7 +275,7 @@ class IdenticonStyle * * @return float Saturation in the range [0.0, 1.0]. */ - public function getColorSaturation() + public function getColorSaturation(): float { return $this->colorSaturation; } @@ -314,11 +286,9 @@ class IdenticonStyle * @param $value float Saturation in the range [0.0, 1.0]. * @return self */ - public function setColorSaturation($value) + public function setColorSaturation(float $value): self { - if (!is_numeric($value) || - $value < 0 || $value > 1 - ) { + if ($value < 0 || $value > 1) { throw new \InvalidArgumentException( "The color saturation was invalid. ". "Only values in the range [0.0, 1.0] are allowed."); @@ -330,9 +300,9 @@ class IdenticonStyle /** * Gets the value of the ColorLightness property. * - * @return array(float, float) + * @return array */ - public function getColorLightness() + public function getColorLightness(): array { return $this->colorLightness; } @@ -340,13 +310,12 @@ class IdenticonStyle /** * Sets the value of the ColorLightness property. * - * @param $value array(float, float) Lightness range. + * @param array $value Lightness range. * @return self */ - public function setColorLightness($value) + public function setColorLightness(array $value): self { - if (!is_array($value) || - !array_key_exists(0, $value) || + if (!array_key_exists(0, $value) || !array_key_exists(1, $value) || !is_numeric($value[0]) || !is_numeric($value[1]) || @@ -358,16 +327,16 @@ class IdenticonStyle "Please check the documentation."); } - $this->colorLightness = array((float)$value[0], (float)$value[1]); + $this->colorLightness = [(float)$value[0], (float)$value[1]]; return $this; } /** * Gets the value of the GrayscaleLightness property. * - * @return array(float, float) + * @return array */ - public function getGrayscaleLightness() + public function getGrayscaleLightness(): array { return $this->grayscaleLightness; } @@ -375,13 +344,12 @@ class IdenticonStyle /** * Sets the value of the GrayscaleLightness property. * - * @param $value array(float, float) Lightness range. + * @param array $value Lightness range. * @return self */ - public function setGrayscaleLightness($value) + public function setGrayscaleLightness(array $value): self { - if (!is_array($value) || - !array_key_exists(0, $value) || + if (!array_key_exists(0, $value) || !array_key_exists(1, $value) || !is_numeric($value[0]) || !is_numeric($value[1]) || @@ -392,7 +360,7 @@ class IdenticonStyle "The value passed to setGrayscaleLightness was invalid. ". "Please check the documentation."); } - $this->grayscaleLightness = array((float)$value[0], (float)$value[1]); + $this->grayscaleLightness = [(float)$value[0], (float)$value[1]]; return $this; } @@ -403,7 +371,7 @@ class IdenticonStyle * * @return \Jdenticon\Color */ - public static function getDefaultBackgroundColor() + public static function getDefaultBackgroundColor(): Color { return Color::fromRgb(255, 255, 255, 255); } @@ -413,7 +381,7 @@ class IdenticonStyle * * @return float */ - public static function getDefaultPadding() + public static function getDefaultPadding(): float { return 0.08; } @@ -423,7 +391,7 @@ class IdenticonStyle * * @return float */ - public static function getDefaultColorSaturation() + public static function getDefaultColorSaturation(): float { return 0.5; } @@ -433,7 +401,7 @@ class IdenticonStyle * * @return float */ - public static function getDefaultGrayscaleSaturation() + public static function getDefaultGrayscaleSaturation(): float { return 0; } @@ -441,20 +409,20 @@ class IdenticonStyle /** * Gets the default value of the ColorLightness property. Resolves to [0.4, 0.8]. * - * @return array + * @return array */ - public static function getDefaultColorLightness() + public static function getDefaultColorLightness(): array { - return array(0.4, 0.8); + return [0.4, 0.8]; } /** * Gets the default value of the GrayscaleLightness property. Resolves to [0.3, 0.9]. * - * @return array + * @return array */ - public static function getDefaultGrayscaleLightness() + public static function getDefaultGrayscaleLightness(): array { - return array(0.3, 0.9); + return [0.3, 0.9]; } } diff --git a/vendor/jdenticon/jdenticon/src/Rendering/AbstractRenderer.php b/vendor/jdenticon/jdenticon/src/Rendering/AbstractRenderer.php index 0aeac805..a8cde27b 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/AbstractRenderer.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/AbstractRenderer.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -11,6 +11,9 @@ namespace Jdenticon\Rendering; +use Jdenticon\Color; +use Jdenticon\Rendering\Transform; + /** * Base class for rendering shapes in an identicon. Implement this class to e.g. * support a new file format that is not natively supported by Jdenticon. To @@ -19,9 +22,9 @@ namespace Jdenticon\Rendering; */ abstract class AbstractRenderer implements RendererInterface { - private $transform; - protected $backgroundColor; - + private Transform $transform; + protected ?Color $backgroundColor = null; + public function __construct() { $this->transform = Transform::getEmpty(); @@ -31,10 +34,10 @@ abstract class AbstractRenderer implements RendererInterface * Sets the current transform that will be applied on all coordinates before * being rendered to the target image. * - * @param \Jdenticon\Rendering\Transform $transform The transform to set. + * @param \Jdenticon\Rendering\Transform|null $transform The transform to set. * If NULL is specified any existing transform is removed. */ - public function setTransform(\Jdenticon\Rendering\Transform $transform) + public function setTransform(?Transform $transform): void { $this->transform = $transform === null ? Transform::getEmpty() : $transform; @@ -46,7 +49,7 @@ abstract class AbstractRenderer implements RendererInterface * * @return \Jdenticon\Rendering\Transform */ - public function getTransform() + public function getTransform(): Transform { return $this->transform; } @@ -54,29 +57,26 @@ abstract class AbstractRenderer implements RendererInterface /** * Adds a polygon without translating its coordinates. * - * @param array $points An array of the points that the polygon consists of. + * @param array<\Jdenticon\Rendering\Point> $points An array of the points that the polygon consists of. */ - abstract protected function addPolygonNoTransform($points); + abstract protected function addPolygonNoTransform(array $points): void; /** * Adds a circle without translating its coordinates. * - * @param float $x The x-coordinate of the bounding rectangle - * upper-left corner. - * @param float $y The y-coordinate of the bounding rectangle - * upper-left corner. + * @param float $x The x-coordinate of the bounding rectangle upper-left corner. + * @param float $y The y-coordinate of the bounding rectangle upper-left corner. * @param float $size The size of the bounding rectangle. - * @param bool $counterClockwise If true the circle will be drawn - * counter clockwise. + * @param bool $counterClockwise If true the circle will be drawn counter clockwise. */ - abstract protected function addCircleNoTransform($x, $y, $size, $counterClockwise); + abstract protected function addCircleNoTransform(float $x, float $y, float $size, bool $counterClockwise): void; /** * Sets the background color of the image. * - * @param \Jdenticon\Color $color The image background color. + * @param \Jdenticon\Color $color The image background color. */ - public function setBackgroundColor(\Jdenticon\Color $color) + public function setBackgroundColor(Color $color): void { $this->backgroundColor = $color; } @@ -86,14 +86,20 @@ abstract class AbstractRenderer implements RendererInterface * * @return \Jdenticon\Color */ - public function getBackgroundColor() + public function getBackgroundColor(): Color { + if ($this->backgroundColor === null) { + $this->backgroundColor = Color::fromRgb(0, 0, 0, 0); + } return $this->backgroundColor; } - private function addPolygonCore(array $points, $invert) + /** + * @param array $points + */ + private function addPolygonCore(array $points, bool $invert): void { - $transformedPoints = array(); + $transformedPoints = []; foreach ($points as $point) { $transformedPoints[] = $this->transform->transformPoint($point->x, $point->y); @@ -102,9 +108,7 @@ abstract class AbstractRenderer implements RendererInterface if ($invert) { $transformedPoints = array_reverse($transformedPoints); } - - //var_dump($transformedPoints); - + $this->addPolygonNoTransform($transformedPoints); } @@ -118,28 +122,25 @@ abstract class AbstractRenderer implements RendererInterface * @param bool $invert If true the area of the rectangle will be removed * from the filled area. */ - public function addRectangle($x, $y, $width, $height, $invert = false) + public function addRectangle(float $x, float $y, float $width, float $height, bool $invert = false): void { - $this->addPolygonCore(array( + $this->addPolygonCore([ new Point($x, $y), new Point($x + $width, $y), new Point($x + $width, $y + $height), new Point($x, $y + $height), - ), $invert); + ], $invert); } /** * Adds a circle to the image. * - * @param float $x The x-coordinate of the bounding rectangle - * upper-left corner. - * @param float $y The y-coordinate of the bounding rectangle - * upper-left corner. + * @param float $x The x-coordinate of the bounding rectangle upper-left corner. + * @param float $y The y-coordinate of the bounding rectangle upper-left corner. * @param float $size The size of the bounding rectangle. - * @param bool $invert If true the area of the circle will be removed - * from the filled area. + * @param bool $invert If true the area of the circle will be removed from the filled area. */ - public function addCircle($x, $y, $size, $invert = false) + public function addCircle(float $x, float $y, float $size, bool $invert = false): void { $northWest = $this->transform->transformPoint($x, $y, $size, $size); $this->addCircleNoTransform($northWest->x, $northWest->y, $size, $invert); @@ -148,11 +149,10 @@ abstract class AbstractRenderer implements RendererInterface /** * Adds a polygon to the image. * - * @param array $points Array of points that the polygon consists of. - * @param bool $invert If true the area of the polygon will be removed - * from the filled area. + * @param array $points Array of points that the polygon consists of. + * @param bool $invert If true the area of the polygon will be removed from the filled area. */ - public function addPolygon($points, $invert = false) + public function addPolygon(array $points, bool $invert = false): void { $this->addPolygonCore($points, $invert); } @@ -160,25 +160,22 @@ abstract class AbstractRenderer implements RendererInterface /** * Adds a triangle to the image. * - * @param float $x The x-coordinate of the bounding rectangle - * upper-left corner. - * @param float $y The y-coordinate of the bounding rectangle - * upper-left corner. + * @param float $x The x-coordinate of the bounding rectangle upper-left corner. + * @param float $y The y-coordinate of the bounding rectangle upper-left corner. * @param float $width The width of the bounding rectangle. * @param float $height The height of the bounding rectangle. - * @param float $direction The direction of the 90 degree corner of the - * triangle. - * @param bool $invert If true the area of the triangle will be removed - * from the filled area. + * @param int $direction The direction of the 90-degree corner of the triangle. + * Value of {@link \Jdenticon\Rendering\TriageDirection} + * @param bool $invert If true the area of the triangle will be removed from the filled area. */ - public function addTriangle($x, $y, $width, $height, $direction, $invert = false) + public function addTriangle(float $x, float $y, float $width, float $height, int $direction, bool $invert = false): void { - $points = array( + $points = [ new Point($x + $width, $y), new Point($x + $width, $y + $height), new Point($x, $y + $height), new Point($x, $y) - ); + ]; array_splice($points, $direction, 1); @@ -188,22 +185,19 @@ abstract class AbstractRenderer implements RendererInterface /** * Adds a rhombus to the image. * - * @param float $x The x-coordinate of the bounding rectangle - * upper-left corner. - * @param float $y The y-coordinate of the bounding rectangle - * upper-left corner. + * @param float $x The x-coordinate of the bounding rectangle upper-left corner. + * @param float $y The y-coordinate of the bounding rectangle upper-left corner. * @param float $width The width of the bounding rectangle. * @param float $height The height of the bounding rectangle. - * @param bool $invert If true the area of the rhombus will be removed - * from the filled area. + * @param bool $invert If true the area of the rhombus will be removed from the filled area. */ - public function addRhombus($x, $y, $width, $height, $invert = false) + public function addRhombus(float $x, float $y, float $width, float $height, bool $invert = false): void { - $this->addPolygonCore(array( + $this->addPolygonCore([ new Point($x + $width / 2, $y), new Point($x + $width, $y + $height / 2), new Point($x + $width / 2, $y + $height), new Point($x, $y + $height / 2), - ), $invert); + ], $invert); } } diff --git a/vendor/jdenticon/jdenticon/src/Rendering/ColorTheme.php b/vendor/jdenticon/jdenticon/src/Rendering/ColorTheme.php index 24af0f97..00dde3ee 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/ColorTheme.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/ColorTheme.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -12,17 +12,18 @@ namespace Jdenticon\Rendering; use Jdenticon\Color; +use Jdenticon\IdenticonStyle; /** * Specifies the colors to be used in an identicon. */ class ColorTheme { - private $darkGray; - private $midColor; - private $lightGray; - private $lightColor; - private $darkColor; + private Color $darkGray; + private Color $midColor; + private Color $lightGray; + private Color $lightColor; + private Color $darkColor; /** * Creates a new ColorTheme. @@ -31,7 +32,7 @@ class ColorTheme * @param \Jdenticon\IdenticonStyle $style The style that specifies the * lightness and saturation of the icon. */ - public function __construct($hue, \Jdenticon\IdenticonStyle $style) + public function __construct(float $hue, IdenticonStyle $style) { $grayscaleLightness = $style->getGrayscaleLightness(); $colorLightness = $style->getColorLightness(); @@ -60,9 +61,9 @@ class ColorTheme * Gets a color from this color theme by index. * * @param int $index Color index in the range [0, getCount()). - * @return Jdenticon\Color + * @return \Jdenticon\Color|null */ - public function getByIndex($index) + public function getByIndex(int $index): ?Color { if ($index === 0) return $this->darkGray; if ($index === 1) return $this->midColor; @@ -77,7 +78,7 @@ class ColorTheme * * @return int */ - public function getCount() + public function getCount(): int { return 5; } diff --git a/vendor/jdenticon/jdenticon/src/Rendering/IconGenerator.php b/vendor/jdenticon/jdenticon/src/Rendering/IconGenerator.php index d31fdf3b..6a83389e 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/IconGenerator.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/IconGenerator.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -11,6 +11,7 @@ namespace Jdenticon\Rendering; +use Jdenticon\IdenticonStyle; use Jdenticon\Shapes\Shape; use Jdenticon\Shapes\ShapeCategory; use Jdenticon\Shapes\ShapeDefinitions; @@ -24,19 +25,20 @@ use Jdenticon\Shapes\ShapeDefinitions; */ class IconGenerator { - private $defaultShapes; - private static $instance; - + /** @var array */ + private array $defaultShapes; + private static ?IconGenerator $instance = null; + protected function __construct() { - $this->defaultShapes = array( + $this->defaultShapes = [ // Sides new ShapeCategory( /*$colorIndex=*/ 8, /*$shapes=*/ ShapeDefinitions::getOuterShapes(), /*$shapeIndex=*/ 2, /*$rotationIndex=*/ 3, - /*$positions=*/ array(1,0, 2,0, 2,3, 1,3, 0,1, 3,1, 3,2, 0,2) + /*$positions=*/ [1,0, 2,0, 2,3, 1,3, 0,1, 3,1, 3,2, 0,2] ), // Corners @@ -45,7 +47,7 @@ class IconGenerator /*$shapes=*/ ShapeDefinitions::getOuterShapes(), /*$shapeIndex=*/ 4, /*$rotationIndex=*/ 5, - /*$positions=*/ array(0,0, 3,0, 3,3, 0,3) + /*$positions=*/ [0,0, 3,0, 3,3, 0,3] ), // Center @@ -54,12 +56,12 @@ class IconGenerator /*$shapes=*/ ShapeDefinitions::getCenterShapes(), /*$shapeIndex=*/ 1, /*$rotationIndex=*/ null, - /*$positions=*/ array(1,1, 2,1, 2,2, 1,2) + /*$positions=*/ [1,1, 2,1, 2,2, 1,2] ) - ); + ]; } - public static function getDefaultGenerator() + public static function getDefaultGenerator(): IconGenerator { if (self::$instance === null) { self::$instance = new IconGenerator(); @@ -73,7 +75,7 @@ class IconGenerator * * @return int */ - public function getCellCount() + public function getCellCount(): int { return 4; } @@ -83,7 +85,7 @@ class IconGenerator * * @return float Hue in the range [0, 1]. */ - protected static function getHue($hash) + protected static function getHue(string $hash): float { $value = hexdec(substr($hash, -7)); return $value / 0xfffffff; @@ -97,7 +99,7 @@ class IconGenerator */ private static function isDuplicate( array $source, $newValue, - array $duplicateValues) + array $duplicateValues): bool { if (in_array($newValue, $duplicateValues, true)) { foreach ($duplicateValues as $value) { @@ -116,7 +118,7 @@ class IconGenerator * @param int $index The zero-based index of the octet to be returned. * @return int */ - protected static function getOctet($hash, $index) + protected static function getOctet(string $hash, int $index): int { return hexdec($hash[$index]); } @@ -125,9 +127,9 @@ class IconGenerator * Gets an array of the shape categories to be rendered in icons generated * by this IconGenerator. * - * @return array + * @return array */ - protected function getCategories() + protected function getCategories(): array { return $this->defaultShapes; } @@ -139,13 +141,13 @@ class IconGenerator * @param \Jdenticon\Rendering\ColorTheme $colorTheme A color theme * specifying the colors to be used in the icon. * @param string $hash The hash for which the shapes will be returned. - * @return array(Jdenticon\Shapes\Shape) + * @return array<\Jdenticon\Shapes\Shape> */ - protected function getShapes($colorTheme, $hash) + protected function getShapes(ColorTheme $colorTheme, string $hash): array { - $usedColorThemeIndexes = array(); + $usedColorThemeIndexes = []; $categories = self::getCategories(); - $shapes = array(); + $shapes = []; $colorCount = $colorTheme->getCount(); foreach ($categories as $category) { @@ -154,10 +156,10 @@ class IconGenerator if (self::isDuplicate( // Disallow dark gray and dark color combo - $usedColorThemeIndexes, $colorThemeIndex, array(0, 4)) || + $usedColorThemeIndexes, $colorThemeIndex, [0, 4]) || self::isDuplicate( // Disallow light gray and light color combo - $usedColorThemeIndexes, $colorThemeIndex, array(2, 3)) + $usedColorThemeIndexes, $colorThemeIndex, [2, 3]) ) { $colorThemeIndex = 1; } @@ -190,7 +192,7 @@ class IconGenerator * @param \Jdenticon\Rendering\Rectangle $rect The rectangle to be * normalized. */ - protected function normalizeRectangle(\Jdenticon\Rendering\Rectangle $rect) + protected function normalizeRectangle(Rectangle $rect): Rectangle { $size = (int)min($rect->width, $rect->height); @@ -216,12 +218,12 @@ class IconGenerator * @param string $hash The hash to be used as basis for the generated icon. */ protected function renderBackground( - \Jdenticon\Rendering\RendererInterface $renderer, - \Jdenticon\Rendering\Rectangle $rect, - \Jdenticon\IdenticonStyle $style, - \Jdenticon\Rendering\ColorTheme $colorTheme, - $hash) - { + RendererInterface $renderer, + Rectangle $rect, + IdenticonStyle $style, + ColorTheme $colorTheme, + string $hash + ): void { $renderer->setBackgroundColor($style->getBackgroundColor()); } @@ -237,12 +239,12 @@ class IconGenerator * @param string $hash The hash to be used as basis for the generated icon. */ protected function renderForeground( - \Jdenticon\Rendering\RendererInterface $renderer, - \Jdenticon\Rendering\Rectangle $rect, - \Jdenticon\IdenticonStyle $style, - \Jdenticon\Rendering\ColorTheme $colorTheme, - $hash) - { + RendererInterface $renderer, + Rectangle $rect, + IdenticonStyle $style, + ColorTheme $colorTheme, + string $hash + ): void { // Ensure rect is quadratic and a multiple of the cell count $normalizedRect = $this->normalizeRectangle($rect); $cellSize = $normalizedRect->width / $this->getCellCount(); @@ -259,7 +261,7 @@ class IconGenerator $normalizedRect->y + $shape->positions[$i + 1] * $cellSize, $cellSize, $rotation++ % 4)); - $shape->definition->__invoke($renderer, $cellSize, $i / 2); + call_user_func($shape->definition, $renderer, $cellSize, $i / 2); } $renderer->endShape(); @@ -276,11 +278,11 @@ class IconGenerator * @param string $hash The hash to be used as basis for the generated icon. */ public function generate( - \Jdenticon\Rendering\RendererInterface $renderer, - \Jdenticon\Rendering\Rectangle $rect, - \Jdenticon\IdenticonStyle $style, - $hash) - { + RendererInterface $renderer, + Rectangle $rect, + IdenticonStyle $style, + string $hash + ): void { $hue = self::getHue($hash); $colorTheme = new ColorTheme($hue, $style); diff --git a/vendor/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php b/vendor/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php index dbd6cf36..bc825d9e 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/ImagickRenderer.php @@ -1,6 +1,8 @@ ry; @@ -44,12 +47,12 @@ class ImagickRendererLine /** * Computes the point at which two lines intersect. * + * @param ImagickRendererLine $l1 + * @param ImagickRendererLine $l2 * @return Point|null */ - public static function intersection( - ImagickRendererLine $l1, - ImagickRendererLine $l2 - ) { + public static function intersection(ImagickRendererLine $l1, ImagickRendererLine $l2): ?Point + { $rs = $l1->rx * $l2->ry - $l1->ry * $l2->rx; if ($rs == 0) { @@ -66,25 +69,21 @@ class ImagickRendererLine /** * X coordiate of a point on the line. - * @var float */ - public $Px; + public float $Px; /** * Y coordiate of a point on the line. - * @var float */ - public $Py; + public float $Py; /** * X component of the direction vector. - * @var float */ - public $rx; + public float $rx; /** * Y component of the direction vector. - * @var float */ - public $ry; + public float $ry; } /** @@ -108,17 +107,17 @@ class ImagickRendererLine */ class ImagickRenderer extends AbstractRenderer { - private $draw; - private $polygon; - private $width; - private $height; + private \ImagickDraw $draw; + private array $polygon; + private int $width; + private int $height; /** * This constant is added to all coordinates to avoid white pixels * that sometimes appear near edge intersections when a polygon including * its 1/2 invisible border is perfectly aligned to the pixel grid. */ - const PREVENT_WHITE_PIXELS_OFFSET = -0.00013; + private const PREVENT_WHITE_PIXELS_OFFSET = -0.00013; /** * Creates an instance of the class ImagickRenderer. @@ -126,7 +125,7 @@ class ImagickRenderer extends AbstractRenderer * @param int $width The width of the icon in pixels. * @param int $height The height of the icon in pixels. */ - public function __construct($width, $height) + public function __construct(int $width, int $height) { parent::__construct(); $this->draw = new \ImagickDraw(); @@ -141,7 +140,7 @@ class ImagickRenderer extends AbstractRenderer * * @return string */ - public function getMimeType() + public function getMimeType(): string { return 'image/png'; } @@ -149,15 +148,12 @@ class ImagickRenderer extends AbstractRenderer /** * Adds a circle without translating its coordinates. * - * @param float $x The x-coordinate of the bounding rectangle - * upper-left corner. - * @param float $y The y-coordinate of the bounding rectangle - * upper-left corner. - * @param float $size The size of the bounding rectangle. - * @param bool $counterClockwise If true the circle will be drawn - * counter clockwise. + * @param float $x The x-coordinate of the bounding rectangle upper-left corner. + * @param float $y The y-coordinate of the bounding rectangle upper-left corner. + * @param float $size The size of the bounding rectangle. + * @param bool $counterClockwise If true the circle will be drawn counter clockwise. */ - protected function addCircleNoTransform($x, $y, $size, $counterClockwise) + protected function addCircleNoTransform(float $x, float $y, float $size, bool $counterClockwise): void { if ($counterClockwise) { $x -= $size + 0.5; @@ -179,9 +175,9 @@ class ImagickRenderer extends AbstractRenderer /** * Adds a polygon without translating its coordinates. * - * @param array $points An array of the points that the polygon consists of. + * @param array $points An array of the points that the polygon consists of. */ - protected function addPolygonNoTransform($points) + protected function addPolygonNoTransform(array $points): void { $firstPoint = $points[0]; $lastPoint = end($points); @@ -209,7 +205,7 @@ class ImagickRenderer extends AbstractRenderer // ImageMagick draws all polygons 1 pixel too large. To prevent this, // shrink polygons by 1 pixel. - $lines = array(); + $lines = []; $previousPoint = null; // Transform all edges to lines. @@ -259,7 +255,7 @@ class ImagickRenderer extends AbstractRenderer * * @param \Jdenticon\Color $color The color of the shape. */ - public function beginShape(\Jdenticon\Color $color) + public function beginShape(Color $color): void { $this->draw->setFillColor($color->__toString()); $this->draw->pathStart(); @@ -268,7 +264,7 @@ class ImagickRenderer extends AbstractRenderer /** * Ends the currently drawn shape. */ - public function endShape() + public function endShape(): void { $this->draw->pathFinish(); } @@ -278,7 +274,7 @@ class ImagickRenderer extends AbstractRenderer * * @return string */ - public function getData() + public function getData(): string { $imagick = new \Imagick(); $imagick->newImage($this->width, $this->height, $this->backgroundColor->__toString()); diff --git a/vendor/jdenticon/jdenticon/src/Rendering/InternalPngRenderer.php b/vendor/jdenticon/jdenticon/src/Rendering/InternalPngRenderer.php index 10c816be..2858b93a 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/InternalPngRenderer.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/InternalPngRenderer.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -12,14 +12,16 @@ namespace Jdenticon\Rendering; use Jdenticon\Canvas\Canvas; +use Jdenticon\Canvas\CanvasContext; +use Jdenticon\Color; /** * Renders icons as PNG using the internal vector rasterizer. */ class InternalPngRenderer extends AbstractRenderer { - private $canvas; - private $ctx; + private Canvas $canvas; + private CanvasContext $ctx; /** * Creates an instance of the class ImagickRenderer. @@ -27,7 +29,7 @@ class InternalPngRenderer extends AbstractRenderer * @param int $width The width of the icon in pixels. * @param int $height The height of the icon in pixels. */ - public function __construct($width, $height) + public function __construct(int $width, int $height) { parent::__construct(); $this->canvas = new Canvas($width, $height); @@ -39,7 +41,7 @@ class InternalPngRenderer extends AbstractRenderer * * @return string */ - public function getMimeType() + public function getMimeType(): string { return 'image/png'; } @@ -55,7 +57,7 @@ class InternalPngRenderer extends AbstractRenderer * @param bool $counterClockwise If true the circle will be drawn * counter clockwise. */ - protected function addCircleNoTransform($x, $y, $size, $counterClockwise) + protected function addCircleNoTransform(float $x, float $y, float $size, bool $counterClockwise): void { $radius = $size / 2; $this->ctx->moveTo($x + $size, $y + $radius); @@ -69,9 +71,9 @@ class InternalPngRenderer extends AbstractRenderer /** * Adds a polygon without translating its coordinates. * - * @param array $points An array of the points that the polygon consists of. + * @param array $points An array of the points that the polygon consists of. */ - protected function addPolygonNoTransform($points) + protected function addPolygonNoTransform(array $points): void { $pointCount = count($points); $this->ctx->moveTo($points[0]->x, $points[0]->y); @@ -86,7 +88,7 @@ class InternalPngRenderer extends AbstractRenderer * * @param \Jdenticon\Color $color The background color. */ - public function setBackgroundColor(\Jdenticon\Color $color) + public function setBackgroundColor(Color $color): void { parent::setBackgroundColor($color); $this->canvas->backColor = $this->backgroundColor->toRgba(); @@ -97,7 +99,7 @@ class InternalPngRenderer extends AbstractRenderer * * @param \Jdenticon\Color $color The color of the shape. */ - public function beginShape(\Jdenticon\Color $color) + public function beginShape(Color $color): void { $this->ctx->fillStyle = $color->toRgba(); $this->ctx->beginPath(); @@ -106,7 +108,7 @@ class InternalPngRenderer extends AbstractRenderer /** * Ends the currently drawn shape. */ - public function endShape() + public function endShape(): void { $this->ctx->fill(); } @@ -116,8 +118,8 @@ class InternalPngRenderer extends AbstractRenderer * * @return string */ - public function getData() + public function getData(): string { - return $this->canvas->toPng(array('Software' => 'Jdenticon')); + return $this->canvas->toPng(['Software' => 'Jdenticon']); } } diff --git a/vendor/jdenticon/jdenticon/src/Rendering/Point.php b/vendor/jdenticon/jdenticon/src/Rendering/Point.php index 020845e6..7c25363c 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/Point.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/Point.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -22,7 +22,7 @@ class Point * @param float $x X coordinate. * @param float $y Y coordinate. */ - public function __construct($x, $y) + public function __construct(float $x, float $y) { $this->x = $x; $this->y = $y; @@ -30,25 +30,19 @@ class Point /** * The X coordinate of this point. - * - * @var float */ - public $x; + public float $x; /** * The Y coordinate of this point. - * - * @var float */ - public $y; + public float $y; /** * Gets a string representation of the point. - * - * @return string */ - public function __toString() + public function __toString(): string { - return $this->x + ", " + $this->y; + return $this->x . ", " . $this->y; } } diff --git a/vendor/jdenticon/jdenticon/src/Rendering/Rectangle.php b/vendor/jdenticon/jdenticon/src/Rendering/Rectangle.php index 27056c65..7fc919e5 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/Rectangle.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/Rectangle.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -18,29 +18,23 @@ class Rectangle { /** * The X coordinate of the left side of the rectangle. - * - * @var float */ - public $x; + public float $x; /** * The Y coordinate of the top side of the rectangle. - * - * @var float */ - public $y; + public float $y; /** * The width of the rectangle. - * @var float */ - public $width; + public float $width; /** * The height of the rectangle. - * @var float */ - public $height; + public float $height; /** * Creates a new Rectangle. @@ -50,7 +44,7 @@ class Rectangle * @param float $width The width of the rectangle. * @param float $height The height of the rectangle. */ - public function __construct($x, $y, $width, $height) + public function __construct(float $x, float $y, float $width, float $height) { $this->x = $x; $this->y = $y; diff --git a/vendor/jdenticon/jdenticon/src/Rendering/RendererInterface.php b/vendor/jdenticon/jdenticon/src/Rendering/RendererInterface.php index 2e579e0c..ed3ce527 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/RendererInterface.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/RendererInterface.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -25,7 +25,7 @@ interface RendererInterface * @param \Jdenticon\Rendering\Transform $transform The transform to set. * If NULL is specified any existing transform is removed. */ - public function setTransform(\Jdenticon\Rendering\Transform $transform); + public function setTransform(Transform $transform): void; /** * Gets the current transform that will be applied on all coordinates before @@ -33,40 +33,40 @@ interface RendererInterface * * @return \Jdenticon\Rendering\Transform */ - public function getTransform(); + public function getTransform(): Transform; /** * Sets the background color of the image. * * @param \Jdenticon\Color $color The image background color. */ - public function setBackgroundColor(Color $color); + public function setBackgroundColor(Color $color): void; /** * Gets the background color of the image. * * @return \Jdenticon\Color */ - public function getBackgroundColor(); + public function getBackgroundColor(): Color; /** * Gets the MIME type of the renderer output. * * @return string */ - public function getMimeType(); + public function getMimeType(): string; /** * Begins a new shape. The shape should be ended with a call to endShape. * * @param \Jdenticon\Color $color The color of the shape. */ - public function beginShape(Color $color); + public function beginShape(Color $color): void; /** * Ends the currently drawn shape. */ - public function endShape(); + public function endShape(): void; /** * Adds a rectangle to the image. @@ -78,7 +78,7 @@ interface RendererInterface * @param bool $invert If true the area of the rectangle will be removed * from the filled area. */ - public function addRectangle($x, $y, $width, $height, $invert = false); + public function addRectangle(float $x, float $y, float $width, float $height, bool $invert = false): void; /** * Adds a circle to the image. @@ -91,16 +91,16 @@ interface RendererInterface * @param bool $invert If true the area of the circle will be removed from * the filled area. */ - public function addCircle($x, $y, $size, $invert = false); + public function addCircle(float $x, float $y, float $size, bool $invert = false): void; /** * Adds a polygon to the image. * - * @param array $points Array of points that the polygon consists of. + * @param array $points Array of points that the polygon consists of. * @param bool $invert If true the area of the polygon will be removed from * the filled area. */ - public function addPolygon($points, $invert = false); + public function addPolygon(array $points, bool $invert = false): void; /** * Adds a triangle to the image. @@ -111,12 +111,12 @@ interface RendererInterface * upper-left corner. * @param float $width The width of the bounding rectangle. * @param float $height The height of the bounding rectangle. - * @param float $direction The direction of the 90 degree corner of - * the triangle. + * @param int $direction The direction of the 90 degree corner of + * the triangle. Value of {@link \Jdenticon\Rendering\TriageDirection} * @param bool $invert If true the area of the triangle will be removed * from the filled area. */ - public function addTriangle($x, $y, $width, $height, $direction, $invert = false); + public function addTriangle(float $x, float $y, float $width, float $height, int $direction, bool $invert = false): void; /** * Adds a rhombus to the image. @@ -130,12 +130,12 @@ interface RendererInterface * @param bool $invert If true the area of the rhombus will be removed * from the filled area. */ - public function addRhombus($x, $y, $width, $height, $invert = false); + public function addRhombus(float $x, float $y, float $width, float $height, bool $invert = false): void; /** * Gets the output from the renderer. * * @return string */ - public function getData(); + public function getData(): string; } diff --git a/vendor/jdenticon/jdenticon/src/Rendering/SvgPath.php b/vendor/jdenticon/jdenticon/src/Rendering/SvgPath.php index d3b5b44d..b8a8be81 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/SvgPath.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/SvgPath.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -16,8 +16,8 @@ namespace Jdenticon\Rendering; */ class SvgPath { - private $dataString; - + private string $dataString; + public function __construct() { $this->dataString = ''; @@ -33,7 +33,7 @@ class SvgPath * clockwise. This affects the rendering since the evenodd filling rule * is used by Jdenticon. */ - public function addCircle($x, $y, $size, $counterClockwise) + public function addCircle(float $x, float $y, float $size, bool $counterClockwise): void { $sweepFlag = $counterClockwise ? '0' : '1'; $radiusAsString = number_format($size / 2, 2, '.', ''); @@ -50,10 +50,10 @@ class SvgPath /** * Adds a polygon to the SVG. * - * @param array(\Jdenticon\Rendering\Point) $points The corners of the + * @param array<\Jdenticon\Rendering\Point> $points The corners of the * polygon. */ - public function addPolygon($points) + public function addPolygon(array $points): void { $pointCount = count($points); @@ -75,7 +75,7 @@ class SvgPath * * @return string */ - public function __toString() + public function __toString(): string { return $this->dataString; } diff --git a/vendor/jdenticon/jdenticon/src/Rendering/SvgRenderer.php b/vendor/jdenticon/jdenticon/src/Rendering/SvgRenderer.php index 3a1df854..6df5c487 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/SvgRenderer.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/SvgRenderer.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -11,15 +11,18 @@ namespace Jdenticon\Rendering; +use Jdenticon\Color; + /** * Renders icons as SVG paths. */ class SvgRenderer extends AbstractRenderer { - private $pathsByColor = array(); - private $path; - private $width; - private $height; + /** @var array */ + private array $pathsByColor = []; + private ?SvgPath $path = null; + private int $width; + private int $height; /** * Creates a new SvgRenderer. @@ -27,7 +30,7 @@ class SvgRenderer extends AbstractRenderer * @param int $width The width of the icon in pixels. * @param int $height The height of the icon in pixels. */ - public function __construct($width, $height) + public function __construct(int $width, int $height) { $this->width = $width; $this->height = $height; @@ -38,7 +41,7 @@ class SvgRenderer extends AbstractRenderer * * @return string */ - public function getMimeType() + public function getMimeType(): string { return 'image/svg+xml'; } @@ -54,7 +57,7 @@ class SvgRenderer extends AbstractRenderer * @param bool $counterClockwise If true the circle will be drawn * counter clockwise. */ - protected function addCircleNoTransform($x, $y, $size, $counterClockwise) + protected function addCircleNoTransform(float $x, float $y, float $size, bool $counterClockwise): void { $this->path->addCircle($x, $y, $size, $counterClockwise); } @@ -62,9 +65,9 @@ class SvgRenderer extends AbstractRenderer /** * Adds a polygon without translating its coordinates. * - * @param array $points An array of the points that the polygon consists of. + * @param array $points An array of the points that the polygon consists of. */ - protected function addPolygonNoTransform($points) + protected function addPolygonNoTransform(array $points): void { $this->path->addPolygon($points); } @@ -74,7 +77,7 @@ class SvgRenderer extends AbstractRenderer * * @param \Jdenticon\Color $color The color of the shape. */ - public function beginShape(\Jdenticon\Color $color) + public function beginShape(Color $color): void { $colorString = $color->toHexString(6); @@ -89,7 +92,7 @@ class SvgRenderer extends AbstractRenderer /** * Ends the currently drawn shape. */ - public function endShape() + public function endShape(): void { } @@ -98,8 +101,9 @@ class SvgRenderer extends AbstractRenderer * * @param bool $fragment If true an SVG string without the root svg element * will be rendered. + * @return string */ - public function getData($fragment = false) + public function getData(bool $fragment = false): string { $svg = ''; $widthAsString = number_format($this->width, 0, '.', ''); diff --git a/vendor/jdenticon/jdenticon/src/Rendering/Transform.php b/vendor/jdenticon/jdenticon/src/Rendering/Transform.php index f93de626..142cd2da 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/Transform.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/Transform.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -16,10 +16,10 @@ namespace Jdenticon\Rendering; */ class Transform { - private $x; - private $y; - private $size; - private $rotation; + private float $x; + private float $y; + private float $size; + private int $rotation; /** * Creates a new Transform. @@ -29,10 +29,10 @@ class Transform * @param float $y The y-coordinate of the upper left corner of the * transformed rectangle. * @param float $size The size of the transformed rectangle. - * @param integer $rotation Rotation specified as + * @param int $rotation Rotation specified as * 0 = 0 rad, 1 = 0.5π rad, 2 = π rad, 3 = 1.5π rad. */ - public function __construct($x, $y, $size, $rotation) + public function __construct(float $x, float $y, float $size, int $rotation) { $this->x = $x; $this->y = $y; @@ -45,7 +45,7 @@ class Transform * * @return \Jdenticon\Rendering\Transform */ - public static function getEmpty() + public static function getEmpty(): Transform { return new Transform(0, 0, 0, 0); } @@ -64,7 +64,7 @@ class Transform * corner of the transformed rectangle. * @return \Jdenticon\Rendering\Point */ - public function transformPoint($x, $y, $width = 0, $height = 0) + public function transformPoint(float $x, float $y, float $width = 0, float $height = 0): Point { $right = $this->x + $this->size; $bottom = $this->y + $this->size; diff --git a/vendor/jdenticon/jdenticon/src/Rendering/TriangleDirection.php b/vendor/jdenticon/jdenticon/src/Rendering/TriangleDirection.php index fb1fff91..7f8fc2a1 100644 --- a/vendor/jdenticon/jdenticon/src/Rendering/TriangleDirection.php +++ b/vendor/jdenticon/jdenticon/src/Rendering/TriangleDirection.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -19,17 +19,17 @@ class TriangleDirection /** * The 90 degree angle is pointing to South West. */ - const SOUTH_WEST = 0; + public const SOUTH_WEST = 0; /** * The 90 degree angle is pointing to North West. */ - const NORTH_WEST = 1; + public const NORTH_WEST = 1; /** * The 90 degree angle is pointing to North East. */ - const NORTH_EAST = 2; + public const NORTH_EAST = 2; /** * The 90 degree angle is pointing to South East. */ - const SOUTH_EAST = 3; + public const SOUTH_EAST = 3; } diff --git a/vendor/jdenticon/jdenticon/src/Shapes/Shape.php b/vendor/jdenticon/jdenticon/src/Shapes/Shape.php index 33b0e160..664ef1ec 100644 --- a/vendor/jdenticon/jdenticon/src/Shapes/Shape.php +++ b/vendor/jdenticon/jdenticon/src/Shapes/Shape.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -11,6 +11,8 @@ namespace Jdenticon\Shapes; +use Jdenticon\Color; + /** * Represents a shape to be rendered in an icon. These instances are * hash specific. @@ -20,39 +22,35 @@ class Shape /** * The shape definition to be used to render the shape. * - * @var function( + * @var callable( * \Jdenticon\Rendering\RendererInterface $renderer, - * \Jdenticon\Shapes\ShapePosition $cell, - * int $index) + * int $cell, + * int $index): void */ public $definition; /** * The fill color of the shape. - * - * @var Jdenticon\Color */ - public $color; + public Color $color; /** - * The positions in which the shape will be rendered. - * - * @var array(\Jdenticon\Shapes\ShapePosition) + * The positions in which the shape will be rendered. Interleaved x and y cell coordinates. + * + * @var array */ - public $positions; + public array $positions; /** * The rotation index of the icon in the first position. - * - * @var int */ - public $startRotationIndex; + public int $startRotationIndex; public function __construct( - $definition, - \Jdenticon\Color $color, + callable $definition, + Color $color, array $positions, - $startRotationIndex) + int $startRotationIndex) { $this->definition = $definition; $this->color = $color; diff --git a/vendor/jdenticon/jdenticon/src/Shapes/ShapeCategory.php b/vendor/jdenticon/jdenticon/src/Shapes/ShapeCategory.php index 202de814..ad29f994 100644 --- a/vendor/jdenticon/jdenticon/src/Shapes/ShapeCategory.php +++ b/vendor/jdenticon/jdenticon/src/Shapes/ShapeCategory.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -20,46 +20,44 @@ class ShapeCategory /** * The index of the hash octet determining the color of shapes in this * category. - * - * @var int */ - public $colorIndex; + public int $colorIndex; /** * A list of possible shape definitions in this category. * - * @var array(function( + * @var array */ - public $shapes; + public array $shapes; /** * The index of the hash octet determining which of the shape definitions * that will be used for a particular hash. - * - * @var int */ - public $shapeIndex; + public int $shapeIndex; /** * The index of the hash octet determining the rotation index of the shape * in the first position. - * - * @var int */ - public $rotationIndex; + public ?int $rotationIndex; /** * The positions in which the shapes of this category will be rendered. * - * @var array(int) + * @var array */ - public $positions; + public array $positions; public function __construct( - $colorIndex, array $shapes, $shapeIndex, $rotationIndex, array $positions) + int $colorIndex, + array $shapes, + int $shapeIndex, + ?int $rotationIndex, + array $positions) { $this->colorIndex = $colorIndex; $this->shapes = $shapes; diff --git a/vendor/jdenticon/jdenticon/src/Shapes/ShapeDefinitions.php b/vendor/jdenticon/jdenticon/src/Shapes/ShapeDefinitions.php index 8278be0f..a4ef050d 100644 --- a/vendor/jdenticon/jdenticon/src/Shapes/ShapeDefinitions.php +++ b/vendor/jdenticon/jdenticon/src/Shapes/ShapeDefinitions.php @@ -3,7 +3,7 @@ * This file is part of Jdenticon for PHP. * https://github.com/dmester/jdenticon-php/ * - * Copyright (c) 2018 Daniel Mester Pirttijärvi + * Copyright (c) 2025 Daniel Mester Pirttijärvi * * For full license information, please see the LICENSE file that was * distributed with this source code. @@ -12,6 +12,7 @@ namespace Jdenticon\Shapes; use Jdenticon\Rendering\Point; +use Jdenticon\Rendering\RendererInterface; use Jdenticon\Rendering\TriangleDirection; /** @@ -19,16 +20,16 @@ use Jdenticon\Rendering\TriangleDirection; */ class ShapeDefinitions { - private static $outerShapes; - private static $centerShapes; - + private static ?array $outerShapes = null; + private static ?array $centerShapes = null; + /** * Gets an array of all possible outer shapes. Do not modify the returned * array. * - * @return array(\Jdenticon\Rendering\Shape) + * @return array */ - public static function getOuterShapes() + public static function getOuterShapes(): array { if (self::$outerShapes === null) { self::$outerShapes = self::createOuterShapes(); @@ -40,9 +41,9 @@ class ShapeDefinitions * Gets an array of all possible center shapes. Do not modify the returned * array. * - * @return array(\Jdenticon\Rendering\Shape) + * @return array */ - public static function getCenterShapes() + public static function getCenterShapes(): array { if (self::$centerShapes === null) { self::$centerShapes = self::createCenterShapes(); @@ -50,58 +51,60 @@ class ShapeDefinitions return self::$centerShapes; } - private static function createOuterShapes() + /** + * Creates an array of outer shape definitions. + * + * @return array + */ + private static function createOuterShapes(): array { - return array( - function ($renderer, $cell, $index) - { + return [ + function (RendererInterface $renderer, int $cell, int $index): void { $renderer->addTriangle(0, 0, $cell, $cell, 0); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $renderer->addTriangle(0, $cell / 2, $cell, $cell / 2, 0); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $renderer->addRhombus(0, 0, $cell, $cell); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $m = $cell / 6; $renderer->addCircle($m, $m, $cell - 2 * $m); } - ); + ]; } - private static function createCenterShapes() + /** + * Creates an array of center shape definitions. + * + * @return array + */ + private static function createCenterShapes(): array { - return array( - function ($renderer, $cell, $index) - { + return [ + function (RendererInterface $renderer, int $cell, int $index): void { $k = $cell * 0.42; - $renderer->addPolygon(array( + $renderer->addPolygon([ new Point(0, 0), new Point($cell, 0), new Point($cell, $cell - $k * 2), new Point($cell - $k, $cell), new Point(0, $cell) - )); + ]); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $w = (int)($cell * 0.5); $h = (int)($cell * 0.8); $renderer->addTriangle( $cell - $w, 0, $w, $h, TriangleDirection::NORTH_EAST); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $s = (int)($cell / 3); $renderer->addRectangle($s, $s, $cell - $s, $cell - $s); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $tmp = $cell * 0.1; if ($tmp > 1) { @@ -129,14 +132,12 @@ class ShapeDefinitions $outer, $outer, $cell - $inner - $outer, $cell - $inner - $outer); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $m = (int)($cell * 0.15); $s = (int)($cell * 0.5); $renderer->addCircle($cell - $s - $m, $cell - $s - $m, $s); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $inner = $cell * 0.1; $outer = $inner * 4; @@ -146,42 +147,38 @@ class ShapeDefinitions } $renderer->addRectangle(0, 0, $cell, $cell); - $renderer->addPolygon(array( + $renderer->addPolygon([ new Point($outer, $outer), new Point($cell - $inner, $outer), new Point($outer + ($cell - $outer - $inner) / 2, $cell - $inner) - ), true); + ], true); }, - function ($renderer, $cell, $index) - { - $renderer->addPolygon(array( + function (RendererInterface $renderer, int $cell, int $index): void { + $renderer->addPolygon([ new Point(0, 0), new Point($cell, 0), new Point($cell, $cell * 0.7), new Point($cell * 0.4, $cell * 0.4), new Point($cell * 0.7, $cell), new Point(0, $cell) - )); + ]); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $renderer->addTriangle( $cell / 2, $cell / 2, $cell / 2, $cell / 2, TriangleDirection::SOUTH_EAST); }, - function ($renderer, $cell, $index) - { - $renderer->addPolygon(array( + function (RendererInterface $renderer, int $cell, int $index): void { + $renderer->addPolygon([ new Point(0, 0), new Point($cell, 0), new Point($cell, $cell / 2), new Point($cell / 2, $cell), new Point(0, $cell) - )); + ]); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $tmp = $cell * 0.14; if ($cell < 8) { @@ -207,8 +204,7 @@ class ShapeDefinitions $outer, $outer, $cell - $outer - $inner, $cell - $outer - $inner, true); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $inner = $cell * 0.12; $outer = $inner * 3; @@ -216,21 +212,18 @@ class ShapeDefinitions $renderer->addCircle($outer, $outer, $cell - $inner - $outer, true); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $renderer->addTriangle( $cell / 2, $cell / 2, $cell / 2, $cell / 2, TriangleDirection::SOUTH_EAST); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $m = $cell * 0.25; $renderer->addRectangle(0, 0, $cell, $cell); $renderer->addRhombus($m, $m, $cell - $m, $cell - $m, true); }, - function ($renderer, $cell, $index) - { + function (RendererInterface $renderer, int $cell, int $index): void { $m = $cell * 0.4; $s = $cell * 1.2; @@ -238,6 +231,6 @@ class ShapeDefinitions $renderer->addCircle($m, $m, $s); } } - ); + ]; } } diff --git a/vendor/jdenticon/jdenticon/src/Shapes/ShapePosition.php b/vendor/jdenticon/jdenticon/src/Shapes/ShapePosition.php deleted file mode 100644 index 9c780fce..00000000 --- a/vendor/jdenticon/jdenticon/src/Shapes/ShapePosition.php +++ /dev/null @@ -1,45 +0,0 @@ -x = $x; - $this->y = $y; - } -} -