aboutsummaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2024-03-14 10:13:22 +0000
committerMario <mario@mariovavti.com>2024-03-14 10:13:22 +0000
commit55097c47c5534d4453f7494f8a1542f7beb4d588 (patch)
tree399f81bbd03fcb4bb713339d06512eee962ec8f6 /vendor
parent97b82fc77b424d051b2a472ab2318fd768151bdd (diff)
downloadvolse-hubzilla-55097c47c5534d4453f7494f8a1542f7beb4d588.tar.gz
volse-hubzilla-55097c47c5534d4453f7494f8a1542f7beb4d588.tar.bz2
volse-hubzilla-55097c47c5534d4453f7494f8a1542f7beb4d588.zip
Revert "composer update and use the fixed streams php-jcs library until the floats issue will be fixed upstream. see here for reference https://codeberg.org/streams/streams/issues/151"
This reverts commit 6bf61dfa6b585db01b607a79bd64ec9c583a9c10.
Diffstat (limited to 'vendor')
-rw-r--r--vendor/chillerlan/php-qrcode/.github/FUNDING.yml2
-rw-r--r--vendor/chillerlan/php-qrcode/.github/workflows/tests.yml82
-rw-r--r--vendor/chillerlan/php-qrcode/.gitignore5
-rw-r--r--vendor/chillerlan/php-qrcode/.phan/config.php55
-rw-r--r--vendor/chillerlan/php-qrcode/.phan/stubs/imagick.php6744
-rw-r--r--vendor/chillerlan/php-qrcode/.scrutinizer.yml16
-rw-r--r--vendor/chillerlan/php-qrcode/README.md239
-rw-r--r--vendor/chillerlan/php-qrcode/composer.json19
-rw-r--r--vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php38
-rw-r--r--vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php81
-rw-r--r--vendor/chillerlan/php-qrcode/examples/QRImageWithText.php100
-rw-r--r--vendor/chillerlan/php-qrcode/examples/custom_output.php38
-rw-r--r--vendor/chillerlan/php-qrcode/examples/example_image.pngbin0 -> 2279 bytes
-rw-r--r--vendor/chillerlan/php-qrcode/examples/example_svg.pngbin0 -> 15925 bytes
-rw-r--r--vendor/chillerlan/php-qrcode/examples/fpdf.php47
-rw-r--r--vendor/chillerlan/php-qrcode/examples/html.php102
-rw-r--r--vendor/chillerlan/php-qrcode/examples/image.php63
-rw-r--r--vendor/chillerlan/php-qrcode/examples/imageWithLogo.php45
-rw-r--r--vendor/chillerlan/php-qrcode/examples/imageWithText.php33
-rw-r--r--vendor/chillerlan/php-qrcode/examples/imagick.php59
-rw-r--r--vendor/chillerlan/php-qrcode/examples/octocat.pngbin0 -> 2468 bytes
-rw-r--r--vendor/chillerlan/php-qrcode/examples/svg.php78
-rw-r--r--vendor/chillerlan/php-qrcode/examples/text.php68
-rw-r--r--vendor/chillerlan/php-qrcode/phpdoc.xml20
-rw-r--r--vendor/chillerlan/php-qrcode/phpunit.xml26
-rw-r--r--vendor/chillerlan/php-qrcode/public/index.html163
-rw-r--r--vendor/chillerlan/php-qrcode/public/qrcode.php97
-rw-r--r--vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php18
-rw-r--r--vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php10
-rwxr-xr-xvendor/chillerlan/php-qrcode/src/Data/QRMatrix.php77
-rw-r--r--vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php4
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php8
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php3
-rw-r--r--vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php45
-rwxr-xr-xvendor/chillerlan/php-qrcode/src/QRCode.php8
-rw-r--r--vendor/chillerlan/php-qrcode/src/QROptionsTrait.php4
-rw-r--r--vendor/chillerlan/php-settings-container/.github/FUNDING.yml2
-rw-r--r--vendor/chillerlan/php-settings-container/.github/workflows/tests.yml105
-rw-r--r--vendor/chillerlan/php-settings-container/.gitignore4
-rw-r--r--vendor/chillerlan/php-settings-container/.phan/config.php54
-rw-r--r--vendor/chillerlan/php-settings-container/.scrutinizer.yml14
-rw-r--r--vendor/chillerlan/php-settings-container/README.md96
-rw-r--r--vendor/chillerlan/php-settings-container/composer.json15
-rw-r--r--vendor/chillerlan/php-settings-container/docs/Readme.md13
-rw-r--r--vendor/chillerlan/php-settings-container/examples/advanced.php51
-rw-r--r--vendor/chillerlan/php-settings-container/examples/simple.php29
-rw-r--r--vendor/chillerlan/php-settings-container/phpdoc.xml20
-rw-r--r--vendor/chillerlan/php-settings-container/phpunit.xml26
-rw-r--r--vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php102
-rw-r--r--vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php26
-rw-r--r--vendor/composer/autoload_classmap.php18
-rw-r--r--vendor/composer/autoload_files.php1
-rw-r--r--vendor/composer/autoload_psr4.php3
-rw-r--r--vendor/composer/autoload_static.php26
-rw-r--r--vendor/composer/installed.json328
-rw-r--r--vendor/composer/installed.php65
-rw-r--r--vendor/mmccook/php-json-canonicalization-scheme/CHANGELOG.md4
-rw-r--r--vendor/mmccook/php-json-canonicalization-scheme/LICENSE.md21
-rw-r--r--vendor/mmccook/php-json-canonicalization-scheme/README.md43
-rw-r--r--vendor/mmccook/php-json-canonicalization-scheme/composer.json50
-rw-r--r--vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php79
-rw-r--r--vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php13
-rw-r--r--vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php10
-rw-r--r--vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php52
-rw-r--r--vendor/psr/log/composer.json2
-rw-r--r--vendor/psr/log/src/LoggerAwareInterface.php2
-rw-r--r--vendor/psr/log/src/LoggerAwareTrait.php2
-rw-r--r--vendor/psr/log/src/LoggerInterface.php18
-rw-r--r--vendor/psr/log/src/LoggerTrait.php18
-rw-r--r--vendor/psr/log/src/NullLogger.php2
-rw-r--r--vendor/ramsey/collection/LICENSE2
-rw-r--r--vendor/ramsey/collection/README.md22
-rw-r--r--vendor/ramsey/collection/SECURITY.md70
-rw-r--r--vendor/ramsey/collection/composer.json117
-rw-r--r--vendor/ramsey/collection/conventional-commits.json22
-rw-r--r--vendor/ramsey/collection/src/AbstractArray.php60
-rw-r--r--vendor/ramsey/collection/src/AbstractCollection.php223
-rw-r--r--vendor/ramsey/collection/src/AbstractSet.php10
-rw-r--r--vendor/ramsey/collection/src/ArrayInterface.php4
-rw-r--r--vendor/ramsey/collection/src/Collection.php15
-rw-r--r--vendor/ramsey/collection/src/CollectionInterface.php112
-rw-r--r--vendor/ramsey/collection/src/DoubleEndedQueue.php129
-rw-r--r--vendor/ramsey/collection/src/DoubleEndedQueueInterface.php41
-rw-r--r--vendor/ramsey/collection/src/Exception/CollectionMismatchException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/InvalidArgumentException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php (renamed from vendor/ramsey/collection/src/Exception/CollectionException.php)7
-rw-r--r--vendor/ramsey/collection/src/Exception/NoSuchElementException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/OutOfBoundsException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php4
-rw-r--r--vendor/ramsey/collection/src/Exception/ValueExtractionException.php (renamed from vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php)8
-rw-r--r--vendor/ramsey/collection/src/Map/AbstractMap.php109
-rw-r--r--vendor/ramsey/collection/src/Map/AbstractTypedMap.php23
-rw-r--r--vendor/ramsey/collection/src/Map/AssociativeArrayMap.php3
-rw-r--r--vendor/ramsey/collection/src/Map/MapInterface.php57
-rw-r--r--vendor/ramsey/collection/src/Map/NamedParameterMap.php22
-rw-r--r--vendor/ramsey/collection/src/Map/TypedMap.php39
-rw-r--r--vendor/ramsey/collection/src/Map/TypedMapInterface.php3
-rw-r--r--vendor/ramsey/collection/src/Queue.php101
-rw-r--r--vendor/ramsey/collection/src/QueueInterface.php21
-rw-r--r--vendor/ramsey/collection/src/Set.php16
-rw-r--r--vendor/ramsey/collection/src/Sort.php31
-rw-r--r--vendor/ramsey/collection/src/Tool/TypeTrait.php48
-rw-r--r--vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php57
-rw-r--r--vendor/ramsey/collection/src/Tool/ValueToStringTrait.php13
-rw-r--r--vendor/sabre/http/CHANGELOG.md21
-rw-r--r--vendor/sabre/http/lib/Client.php5
-rw-r--r--vendor/sabre/http/lib/Sapi.php6
-rw-r--r--vendor/sabre/http/lib/Version.php2
-rw-r--r--vendor/sabre/uri/composer.json14
-rw-r--r--vendor/sabre/uri/lib/Version.php2
-rw-r--r--vendor/sabre/uri/lib/functions.php79
-rw-r--r--vendor/sabre/xml/lib/Deserializer/functions.php2
-rw-r--r--vendor/sabre/xml/lib/Version.php2
m---------vendor/streams/php-jcs0
-rw-r--r--vendor/symfony/polyfill-php81/LICENSE19
-rw-r--r--vendor/symfony/polyfill-php81/Php81.php37
-rw-r--r--vendor/symfony/polyfill-php81/README.md18
-rw-r--r--vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php51
-rw-r--r--vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php20
-rw-r--r--vendor/symfony/polyfill-php81/bootstrap.php28
-rw-r--r--vendor/symfony/polyfill-php81/composer.json33
121 files changed, 9982 insertions, 1473 deletions
diff --git a/vendor/chillerlan/php-qrcode/.github/FUNDING.yml b/vendor/chillerlan/php-qrcode/.github/FUNDING.yml
new file mode 100644
index 000000000..16a077f52
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+ko_fi: codemasher
+custom: "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4"
diff --git a/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml b/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml
new file mode 100644
index 000000000..9b26bb201
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml
@@ -0,0 +1,82 @@
+# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
+# https://github.com/sebastianbergmann/phpunit/blob/master/.github/workflows/ci.yml
+
+on:
+ push:
+ branches:
+ - v4.3.x
+ pull_request:
+ branches:
+ - v4.3.x
+
+name: "Continuous Integration"
+
+jobs:
+
+ static-code-analysis:
+ name: "Static Code Analysis"
+
+ runs-on: ubuntu-latest
+
+ env:
+ PHAN_ALLOW_XDEBUG: 0
+ PHAN_DISABLE_XDEBUG_WARN: 1
+
+ steps:
+ - name: "Checkout"
+ uses: actions/checkout@v3
+
+ - name: "Install PHP"
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: "7.4"
+ coverage: none
+ tools: pecl
+ extensions: ast, gd, imagick, json, mbstring
+
+ - name: "Update dependencies with composer"
+ run: composer update --no-interaction --no-ansi --no-progress --no-suggest
+
+ - name: "Run phan"
+ run: php vendor/bin/phan
+
+ tests:
+ name: "Unit Tests"
+
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ os:
+ - ubuntu-latest
+ - windows-latest
+ php-version:
+ - "7.4"
+ - "8.0"
+ - "8.1"
+
+ steps:
+# - name: "Configure git to avoid issues with line endings"
+# if: matrix.os == 'windows-latest'
+# run: git config --global core.autocrlf false
+
+ - name: "Checkout"
+ uses: actions/checkout@v3
+
+ - name: "Install PHP with extensions"
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-version }}
+ coverage: pcov
+ tools: pecl
+ extensions: gd, imagick, json, mbstring
+
+ - name: "Install dependencies with composer"
+ run: composer update --no-ansi --no-interaction --no-progress --no-suggest
+
+ - name: "Run tests with phpunit"
+ run: php vendor/bin/phpunit --configuration=phpunit.xml
+
+ - name: "Send code coverage report to Codecov.io"
+ uses: codecov/codecov-action@v3
diff --git a/vendor/chillerlan/php-qrcode/.gitignore b/vendor/chillerlan/php-qrcode/.gitignore
new file mode 100644
index 000000000..8f74009cd
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/.gitignore
@@ -0,0 +1,5 @@
+.build/*
+.idea/*
+docs/*
+vendor/*
+composer.lock
diff --git a/vendor/chillerlan/php-qrcode/.phan/config.php b/vendor/chillerlan/php-qrcode/.phan/config.php
new file mode 100644
index 000000000..442d5f7d5
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/.phan/config.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * This configuration will be read and overlaid on top of the
+ * default configuration. Command-line arguments will be applied
+ * after this file is read.
+ */
+return [
+ // Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`,
+ // `'7.4'`, `null`.
+ // If this is set to `null`,
+ // then Phan assumes the PHP version which is closest to the minor version
+ // of the php executable used to execute Phan.
+ //
+ // Note that the **only** effect of choosing `'5.6'` is to infer
+ // that functions removed in php 7.0 exist.
+ // (See `backward_compatibility_checks` for additional options)
+ 'target_php_version' => '7.4',
+
+ // A list of directories that should be parsed for class and
+ // method information. After excluding the directories
+ // defined in exclude_analysis_directory_list, the remaining
+ // files will be statically analyzed for errors.
+ //
+ // Thus, both first-party and third-party code being used by
+ // your application should be included in this list.
+ 'directory_list' => [
+ 'examples',
+ 'src',
+ 'tests',
+ 'vendor',
+ '.phan/stubs'
+ ],
+
+ // A regex used to match every file name that you want to
+ // exclude from parsing. Actual value will exclude every
+ // "test", "tests", "Test" and "Tests" folders found in
+ // "vendor/" directory.
+ 'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@',
+
+ // A directory list that defines files that will be excluded
+ // from static analysis, but whose class and method
+ // information should be included.
+ //
+ // Generally, you'll want to include the directories for
+ // third-party code (such as "vendor/") in this list.
+ //
+ // n.b.: If you'd like to parse but not analyze 3rd
+ // party code, directories containing that code
+ // should be added to both the `directory_list`
+ // and `exclude_analysis_directory_list` arrays.
+ 'exclude_analysis_directory_list' => [
+ 'vendor/',
+ '.phan/stubs'
+ ],
+];
diff --git a/vendor/chillerlan/php-qrcode/.phan/stubs/imagick.php b/vendor/chillerlan/php-qrcode/.phan/stubs/imagick.php
new file mode 100644
index 000000000..508d2018f
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/.phan/stubs/imagick.php
@@ -0,0 +1,6744 @@
+<?php
+
+// Start of imagick v.3.4.3
+
+class ImagickException extends Exception {
+}
+
+class ImagickDrawException extends Exception {
+}
+
+class ImagickPixelIteratorException extends Exception {
+}
+
+class ImagickPixelException extends Exception {
+}
+
+/**
+ * @method Imagick clone() (PECL imagick 2.0.0)<br/>Makes an exact copy of the Imagick object
+ * @link https://php.net/manual/en/class.imagick.php
+ */
+class Imagick implements Iterator, Countable {
+ const COLOR_BLACK = 11;
+ const COLOR_BLUE = 12;
+ const COLOR_CYAN = 13;
+ const COLOR_GREEN = 14;
+ const COLOR_RED = 15;
+ const COLOR_YELLOW = 16;
+ const COLOR_MAGENTA = 17;
+ const COLOR_OPACITY = 18;
+ const COLOR_ALPHA = 19;
+ const COLOR_FUZZ = 20;
+ const IMAGICK_EXTNUM = 30403;
+ const IMAGICK_EXTVER = "3.4.3";
+ const QUANTUM_RANGE = 65535;
+ const USE_ZEND_MM = 0;
+ const COMPOSITE_DEFAULT = 40;
+ const COMPOSITE_UNDEFINED = 0;
+ const COMPOSITE_NO = 1;
+ const COMPOSITE_ADD = 2;
+ const COMPOSITE_ATOP = 3;
+ const COMPOSITE_BLEND = 4;
+ const COMPOSITE_BUMPMAP = 5;
+ const COMPOSITE_CLEAR = 7;
+ const COMPOSITE_COLORBURN = 8;
+ const COMPOSITE_COLORDODGE = 9;
+ const COMPOSITE_COLORIZE = 10;
+ const COMPOSITE_COPYBLACK = 11;
+ const COMPOSITE_COPYBLUE = 12;
+ const COMPOSITE_COPY = 13;
+ const COMPOSITE_COPYCYAN = 14;
+ const COMPOSITE_COPYGREEN = 15;
+ const COMPOSITE_COPYMAGENTA = 16;
+ const COMPOSITE_COPYOPACITY = 17;
+ const COMPOSITE_COPYRED = 18;
+ const COMPOSITE_COPYYELLOW = 19;
+ const COMPOSITE_DARKEN = 20;
+ const COMPOSITE_DSTATOP = 21;
+ const COMPOSITE_DST = 22;
+ const COMPOSITE_DSTIN = 23;
+ const COMPOSITE_DSTOUT = 24;
+ const COMPOSITE_DSTOVER = 25;
+ const COMPOSITE_DIFFERENCE = 26;
+ const COMPOSITE_DISPLACE = 27;
+ const COMPOSITE_DISSOLVE = 28;
+ const COMPOSITE_EXCLUSION = 29;
+ const COMPOSITE_HARDLIGHT = 30;
+ const COMPOSITE_HUE = 31;
+ const COMPOSITE_IN = 32;
+ const COMPOSITE_LIGHTEN = 33;
+ const COMPOSITE_LUMINIZE = 35;
+ const COMPOSITE_MINUS = 36;
+ const COMPOSITE_MODULATE = 37;
+ const COMPOSITE_MULTIPLY = 38;
+ const COMPOSITE_OUT = 39;
+ const COMPOSITE_OVER = 40;
+ const COMPOSITE_OVERLAY = 41;
+ const COMPOSITE_PLUS = 42;
+ const COMPOSITE_REPLACE = 43;
+ const COMPOSITE_SATURATE = 44;
+ const COMPOSITE_SCREEN = 45;
+ const COMPOSITE_SOFTLIGHT = 46;
+ const COMPOSITE_SRCATOP = 47;
+ const COMPOSITE_SRC = 48;
+ const COMPOSITE_SRCIN = 49;
+ const COMPOSITE_SRCOUT = 50;
+ const COMPOSITE_SRCOVER = 51;
+ const COMPOSITE_SUBTRACT = 52;
+ const COMPOSITE_THRESHOLD = 53;
+ const COMPOSITE_XOR = 54;
+ const COMPOSITE_CHANGEMASK = 6;
+ const COMPOSITE_LINEARLIGHT = 34;
+ const COMPOSITE_DIVIDE = 55;
+ const COMPOSITE_DISTORT = 56;
+ const COMPOSITE_BLUR = 57;
+ const COMPOSITE_PEGTOPLIGHT = 58;
+ const COMPOSITE_VIVIDLIGHT = 59;
+ const COMPOSITE_PINLIGHT = 60;
+ const COMPOSITE_LINEARDODGE = 61;
+ const COMPOSITE_LINEARBURN = 62;
+ const COMPOSITE_MATHEMATICS = 63;
+ const COMPOSITE_MODULUSADD = 2;
+ const COMPOSITE_MODULUSSUBTRACT = 52;
+ const COMPOSITE_MINUSDST = 36;
+ const COMPOSITE_DIVIDEDST = 55;
+ const COMPOSITE_DIVIDESRC = 64;
+ const COMPOSITE_MINUSSRC = 65;
+ const COMPOSITE_DARKENINTENSITY = 66;
+ const COMPOSITE_LIGHTENINTENSITY = 67;
+ const MONTAGEMODE_FRAME = 1;
+ const MONTAGEMODE_UNFRAME = 2;
+ const MONTAGEMODE_CONCATENATE = 3;
+ const STYLE_NORMAL = 1;
+ const STYLE_ITALIC = 2;
+ const STYLE_OBLIQUE = 3;
+ const STYLE_ANY = 4;
+ const FILTER_UNDEFINED = 0;
+ const FILTER_POINT = 1;
+ const FILTER_BOX = 2;
+ const FILTER_TRIANGLE = 3;
+ const FILTER_HERMITE = 4;
+ const FILTER_HANNING = 5;
+ const FILTER_HAMMING = 6;
+ const FILTER_BLACKMAN = 7;
+ const FILTER_GAUSSIAN = 8;
+ const FILTER_QUADRATIC = 9;
+ const FILTER_CUBIC = 10;
+ const FILTER_CATROM = 11;
+ const FILTER_MITCHELL = 12;
+ const FILTER_LANCZOS = 22;
+ const FILTER_BESSEL = 13;
+ const FILTER_SINC = 14;
+ const FILTER_KAISER = 16;
+ const FILTER_WELSH = 17;
+ const FILTER_PARZEN = 18;
+ const FILTER_LAGRANGE = 21;
+ const FILTER_SENTINEL = 31;
+ const FILTER_BOHMAN = 19;
+ const FILTER_BARTLETT = 20;
+ const FILTER_JINC = 13;
+ const FILTER_SINCFAST = 15;
+ const FILTER_ROBIDOUX = 26;
+ const FILTER_LANCZOSSHARP = 23;
+ const FILTER_LANCZOS2 = 24;
+ const FILTER_LANCZOS2SHARP = 25;
+ const FILTER_ROBIDOUXSHARP = 27;
+ const FILTER_COSINE = 28;
+ const FILTER_SPLINE = 29;
+ const FILTER_LANCZOSRADIUS = 30;
+ const IMGTYPE_UNDEFINED = 0;
+ const IMGTYPE_BILEVEL = 1;
+ const IMGTYPE_GRAYSCALE = 2;
+ const IMGTYPE_GRAYSCALEMATTE = 3;
+ const IMGTYPE_PALETTE = 4;
+ const IMGTYPE_PALETTEMATTE = 5;
+ const IMGTYPE_TRUECOLOR = 6;
+ const IMGTYPE_TRUECOLORMATTE = 7;
+ const IMGTYPE_COLORSEPARATION = 8;
+ const IMGTYPE_COLORSEPARATIONMATTE = 9;
+ const IMGTYPE_OPTIMIZE = 10;
+ const IMGTYPE_PALETTEBILEVELMATTE = 11;
+ const RESOLUTION_UNDEFINED = 0;
+ const RESOLUTION_PIXELSPERINCH = 1;
+ const RESOLUTION_PIXELSPERCENTIMETER = 2;
+ const COMPRESSION_UNDEFINED = 0;
+ const COMPRESSION_NO = 1;
+ const COMPRESSION_BZIP = 2;
+ const COMPRESSION_FAX = 6;
+ const COMPRESSION_GROUP4 = 7;
+ const COMPRESSION_JPEG = 8;
+ const COMPRESSION_JPEG2000 = 9;
+ const COMPRESSION_LOSSLESSJPEG = 10;
+ const COMPRESSION_LZW = 11;
+ const COMPRESSION_RLE = 12;
+ const COMPRESSION_ZIP = 13;
+ const COMPRESSION_DXT1 = 3;
+ const COMPRESSION_DXT3 = 4;
+ const COMPRESSION_DXT5 = 5;
+ const COMPRESSION_ZIPS = 14;
+ const COMPRESSION_PIZ = 15;
+ const COMPRESSION_PXR24 = 16;
+ const COMPRESSION_B44 = 17;
+ const COMPRESSION_B44A = 18;
+ const COMPRESSION_LZMA = 19;
+ const COMPRESSION_JBIG1 = 20;
+ const COMPRESSION_JBIG2 = 21;
+ const PAINT_POINT = 1;
+ const PAINT_REPLACE = 2;
+ const PAINT_FLOODFILL = 3;
+ const PAINT_FILLTOBORDER = 4;
+ const PAINT_RESET = 5;
+ const GRAVITY_NORTHWEST = 1;
+ const GRAVITY_NORTH = 2;
+ const GRAVITY_NORTHEAST = 3;
+ const GRAVITY_WEST = 4;
+ const GRAVITY_CENTER = 5;
+ const GRAVITY_EAST = 6;
+ const GRAVITY_SOUTHWEST = 7;
+ const GRAVITY_SOUTH = 8;
+ const GRAVITY_SOUTHEAST = 9;
+ const GRAVITY_FORGET = 0;
+ const GRAVITY_STATIC = 10;
+ const STRETCH_NORMAL = 1;
+ const STRETCH_ULTRACONDENSED = 2;
+ const STRETCH_EXTRACONDENSED = 3;
+ const STRETCH_CONDENSED = 4;
+ const STRETCH_SEMICONDENSED = 5;
+ const STRETCH_SEMIEXPANDED = 6;
+ const STRETCH_EXPANDED = 7;
+ const STRETCH_EXTRAEXPANDED = 8;
+ const STRETCH_ULTRAEXPANDED = 9;
+ const STRETCH_ANY = 10;
+ const ALIGN_UNDEFINED = 0;
+ const ALIGN_LEFT = 1;
+ const ALIGN_CENTER = 2;
+ const ALIGN_RIGHT = 3;
+ const DECORATION_NO = 1;
+ const DECORATION_UNDERLINE = 2;
+ const DECORATION_OVERLINE = 3;
+ const DECORATION_LINETROUGH = 4;
+ const DECORATION_LINETHROUGH = 4;
+ const NOISE_UNIFORM = 1;
+ const NOISE_GAUSSIAN = 2;
+ const NOISE_MULTIPLICATIVEGAUSSIAN = 3;
+ const NOISE_IMPULSE = 4;
+ const NOISE_LAPLACIAN = 5;
+ const NOISE_POISSON = 6;
+ const NOISE_RANDOM = 7;
+ const CHANNEL_UNDEFINED = 0;
+ const CHANNEL_RED = 1;
+ const CHANNEL_GRAY = 1;
+ const CHANNEL_CYAN = 1;
+ const CHANNEL_GREEN = 2;
+ const CHANNEL_MAGENTA = 2;
+ const CHANNEL_BLUE = 4;
+ const CHANNEL_YELLOW = 4;
+ const CHANNEL_ALPHA = 8;
+ const CHANNEL_OPACITY = 8;
+ const CHANNEL_MATTE = 8;
+ const CHANNEL_BLACK = 32;
+ const CHANNEL_INDEX = 32;
+ const CHANNEL_ALL = 134217727;
+ const CHANNEL_DEFAULT = 134217719;
+ const CHANNEL_RGBA = 15;
+ const CHANNEL_TRUEALPHA = 64;
+ const CHANNEL_RGBS = 128;
+ const CHANNEL_GRAY_CHANNELS = 128;
+ const CHANNEL_SYNC = 256;
+ const CHANNEL_COMPOSITES = 47;
+ const METRIC_UNDEFINED = 0;
+ const METRIC_ABSOLUTEERRORMETRIC = 1;
+ const METRIC_MEANABSOLUTEERROR = 2;
+ const METRIC_MEANERRORPERPIXELMETRIC = 3;
+ const METRIC_MEANSQUAREERROR = 4;
+ const METRIC_PEAKABSOLUTEERROR = 5;
+ const METRIC_PEAKSIGNALTONOISERATIO = 6;
+ const METRIC_ROOTMEANSQUAREDERROR = 7;
+ const METRIC_NORMALIZEDCROSSCORRELATIONERRORMETRIC = 8;
+ const METRIC_FUZZERROR = 9;
+ const PIXEL_CHAR = 1;
+ const PIXEL_DOUBLE = 2;
+ const PIXEL_FLOAT = 3;
+ const PIXEL_INTEGER = 4;
+ const PIXEL_LONG = 5;
+ const PIXEL_QUANTUM = 6;
+ const PIXEL_SHORT = 7;
+ const EVALUATE_UNDEFINED = 0;
+ const EVALUATE_ADD = 1;
+ const EVALUATE_AND = 2;
+ const EVALUATE_DIVIDE = 3;
+ const EVALUATE_LEFTSHIFT = 4;
+ const EVALUATE_MAX = 5;
+ const EVALUATE_MIN = 6;
+ const EVALUATE_MULTIPLY = 7;
+ const EVALUATE_OR = 8;
+ const EVALUATE_RIGHTSHIFT = 9;
+ const EVALUATE_SET = 10;
+ const EVALUATE_SUBTRACT = 11;
+ const EVALUATE_XOR = 12;
+ const EVALUATE_POW = 13;
+ const EVALUATE_LOG = 14;
+ const EVALUATE_THRESHOLD = 15;
+ const EVALUATE_THRESHOLDBLACK = 16;
+ const EVALUATE_THRESHOLDWHITE = 17;
+ const EVALUATE_GAUSSIANNOISE = 18;
+ const EVALUATE_IMPULSENOISE = 19;
+ const EVALUATE_LAPLACIANNOISE = 20;
+ const EVALUATE_MULTIPLICATIVENOISE = 21;
+ const EVALUATE_POISSONNOISE = 22;
+ const EVALUATE_UNIFORMNOISE = 23;
+ const EVALUATE_COSINE = 24;
+ const EVALUATE_SINE = 25;
+ const EVALUATE_ADDMODULUS = 26;
+ const EVALUATE_MEAN = 27;
+ const EVALUATE_ABS = 28;
+ const EVALUATE_EXPONENTIAL = 29;
+ const EVALUATE_MEDIAN = 30;
+ const EVALUATE_SUM = 31;
+ const COLORSPACE_UNDEFINED = 0;
+ const COLORSPACE_RGB = 1;
+ const COLORSPACE_GRAY = 2;
+ const COLORSPACE_TRANSPARENT = 3;
+ const COLORSPACE_OHTA = 4;
+ const COLORSPACE_LAB = 5;
+ const COLORSPACE_XYZ = 6;
+ const COLORSPACE_YCBCR = 7;
+ const COLORSPACE_YCC = 8;
+ const COLORSPACE_YIQ = 9;
+ const COLORSPACE_YPBPR = 10;
+ const COLORSPACE_YUV = 11;
+ const COLORSPACE_CMYK = 12;
+ const COLORSPACE_SRGB = 13;
+ const COLORSPACE_HSB = 14;
+ const COLORSPACE_HSL = 15;
+ const COLORSPACE_HWB = 16;
+ const COLORSPACE_REC601LUMA = 17;
+ const COLORSPACE_REC709LUMA = 19;
+ const COLORSPACE_LOG = 21;
+ const COLORSPACE_CMY = 22;
+ const COLORSPACE_LUV = 23;
+ const COLORSPACE_HCL = 24;
+ const COLORSPACE_LCH = 25;
+ const COLORSPACE_LMS = 26;
+ const COLORSPACE_LCHAB = 27;
+ const COLORSPACE_LCHUV = 28;
+ const COLORSPACE_SCRGB = 29;
+ const COLORSPACE_HSI = 30;
+ const COLORSPACE_HSV = 31;
+ const COLORSPACE_HCLP = 32;
+ const COLORSPACE_YDBDR = 33;
+ const COLORSPACE_REC601YCBCR = 18;
+ const COLORSPACE_REC709YCBCR = 20;
+ const VIRTUALPIXELMETHOD_UNDEFINED = 0;
+ const VIRTUALPIXELMETHOD_BACKGROUND = 1;
+ const VIRTUALPIXELMETHOD_CONSTANT = 2;
+ const VIRTUALPIXELMETHOD_EDGE = 4;
+ const VIRTUALPIXELMETHOD_MIRROR = 5;
+ const VIRTUALPIXELMETHOD_TILE = 7;
+ const VIRTUALPIXELMETHOD_TRANSPARENT = 8;
+ const VIRTUALPIXELMETHOD_MASK = 9;
+ const VIRTUALPIXELMETHOD_BLACK = 10;
+ const VIRTUALPIXELMETHOD_GRAY = 11;
+ const VIRTUALPIXELMETHOD_WHITE = 12;
+ const VIRTUALPIXELMETHOD_HORIZONTALTILE = 13;
+ const VIRTUALPIXELMETHOD_VERTICALTILE = 14;
+ const VIRTUALPIXELMETHOD_HORIZONTALTILEEDGE = 15;
+ const VIRTUALPIXELMETHOD_VERTICALTILEEDGE = 16;
+ const VIRTUALPIXELMETHOD_CHECKERTILE = 17;
+ const PREVIEW_UNDEFINED = 0;
+ const PREVIEW_ROTATE = 1;
+ const PREVIEW_SHEAR = 2;
+ const PREVIEW_ROLL = 3;
+ const PREVIEW_HUE = 4;
+ const PREVIEW_SATURATION = 5;
+ const PREVIEW_BRIGHTNESS = 6;
+ const PREVIEW_GAMMA = 7;
+ const PREVIEW_SPIFF = 8;
+ const PREVIEW_DULL = 9;
+ const PREVIEW_GRAYSCALE = 10;
+ const PREVIEW_QUANTIZE = 11;
+ const PREVIEW_DESPECKLE = 12;
+ const PREVIEW_REDUCENOISE = 13;
+ const PREVIEW_ADDNOISE = 14;
+ const PREVIEW_SHARPEN = 15;
+ const PREVIEW_BLUR = 16;
+ const PREVIEW_THRESHOLD = 17;
+ const PREVIEW_EDGEDETECT = 18;
+ const PREVIEW_SPREAD = 19;
+ const PREVIEW_SOLARIZE = 20;
+ const PREVIEW_SHADE = 21;
+ const PREVIEW_RAISE = 22;
+ const PREVIEW_SEGMENT = 23;
+ const PREVIEW_SWIRL = 24;
+ const PREVIEW_IMPLODE = 25;
+ const PREVIEW_WAVE = 26;
+ const PREVIEW_OILPAINT = 27;
+ const PREVIEW_CHARCOALDRAWING = 28;
+ const PREVIEW_JPEG = 29;
+ const RENDERINGINTENT_UNDEFINED = 0;
+ const RENDERINGINTENT_SATURATION = 1;
+ const RENDERINGINTENT_PERCEPTUAL = 2;
+ const RENDERINGINTENT_ABSOLUTE = 3;
+ const RENDERINGINTENT_RELATIVE = 4;
+ const INTERLACE_UNDEFINED = 0;
+ const INTERLACE_NO = 1;
+ const INTERLACE_LINE = 2;
+ const INTERLACE_PLANE = 3;
+ const INTERLACE_PARTITION = 4;
+ const INTERLACE_GIF = 5;
+ const INTERLACE_JPEG = 6;
+ const INTERLACE_PNG = 7;
+ const FILLRULE_UNDEFINED = 0;
+ const FILLRULE_EVENODD = 1;
+ const FILLRULE_NONZERO = 2;
+ const PATHUNITS_UNDEFINED = 0;
+ const PATHUNITS_USERSPACE = 1;
+ const PATHUNITS_USERSPACEONUSE = 2;
+ const PATHUNITS_OBJECTBOUNDINGBOX = 3;
+ const LINECAP_UNDEFINED = 0;
+ const LINECAP_BUTT = 1;
+ const LINECAP_ROUND = 2;
+ const LINECAP_SQUARE = 3;
+ const LINEJOIN_UNDEFINED = 0;
+ const LINEJOIN_MITER = 1;
+ const LINEJOIN_ROUND = 2;
+ const LINEJOIN_BEVEL = 3;
+ const RESOURCETYPE_UNDEFINED = 0;
+ const RESOURCETYPE_AREA = 1;
+ const RESOURCETYPE_DISK = 2;
+ const RESOURCETYPE_FILE = 3;
+ const RESOURCETYPE_MAP = 4;
+ const RESOURCETYPE_MEMORY = 5;
+ const RESOURCETYPE_TIME = 7;
+ const RESOURCETYPE_THROTTLE = 8;
+ const RESOURCETYPE_THREAD = 6;
+ const DISPOSE_UNRECOGNIZED = 0;
+ const DISPOSE_UNDEFINED = 0;
+ const DISPOSE_NONE = 1;
+ const DISPOSE_BACKGROUND = 2;
+ const DISPOSE_PREVIOUS = 3;
+ const INTERPOLATE_UNDEFINED = 0;
+ const INTERPOLATE_AVERAGE = 1;
+ const INTERPOLATE_BICUBIC = 2;
+ const INTERPOLATE_BILINEAR = 3;
+ const INTERPOLATE_FILTER = 4;
+ const INTERPOLATE_INTEGER = 5;
+ const INTERPOLATE_MESH = 6;
+ const INTERPOLATE_NEARESTNEIGHBOR = 7;
+ const INTERPOLATE_SPLINE = 8;
+ const LAYERMETHOD_UNDEFINED = 0;
+ const LAYERMETHOD_COALESCE = 1;
+ const LAYERMETHOD_COMPAREANY = 2;
+ const LAYERMETHOD_COMPARECLEAR = 3;
+ const LAYERMETHOD_COMPAREOVERLAY = 4;
+ const LAYERMETHOD_DISPOSE = 5;
+ const LAYERMETHOD_OPTIMIZE = 6;
+ const LAYERMETHOD_OPTIMIZEPLUS = 8;
+ const LAYERMETHOD_OPTIMIZETRANS = 9;
+ const LAYERMETHOD_COMPOSITE = 12;
+ const LAYERMETHOD_OPTIMIZEIMAGE = 7;
+ const LAYERMETHOD_REMOVEDUPS = 10;
+ const LAYERMETHOD_REMOVEZERO = 11;
+ const LAYERMETHOD_TRIMBOUNDS = 16;
+ const ORIENTATION_UNDEFINED = 0;
+ const ORIENTATION_TOPLEFT = 1;
+ const ORIENTATION_TOPRIGHT = 2;
+ const ORIENTATION_BOTTOMRIGHT = 3;
+ const ORIENTATION_BOTTOMLEFT = 4;
+ const ORIENTATION_LEFTTOP = 5;
+ const ORIENTATION_RIGHTTOP = 6;
+ const ORIENTATION_RIGHTBOTTOM = 7;
+ const ORIENTATION_LEFTBOTTOM = 8;
+ const DISTORTION_UNDEFINED = 0;
+ const DISTORTION_AFFINE = 1;
+ const DISTORTION_AFFINEPROJECTION = 2;
+ const DISTORTION_ARC = 9;
+ const DISTORTION_BILINEAR = 6;
+ const DISTORTION_PERSPECTIVE = 4;
+ const DISTORTION_PERSPECTIVEPROJECTION = 5;
+ const DISTORTION_SCALEROTATETRANSLATE = 3;
+ const DISTORTION_POLYNOMIAL = 8;
+ const DISTORTION_POLAR = 10;
+ const DISTORTION_DEPOLAR = 11;
+ const DISTORTION_BARREL = 14;
+ const DISTORTION_SHEPARDS = 16;
+ const DISTORTION_SENTINEL = 18;
+ const DISTORTION_BARRELINVERSE = 15;
+ const DISTORTION_BILINEARFORWARD = 6;
+ const DISTORTION_BILINEARREVERSE = 7;
+ const DISTORTION_RESIZE = 17;
+ const DISTORTION_CYLINDER2PLANE = 12;
+ const DISTORTION_PLANE2CYLINDER = 13;
+ const LAYERMETHOD_MERGE = 13;
+ const LAYERMETHOD_FLATTEN = 14;
+ const LAYERMETHOD_MOSAIC = 15;
+ const ALPHACHANNEL_ACTIVATE = 1;
+ const ALPHACHANNEL_RESET = 7;
+ const ALPHACHANNEL_SET = 8;
+ const ALPHACHANNEL_UNDEFINED = 0;
+ const ALPHACHANNEL_COPY = 3;
+ const ALPHACHANNEL_DEACTIVATE = 4;
+ const ALPHACHANNEL_EXTRACT = 5;
+ const ALPHACHANNEL_OPAQUE = 6;
+ const ALPHACHANNEL_SHAPE = 9;
+ const ALPHACHANNEL_TRANSPARENT = 10;
+ const SPARSECOLORMETHOD_UNDEFINED = 0;
+ const SPARSECOLORMETHOD_BARYCENTRIC = 1;
+ const SPARSECOLORMETHOD_BILINEAR = 7;
+ const SPARSECOLORMETHOD_POLYNOMIAL = 8;
+ const SPARSECOLORMETHOD_SPEPARDS = 16;
+ const SPARSECOLORMETHOD_VORONOI = 18;
+ const SPARSECOLORMETHOD_INVERSE = 19;
+ const DITHERMETHOD_UNDEFINED = 0;
+ const DITHERMETHOD_NO = 1;
+ const DITHERMETHOD_RIEMERSMA = 2;
+ const DITHERMETHOD_FLOYDSTEINBERG = 3;
+ const FUNCTION_UNDEFINED = 0;
+ const FUNCTION_POLYNOMIAL = 1;
+ const FUNCTION_SINUSOID = 2;
+ const ALPHACHANNEL_BACKGROUND = 2;
+ const FUNCTION_ARCSIN = 3;
+ const FUNCTION_ARCTAN = 4;
+ const ALPHACHANNEL_FLATTEN = 11;
+ const ALPHACHANNEL_REMOVE = 12;
+ const STATISTIC_GRADIENT = 1;
+ const STATISTIC_MAXIMUM = 2;
+ const STATISTIC_MEAN = 3;
+ const STATISTIC_MEDIAN = 4;
+ const STATISTIC_MINIMUM = 5;
+ const STATISTIC_MODE = 6;
+ const STATISTIC_NONPEAK = 7;
+ const STATISTIC_STANDARD_DEVIATION = 8;
+ const MORPHOLOGY_CONVOLVE = 1;
+ const MORPHOLOGY_CORRELATE = 2;
+ const MORPHOLOGY_ERODE = 3;
+ const MORPHOLOGY_DILATE = 4;
+ const MORPHOLOGY_ERODE_INTENSITY = 5;
+ const MORPHOLOGY_DILATE_INTENSITY = 6;
+ const MORPHOLOGY_DISTANCE = 7;
+ const MORPHOLOGY_OPEN = 8;
+ const MORPHOLOGY_CLOSE = 9;
+ const MORPHOLOGY_OPEN_INTENSITY = 10;
+ const MORPHOLOGY_CLOSE_INTENSITY = 11;
+ const MORPHOLOGY_SMOOTH = 12;
+ const MORPHOLOGY_EDGE_IN = 13;
+ const MORPHOLOGY_EDGE_OUT = 14;
+ const MORPHOLOGY_EDGE = 15;
+ const MORPHOLOGY_TOP_HAT = 16;
+ const MORPHOLOGY_BOTTOM_HAT = 17;
+ const MORPHOLOGY_HIT_AND_MISS = 18;
+ const MORPHOLOGY_THINNING = 19;
+ const MORPHOLOGY_THICKEN = 20;
+ const MORPHOLOGY_VORONOI = 21;
+ const MORPHOLOGY_ITERATIVE = 22;
+ const KERNEL_UNITY = 1;
+ const KERNEL_GAUSSIAN = 2;
+ const KERNEL_DIFFERENCE_OF_GAUSSIANS = 3;
+ const KERNEL_LAPLACIAN_OF_GAUSSIANS = 4;
+ const KERNEL_BLUR = 5;
+ const KERNEL_COMET = 6;
+ const KERNEL_LAPLACIAN = 7;
+ const KERNEL_SOBEL = 8;
+ const KERNEL_FREI_CHEN = 9;
+ const KERNEL_ROBERTS = 10;
+ const KERNEL_PREWITT = 11;
+ const KERNEL_COMPASS = 12;
+ const KERNEL_KIRSCH = 13;
+ const KERNEL_DIAMOND = 14;
+ const KERNEL_SQUARE = 15;
+ const KERNEL_RECTANGLE = 16;
+ const KERNEL_OCTAGON = 17;
+ const KERNEL_DISK = 18;
+ const KERNEL_PLUS = 19;
+ const KERNEL_CROSS = 20;
+ const KERNEL_RING = 21;
+ const KERNEL_PEAKS = 22;
+ const KERNEL_EDGES = 23;
+ const KERNEL_CORNERS = 24;
+ const KERNEL_DIAGONALS = 25;
+ const KERNEL_LINE_ENDS = 26;
+ const KERNEL_LINE_JUNCTIONS = 27;
+ const KERNEL_RIDGES = 28;
+ const KERNEL_CONVEX_HULL = 29;
+ const KERNEL_THIN_SE = 30;
+ const KERNEL_SKELETON = 31;
+ const KERNEL_CHEBYSHEV = 32;
+ const KERNEL_MANHATTAN = 33;
+ const KERNEL_OCTAGONAL = 34;
+ const KERNEL_EUCLIDEAN = 35;
+ const KERNEL_USER_DEFINED = 36;
+ const KERNEL_BINOMIAL = 37;
+ const DIRECTION_LEFT_TO_RIGHT = 2;
+ const DIRECTION_RIGHT_TO_LEFT = 1;
+ const NORMALIZE_KERNEL_NONE = 0;
+ const NORMALIZE_KERNEL_VALUE = 8192;
+ const NORMALIZE_KERNEL_CORRELATE = 65536;
+ const NORMALIZE_KERNEL_PERCENT = 4096;
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Removes repeated portions of images to optimize
+ * @link https://php.net/manual/en/imagick.optimizeimagelayers.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function optimizeImageLayers () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the maximum bounding region between images
+ * @link https://php.net/manual/en/imagick.compareimagelayers.php
+ * @param int $method <p>
+ * One of the layer method constants.
+ * </p>
+ * @return Imagick <b>TRUE</b> on success.
+ */
+ public function compareImageLayers ($method) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Quickly fetch attributes
+ * @link https://php.net/manual/en/imagick.pingimageblob.php
+ * @param string $image <p>
+ * A string containing the image.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function pingImageBlob ($image) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Get basic image attributes in a lightweight manner
+ * @link https://php.net/manual/en/imagick.pingimagefile.php
+ * @param resource $filehandle <p>
+ * An open filehandle to the image.
+ * </p>
+ * @param string $fileName [optional] <p>
+ * Optional filename for this image.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function pingImageFile ($filehandle, $fileName = null) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a vertical mirror image
+ * @link https://php.net/manual/en/imagick.transposeimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function transposeImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a horizontal mirror image
+ * @link https://php.net/manual/en/imagick.transverseimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function transverseImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Remove edges from the image
+ * @link https://php.net/manual/en/imagick.trimimage.php
+ * @param float $fuzz <p>
+ * By default target must match a particular pixel color exactly.
+ * However, in many cases two colors may differ by a small amount.
+ * The fuzz member of image defines how much tolerance is acceptable
+ * to consider two colors as the same. This parameter represents the variation
+ * on the quantum range.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function trimImage ($fuzz) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Applies wave filter to the image
+ * @link https://php.net/manual/en/imagick.waveimage.php
+ * @param float $amplitude <p>
+ * The amplitude of the wave.
+ * </p>
+ * @param float $length <p>
+ * The length of the wave.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function waveImage ($amplitude, $length) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds vignette filter to the image
+ * @link https://php.net/manual/en/imagick.vignetteimage.php
+ * @param float $blackPoint <p>
+ * The black point.
+ * </p>
+ * @param float $whitePoint <p>
+ * The white point
+ * </p>
+ * @param int $x <p>
+ * X offset of the ellipse
+ * </p>
+ * @param int $y <p>
+ * Y offset of the ellipse
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function vignetteImage ($blackPoint, $whitePoint, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Discards all but one of any pixel color
+ * @link https://php.net/manual/en/imagick.uniqueimagecolors.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function uniqueImageColors () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Return if the image has a matte channel
+ * @link https://php.net/manual/en/imagick.getimagematte.php
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function getImageMatte () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image matte channel
+ * @link https://php.net/manual/en/imagick.setimagematte.php
+ * @param bool $matte <p>
+ * True activates the matte channel and false disables it.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageMatte ($matte) {}
+
+ /**
+ * Adaptively resize image with data dependent triangulation
+ *
+ * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.<br>
+ * If false, the calculations should produce the same results as ImageMagick CLI does.<br>
+ * <br>
+ * <b>Note:</b> The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched.
+ * In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
+ * @link https://php.net/manual/en/imagick.adaptiveresizeimage.php
+ * @param int $columns The number of columns in the scaled image.
+ * @param int $rows The number of rows in the scaled image.
+ * @param bool $bestfit [optional] Whether to fit the image inside a bounding box.<br>
+ * The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
+ * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
+ * @return bool TRUE on success
+ * @throws ImagickException Throws ImagickException on error
+ * @since 2.0.0
+ */
+ public function adaptiveResizeImage ($columns, $rows, $bestfit = false, $legacy = false) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Simulates a pencil sketch
+ * @link https://php.net/manual/en/imagick.sketchimage.php
+ * @param float $radius <p>
+ * The radius of the Gaussian, in pixels, not counting the center pixel
+ * </p>
+ * @param float $sigma <p>
+ * The standard deviation of the Gaussian, in pixels.
+ * </p>
+ * @param float $angle <p>
+ * Apply the effect along this angle.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function sketchImage ($radius, $sigma, $angle) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a 3D effect
+ * @link https://php.net/manual/en/imagick.shadeimage.php
+ * @param bool $gray <p>
+ * A value other than zero shades the intensity of each pixel.
+ * </p>
+ * @param float $azimuth <p>
+ * Defines the light source direction.
+ * </p>
+ * @param float $elevation <p>
+ * Defines the light source direction.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function shadeImage ($gray, $azimuth, $elevation) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the size offset
+ * @link https://php.net/manual/en/imagick.getsizeoffset.php
+ * @return int the size offset associated with the Imagick object.
+ */
+ public function getSizeOffset () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the size and offset of the Imagick object
+ * @link https://php.net/manual/en/imagick.setsizeoffset.php
+ * @param int $columns <p>
+ * The width in pixels.
+ * </p>
+ * @param int $rows <p>
+ * The height in pixels.
+ * </p>
+ * @param int $offset <p>
+ * The image offset.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setSizeOffset ($columns, $rows, $offset) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds adaptive blur filter to image
+ * @link https://php.net/manual/en/imagick.adaptiveblurimage.php
+ * @param float $radius <p>
+ * The radius of the Gaussian, in pixels, not counting the center pixel.
+ * Provide a value of 0 and the radius will be chosen automagically.
+ * </p>
+ * @param float $sigma <p>
+ * The standard deviation of the Gaussian, in pixels.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function adaptiveBlurImage ($radius, $sigma, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Enhances the contrast of a color image
+ * @link https://php.net/manual/en/imagick.contraststretchimage.php
+ * @param float $black_point <p>
+ * The black point.
+ * </p>
+ * @param float $white_point <p>
+ * The white point.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. <b>Imagick::CHANNEL_ALL</b>. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function contrastStretchImage ($black_point, $white_point, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adaptively sharpen the image
+ * @link https://php.net/manual/en/imagick.adaptivesharpenimage.php
+ * @param float $radius <p>
+ * The radius of the Gaussian, in pixels, not counting the center pixel. Use 0 for auto-select.
+ * </p>
+ * @param float $sigma <p>
+ * The standard deviation of the Gaussian, in pixels.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function adaptiveSharpenImage ($radius, $sigma, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a high-contrast, two-color image
+ * @link https://php.net/manual/en/imagick.randomthresholdimage.php
+ * @param float $low <p>
+ * The low point
+ * </p>
+ * @param float $high <p>
+ * The high point
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function randomThresholdImage ($low, $high, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * @param $xRounding
+ * @param $yRounding
+ * @param $strokeWidth [optional]
+ * @param $displace [optional]
+ * @param $sizeCorrection [optional]
+ */
+ public function roundCornersImage ($xRounding, $yRounding, $strokeWidth, $displace, $sizeCorrection) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Rounds image corners
+ * @link https://php.net/manual/en/imagick.roundcorners.php
+ * @param float $x_rounding <p>
+ * x rounding
+ * </p>
+ * @param float $y_rounding <p>
+ * y rounding
+ * </p>
+ * @param float $stroke_width [optional] <p>
+ * stroke width
+ * </p>
+ * @param float $displace [optional] <p>
+ * image displace
+ * </p>
+ * @param float $size_correction [optional] <p>
+ * size correction
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function roundCorners ($x_rounding, $y_rounding, $stroke_width = 10.0, $displace = 5.0, $size_correction = -6.0) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Set the iterator position
+ * @link https://php.net/manual/en/imagick.setiteratorindex.php
+ * @param int $index <p>
+ * The position to set the iterator to
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setIteratorIndex ($index) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the index of the current active image
+ * @link https://php.net/manual/en/imagick.getiteratorindex.php
+ * @return int an integer containing the index of the image in the stack.
+ */
+ public function getIteratorIndex () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Convenience method for setting crop size and the image geometry
+ * @link https://php.net/manual/en/imagick.transformimage.php
+ * @param string $crop <p>
+ * A crop geometry string. This geometry defines a subregion of the image to crop.
+ * </p>
+ * @param string $geometry <p>
+ * An image geometry string. This geometry defines the final size of the image.
+ * </p>
+ * @return Imagick <b>TRUE</b> on success.
+ */
+ public function transformImage ($crop, $geometry) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image opacity level
+ * @link https://php.net/manual/en/imagick.setimageopacity.php
+ * @param float $opacity <p>
+ * The level of transparency: 1.0 is fully opaque and 0.0 is fully
+ * transparent.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageOpacity ($opacity) {}
+
+ /**
+ * (PECL imagick 2.2.2)<br/>
+ * Performs an ordered dither
+ * @link https://php.net/manual/en/imagick.orderedposterizeimage.php
+ * @param string $threshold_map <p>
+ * A string containing the name of the threshold dither map to use
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function orderedPosterizeImage ($threshold_map, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Simulates a Polaroid picture
+ * @link https://php.net/manual/en/imagick.polaroidimage.php
+ * @param ImagickDraw $properties <p>
+ * The polaroid properties
+ * </p>
+ * @param float $angle <p>
+ * The polaroid angle
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function polaroidImage (ImagickDraw $properties, $angle) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the named image property
+ * @link https://php.net/manual/en/imagick.getimageproperty.php
+ * @param string $name <p>
+ * name of the property (for example Exif:DateTime)
+ * </p>
+ * @return string|false a string containing the image property, false if a
+ * property with the given name does not exist.
+ */
+ public function getImageProperty ($name) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets an image property
+ * @link https://php.net/manual/en/imagick.setimageproperty.php
+ * @param string $name
+ * @param string $value
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageProperty ($name, $value) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image interpolate pixel method
+ * @link https://php.net/manual/en/imagick.setimageinterpolatemethod.php
+ * @param int $method <p>
+ * The method is one of the <b>Imagick::INTERPOLATE_*</b> constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageInterpolateMethod ($method) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the interpolation method
+ * @link https://php.net/manual/en/imagick.getimageinterpolatemethod.php
+ * @return int the interpolate method on success.
+ */
+ public function getImageInterpolateMethod () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Stretches with saturation the image intensity
+ * @link https://php.net/manual/en/imagick.linearstretchimage.php
+ * @param float $blackPoint <p>
+ * The image black point
+ * </p>
+ * @param float $whitePoint <p>
+ * The image white point
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function linearStretchImage ($blackPoint, $whitePoint) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the image length in bytes
+ * @link https://php.net/manual/en/imagick.getimagelength.php
+ * @return int an int containing the current image size.
+ */
+ public function getImageLength () {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Set image size
+ * @link https://php.net/manual/en/imagick.extentimage.php
+ * @param int $width <p>
+ * The new width
+ * </p>
+ * @param int $height <p>
+ * The new height
+ * </p>
+ * @param int $x <p>
+ * X position for the new size
+ * </p>
+ * @param int $y <p>
+ * Y position for the new size
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function extentImage ($width, $height, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image orientation
+ * @link https://php.net/manual/en/imagick.getimageorientation.php
+ * @return int an int on success.
+ */
+ public function getImageOrientation () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image orientation
+ * @link https://php.net/manual/en/imagick.setimageorientation.php
+ * @param int $orientation <p>
+ * One of the orientation constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageOrientation ($orientation) {}
+
+ /**
+ * (PECL imagick 2.1.0)<br/>
+ * Changes the color value of any pixel that matches target
+ * @link https://php.net/manual/en/imagick.paintfloodfillimage.php
+ * @param mixed $fill <p>
+ * ImagickPixel object or a string containing the fill color
+ * </p>
+ * @param float $fuzz <p>
+ * The amount of fuzz. For example, set fuzz to 10 and the color red at
+ * intensities of 100 and 102 respectively are now interpreted as the
+ * same color for the purposes of the floodfill.
+ * </p>
+ * @param mixed $bordercolor <p>
+ * ImagickPixel object or a string containing the border color
+ * </p>
+ * @param int $x <p>
+ * X start position of the floodfill
+ * </p>
+ * @param int $y <p>
+ * Y start position of the floodfill
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function paintFloodfillImage ($fill, $fuzz, $bordercolor, $x, $y, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Replaces colors in the image from a color lookup table. Optional second parameter to replace colors in a specific channel. This method is available if Imagick has been compiled against ImageMagick version 6.3.6 or newer.
+ * @link https://php.net/manual/en/imagick.clutimage.php
+ * @param Imagick $lookup_table <p>
+ * Imagick object containing the color lookup table
+ * </p>
+ * @param int $channel [optional] <p>
+ * The Channeltype
+ * constant. When not supplied, default channels are replaced.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ * @since 2.0.0
+ */
+ public function clutImage (Imagick $lookup_table, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the image properties
+ * @link https://php.net/manual/en/imagick.getimageproperties.php
+ * @param string $pattern [optional] <p>
+ * The pattern for property names.
+ * </p>
+ * @param bool $only_names [optional] <p>
+ * Whether to return only property names. If <b>FALSE</b> then also the values are returned
+ * </p>
+ * @return array an array containing the image properties or property names.
+ */
+ public function getImageProperties ($pattern = "*", $only_names = true) {}
+
+ /**
+ * (PECL imagick 2.2.0)<br/>
+ * Returns the image profiles
+ * @link https://php.net/manual/en/imagick.getimageprofiles.php
+ * @param string $pattern [optional] <p>
+ * The pattern for profile names.
+ * </p>
+ * @param bool $include_values [optional] <p>
+ * Whether to return only profile names. If <b>FALSE</b> then only profile names will be returned.
+ * </p>
+ * @return array an array containing the image profiles or profile names.
+ */
+ public function getImageProfiles ($pattern = "*", $include_values = true) {}
+
+ /**
+ * (PECL imagick 2.0.1)<br/>
+ * Distorts an image using various distortion methods
+ * @link https://php.net/manual/en/imagick.distortimage.php
+ * @param int $method <p>
+ * The method of image distortion. See distortion constants
+ * </p>
+ * @param array $arguments <p>
+ * The arguments for this distortion method
+ * </p>
+ * @param bool $bestfit <p>
+ * Attempt to resize destination to fit distorted source
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function distortImage ($method, array $arguments, $bestfit) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Writes an image to a filehandle
+ * @link https://php.net/manual/en/imagick.writeimagefile.php
+ * @param resource $filehandle <p>
+ * Filehandle where to write the image
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function writeImageFile ($filehandle) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Writes frames to a filehandle
+ * @link https://php.net/manual/en/imagick.writeimagesfile.php
+ * @param resource $filehandle <p>
+ * Filehandle where to write the images
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function writeImagesFile ($filehandle) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Reset image page
+ * @link https://php.net/manual/en/imagick.resetimagepage.php
+ * @param string $page <p>
+ * The page definition. For example 7168x5147+0+0
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function resetImagePage ($page) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Sets image clip mask
+ * @link https://php.net/manual/en/imagick.setimageclipmask.php
+ * @param Imagick $clip_mask <p>
+ * The Imagick object containing the clip mask
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageClipMask (Imagick $clip_mask) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Gets image clip mask
+ * @link https://php.net/manual/en/imagick.getimageclipmask.php
+ * @return Imagick an Imagick object containing the clip mask.
+ */
+ public function getImageClipMask () {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Animates an image or images
+ * @link https://php.net/manual/en/imagick.animateimages.php
+ * @param string $x_server <p>
+ * X server address
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function animateImages ($x_server) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Recolors image
+ * @link https://php.net/manual/en/imagick.recolorimage.php
+ * @param array $matrix <p>
+ * The matrix containing the color values
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function recolorImage (array $matrix) {}
+
+ /**
+ * (PECL imagick 2.1.0)<br/>
+ * Sets font
+ * @link https://php.net/manual/en/imagick.setfont.php
+ * @param string $font <p>
+ * Font name or a filename
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setFont ($font) {}
+
+ /**
+ * (PECL imagick 2.1.0)<br/>
+ * Gets font
+ * @link https://php.net/manual/en/imagick.getfont.php
+ * @return string|false the string containing the font name or <b>FALSE</b> if not font is set.
+ */
+ public function getFont () {}
+
+ /**
+ * (PECL imagick 2.1.0)<br/>
+ * Sets point size
+ * @link https://php.net/manual/en/imagick.setpointsize.php
+ * @param float $point_size <p>
+ * Point size
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setPointSize ($point_size) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Gets point size
+ * @link https://php.net/manual/en/imagick.getpointsize.php
+ * @return float a float containing the point size.
+ */
+ public function getPointSize () {}
+
+ /**
+ * (PECL imagick 2.1.0)<br/>
+ * Merges image layers
+ * @link https://php.net/manual/en/imagick.mergeimagelayers.php
+ * @param int $layer_method <p>
+ * One of the <b>Imagick::LAYERMETHOD_*</b> constants
+ * </p>
+ * @return Imagick Returns an Imagick object containing the merged image.
+ * @throws ImagickException
+ */
+ public function mergeImageLayers ($layer_method) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Sets image alpha channel
+ * @link https://php.net/manual/en/imagick.setimagealphachannel.php
+ * @param int $mode <p>
+ * One of the <b>Imagick::ALPHACHANNEL_*</b> constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageAlphaChannel ($mode) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Changes the color value of any pixel that matches target
+ * @link https://php.net/manual/en/imagick.floodfillpaintimage.php
+ * @param mixed $fill <p>
+ * ImagickPixel object or a string containing the fill color
+ * </p>
+ * @param float $fuzz <p>
+ * The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.
+ * </p>
+ * @param mixed $target <p>
+ * ImagickPixel object or a string containing the target color to paint
+ * </p>
+ * @param int $x <p>
+ * X start position of the floodfill
+ * </p>
+ * @param int $y <p>
+ * Y start position of the floodfill
+ * </p>
+ * @param bool $invert <p>
+ * If <b>TRUE</b> paints any pixel that does not match the target color.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function floodFillPaintImage ($fill, $fuzz, $target, $x, $y, $invert, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Changes the color value of any pixel that matches target
+ * @link https://php.net/manual/en/imagick.opaquepaintimage.php
+ * @param mixed $target <p>
+ * ImagickPixel object or a string containing the color to change
+ * </p>
+ * @param mixed $fill <p>
+ * The replacement color
+ * </p>
+ * @param float $fuzz <p>
+ * The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.
+ * </p>
+ * @param bool $invert <p>
+ * If <b>TRUE</b> paints any pixel that does not match the target color.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function opaquePaintImage ($target, $fill, $fuzz, $invert, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Paints pixels transparent
+ * @link https://php.net/manual/en/imagick.transparentpaintimage.php
+ * @param mixed $target <p>
+ * The target color to paint
+ * </p>
+ * @param float $alpha <p>
+ * The level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.
+ * </p>
+ * @param float $fuzz <p>
+ * The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.
+ * </p>
+ * @param bool $invert <p>
+ * If <b>TRUE</b> paints any pixel that does not match the target color.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function transparentPaintImage ($target, $alpha, $fuzz, $invert) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Animates an image or images
+ * @link https://php.net/manual/en/imagick.liquidrescaleimage.php
+ * @param int $width <p>
+ * The width of the target size
+ * </p>
+ * @param int $height <p>
+ * The height of the target size
+ * </p>
+ * @param float $delta_x <p>
+ * How much the seam can traverse on x-axis.
+ * Passing 0 causes the seams to be straight.
+ * </p>
+ * @param float $rigidity <p>
+ * Introduces a bias for non-straight seams. This parameter is
+ * typically 0.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function liquidRescaleImage ($width, $height, $delta_x, $rigidity) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Enciphers an image
+ * @link https://php.net/manual/en/imagick.encipherimage.php
+ * @param string $passphrase <p>
+ * The passphrase
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function encipherImage ($passphrase) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Deciphers an image
+ * @link https://php.net/manual/en/imagick.decipherimage.php
+ * @param string $passphrase <p>
+ * The passphrase
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function decipherImage ($passphrase) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Sets the gravity
+ * @link https://php.net/manual/en/imagick.setgravity.php
+ * @param int $gravity <p>
+ * The gravity property. Refer to the list of
+ * gravity constants.
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setGravity ($gravity) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Gets the gravity
+ * @link https://php.net/manual/en/imagick.getgravity.php
+ * @return int the gravity property. Refer to the list of
+ * gravity constants.
+ */
+ public function getGravity () {}
+
+ /**
+ * (PECL imagick 2.2.1)<br/>
+ * Gets channel range
+ * @link https://php.net/manual/en/imagick.getimagechannelrange.php
+ * @param int $channel <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return array an array containing minima and maxima values of the channel(s).
+ */
+ public function getImageChannelRange ($channel) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Gets the image alpha channel
+ * @link https://php.net/manual/en/imagick.getimagealphachannel.php
+ * @return int a constant defining the current alpha channel value. Refer to this
+ * list of alpha channel constants.
+ */
+ public function getImageAlphaChannel () {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Gets channel distortions
+ * @link https://php.net/manual/en/imagick.getimagechanneldistortions.php
+ * @param Imagick $reference <p>
+ * Imagick object containing the reference image
+ * </p>
+ * @param int $metric <p>
+ * Refer to this list of metric type constants.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return float a float describing the channel distortion.
+ */
+ public function getImageChannelDistortions (Imagick $reference, $metric, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Sets the image gravity
+ * @link https://php.net/manual/en/imagick.setimagegravity.php
+ * @param int $gravity <p>
+ * The gravity property. Refer to the list of
+ * gravity constants.
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setImageGravity ($gravity) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Gets the image gravity
+ * @link https://php.net/manual/en/imagick.getimagegravity.php
+ * @return int the images gravity property. Refer to the list of
+ * gravity constants.
+ */
+ public function getImageGravity () {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Imports image pixels
+ * @link https://php.net/manual/en/imagick.importimagepixels.php
+ * @param int $x <p>
+ * The image x position
+ * </p>
+ * @param int $y <p>
+ * The image y position
+ * </p>
+ * @param int $width <p>
+ * The image width
+ * </p>
+ * @param int $height <p>
+ * The image height
+ * </p>
+ * @param string $map <p>
+ * Map of pixel ordering as a string. This can be for example RGB.
+ * The value can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent),
+ * O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad.
+ * </p>
+ * @param int $storage <p>
+ * The pixel storage method.
+ * Refer to this list of pixel constants.
+ * </p>
+ * @param array $pixels <p>
+ * The array of pixels
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function importImagePixels ($x, $y, $width, $height, $map, $storage, array $pixels) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Removes skew from the image
+ * @link https://php.net/manual/en/imagick.deskewimage.php
+ * @param float $threshold <p>
+ * Deskew threshold
+ * </p>
+ * @return bool
+ */
+ public function deskewImage ($threshold) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Segments an image
+ * @link https://php.net/manual/en/imagick.segmentimage.php
+ * @param int $COLORSPACE <p>
+ * One of the COLORSPACE constants.
+ * </p>
+ * @param float $cluster_threshold <p>
+ * A percentage describing minimum number of pixels
+ * contained in hexedra before it is considered valid.
+ * </p>
+ * @param float $smooth_threshold <p>
+ * Eliminates noise from the histogram.
+ * </p>
+ * @param bool $verbose [optional] <p>
+ * Whether to output detailed information about recognised classes.
+ * </p>
+ * @return bool
+ */
+ public function segmentImage ($COLORSPACE, $cluster_threshold, $smooth_threshold, $verbose = false) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Interpolates colors
+ * @link https://php.net/manual/en/imagick.sparsecolorimage.php
+ * @param int $SPARSE_METHOD <p>
+ * Refer to this list of sparse method constants
+ * </p>
+ * @param array $arguments <p>
+ * An array containing the coordinates.
+ * The array is in format array(1,1, 2,45)
+ * </p>
+ * @param int $channel [optional]
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function sparseColorImage ($SPARSE_METHOD, array $arguments, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Remaps image colors
+ * @link https://php.net/manual/en/imagick.remapimage.php
+ * @param Imagick $replacement <p>
+ * An Imagick object containing the replacement colors
+ * </p>
+ * @param int $DITHER <p>
+ * Refer to this list of dither method constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function remapImage (Imagick $replacement, $DITHER) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Exports raw image pixels
+ * @link https://php.net/manual/en/imagick.exportimagepixels.php
+ * @param int $x <p>
+ * X-coordinate of the exported area
+ * </p>
+ * @param int $y <p>
+ * Y-coordinate of the exported area
+ * </p>
+ * @param int $width <p>
+ * Width of the exported aread
+ * </p>
+ * @param int $height <p>
+ * Height of the exported area
+ * </p>
+ * @param string $map <p>
+ * Ordering of the exported pixels. For example "RGB".
+ * Valid characters for the map are R, G, B, A, O, C, Y, M, K, I and P.
+ * </p>
+ * @param int $STORAGE <p>
+ * Refer to this list of pixel type constants
+ * </p>
+ * @return array an array containing the pixels values.
+ */
+ public function exportImagePixels ($x, $y, $width, $height, $map, $STORAGE) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * The getImageChannelKurtosis purpose
+ * @link https://php.net/manual/en/imagick.getimagechannelkurtosis.php
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return array an array with kurtosis and skewness
+ * members.
+ */
+ public function getImageChannelKurtosis ($channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Applies a function on the image
+ * @link https://php.net/manual/en/imagick.functionimage.php
+ * @param int $function <p>
+ * Refer to this list of function constants
+ * </p>
+ * @param array $arguments <p>
+ * Array of arguments to pass to this function.
+ * </p>
+ * @param int $channel [optional]
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function functionImage ($function, array $arguments, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * @param $COLORSPACE
+ */
+ public function transformImageColorspace ($COLORSPACE) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Replaces colors in the image
+ * @link https://php.net/manual/en/imagick.haldclutimage.php
+ * @param Imagick $clut <p>
+ * Imagick object containing the Hald lookup image.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function haldClutImage (Imagick $clut, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * @param $CHANNEL [optional]
+ */
+ public function autoLevelImage ($CHANNEL) {}
+
+ /**
+ * @param $factor [optional]
+ */
+ public function blueShiftImage ($factor) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Get image artifact
+ * @link https://php.net/manual/en/imagick.getimageartifact.php
+ * @param string $artifact <p>
+ * The name of the artifact
+ * </p>
+ * @return string the artifact value on success.
+ */
+ public function getImageArtifact ($artifact) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Set image artifact
+ * @link https://php.net/manual/en/imagick.setimageartifact.php
+ * @param string $artifact <p>
+ * The name of the artifact
+ * </p>
+ * @param string $value <p>
+ * The value of the artifact
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageArtifact ($artifact, $value) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Delete image artifact
+ * @link https://php.net/manual/en/imagick.deleteimageartifact.php
+ * @param string $artifact <p>
+ * The name of the artifact to delete
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function deleteImageArtifact ($artifact) {}
+
+ /**
+ * (PECL imagick 0.9.10-0.9.9)<br/>
+ * Gets the colorspace
+ * @link https://php.net/manual/en/imagick.getcolorspace.php
+ * @return int an integer which can be compared against COLORSPACE constants.
+ */
+ public function getColorspace () {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Set colorspace
+ * @link https://php.net/manual/en/imagick.setcolorspace.php
+ * @param int $COLORSPACE <p>
+ * One of the COLORSPACE constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setColorspace ($COLORSPACE) {}
+
+ /**
+ * @param $CHANNEL [optional]
+ */
+ public function clampImage ($CHANNEL) {}
+
+ /**
+ * @param $stack
+ * @param $offset
+ */
+ public function smushImages ($stack, $offset) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * The Imagick constructor
+ * @link https://php.net/manual/en/imagick.construct.php
+ * @param mixed $files <p>
+ * The path to an image to load or an array of paths. Paths can include
+ * wildcards for file names, or can be URLs.
+ * </p>
+ * @throws ImagickException Throws ImagickException on error.
+ */
+ public function __construct ($files = null) {}
+
+ /**
+ * @return string
+ */
+ public function __toString () {}
+
+ public function count () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns a MagickPixelIterator
+ * @link https://php.net/manual/en/imagick.getpixeliterator.php
+ * @return ImagickPixelIterator an ImagickPixelIterator on success.
+ */
+ public function getPixelIterator () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Get an ImagickPixelIterator for an image section
+ * @link https://php.net/manual/en/imagick.getpixelregioniterator.php
+ * @param int $x <p>
+ * The x-coordinate of the region.
+ * </p>
+ * @param int $y <p>
+ * The y-coordinate of the region.
+ * </p>
+ * @param int $columns <p>
+ * The width of the region.
+ * </p>
+ * @param int $rows <p>
+ * The height of the region.
+ * </p>
+ * @return ImagickPixelIterator an ImagickPixelIterator for an image section.
+ */
+ public function getPixelRegionIterator ($x, $y, $columns, $rows) {}
+
+ /**
+ * (PECL imagick 0.9.0-0.9.9)<br/>
+ * Reads image from filename
+ * @link https://php.net/manual/en/imagick.readimage.php
+ * @param string $filename
+ * @return bool <b>TRUE</b> on success.
+ * @throws ImagickException Throws ImagickException on error.
+ */
+ public function readImage ($filename) {}
+
+ /**
+ * @param $filenames
+ * @throws ImagickException Throws ImagickException on error.
+ */
+ public function readImages ($filenames) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Reads image from a binary string
+ * @link https://php.net/manual/en/imagick.readimageblob.php
+ * @param string $image
+ * @param string $filename [optional]
+ * @return bool <b>TRUE</b> on success.
+ * @throws ImagickException Throws ImagickException on error.
+ */
+ public function readImageBlob ($image, $filename = null) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the format of a particular image
+ * @link https://php.net/manual/en/imagick.setimageformat.php
+ * @param string $format <p>
+ * String presentation of the image format. Format support
+ * depends on the ImageMagick installation.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageFormat ($format) {}
+
+ /**
+ * Scales the size of an image to the given dimensions. Passing zero as either of the arguments will preserve dimension while scaling.<br>
+ * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.<br>
+ * If false, the calculations should produce the same results as ImageMagick CLI does.
+ * @link https://php.net/manual/en/imagick.scaleimage.php
+ * @param int $cols
+ * @param int $rows
+ * @param bool $bestfit [optional] The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
+ * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
+ * @return bool <b>TRUE</b> on success.
+ * @throws ImagickException Throws ImagickException on error
+ * @since 2.0.0
+ */
+ public function scaleImage ($cols, $rows, $bestfit = false, $legacy = false) {}
+
+ /**
+ * (PECL imagick 0.9.0-0.9.9)<br/>
+ * Writes an image to the specified filename
+ * @link https://php.net/manual/en/imagick.writeimage.php
+ * @param string $filename [optional] <p>
+ * Filename where to write the image. The extension of the filename
+ * defines the type of the file.
+ * Format can be forced regardless of file extension using format: prefix,
+ * for example "jpg:test.png".
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function writeImage ($filename = null) {}
+
+ /**
+ * (PECL imagick 0.9.0-0.9.9)<br/>
+ * Writes an image or image sequence
+ * @link https://php.net/manual/en/imagick.writeimages.php
+ * @param string $filename
+ * @param bool $adjoin
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function writeImages ($filename, $adjoin) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds blur filter to image
+ * @link https://php.net/manual/en/imagick.blurimage.php
+ * @param float $radius <p>
+ * Blur radius
+ * </p>
+ * @param float $sigma <p>
+ * Standard deviation
+ * </p>
+ * @param int $channel [optional] <p>
+ * The Channeltype
+ * constant. When not supplied, all channels are blurred.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function blurImage ($radius, $sigma, $channel = null) {}
+
+ /**
+ * Changes the size of an image to the given dimensions and removes any associated profiles.<br>
+ * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.<br>
+ * If false, the calculations should produce the same results as ImageMagick CLI does.<br>
+ * <br>
+ * <b>Note:</b> The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
+ * @link https://php.net/manual/en/imagick.thumbnailimage.php
+ * @param int $columns <p>
+ * Image width
+ * </p>
+ * @param int $rows <p>
+ * Image height
+ * </p>
+ * @param bool $bestfit [optional] <p>
+ * Whether to force maximum values
+ * </p>
+ * The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched. In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
+ * @param bool $fill [optional]
+ * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
+ * @return bool <b>TRUE</b> on success.
+ * @since 2.0.0
+ */
+ public function thumbnailImage ($columns, $rows, $bestfit = false, $fill = false, $legacy = false) {}
+
+ /**
+ * Creates a cropped thumbnail at the requested size.
+ * If legacy is true, uses the incorrect behaviour that was present until Imagick 3.4.0.
+ * If false it uses the correct behaviour.
+ * @link https://php.net/manual/en/imagick.cropthumbnailimage.php
+ * @param int $width The width of the thumbnail
+ * @param int $height The Height of the thumbnail
+ * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
+ * @return bool TRUE on succes
+ * @throws ImagickException Throws ImagickException on error
+ * @since 2.0.0
+ */
+ public function cropThumbnailImage ($width, $height, $legacy = false) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the filename of a particular image in a sequence
+ * @link https://php.net/manual/en/imagick.getimagefilename.php
+ * @return string a string with the filename of the image.
+ */
+ public function getImageFilename () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the filename of a particular image
+ * @link https://php.net/manual/en/imagick.setimagefilename.php
+ * @param string $filename
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageFilename ($filename) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the format of a particular image in a sequence
+ * @link https://php.net/manual/en/imagick.getimageformat.php
+ * @return string a string containing the image format on success.
+ */
+ public function getImageFormat () {}
+
+ /**
+ * @link https://secure.php.net/manual/en/imagick.getimagemimetype.php
+ * @return string Returns the image mime-type.
+ */
+ public function getImageMimeType () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Removes an image from the image list
+ * @link https://php.net/manual/en/imagick.removeimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function removeImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Destroys the Imagick object
+ * @link https://php.net/manual/en/imagick.destroy.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function destroy () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Clears all resources associated to Imagick object
+ * @link https://php.net/manual/en/imagick.clear.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function clear () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the image length in bytes
+ * @link https://php.net/manual/en/imagick.getimagesize.php
+ * @return int an int containing the current image size.
+ * @deprecated use {@see Imagick::getImageLength()} instead
+ */
+ public function getImageSize () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the image sequence as a blob
+ * @link https://php.net/manual/en/imagick.getimageblob.php
+ * @return string a string containing the image.
+ */
+ public function getImageBlob () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns all image sequences as a blob
+ * @link https://php.net/manual/en/imagick.getimagesblob.php
+ * @return string a string containing the images. On failure, throws ImagickException on failure
+ * @throws ImagickException on failure
+ */
+ public function getImagesBlob () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the Imagick iterator to the first image
+ * @link https://php.net/manual/en/imagick.setfirstiterator.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setFirstIterator () {}
+
+ /**
+ * (PECL imagick 2.0.1)<br/>
+ * Sets the Imagick iterator to the last image
+ * @link https://php.net/manual/en/imagick.setlastiterator.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setLastIterator () {}
+
+ public function resetIterator () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Move to the previous image in the object
+ * @link https://php.net/manual/en/imagick.previousimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function previousImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Moves to the next image
+ * @link https://php.net/manual/en/imagick.nextimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function nextImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Checks if the object has a previous image
+ * @link https://php.net/manual/en/imagick.haspreviousimage.php
+ * @return bool <b>TRUE</b> if the object has more images when traversing the list in the
+ * reverse direction, returns <b>FALSE</b> if there are none.
+ */
+ public function hasPreviousImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Checks if the object has more images
+ * @link https://php.net/manual/en/imagick.hasnextimage.php
+ * @return bool <b>TRUE</b> if the object has more images when traversing the list in the
+ * forward direction, returns <b>FALSE</b> if there are none.
+ */
+ public function hasNextImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Set the iterator position
+ * @link https://php.net/manual/en/imagick.setimageindex.php
+ * @param int $index <p>
+ * The position to set the iterator to
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageIndex ($index) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the index of the current active image
+ * @link https://php.net/manual/en/imagick.getimageindex.php
+ * @return int an integer containing the index of the image in the stack.
+ */
+ public function getImageIndex () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds a comment to your image
+ * @link https://php.net/manual/en/imagick.commentimage.php
+ * @param string $comment <p>
+ * The comment to add
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function commentImage ($comment) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Extracts a region of the image
+ * @link https://php.net/manual/en/imagick.cropimage.php
+ * @param int $width <p>
+ * The width of the crop
+ * </p>
+ * @param int $height <p>
+ * The height of the crop
+ * </p>
+ * @param int $x <p>
+ * The X coordinate of the cropped region's top left corner
+ * </p>
+ * @param int $y <p>
+ * The Y coordinate of the cropped region's top left corner
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function cropImage ($width, $height, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds a label to an image
+ * @link https://php.net/manual/en/imagick.labelimage.php
+ * @param string $label <p>
+ * The label to add
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function labelImage ($label) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the width and height as an associative array
+ * @link https://php.net/manual/en/imagick.getimagegeometry.php
+ * @return array an array with the width/height of the image.
+ */
+ public function getImageGeometry () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Renders the ImagickDraw object on the current image
+ * @link https://php.net/manual/en/imagick.drawimage.php
+ * @param ImagickDraw $draw <p>
+ * The drawing operations to render on the image.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function drawImage (ImagickDraw $draw) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Sets the image compression quality
+ * @link https://php.net/manual/en/imagick.setimagecompressionquality.php
+ * @param int $quality <p>
+ * The image compression quality as an integer
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageCompressionQuality ($quality) {}
+
+ /**
+ * (PECL imagick 2.2.2)<br/>
+ * Gets the current image's compression quality
+ * @link https://php.net/manual/en/imagick.getimagecompressionquality.php
+ * @return int integer describing the images compression quality
+ */
+ public function getImageCompressionQuality () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Annotates an image with text
+ * @link https://php.net/manual/en/imagick.annotateimage.php
+ * @param ImagickDraw $draw_settings <p>
+ * The ImagickDraw object that contains settings for drawing the text
+ * </p>
+ * @param float $x <p>
+ * Horizontal offset in pixels to the left of text
+ * </p>
+ * @param float $y <p>
+ * Vertical offset in pixels to the baseline of text
+ * </p>
+ * @param float $angle <p>
+ * The angle at which to write the text
+ * </p>
+ * @param string $text <p>
+ * The string to draw
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function annotateImage (ImagickDraw $draw_settings, $x, $y, $angle, $text) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Composite one image onto another
+ * @link https://php.net/manual/en/imagick.compositeimage.php
+ * @param Imagick $composite_object <p>
+ * Imagick object which holds the composite image
+ * </p>
+ * @param int $composite Composite operator
+ * @param int $x <p>
+ * The column offset of the composited image
+ * </p>
+ * @param int $y <p>
+ * The row offset of the composited image
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function compositeImage (Imagick $composite_object, $composite, $x, $y, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Control the brightness, saturation, and hue
+ * @link https://php.net/manual/en/imagick.modulateimage.php
+ * @param float $brightness
+ * @param float $saturation
+ * @param float $hue
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function modulateImage ($brightness, $saturation, $hue) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the number of unique colors in the image
+ * @link https://php.net/manual/en/imagick.getimagecolors.php
+ * @return int <b>TRUE</b> on success.
+ */
+ public function getImageColors () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a composite image
+ * @link https://php.net/manual/en/imagick.montageimage.php
+ * @param ImagickDraw $draw <p>
+ * The font name, size, and color are obtained from this object.
+ * </p>
+ * @param string $tile_geometry <p>
+ * The number of tiles per row and page (e.g. 6x4+0+0).
+ * </p>
+ * @param string $thumbnail_geometry <p>
+ * Preferred image size and border size of each thumbnail
+ * (e.g. 120x120+4+3>).
+ * </p>
+ * @param int $mode <p>
+ * Thumbnail framing mode, see Montage Mode constants.
+ * </p>
+ * @param string $frame <p>
+ * Surround the image with an ornamental border (e.g. 15x15+3+3). The
+ * frame color is that of the thumbnail's matte color.
+ * </p>
+ * @return Imagick <b>TRUE</b> on success.
+ */
+ public function montageImage (ImagickDraw $draw, $tile_geometry, $thumbnail_geometry, $mode, $frame) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Identifies an image and fetches attributes
+ * @link https://php.net/manual/en/imagick.identifyimage.php
+ * @param bool $appendRawOutput [optional]
+ * @return array Identifies an image and returns the attributes. Attributes include
+ * the image width, height, size, and others.
+ */
+ public function identifyImage ($appendRawOutput = false) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Changes the value of individual pixels based on a threshold
+ * @link https://php.net/manual/en/imagick.thresholdimage.php
+ * @param float $threshold
+ * @param int $channel [optional]
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function thresholdImage ($threshold, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Selects a threshold for each pixel based on a range of intensity
+ * @link https://php.net/manual/en/imagick.adaptivethresholdimage.php
+ * @param int $width <p>
+ * Width of the local neighborhood.
+ * </p>
+ * @param int $height <p>
+ * Height of the local neighborhood.
+ * </p>
+ * @param int $offset <p>
+ * The mean offset
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function adaptiveThresholdImage ($width, $height, $offset) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Forces all pixels below the threshold into black
+ * @link https://php.net/manual/en/imagick.blackthresholdimage.php
+ * @param mixed $threshold <p>
+ * The threshold below which everything turns black
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function blackThresholdImage ($threshold) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Force all pixels above the threshold into white
+ * @link https://php.net/manual/en/imagick.whitethresholdimage.php
+ * @param mixed $threshold
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function whiteThresholdImage ($threshold) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Append a set of images
+ * @link https://php.net/manual/en/imagick.appendimages.php
+ * @param bool $stack [optional] <p>
+ * Whether to stack the images vertically.
+ * By default (or if <b>FALSE</b> is specified) images are stacked left-to-right.
+ * If <i>stack</i> is <b>TRUE</b>, images are stacked top-to-bottom.
+ * </p>
+ * @return Imagick Imagick instance on success.
+ */
+ public function appendImages ($stack = false) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Simulates a charcoal drawing
+ * @link https://php.net/manual/en/imagick.charcoalimage.php
+ * @param float $radius <p>
+ * The radius of the Gaussian, in pixels, not counting the center pixel
+ * </p>
+ * @param float $sigma <p>
+ * The standard deviation of the Gaussian, in pixels
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function charcoalImage ($radius, $sigma) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Enhances the contrast of a color image
+ * @link https://php.net/manual/en/imagick.normalizeimage.php
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function normalizeImage ($channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Simulates an oil painting
+ * @link https://php.net/manual/en/imagick.oilpaintimage.php
+ * @param float $radius <p>
+ * The radius of the circular neighborhood.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function oilPaintImage ($radius) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Reduces the image to a limited number of color level
+ * @link https://php.net/manual/en/imagick.posterizeimage.php
+ * @param int $levels
+ * @param bool $dither
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function posterizeImage ($levels, $dither) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Radial blurs an image
+ * @link https://php.net/manual/en/imagick.radialblurimage.php
+ * @param float $angle
+ * @param int $channel [optional]
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function radialBlurImage ($angle, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a simulated 3d button-like effect
+ * @link https://php.net/manual/en/imagick.raiseimage.php
+ * @param int $width
+ * @param int $height
+ * @param int $x
+ * @param int $y
+ * @param bool $raise
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function raiseImage ($width, $height, $x, $y, $raise) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Resample image to desired resolution
+ * @link https://php.net/manual/en/imagick.resampleimage.php
+ * @param float $x_resolution
+ * @param float $y_resolution
+ * @param int $filter
+ * @param float $blur
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function resampleImage ($x_resolution, $y_resolution, $filter, $blur) {}
+
+ /**
+ * Scales an image to the desired dimensions with one of these filters:<br>
+ * If legacy is true, the calculations are done with the small rounding bug that existed in Imagick before 3.4.0.<br>
+ * If false, the calculations should produce the same results as ImageMagick CLI does.<br>
+ * <br>
+ * <b>Note:</b> The behavior of the parameter bestfit changed in Imagick 3.0.0. Before this version given dimensions 400x400 an image of dimensions 200x150 would be left untouched.<br>
+ * In Imagick 3.0.0 and later the image would be scaled up to size 400x300 as this is the "best fit" for the given dimensions. If bestfit parameter is used both width and height must be given.
+ * @link https://php.net/manual/en/imagick.resizeimage.php
+ * @param int $columns Width of the image
+ * @param int $rows Height of the image
+ * @param int $filter Refer to the list of filter constants.
+ * @param float $blur The blur factor where > 1 is blurry, < 1 is sharp.
+ * @param bool $bestfit [optional] Added since 2.1.0. Added optional fit parameter. This method now supports proportional scaling. Pass zero as either parameter for proportional scaling
+ * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
+ * @return bool TRUE on success
+ * @since 2.0.0
+ */
+ public function resizeImage ($columns, $rows, $filter, $blur, $bestfit = false, $legacy = false) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Offsets an image
+ * @link https://php.net/manual/en/imagick.rollimage.php
+ * @param int $x <p>
+ * The X offset.
+ * </p>
+ * @param int $y <p>
+ * The Y offset.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function rollImage ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Rotates an image
+ * @link https://php.net/manual/en/imagick.rotateimage.php
+ * @param mixed $background <p>
+ * The background color
+ * </p>
+ * @param float $degrees <p>
+ * The number of degrees to rotate the image
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function rotateImage ($background, $degrees) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Scales an image with pixel sampling
+ * @link https://php.net/manual/en/imagick.sampleimage.php
+ * @param int $columns
+ * @param int $rows
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function sampleImage ($columns, $rows) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Applies a solarizing effect to the image
+ * @link https://php.net/manual/en/imagick.solarizeimage.php
+ * @param int $threshold
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function solarizeImage ($threshold) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Simulates an image shadow
+ * @link https://php.net/manual/en/imagick.shadowimage.php
+ * @param float $opacity
+ * @param float $sigma
+ * @param int $x
+ * @param int $y
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function shadowImage ($opacity, $sigma, $x, $y) {}
+
+ /**
+ * @param $key
+ * @param $value
+ */
+ public function setImageAttribute ($key, $value) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image background color
+ * @link https://php.net/manual/en/imagick.setimagebackgroundcolor.php
+ * @param mixed $background
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageBackgroundColor ($background) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image composite operator
+ * @link https://php.net/manual/en/imagick.setimagecompose.php
+ * @param int $compose
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageCompose ($compose) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image compression
+ * @link https://php.net/manual/en/imagick.setimagecompression.php
+ * @param int $compression <p>
+ * One of the <b>COMPRESSION</b> constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageCompression ($compression) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image delay
+ * @link https://php.net/manual/en/imagick.setimagedelay.php
+ * @param int $delay <p>
+ * The amount of time expressed in 'ticks' that the image should be
+ * displayed for. For animated GIFs there are 100 ticks per second, so a
+ * value of 20 would be 20/100 of a second aka 1/5th of a second.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageDelay ($delay) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image depth
+ * @link https://php.net/manual/en/imagick.setimagedepth.php
+ * @param int $depth
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageDepth ($depth) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image gamma
+ * @link https://php.net/manual/en/imagick.setimagegamma.php
+ * @param float $gamma
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageGamma ($gamma) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image iterations
+ * @link https://php.net/manual/en/imagick.setimageiterations.php
+ * @param int $iterations <p>
+ * The number of iterations the image should loop over. Set to '0' to loop
+ * continuously.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageIterations ($iterations) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image matte color
+ * @link https://php.net/manual/en/imagick.setimagemattecolor.php
+ * @param mixed $matte
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageMatteColor ($matte) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the page geometry of the image
+ * @link https://php.net/manual/en/imagick.setimagepage.php
+ * @param int $width
+ * @param int $height
+ * @param int $x
+ * @param int $y
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImagePage ($width, $height, $x, $y) {}
+
+ /**
+ * @param $filename
+ */
+ public function setImageProgressMonitor ($filename) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image resolution
+ * @link https://php.net/manual/en/imagick.setimageresolution.php
+ * @param float $x_resolution
+ * @param float $y_resolution
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageResolution ($x_resolution, $y_resolution) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image scene
+ * @link https://php.net/manual/en/imagick.setimagescene.php
+ * @param int $scene
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageScene ($scene) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image ticks-per-second
+ * @link https://php.net/manual/en/imagick.setimagetickspersecond.php
+ * @param int $ticks_per_second <p>
+ * The duration for which an image should be displayed expressed in ticks
+ * per second.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageTicksPerSecond ($ticks_per_second) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image type
+ * @link https://php.net/manual/en/imagick.setimagetype.php
+ * @param int $image_type
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageType ($image_type) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image units of resolution
+ * @link https://php.net/manual/en/imagick.setimageunits.php
+ * @param int $units
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageUnits ($units) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sharpens an image
+ * @link https://php.net/manual/en/imagick.sharpenimage.php
+ * @param float $radius
+ * @param float $sigma
+ * @param int $channel [optional]
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function sharpenImage ($radius, $sigma, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Shaves pixels from the image edges
+ * @link https://php.net/manual/en/imagick.shaveimage.php
+ * @param int $columns
+ * @param int $rows
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function shaveImage ($columns, $rows) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creating a parallelogram
+ * @link https://php.net/manual/en/imagick.shearimage.php
+ * @param mixed $background <p>
+ * The background color
+ * </p>
+ * @param float $x_shear <p>
+ * The number of degrees to shear on the x axis
+ * </p>
+ * @param float $y_shear <p>
+ * The number of degrees to shear on the y axis
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function shearImage ($background, $x_shear, $y_shear) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Splices a solid color into the image
+ * @link https://php.net/manual/en/imagick.spliceimage.php
+ * @param int $width
+ * @param int $height
+ * @param int $x
+ * @param int $y
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function spliceImage ($width, $height, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Fetch basic attributes about the image
+ * @link https://php.net/manual/en/imagick.pingimage.php
+ * @param string $filename <p>
+ * The filename to read the information from.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function pingImage ($filename) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Reads image from open filehandle
+ * @link https://php.net/manual/en/imagick.readimagefile.php
+ * @param resource $filehandle
+ * @param string $fileName [optional]
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function readImageFile ($filehandle, $fileName = null) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Displays an image
+ * @link https://php.net/manual/en/imagick.displayimage.php
+ * @param string $servername <p>
+ * The X server name
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function displayImage ($servername) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Displays an image or image sequence
+ * @link https://php.net/manual/en/imagick.displayimages.php
+ * @param string $servername <p>
+ * The X server name
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function displayImages ($servername) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Randomly displaces each pixel in a block
+ * @link https://php.net/manual/en/imagick.spreadimage.php
+ * @param float $radius
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function spreadImage ($radius) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Swirls the pixels about the center of the image
+ * @link https://php.net/manual/en/imagick.swirlimage.php
+ * @param float $degrees
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function swirlImage ($degrees) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Strips an image of all profiles and comments
+ * @link https://php.net/manual/en/imagick.stripimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function stripImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns formats supported by Imagick
+ * @link https://php.net/manual/en/imagick.queryformats.php
+ * @param string $pattern [optional]
+ * @return array an array containing the formats supported by Imagick.
+ */
+ public static function queryFormats ($pattern = "*") {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the configured fonts
+ * @link https://php.net/manual/en/imagick.queryfonts.php
+ * @param string $pattern [optional] <p>
+ * The query pattern
+ * </p>
+ * @return array an array containing the configured fonts.
+ */
+ public static function queryFonts ($pattern = "*") {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns an array representing the font metrics
+ * @link https://php.net/manual/en/imagick.queryfontmetrics.php
+ * @param ImagickDraw $properties <p>
+ * ImagickDraw object containing font properties
+ * </p>
+ * @param string $text <p>
+ * The text
+ * </p>
+ * @param bool $multiline [optional] <p>
+ * Multiline parameter. If left empty it is autodetected
+ * </p>
+ * @return array a multi-dimensional array representing the font metrics.
+ */
+ public function queryFontMetrics (ImagickDraw $properties, $text, $multiline = null) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Hides a digital watermark within the image
+ * @link https://php.net/manual/en/imagick.steganoimage.php
+ * @param Imagick $watermark_wand
+ * @param int $offset
+ * @return Imagick <b>TRUE</b> on success.
+ */
+ public function steganoImage (Imagick $watermark_wand, $offset) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds random noise to the image
+ * @link https://php.net/manual/en/imagick.addnoiseimage.php
+ * @param int $noise_type <p>
+ * The type of the noise. Refer to this list of
+ * noise constants.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function addNoiseImage ($noise_type, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Simulates motion blur
+ * @link https://php.net/manual/en/imagick.motionblurimage.php
+ * @param float $radius <p>
+ * The radius of the Gaussian, in pixels, not counting the center pixel.
+ * </p>
+ * @param float $sigma <p>
+ * The standard deviation of the Gaussian, in pixels.
+ * </p>
+ * @param float $angle <p>
+ * Apply the effect along this angle.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * The channel argument affects only if Imagick is compiled against ImageMagick version
+ * 6.4.4 or greater.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function motionBlurImage ($radius, $sigma, $angle, $channel = Imagick::CHANNEL_DEFAULT) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Forms a mosaic from images
+ * @link https://php.net/manual/en/imagick.mosaicimages.php
+ * @return Imagick <b>TRUE</b> on success.
+ */
+ public function mosaicImages () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Method morphs a set of images
+ * @link https://php.net/manual/en/imagick.morphimages.php
+ * @param int $number_frames <p>
+ * The number of in-between images to generate.
+ * </p>
+ * @return Imagick This method returns a new Imagick object on success.
+ * Throw an <b>ImagickException</b> on error.
+ * @throws ImagickException on error
+ */
+ public function morphImages ($number_frames) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Scales an image proportionally to half its size
+ * @link https://php.net/manual/en/imagick.minifyimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function minifyImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Transforms an image
+ * @link https://php.net/manual/en/imagick.affinetransformimage.php
+ * @param ImagickDraw $matrix <p>
+ * The affine matrix
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function affineTransformImage (ImagickDraw $matrix) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Average a set of images
+ * @link https://php.net/manual/en/imagick.averageimages.php
+ * @return Imagick a new Imagick object on success.
+ */
+ public function averageImages () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Surrounds the image with a border
+ * @link https://php.net/manual/en/imagick.borderimage.php
+ * @param mixed $bordercolor <p>
+ * ImagickPixel object or a string containing the border color
+ * </p>
+ * @param int $width <p>
+ * Border width
+ * </p>
+ * @param int $height <p>
+ * Border height
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function borderImage ($bordercolor, $width, $height) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Removes a region of an image and trims
+ * @link https://php.net/manual/en/imagick.chopimage.php
+ * @param int $width <p>
+ * Width of the chopped area
+ * </p>
+ * @param int $height <p>
+ * Height of the chopped area
+ * </p>
+ * @param int $x <p>
+ * X origo of the chopped area
+ * </p>
+ * @param int $y <p>
+ * Y origo of the chopped area
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function chopImage ($width, $height, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Clips along the first path from the 8BIM profile
+ * @link https://php.net/manual/en/imagick.clipimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function clipImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Clips along the named paths from the 8BIM profile
+ * @link https://php.net/manual/en/imagick.clippathimage.php
+ * @param string $pathname <p>
+ * The name of the path
+ * </p>
+ * @param bool $inside <p>
+ * If <b>TRUE</b> later operations take effect inside clipping path.
+ * Otherwise later operations take effect outside clipping path.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function clipPathImage ($pathname, $inside) {}
+
+ /**
+ * @param $pathname
+ * @param $inside
+ */
+ public function clipImagePath ($pathname, $inside) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Composites a set of images
+ * @link https://php.net/manual/en/imagick.coalesceimages.php
+ * @return Imagick a new Imagick object on success.
+ */
+ public function coalesceImages () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Changes the color value of any pixel that matches target
+ * @link https://php.net/manual/en/imagick.colorfloodfillimage.php
+ * @param mixed $fill <p>
+ * ImagickPixel object containing the fill color
+ * </p>
+ * @param float $fuzz <p>
+ * The amount of fuzz. For example, set fuzz to 10 and the color red at
+ * intensities of 100 and 102 respectively are now interpreted as the
+ * same color for the purposes of the floodfill.
+ * </p>
+ * @param mixed $bordercolor <p>
+ * ImagickPixel object containing the border color
+ * </p>
+ * @param int $x <p>
+ * X start position of the floodfill
+ * </p>
+ * @param int $y <p>
+ * Y start position of the floodfill
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function colorFloodfillImage ($fill, $fuzz, $bordercolor, $x, $y) {}
+
+ /**
+ * Blends the fill color with each pixel in the image. The 'opacity' color is a per channel strength factor for how strongly the color should be applied.<br>
+ * If legacy is true, the behaviour of this function is incorrect, but consistent with how it behaved before Imagick version 3.4.0
+ * @link https://php.net/manual/en/imagick.colorizeimage.php
+ * @param mixed $colorize <p>
+ * ImagickPixel object or a string containing the colorize color
+ * </p>
+ * @param mixed $opacity <p>
+ * ImagickPixel object or an float containing the opacity value.
+ * 1.0 is fully opaque and 0.0 is fully transparent.
+ * </p>
+ * @param bool $legacy [optional] Added since 3.4.0. Default value FALSE
+ * @return bool <b>TRUE</b> on success.
+ * @throws ImagickException Throws ImagickException on error
+ * @since 2.0.0
+ */
+ public function colorizeImage ($colorize, $opacity, $legacy = false) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the difference in one or more images
+ * @link https://php.net/manual/en/imagick.compareimagechannels.php
+ * @param Imagick $image <p>
+ * Imagick object containing the image to compare.
+ * </p>
+ * @param int $channelType <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @param int $metricType <p>
+ * One of the metric type constants.
+ * </p>
+ * @return array Array consisting of new_wand and
+ * distortion.
+ */
+ public function compareImageChannels (Imagick $image, $channelType, $metricType) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Compares an image to a reconstructed image
+ * @link https://php.net/manual/en/imagick.compareimages.php
+ * @param Imagick $compare <p>
+ * An image to compare to.
+ * </p>
+ * @param int $metric <p>
+ * Provide a valid metric type constant. Refer to this
+ * list of metric constants.
+ * </p>
+ * @return array Array consisting of an Imagick object of the
+ * reconstructed image and a float representing the difference.
+ * @throws ImagickException Throws ImagickException on error.
+ */
+ public function compareImages (Imagick $compare, $metric) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Change the contrast of the image
+ * @link https://php.net/manual/en/imagick.contrastimage.php
+ * @param bool $sharpen <p>
+ * The sharpen value
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function contrastImage ($sharpen) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Combines one or more images into a single image
+ * @link https://php.net/manual/en/imagick.combineimages.php
+ * @param int $channelType <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return Imagick <b>TRUE</b> on success.
+ */
+ public function combineImages ($channelType) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Applies a custom convolution kernel to the image
+ * @link https://php.net/manual/en/imagick.convolveimage.php
+ * @param array $kernel <p>
+ * The convolution kernel
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function convolveImage (array $kernel, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Displaces an image's colormap
+ * @link https://php.net/manual/en/imagick.cyclecolormapimage.php
+ * @param int $displace <p>
+ * The amount to displace the colormap.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function cycleColormapImage ($displace) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns certain pixel differences between images
+ * @link https://php.net/manual/en/imagick.deconstructimages.php
+ * @return Imagick a new Imagick object on success.
+ */
+ public function deconstructImages () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Reduces the speckle noise in an image
+ * @link https://php.net/manual/en/imagick.despeckleimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function despeckleImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Enhance edges within the image
+ * @link https://php.net/manual/en/imagick.edgeimage.php
+ * @param float $radius <p>
+ * The radius of the operation.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function edgeImage ($radius) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns a grayscale image with a three-dimensional effect
+ * @link https://php.net/manual/en/imagick.embossimage.php
+ * @param float $radius <p>
+ * The radius of the effect
+ * </p>
+ * @param float $sigma <p>
+ * The sigma of the effect
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function embossImage ($radius, $sigma) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Improves the quality of a noisy image
+ * @link https://php.net/manual/en/imagick.enhanceimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function enhanceImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Equalizes the image histogram
+ * @link https://php.net/manual/en/imagick.equalizeimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function equalizeImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Applies an expression to an image
+ * @link https://php.net/manual/en/imagick.evaluateimage.php
+ * @param int $op <p>
+ * The evaluation operator
+ * </p>
+ * @param float $constant <p>
+ * The value of the operator
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function evaluateImage ($op, $constant, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * Merges a sequence of images. This is useful for combining Photoshop layers into a single image.
+ * This is replaced by:
+ * <pre>
+ * $im = $im->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN)
+ * </pre>
+ * @link https://php.net/manual/en/imagick.flattenimages.php
+ * @return Imagick Returns an Imagick object containing the merged image.
+ * @throws ImagickException Throws ImagickException on error.
+ * @since 2.0.0
+ */
+ public function flattenImages () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a vertical mirror image
+ * @link https://php.net/manual/en/imagick.flipimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function flipImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a horizontal mirror image
+ * @link https://php.net/manual/en/imagick.flopimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function flopImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds a simulated three-dimensional border
+ * @link https://php.net/manual/en/imagick.frameimage.php
+ * @param mixed $matte_color <p>
+ * ImagickPixel object or a string representing the matte color
+ * </p>
+ * @param int $width <p>
+ * The width of the border
+ * </p>
+ * @param int $height <p>
+ * The height of the border
+ * </p>
+ * @param int $inner_bevel <p>
+ * The inner bevel width
+ * </p>
+ * @param int $outer_bevel <p>
+ * The outer bevel width
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function frameImage ($matte_color, $width, $height, $inner_bevel, $outer_bevel) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Evaluate expression for each pixel in the image
+ * @link https://php.net/manual/en/imagick.fximage.php
+ * @param string $expression <p>
+ * The expression.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return Imagick <b>TRUE</b> on success.
+ */
+ public function fxImage ($expression, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gamma-corrects an image
+ * @link https://php.net/manual/en/imagick.gammaimage.php
+ * @param float $gamma <p>
+ * The amount of gamma-correction.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function gammaImage ($gamma, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Blurs an image
+ * @link https://php.net/manual/en/imagick.gaussianblurimage.php
+ * @param float $radius <p>
+ * The radius of the Gaussian, in pixels, not counting the center pixel.
+ * </p>
+ * @param float $sigma <p>
+ * The standard deviation of the Gaussian, in pixels.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function gaussianBlurImage ($radius, $sigma, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * @param $key
+ */
+ public function getImageAttribute ($key) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the image background color
+ * @link https://php.net/manual/en/imagick.getimagebackgroundcolor.php
+ * @return ImagickPixel an ImagickPixel set to the background color of the image.
+ */
+ public function getImageBackgroundColor () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the chromaticy blue primary point
+ * @link https://php.net/manual/en/imagick.getimageblueprimary.php
+ * @return array Array consisting of "x" and "y" coordinates of point.
+ */
+ public function getImageBluePrimary () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the image border color
+ * @link https://php.net/manual/en/imagick.getimagebordercolor.php
+ * @return ImagickPixel <b>TRUE</b> on success.
+ */
+ public function getImageBorderColor () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the depth for a particular image channel
+ * @link https://php.net/manual/en/imagick.getimagechanneldepth.php
+ * @param int $channel <p>
+ * Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to <b>Imagick::CHANNEL_DEFAULT</b>. Refer to this list of channel constants
+ * </p>
+ * @return int <b>TRUE</b> on success.
+ */
+ public function getImageChannelDepth ($channel) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Compares image channels of an image to a reconstructed image
+ * @link https://php.net/manual/en/imagick.getimagechanneldistortion.php
+ * @param Imagick $reference <p>
+ * Imagick object to compare to.
+ * </p>
+ * @param int $channel <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @param int $metric <p>
+ * One of the metric type constants.
+ * </p>
+ * @return float <b>TRUE</b> on success.
+ */
+ public function getImageChannelDistortion (Imagick $reference, $channel, $metric) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the extrema for one or more image channels
+ * @link https://php.net/manual/en/imagick.getimagechannelextrema.php
+ * @param int $channel <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return array <b>TRUE</b> on success.
+ */
+ public function getImageChannelExtrema ($channel) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the mean and standard deviation
+ * @link https://php.net/manual/en/imagick.getimagechannelmean.php
+ * @param int $channel <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return array <b>TRUE</b> on success.
+ */
+ public function getImageChannelMean ($channel) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns statistics for each channel in the image
+ * @link https://php.net/manual/en/imagick.getimagechannelstatistics.php
+ * @return array <b>TRUE</b> on success.
+ */
+ public function getImageChannelStatistics () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the color of the specified colormap index
+ * @link https://php.net/manual/en/imagick.getimagecolormapcolor.php
+ * @param int $index <p>
+ * The offset into the image colormap.
+ * </p>
+ * @return ImagickPixel <b>TRUE</b> on success.
+ */
+ public function getImageColormapColor ($index) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image colorspace
+ * @link https://php.net/manual/en/imagick.getimagecolorspace.php
+ * @return int <b>TRUE</b> on success.
+ */
+ public function getImageColorspace () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the composite operator associated with the image
+ * @link https://php.net/manual/en/imagick.getimagecompose.php
+ * @return int <b>TRUE</b> on success.
+ */
+ public function getImageCompose () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image delay
+ * @link https://php.net/manual/en/imagick.getimagedelay.php
+ * @return int the image delay.
+ */
+ public function getImageDelay () {}
+
+ /**
+ * (PECL imagick 0.9.1-0.9.9)<br/>
+ * Gets the image depth
+ * @link https://php.net/manual/en/imagick.getimagedepth.php
+ * @return int The image depth.
+ */
+ public function getImageDepth () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Compares an image to a reconstructed image
+ * @link https://php.net/manual/en/imagick.getimagedistortion.php
+ * @param Imagick $reference <p>
+ * Imagick object to compare to.
+ * </p>
+ * @param int $metric <p>
+ * One of the metric type constants.
+ * </p>
+ * @return float the distortion metric used on the image (or the best guess
+ * thereof).
+ */
+ public function getImageDistortion (Imagick $reference, $metric) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the extrema for the image
+ * @link https://php.net/manual/en/imagick.getimageextrema.php
+ * @return array an associative array with the keys "min" and "max".
+ */
+ public function getImageExtrema () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image disposal method
+ * @link https://php.net/manual/en/imagick.getimagedispose.php
+ * @return int the dispose method on success.
+ */
+ public function getImageDispose () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image gamma
+ * @link https://php.net/manual/en/imagick.getimagegamma.php
+ * @return float the image gamma on success.
+ */
+ public function getImageGamma () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the chromaticy green primary point
+ * @link https://php.net/manual/en/imagick.getimagegreenprimary.php
+ * @return array an array with the keys "x" and "y" on success, throws an ImagickException on failure.
+ * @throws ImagickException on failure
+ */
+ public function getImageGreenPrimary () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the image height
+ * @link https://php.net/manual/en/imagick.getimageheight.php
+ * @return int the image height in pixels.
+ */
+ public function getImageHeight () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image histogram
+ * @link https://php.net/manual/en/imagick.getimagehistogram.php
+ * @return array the image histogram as an array of ImagickPixel objects.
+ */
+ public function getImageHistogram () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image interlace scheme
+ * @link https://php.net/manual/en/imagick.getimageinterlacescheme.php
+ * @return int the interlace scheme as an integer on success.
+ * Trhow an <b>ImagickException</b> on error.
+ * @throws ImagickException on error
+ */
+ public function getImageInterlaceScheme () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image iterations
+ * @link https://php.net/manual/en/imagick.getimageiterations.php
+ * @return int the image iterations as an integer.
+ */
+ public function getImageIterations () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the image matte color
+ * @link https://php.net/manual/en/imagick.getimagemattecolor.php
+ * @return ImagickPixel ImagickPixel object on success.
+ */
+ public function getImageMatteColor () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the page geometry
+ * @link https://php.net/manual/en/imagick.getimagepage.php
+ * @return array the page geometry associated with the image in an array with the
+ * keys "width", "height", "x", and "y".
+ */
+ public function getImagePage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the color of the specified pixel
+ * @link https://php.net/manual/en/imagick.getimagepixelcolor.php
+ * @param int $x <p>
+ * The x-coordinate of the pixel
+ * </p>
+ * @param int $y <p>
+ * The y-coordinate of the pixel
+ * </p>
+ * @return ImagickPixel an ImagickPixel instance for the color at the coordinates given.
+ */
+ public function getImagePixelColor ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the named image profile
+ * @link https://php.net/manual/en/imagick.getimageprofile.php
+ * @param string $name <p>
+ * The name of the profile to return.
+ * </p>
+ * @return string a string containing the image profile.
+ */
+ public function getImageProfile ($name) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the chromaticity red primary point
+ * @link https://php.net/manual/en/imagick.getimageredprimary.php
+ * @return array the chromaticity red primary point as an array with the keys "x"
+ * and "y".
+ * Throw an <b>ImagickException</b> on error.
+ * @throws ImagickException on error
+ */
+ public function getImageRedPrimary () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image rendering intent
+ * @link https://php.net/manual/en/imagick.getimagerenderingintent.php
+ * @return int the image rendering intent.
+ */
+ public function getImageRenderingIntent () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image X and Y resolution
+ * @link https://php.net/manual/en/imagick.getimageresolution.php
+ * @return array the resolution as an array.
+ */
+ public function getImageResolution () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image scene
+ * @link https://php.net/manual/en/imagick.getimagescene.php
+ * @return int the image scene.
+ */
+ public function getImageScene () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Generates an SHA-256 message digest
+ * @link https://php.net/manual/en/imagick.getimagesignature.php
+ * @return string a string containing the SHA-256 hash of the file.
+ */
+ public function getImageSignature () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image ticks-per-second
+ * @link https://php.net/manual/en/imagick.getimagetickspersecond.php
+ * @return int the image ticks-per-second.
+ */
+ public function getImageTicksPerSecond () {}
+
+ /**
+ * (PECL imagick 0.9.10-0.9.9)<br/>
+ * Gets the potential image type
+ * @link https://php.net/manual/en/imagick.getimagetype.php
+ * @return int the potential image type.
+ * <b>imagick::IMGTYPE_UNDEFINED</b>
+ * <b>imagick::IMGTYPE_BILEVEL</b>
+ * <b>imagick::IMGTYPE_GRAYSCALE</b>
+ * <b>imagick::IMGTYPE_GRAYSCALEMATTE</b>
+ * <b>imagick::IMGTYPE_PALETTE</b>
+ * <b>imagick::IMGTYPE_PALETTEMATTE</b>
+ * <b>imagick::IMGTYPE_TRUECOLOR</b>
+ * <b>imagick::IMGTYPE_TRUECOLORMATTE</b>
+ * <b>imagick::IMGTYPE_COLORSEPARATION</b>
+ * <b>imagick::IMGTYPE_COLORSEPARATIONMATTE</b>
+ * <b>imagick::IMGTYPE_OPTIMIZE</b>
+ */
+ public function getImageType () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image units of resolution
+ * @link https://php.net/manual/en/imagick.getimageunits.php
+ * @return int the image units of resolution.
+ */
+ public function getImageUnits () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the virtual pixel method
+ * @link https://php.net/manual/en/imagick.getimagevirtualpixelmethod.php
+ * @return int the virtual pixel method on success.
+ */
+ public function getImageVirtualPixelMethod () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the chromaticity white point
+ * @link https://php.net/manual/en/imagick.getimagewhitepoint.php
+ * @return array the chromaticity white point as an associative array with the keys
+ * "x" and "y".
+ */
+ public function getImageWhitePoint () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the image width
+ * @link https://php.net/manual/en/imagick.getimagewidth.php
+ * @return int the image width.
+ */
+ public function getImageWidth () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the number of images in the object
+ * @link https://php.net/manual/en/imagick.getnumberimages.php
+ * @return int the number of images associated with Imagick object.
+ */
+ public function getNumberImages () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the image total ink density
+ * @link https://php.net/manual/en/imagick.getimagetotalinkdensity.php
+ * @return float the image total ink density of the image.
+ * Throw an <b>ImagickException</b> on error.
+ * @throws ImagickException on error
+ */
+ public function getImageTotalInkDensity () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Extracts a region of the image
+ * @link https://php.net/manual/en/imagick.getimageregion.php
+ * @param int $width <p>
+ * The width of the extracted region.
+ * </p>
+ * @param int $height <p>
+ * The height of the extracted region.
+ * </p>
+ * @param int $x <p>
+ * X-coordinate of the top-left corner of the extracted region.
+ * </p>
+ * @param int $y <p>
+ * Y-coordinate of the top-left corner of the extracted region.
+ * </p>
+ * @return Imagick Extracts a region of the image and returns it as a new wand.
+ */
+ public function getImageRegion ($width, $height, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a new image as a copy
+ * @link https://php.net/manual/en/imagick.implodeimage.php
+ * @param float $radius <p>
+ * The radius of the implode
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function implodeImage ($radius) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adjusts the levels of an image
+ * @link https://php.net/manual/en/imagick.levelimage.php
+ * @param float $blackPoint <p>
+ * The image black point
+ * </p>
+ * @param float $gamma <p>
+ * The gamma value
+ * </p>
+ * @param float $whitePoint <p>
+ * The image white point
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function levelImage ($blackPoint, $gamma, $whitePoint, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Scales an image proportionally 2x
+ * @link https://php.net/manual/en/imagick.magnifyimage.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function magnifyImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Replaces the colors of an image with the closest color from a reference image.
+ * @link https://php.net/manual/en/imagick.mapimage.php
+ * @param Imagick $map
+ * @param bool $dither
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function mapImage (Imagick $map, $dither) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Changes the transparency value of a color
+ * @link https://php.net/manual/en/imagick.mattefloodfillimage.php
+ * @param float $alpha <p>
+ * The level of transparency: 1.0 is fully opaque and 0.0 is fully
+ * transparent.
+ * </p>
+ * @param float $fuzz <p>
+ * The fuzz member of image defines how much tolerance is acceptable to
+ * consider two colors as the same.
+ * </p>
+ * @param mixed $bordercolor <p>
+ * An <b>ImagickPixel</b> object or string representing the border color.
+ * </p>
+ * @param int $x <p>
+ * The starting x coordinate of the operation.
+ * </p>
+ * @param int $y <p>
+ * The starting y coordinate of the operation.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function matteFloodfillImage ($alpha, $fuzz, $bordercolor, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Applies a digital filter
+ * @link https://php.net/manual/en/imagick.medianfilterimage.php
+ * @param float $radius <p>
+ * The radius of the pixel neighborhood.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function medianFilterImage ($radius) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Negates the colors in the reference image
+ * @link https://php.net/manual/en/imagick.negateimage.php
+ * @param bool $gray <p>
+ * Whether to only negate grayscale pixels within the image.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function negateImage ($gray, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Change any pixel that matches color
+ * @link https://php.net/manual/en/imagick.paintopaqueimage.php
+ * @param mixed $target <p>
+ * Change this target color to the fill color within the image. An
+ * ImagickPixel object or a string representing the target color.
+ * </p>
+ * @param mixed $fill <p>
+ * An ImagickPixel object or a string representing the fill color.
+ * </p>
+ * @param float $fuzz <p>
+ * The fuzz member of image defines how much tolerance is acceptable to
+ * consider two colors as the same.
+ * </p>
+ * @param int $channel [optional] <p>
+ * Provide any channel constant that is valid for your channel mode. To
+ * apply to more than one channel, combine channeltype constants using
+ * bitwise operators. Refer to this
+ * list of channel constants.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function paintOpaqueImage ($target, $fill, $fuzz, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Changes any pixel that matches color with the color defined by fill
+ * @link https://php.net/manual/en/imagick.painttransparentimage.php
+ * @param mixed $target <p>
+ * Change this target color to specified opacity value within the image.
+ * </p>
+ * @param float $alpha <p>
+ * The level of transparency: 1.0 is fully opaque and 0.0 is fully
+ * transparent.
+ * </p>
+ * @param float $fuzz <p>
+ * The fuzz member of image defines how much tolerance is acceptable to
+ * consider two colors as the same.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function paintTransparentImage ($target, $alpha, $fuzz) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Quickly pin-point appropriate parameters for image processing
+ * @link https://php.net/manual/en/imagick.previewimages.php
+ * @param int $preview <p>
+ * Preview type. See Preview type constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function previewImages ($preview) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds or removes a profile from an image
+ * @link https://php.net/manual/en/imagick.profileimage.php
+ * @param string $name
+ * @param string $profile
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function profileImage ($name, $profile) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Analyzes the colors within a reference image
+ * @link https://php.net/manual/en/imagick.quantizeimage.php
+ * @param int $numberColors
+ * @param int $colorspace
+ * @param int $treedepth
+ * @param bool $dither
+ * @param bool $measureError
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function quantizeImage ($numberColors, $colorspace, $treedepth, $dither, $measureError) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Analyzes the colors within a sequence of images
+ * @link https://php.net/manual/en/imagick.quantizeimages.php
+ * @param int $numberColors
+ * @param int $colorspace
+ * @param int $treedepth
+ * @param bool $dither
+ * @param bool $measureError
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function quantizeImages ($numberColors, $colorspace, $treedepth, $dither, $measureError) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Smooths the contours of an image
+ * @link https://php.net/manual/en/imagick.reducenoiseimage.php
+ * @param float $radius
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function reduceNoiseImage ($radius) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Removes the named image profile and returns it
+ * @link https://php.net/manual/en/imagick.removeimageprofile.php
+ * @param string $name
+ * @return string a string containing the profile of the image.
+ */
+ public function removeImageProfile ($name) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Separates a channel from the image
+ * @link https://php.net/manual/en/imagick.separateimagechannel.php
+ * @param int $channel
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function separateImageChannel ($channel) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sepia tones an image
+ * @link https://php.net/manual/en/imagick.sepiatoneimage.php
+ * @param float $threshold
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function sepiaToneImage ($threshold) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image bias for any method that convolves an image
+ * @link https://php.net/manual/en/imagick.setimagebias.php
+ * @param float $bias
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageBias ($bias) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image chromaticity blue primary point
+ * @link https://php.net/manual/en/imagick.setimageblueprimary.php
+ * @param float $x
+ * @param float $y
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageBluePrimary ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image border color
+ * @link https://php.net/manual/en/imagick.setimagebordercolor.php
+ * @param mixed $border <p>
+ * The border color
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageBorderColor ($border) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the depth of a particular image channel
+ * @link https://php.net/manual/en/imagick.setimagechanneldepth.php
+ * @param int $channel
+ * @param int $depth
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageChannelDepth ($channel, $depth) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the color of the specified colormap index
+ * @link https://php.net/manual/en/imagick.setimagecolormapcolor.php
+ * @param int $index
+ * @param ImagickPixel $color
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageColormapColor ($index, ImagickPixel $color) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image colorspace
+ * @link https://php.net/manual/en/imagick.setimagecolorspace.php
+ * @param int $colorspace <p>
+ * One of the COLORSPACE constants
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageColorspace ($colorspace) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image disposal method
+ * @link https://php.net/manual/en/imagick.setimagedispose.php
+ * @param int $dispose
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageDispose ($dispose) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image size
+ * @link https://php.net/manual/en/imagick.setimageextent.php
+ * @param int $columns
+ * @param int $rows
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageExtent ($columns, $rows) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image chromaticity green primary point
+ * @link https://php.net/manual/en/imagick.setimagegreenprimary.php
+ * @param float $x
+ * @param float $y
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageGreenPrimary ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image compression
+ * @link https://php.net/manual/en/imagick.setimageinterlacescheme.php
+ * @param int $interlace_scheme
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageInterlaceScheme ($interlace_scheme) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds a named profile to the Imagick object
+ * @link https://php.net/manual/en/imagick.setimageprofile.php
+ * @param string $name
+ * @param string $profile
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageProfile ($name, $profile) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image chromaticity red primary point
+ * @link https://php.net/manual/en/imagick.setimageredprimary.php
+ * @param float $x
+ * @param float $y
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageRedPrimary ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image rendering intent
+ * @link https://php.net/manual/en/imagick.setimagerenderingintent.php
+ * @param int $rendering_intent
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageRenderingIntent ($rendering_intent) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image virtual pixel method
+ * @link https://php.net/manual/en/imagick.setimagevirtualpixelmethod.php
+ * @param int $method
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageVirtualPixelMethod ($method) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image chromaticity white point
+ * @link https://php.net/manual/en/imagick.setimagewhitepoint.php
+ * @param float $x
+ * @param float $y
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImageWhitePoint ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adjusts the contrast of an image
+ * @link https://php.net/manual/en/imagick.sigmoidalcontrastimage.php
+ * @param bool $sharpen
+ * @param float $alpha
+ * @param float $beta
+ * @param int $channel [optional]
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function sigmoidalContrastImage ($sharpen, $alpha, $beta, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Composites two images
+ * @link https://php.net/manual/en/imagick.stereoimage.php
+ * @param Imagick $offset_wand
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function stereoImage (Imagick $offset_wand) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Repeatedly tiles the texture image
+ * @link https://php.net/manual/en/imagick.textureimage.php
+ * @param Imagick $texture_wand
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function textureImage (Imagick $texture_wand) {}
+
+ /**
+ * pplies a color vector to each pixel in the image. The 'opacity' color is a per channel strength factor for how strongly the color should be applied.
+ * If legacy is true, the behaviour of this function is incorrect, but consistent with how it behaved before Imagick version 3.4.0
+ * @link https://php.net/manual/en/imagick.tintimage.php
+ * @param mixed $tint
+ * @param mixed $opacity
+ * @param bool $legacy [optional]
+ * @return bool <b>TRUE</b> on success.
+ * @throws ImagickException Throws ImagickException on error
+ * @since 2.0.0
+ */
+ public function tintImage ($tint, $opacity, $legacy = false) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sharpens an image
+ * @link https://php.net/manual/en/imagick.unsharpmaskimage.php
+ * @param float $radius
+ * @param float $sigma
+ * @param float $amount
+ * @param float $threshold
+ * @param int $channel [optional]
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function unsharpMaskImage ($radius, $sigma, $amount, $threshold, $channel = Imagick::CHANNEL_ALL) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns a new Imagick object
+ * @link https://php.net/manual/en/imagick.getimage.php
+ * @return Imagick a new Imagick object with the current image sequence.
+ */
+ public function getImage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds new image to Imagick object image list
+ * @link https://php.net/manual/en/imagick.addimage.php
+ * @param Imagick $source <p>
+ * The source Imagick object
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function addImage (Imagick $source) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Replaces image in the object
+ * @link https://php.net/manual/en/imagick.setimage.php
+ * @param Imagick $replace <p>
+ * The replace Imagick object
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setImage (Imagick $replace) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a new image
+ * @link https://php.net/manual/en/imagick.newimage.php
+ * @param int $cols <p>
+ * Columns in the new image
+ * </p>
+ * @param int $rows <p>
+ * Rows in the new image
+ * </p>
+ * @param mixed $background <p>
+ * The background color used for this image
+ * </p>
+ * @param string $format [optional] <p>
+ * Image format. This parameter was added in Imagick version 2.0.1.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function newImage ($cols, $rows, $background, $format = null) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Creates a new image
+ * @link https://php.net/manual/en/imagick.newpseudoimage.php
+ * @param int $columns <p>
+ * columns in the new image
+ * </p>
+ * @param int $rows <p>
+ * rows in the new image
+ * </p>
+ * @param string $pseudoString <p>
+ * string containing pseudo image definition.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function newPseudoImage ($columns, $rows, $pseudoString) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the object compression type
+ * @link https://php.net/manual/en/imagick.getcompression.php
+ * @return int the compression constant
+ */
+ public function getCompression () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the object compression quality
+ * @link https://php.net/manual/en/imagick.getcompressionquality.php
+ * @return int integer describing the compression quality
+ */
+ public function getCompressionQuality () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the ImageMagick API copyright as a string
+ * @link https://php.net/manual/en/imagick.getcopyright.php
+ * @return string a string containing the copyright notice of Imagemagick and
+ * Magickwand C API.
+ */
+ public static function getCopyright () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * The filename associated with an image sequence
+ * @link https://php.net/manual/en/imagick.getfilename.php
+ * @return string a string on success.
+ */
+ public function getFilename () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the format of the Imagick object
+ * @link https://php.net/manual/en/imagick.getformat.php
+ * @return string the format of the image.
+ */
+ public function getFormat () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the ImageMagick home URL
+ * @link https://php.net/manual/en/imagick.gethomeurl.php
+ * @return string a link to the imagemagick homepage.
+ */
+ public static function getHomeURL () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the object interlace scheme
+ * @link https://php.net/manual/en/imagick.getinterlacescheme.php
+ * @return int Gets the wand interlace
+ * scheme.
+ */
+ public function getInterlaceScheme () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns a value associated with the specified key
+ * @link https://php.net/manual/en/imagick.getoption.php
+ * @param string $key <p>
+ * The name of the option
+ * </p>
+ * @return string a value associated with a wand and the specified key.
+ */
+ public function getOption ($key) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the ImageMagick package name
+ * @link https://php.net/manual/en/imagick.getpackagename.php
+ * @return string the ImageMagick package name as a string.
+ */
+ public static function getPackageName () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the page geometry
+ * @link https://php.net/manual/en/imagick.getpage.php
+ * @return array the page geometry associated with the Imagick object in
+ * an associative array with the keys "width", "height", "x", and "y",
+ * throwing ImagickException on error.
+ * @throws ImagickException on error
+ */
+ public function getPage () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the quantum depth
+ * @link https://php.net/manual/en/imagick.getquantumdepth.php
+ * @return array the Imagick quantum depth as a string.
+ */
+ public static function getQuantumDepth () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the Imagick quantum range
+ * @link https://php.net/manual/en/imagick.getquantumrange.php
+ * @return array the Imagick quantum range as a string.
+ */
+ public static function getQuantumRange () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the ImageMagick release date
+ * @link https://php.net/manual/en/imagick.getreleasedate.php
+ * @return string the ImageMagick release date as a string.
+ */
+ public static function getReleaseDate () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the specified resource's memory usage
+ * @link https://php.net/manual/en/imagick.getresource.php
+ * @param int $type <p>
+ * Refer to the list of resourcetype constants.
+ * </p>
+ * @return int the specified resource's memory usage in megabytes.
+ */
+ public static function getResource ($type) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the specified resource limit
+ * @link https://php.net/manual/en/imagick.getresourcelimit.php
+ * @param int $type <p>
+ * Refer to the list of resourcetype constants.
+ * </p>
+ * @return int the specified resource limit in megabytes.
+ */
+ public static function getResourceLimit ($type) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the horizontal and vertical sampling factor
+ * @link https://php.net/manual/en/imagick.getsamplingfactors.php
+ * @return array an associative array with the horizontal and vertical sampling
+ * factors of the image.
+ */
+ public function getSamplingFactors () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the size associated with the Imagick object
+ * @link https://php.net/manual/en/imagick.getsize.php
+ * @return array the size associated with the Imagick object as an array with the
+ * keys "columns" and "rows".
+ */
+ public function getSize () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the ImageMagick API version
+ * @link https://php.net/manual/en/imagick.getversion.php
+ * @return array the ImageMagick API version as a string and as a number.
+ */
+ public static function getVersion () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the object's default background color
+ * @link https://php.net/manual/en/imagick.setbackgroundcolor.php
+ * @param mixed $background
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setBackgroundColor ($background) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the object's default compression type
+ * @link https://php.net/manual/en/imagick.setcompression.php
+ * @param int $compression
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setCompression ($compression) {}
+
+ /**
+ * (PECL imagick 0.9.10-0.9.9)<br/>
+ * Sets the object's default compression quality
+ * @link https://php.net/manual/en/imagick.setcompressionquality.php
+ * @param int $quality
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setCompressionQuality ($quality) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the filename before you read or write the image
+ * @link https://php.net/manual/en/imagick.setfilename.php
+ * @param string $filename
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setFilename ($filename) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the format of the Imagick object
+ * @link https://php.net/manual/en/imagick.setformat.php
+ * @param string $format
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setFormat ($format) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image compression
+ * @link https://php.net/manual/en/imagick.setinterlacescheme.php
+ * @param int $interlace_scheme
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setInterlaceScheme ($interlace_scheme) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Set an option
+ * @link https://php.net/manual/en/imagick.setoption.php
+ * @param string $key
+ * @param string $value
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setOption ($key, $value) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the page geometry of the Imagick object
+ * @link https://php.net/manual/en/imagick.setpage.php
+ * @param int $width
+ * @param int $height
+ * @param int $x
+ * @param int $y
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setPage ($width, $height, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the limit for a particular resource in megabytes
+ * @link https://php.net/manual/en/imagick.setresourcelimit.php
+ * @param int $type <p>
+ * Refer to the list of resourcetype constants.
+ * </p>
+ * @param int $limit <p>
+ * The resource limit. The unit depends on the type of the resource being limited.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public static function setResourceLimit ($type, $limit) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image resolution
+ * @link https://php.net/manual/en/imagick.setresolution.php
+ * @param float $x_resolution <p>
+ * The horizontal resolution.
+ * </p>
+ * @param float $y_resolution <p>
+ * The vertical resolution.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setResolution ($x_resolution, $y_resolution) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image sampling factors
+ * @link https://php.net/manual/en/imagick.setsamplingfactors.php
+ * @param array $factors
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setSamplingFactors (array $factors) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the size of the Imagick object
+ * @link https://php.net/manual/en/imagick.setsize.php
+ * @param int $columns
+ * @param int $rows
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setSize ($columns, $rows) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the image type attribute
+ * @link https://php.net/manual/en/imagick.settype.php
+ * @param int $image_type
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setType ($image_type) {}
+
+ public function key () {}
+
+ public function next () {}
+
+ public function rewind () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Checks if the current item is valid
+ * @link https://php.net/manual/en/imagick.valid.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function valid () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns a reference to the current Imagick object
+ * @link https://php.net/manual/en/imagick.current.php
+ * @return Imagick self on success.
+ */
+ public function current () {}
+
+ /**
+ * Change the brightness and/or contrast of an image. It converts the brightness and contrast parameters into slope and intercept and calls a polynomical function to apply to the image.
+ * @link https://php.net/manual/en/imagick.brightnesscontrastimage.php
+ * @param string $brightness
+ * @param string $contrast
+ * @param int $CHANNEL [optional]
+ * @return void
+ * @since 3.3.0
+ */
+ public function brightnessContrastImage ($brightness, $contrast, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
+
+ /**
+ * Applies a user supplied kernel to the image according to the given morphology method.
+ * @link https://php.net/manual/en/imagick.morphology.php
+ * @param int $morphologyMethod Which morphology method to use one of the \Imagick::MORPHOLOGY_* constants.
+ * @param int $iterations The number of iteration to apply the morphology function. A value of -1 means loop until no change found. How this is applied may depend on the morphology method. Typically this is a value of 1.
+ * @param ImagickKernel $ImagickKernel
+ * @param int $CHANNEL [optional]
+ * @return void
+ * @since 3.3.0
+ */
+ public function morphology ($morphologyMethod, $iterations, ImagickKernel $ImagickKernel, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
+
+ /**
+ * Applies a custom convolution kernel to the image.
+ * @link https://php.net/manual/en/imagick.filter.php
+ * @param ImagickKernel $ImagickKernel An instance of ImagickKernel that represents either a single kernel or a linked series of kernels.
+ * @param int $CHANNEL [optional] Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
+ * @return void
+ * @since 3.3.0
+ */
+ public function filter (ImagickKernel $ImagickKernel , $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
+
+ /**
+ * Apply color transformation to an image. The method permits saturation changes, hue rotation, luminance to alpha, and various other effects. Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets).
+ * The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255)
+ * @link https://php.net/manual/en/imagick.colormatriximage.php
+ * @param string $color_matrix
+ * @return void
+ * @since 3.3.0
+ */
+ public function colorMatrixImage ($color_matrix = Imagick::CHANNEL_DEFAULT) { }
+
+ /**
+ * Deletes an image property.
+ * @link https://php.net/manual/en/imagick.deleteimageproperty.php
+ * @param string $name The name of the property to delete.
+ * @return void
+ * @since 3.3.0
+ */
+ public function deleteImageProperty ($name) { }
+
+ /**
+ * Implements the discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.
+ * @link https://php.net/manual/en/imagick.forwardfouriertransformimage.php
+ * @param bool $magnitude If true, return as magnitude / phase pair otherwise a real / imaginary image pair.
+ * @return void
+ * @since 3.3.0
+ */
+ public function forwardFourierTransformimage ($magnitude) { }
+
+ /**
+ * Gets the current image's compression type.
+ * @link https://php.net/manual/en/imagick.getimagecompression.php
+ * @return int
+ * @since 3.3.0
+ */
+ public function getImageCompression () { }
+
+ /**
+ * Get the StringRegistry entry for the named key or false if not set.
+ * @link https://php.net/manual/en/imagick.getregistry.php
+ * @param string $key
+ * @return string|false
+ * @throws Exception Since version >=3.4.3. Throws an exception if the key does not exist, rather than terminating the program.
+ * @since 3.3.0
+ */
+ public static function getRegistry ($key) { }
+
+ /**
+ * Returns the ImageMagick quantum range as an integer.
+ * @link https://php.net/manual/en/imagick.getquantum.php
+ * @return int
+ * @since 3.3.0
+ */
+ public static function getQuantum () { }
+
+ /**
+ * Replaces any embedded formatting characters with the appropriate image property and returns the interpreted text. See https://www.imagemagick.org/script/escape.php for escape sequences.
+ * @link https://php.net/manual/en/imagick.identifyformat.php
+ * @see https://www.imagemagick.org/script/escape.php
+ * @param string $embedText A string containing formatting sequences e.g. "Trim box: %@ number of unique colors: %k".
+ * @return bool
+ * @since 3.3.0
+ */
+ public function identifyFormat ($embedText) { }
+
+ /**
+ * Implements the inverse discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.
+ * @link https://php.net/manual/en/imagick.inversefouriertransformimage.php
+ * @param Imagick $complement The second image to combine with this one to form either the magnitude / phase or real / imaginary image pair.
+ * @param bool $magnitude If true, combine as magnitude / phase pair otherwise a real / imaginary image pair.
+ * @return void
+ * @since 3.3.0
+ */
+ public function inverseFourierTransformImage ($complement, $magnitude) { }
+
+ /**
+ * List all the registry settings. Returns an array of all the key/value pairs in the registry
+ * @link https://php.net/manual/en/imagick.listregistry.php
+ * @return array An array containing the key/values from the registry.
+ * @since 3.3.0
+ */
+ public static function listRegistry () { }
+
+ /**
+ * Rotational blurs an image.
+ * @link https://php.net/manual/en/imagick.rotationalblurimage.php
+ * @param string $angle
+ * @param string $CHANNEL
+ * @return void
+ * @since 3.3.0
+ */
+ public function rotationalBlurImage ($angle, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
+
+ /**
+ * Selectively blur an image within a contrast threshold. It is similar to the unsharpen mask that sharpens everything with contrast above a certain threshold.
+ * @link https://php.net/manual/en/imagick.selectiveblurimage.php
+ * @param float $radius
+ * @param float $sigma
+ * @param float $threshold
+ * @param int $CHANNEL Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. Defaults to Imagick::CHANNEL_DEFAULT. Refer to this list of channel constants
+ * @return void
+ * @since 3.3.0
+ */
+ public function selectiveBlurImage ($radius, $sigma, $threshold, $CHANNEL = Imagick::CHANNEL_DEFAULT) { }
+
+ /**
+ * Set whether antialiasing should be used for operations. On by default.
+ * @param bool $antialias
+ * @return int
+ * @since 3.3.0
+ */
+ public function setAntiAlias ($antialias) { }
+
+ /**
+ * @link https://php.net/manual/en/imagick.setimagebiasquantum.php
+ * @param string $bias
+ * @return void
+ * @since 3.3.0
+ */
+ public function setImageBiasQuantum ($bias) { }
+
+ /**
+ * Set a callback that will be called during the processing of the Imagick image.
+ * @link https://php.net/manual/en/imagick.setprogressmonitor.php
+ * @param callable $callback The progress function to call. It should return true if image processing should continue, or false if it should be cancelled.
+ * The offset parameter indicates the progress and the span parameter indicates the total amount of work needed to be done.
+ * <pre> bool callback ( mixed $offset , mixed $span ) </pre>
+ * <b>Caution</b>
+ * The values passed to the callback function are not consistent. In particular the span parameter can increase during image processing. Because of this calculating the percentage complete of an image operation is not trivial.
+ * @return void
+ * @since 3.3.0
+ */
+ public function setProgressMonitor ($callback) { }
+
+ /**
+ * Sets the ImageMagick registry entry named key to value. This is most useful for setting "temporary-path" which controls where ImageMagick creates temporary images e.g. while processing PDFs.
+ * @link https://php.net/manual/en/imagick.setregistry.php
+ * @param string $key
+ * @param string $value
+ * @return void
+ * @since 3.3.0
+ */
+ public static function setRegistry ($key, $value) { }
+
+ /**
+ * Replace each pixel with corresponding statistic from the neighborhood of the specified width and height.
+ * @link https://php.net/manual/en/imagick.statisticimage.php
+ * @param int $type
+ * @param int $width
+ * @param int $height
+ * @param int $channel [optional]
+ * @return void
+ * @since 3.3.0
+ */
+ public function statisticImage ($type, $width, $height, $channel = Imagick::CHANNEL_DEFAULT ) { }
+
+ /**
+ * Searches for a subimage in the current image and returns a similarity image such that an exact match location is
+ * completely white and if none of the pixels match, black, otherwise some gray level in-between.
+ * You can also pass in the optional parameters bestMatch and similarity. After calling the function similarity will
+ * be set to the 'score' of the similarity between the subimage and the matching position in the larger image,
+ * bestMatch will contain an associative array with elements x, y, width, height that describe the matching region.
+ *
+ * @link https://php.net/manual/en/imagick.subimagematch.php
+ * @param Imagick $imagick
+ * @param array &$bestMatch [optional]
+ * @param float &$similarity [optional] A new image that displays the amount of similarity at each pixel.
+ * @param float $similarity_threshold [optional] Only used if compiled with ImageMagick (library) > 7
+ * @param int $metric [optional] Only used if compiled with ImageMagick (library) > 7
+ * @return Imagick
+ * @since 3.3.0
+ */
+ public function subImageMatch (Imagick $imagick, array &$bestMatch, &$similarity, $similarity_threshold, $metric) { }
+
+ /**
+ * Is an alias of Imagick::subImageMatch
+ *
+ * @param Imagick $imagick
+ * @param array $bestMatch [optional]
+ * @param float $similarity [optional] A new image that displays the amount of similarity at each pixel.
+ * @param float $similarity_threshold [optional]
+ * @param int $metric [optional]
+ * @return Imagick
+ * @see Imagick::subImageMatch() This function is an alias of subImageMatch()
+ * @since 3.4.0
+ */
+ public function similarityImage (Imagick $imagick, array &$bestMatch, &$similarity, $similarity_threshold, $metric) { }
+
+ /**
+ * Returns any ImageMagick configure options that match the specified pattern (e.g. "*" for all). Options include NAME, VERSION, LIB_VERSION, etc.
+ * @return string
+ * @since 3.4.0
+ */
+ public function getConfigureOptions () { }
+
+ /**
+ * GetFeatures() returns the ImageMagick features that have been compiled into the runtime.
+ * @return string
+ * @since 3.4.0
+ */
+ public function getFeatures () { }
+
+ /**
+ * @return int
+ * @since 3.4.0
+ */
+ public function getHDRIEnabled () { }
+
+ /**
+ * Sets the image channel mask. Returns the previous set channel mask.
+ * Only works with Imagick >=7
+ * @param int $channel
+ * @since 3.4.0
+ */
+ public function setImageChannelMask ($channel) {}
+
+ /**
+ * Merge multiple images of the same size together with the selected operator. https://www.imagemagick.org/Usage/layers/#evaluate-sequence
+ * @param int $EVALUATE_CONSTANT
+ * @return bool
+ * @see https://www.imagemagick.org/Usage/layers/#evaluate-sequence
+ * @since 3.4.0
+ */
+ public function evaluateImages ($EVALUATE_CONSTANT) { }
+
+ /**
+ * Extracts the 'mean' from the image and adjust the image to try make set its gamma appropriately.
+ * @param int $channel [optional] Default value Imagick::CHANNEL_ALL
+ * @return bool
+ * @since 3.4.1
+ */
+ public function autoGammaImage ($channel = Imagick::CHANNEL_ALL) { }
+
+ /**
+ * Adjusts an image so that its orientation is suitable $ for viewing (i.e. top-left orientation).
+ * @return bool
+ * @since 3.4.1
+ */
+ public function autoOrient () { }
+
+ /**
+ * Composite one image onto another using the specified gravity.
+ *
+ * @param Imagick $imagick
+ * @param int $COMPOSITE_CONSTANT
+ * @param int $GRAVITY_CONSTANT
+ * @return bool
+ * @since 3.4.1
+ */
+ public function compositeImageGravity(Imagick $imagick, $COMPOSITE_CONSTANT, $GRAVITY_CONSTANT) { }
+
+ /**
+ * Attempts to increase the appearance of large-scale light-dark transitions.
+ *
+ * @param float $radius
+ * @param float $strength
+ * @return bool
+ * @since 3.4.1
+ */
+ public function localContrastImage($radius, $strength) { }
+
+ /**
+ * Identifies the potential image type, returns one of the Imagick::IMGTYPE_* constants
+ * @return int
+ * @since 3.4.3
+ */
+ public function identifyImageType() { }
+
+ /**
+ * Sets the image to the specified alpha level. Will replace ImagickDraw::setOpacity()
+ *
+ * @param float $alpha
+ * @return bool
+ * @since 3.4.3
+ */
+ public function setImageAlpha($alpha) { }
+}
+
+/**
+ * @method ImagickDraw clone() (PECL imagick 2.0.0)<br/>Makes an exact copy of the specified ImagickDraw object
+ * @link https://php.net/manual/en/class.imagickdraw.php
+ */
+class ImagickDraw {
+
+ public function resetVectorGraphics () {}
+
+ public function getTextKerning () {}
+
+ /**
+ * @param $kerning
+ */
+ public function setTextKerning ($kerning) {}
+
+ public function getTextInterWordSpacing () {}
+
+ /**
+ * @param $spacing
+ */
+ public function setTextInterWordSpacing ($spacing) {}
+
+ public function getTextInterLineSpacing () {}
+
+ /**
+ * @param $spacing
+ */
+ public function setTextInterLineSpacing ($spacing) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * The ImagickDraw constructor
+ * @link https://php.net/manual/en/imagickdraw.construct.php
+ */
+ public function __construct () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the fill color to be used for drawing filled objects
+ * @link https://php.net/manual/en/imagickdraw.setfillcolor.php
+ * @param ImagickPixel $fill_pixel <p>
+ * ImagickPixel to use to set the color
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setFillColor (ImagickPixel $fill_pixel) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the opacity to use when drawing using the fill color or fill texture
+ * @link https://php.net/manual/en/imagickdraw.setfillalpha.php
+ * @param float $opacity <p>
+ * fill alpha
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setFillAlpha ($opacity) {}
+
+ /**
+ * @param $x_resolution
+ * @param $y_resolution
+ */
+ public function setResolution ($x_resolution, $y_resolution) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the color used for stroking object outlines
+ * @link https://php.net/manual/en/imagickdraw.setstrokecolor.php
+ * @param ImagickPixel $stroke_pixel <p>
+ * the stroke color
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setStrokeColor (ImagickPixel $stroke_pixel) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies the opacity of stroked object outlines
+ * @link https://php.net/manual/en/imagickdraw.setstrokealpha.php
+ * @param float $opacity <p>
+ * opacity
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setStrokeAlpha ($opacity) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the width of the stroke used to draw object outlines
+ * @link https://php.net/manual/en/imagickdraw.setstrokewidth.php
+ * @param float $stroke_width <p>
+ * stroke width
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setStrokeWidth ($stroke_width) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Clears the ImagickDraw
+ * @link https://php.net/manual/en/imagickdraw.clear.php
+ * @return bool an ImagickDraw object.
+ */
+ public function clear () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a circle
+ * @link https://php.net/manual/en/imagickdraw.circle.php
+ * @param float $ox <p>
+ * origin x coordinate
+ * </p>
+ * @param float $oy <p>
+ * origin y coordinate
+ * </p>
+ * @param float $px <p>
+ * perimeter x coordinate
+ * </p>
+ * @param float $py <p>
+ * perimeter y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function circle ($ox, $oy, $px, $py) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws text on the image
+ * @link https://php.net/manual/en/imagickdraw.annotation.php
+ * @param float $x <p>
+ * The x coordinate where text is drawn
+ * </p>
+ * @param float $y <p>
+ * The y coordinate where text is drawn
+ * </p>
+ * @param string $text <p>
+ * The text to draw on the image
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function annotation ($x, $y, $text) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Controls whether text is antialiased
+ * @link https://php.net/manual/en/imagickdraw.settextantialias.php
+ * @param bool $antiAlias
+ * @return bool No value is returned.
+ */
+ public function setTextAntialias ($antiAlias) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies specifies the text code set
+ * @link https://php.net/manual/en/imagickdraw.settextencoding.php
+ * @param string $encoding <p>
+ * the encoding name
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setTextEncoding ($encoding) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the fully-specified font to use when annotating with text
+ * @link https://php.net/manual/en/imagickdraw.setfont.php
+ * @param string $font_name
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setFont ($font_name) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the font family to use when annotating with text
+ * @link https://php.net/manual/en/imagickdraw.setfontfamily.php
+ * @param string $font_family <p>
+ * the font family
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setFontFamily ($font_family) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the font pointsize to use when annotating with text
+ * @link https://php.net/manual/en/imagickdraw.setfontsize.php
+ * @param float $pointsize <p>
+ * the point size
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setFontSize ($pointsize) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the font style to use when annotating with text
+ * @link https://php.net/manual/en/imagickdraw.setfontstyle.php
+ * @param int $style <p>
+ * STYLETYPE_ constant
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setFontStyle ($style) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the font weight
+ * @link https://php.net/manual/en/imagickdraw.setfontweight.php
+ * @param int $font_weight
+ * @return bool
+ */
+ public function setFontWeight ($font_weight) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the font
+ * @link https://php.net/manual/en/imagickdraw.getfont.php
+ * @return string|false a string on success and false if no font is set.
+ */
+ public function getFont () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the font family
+ * @link https://php.net/manual/en/imagickdraw.getfontfamily.php
+ * @return string|false the font family currently selected or false if font family is not set.
+ */
+ public function getFontFamily () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the font pointsize
+ * @link https://php.net/manual/en/imagickdraw.getfontsize.php
+ * @return float the font size associated with the current ImagickDraw object.
+ */
+ public function getFontSize () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the font style
+ * @link https://php.net/manual/en/imagickdraw.getfontstyle.php
+ * @return int the font style constant (STYLE_) associated with the ImagickDraw object
+ * or 0 if no style is set.
+ */
+ public function getFontStyle () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the font weight
+ * @link https://php.net/manual/en/imagickdraw.getfontweight.php
+ * @return int an int on success and 0 if no weight is set.
+ */
+ public function getFontWeight () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Frees all associated resources
+ * @link https://php.net/manual/en/imagickdraw.destroy.php
+ * @return bool No value is returned.
+ */
+ public function destroy () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a rectangle
+ * @link https://php.net/manual/en/imagickdraw.rectangle.php
+ * @param float $x1 <p>
+ * x coordinate of the top left corner
+ * </p>
+ * @param float $y1 <p>
+ * y coordinate of the top left corner
+ * </p>
+ * @param float $x2 <p>
+ * x coordinate of the bottom right corner
+ * </p>
+ * @param float $y2 <p>
+ * y coordinate of the bottom right corner
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function rectangle ($x1, $y1, $x2, $y2) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a rounded rectangle
+ * @link https://php.net/manual/en/imagickdraw.roundrectangle.php
+ * @param float $x1 <p>
+ * x coordinate of the top left corner
+ * </p>
+ * @param float $y1 <p>
+ * y coordinate of the top left corner
+ * </p>
+ * @param float $x2 <p>
+ * x coordinate of the bottom right
+ * </p>
+ * @param float $y2 <p>
+ * y coordinate of the bottom right
+ * </p>
+ * @param float $rx <p>
+ * x rounding
+ * </p>
+ * @param float $ry <p>
+ * y rounding
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function roundRectangle ($x1, $y1, $x2, $y2, $rx, $ry) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws an ellipse on the image
+ * @link https://php.net/manual/en/imagickdraw.ellipse.php
+ * @param float $ox
+ * @param float $oy
+ * @param float $rx
+ * @param float $ry
+ * @param float $start
+ * @param float $end
+ * @return bool No value is returned.
+ */
+ public function ellipse ($ox, $oy, $rx, $ry, $start, $end) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Skews the current coordinate system in the horizontal direction
+ * @link https://php.net/manual/en/imagickdraw.skewx.php
+ * @param float $degrees <p>
+ * degrees to skew
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function skewX ($degrees) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Skews the current coordinate system in the vertical direction
+ * @link https://php.net/manual/en/imagickdraw.skewy.php
+ * @param float $degrees <p>
+ * degrees to skew
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function skewY ($degrees) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Applies a translation to the current coordinate system
+ * @link https://php.net/manual/en/imagickdraw.translate.php
+ * @param float $x <p>
+ * horizontal translation
+ * </p>
+ * @param float $y <p>
+ * vertical translation
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function translate ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a line
+ * @link https://php.net/manual/en/imagickdraw.line.php
+ * @param float $sx <p>
+ * starting x coordinate
+ * </p>
+ * @param float $sy <p>
+ * starting y coordinate
+ * </p>
+ * @param float $ex <p>
+ * ending x coordinate
+ * </p>
+ * @param float $ey <p>
+ * ending y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function line ($sx, $sy, $ex, $ey) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws an arc
+ * @link https://php.net/manual/en/imagickdraw.arc.php
+ * @param float $sx <p>
+ * Starting x ordinate of bounding rectangle
+ * </p>
+ * @param float $sy <p>
+ * starting y ordinate of bounding rectangle
+ * </p>
+ * @param float $ex <p>
+ * ending x ordinate of bounding rectangle
+ * </p>
+ * @param float $ey <p>
+ * ending y ordinate of bounding rectangle
+ * </p>
+ * @param float $sd <p>
+ * starting degrees of rotation
+ * </p>
+ * @param float $ed <p>
+ * ending degrees of rotation
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function arc ($sx, $sy, $ex, $ey, $sd, $ed) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Paints on the image's opacity channel
+ * @link https://php.net/manual/en/imagickdraw.matte.php
+ * @param float $x <p>
+ * x coordinate of the matte
+ * </p>
+ * @param float $y <p>
+ * y coordinate of the matte
+ * </p>
+ * @param int $paintMethod <p>
+ * PAINT_ constant
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function matte ($x, $y, $paintMethod) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a polygon
+ * @link https://php.net/manual/en/imagickdraw.polygon.php
+ * @param array $coordinates <p>
+ * multidimensional array like array( array( 'x' => 3, 'y' => 4 ), array( 'x' => 2, 'y' => 6 ) );
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function polygon (array $coordinates) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a point
+ * @link https://php.net/manual/en/imagickdraw.point.php
+ * @param float $x <p>
+ * point's x coordinate
+ * </p>
+ * @param float $y <p>
+ * point's y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function point ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the text decoration
+ * @link https://php.net/manual/en/imagickdraw.gettextdecoration.php
+ * @return int one of the DECORATION_ constants
+ * and 0 if no decoration is set.
+ */
+ public function getTextDecoration () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the code set used for text annotations
+ * @link https://php.net/manual/en/imagickdraw.gettextencoding.php
+ * @return string a string specifying the code set
+ * or false if text encoding is not set.
+ */
+ public function getTextEncoding () {}
+
+ public function getFontStretch () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the font stretch to use when annotating with text
+ * @link https://php.net/manual/en/imagickdraw.setfontstretch.php
+ * @param int $fontStretch <p>
+ * STRETCH_ constant
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setFontStretch ($fontStretch) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Controls whether stroked outlines are antialiased
+ * @link https://php.net/manual/en/imagickdraw.setstrokeantialias.php
+ * @param bool $stroke_antialias <p>
+ * the antialias setting
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setStrokeAntialias ($stroke_antialias) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies a text alignment
+ * @link https://php.net/manual/en/imagickdraw.settextalignment.php
+ * @param int $alignment <p>
+ * ALIGN_ constant
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setTextAlignment ($alignment) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies a decoration
+ * @link https://php.net/manual/en/imagickdraw.settextdecoration.php
+ * @param int $decoration <p>
+ * DECORATION_ constant
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setTextDecoration ($decoration) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies the color of a background rectangle
+ * @link https://php.net/manual/en/imagickdraw.settextundercolor.php
+ * @param ImagickPixel $under_color <p>
+ * the under color
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setTextUnderColor (ImagickPixel $under_color) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the overall canvas size
+ * @link https://php.net/manual/en/imagickdraw.setviewbox.php
+ * @param int $x1 <p>
+ * left x coordinate
+ * </p>
+ * @param int $y1 <p>
+ * left y coordinate
+ * </p>
+ * @param int $x2 <p>
+ * right x coordinate
+ * </p>
+ * @param int $y2 <p>
+ * right y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setViewbox ($x1, $y1, $x2, $y2) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adjusts the current affine transformation matrix
+ * @link https://php.net/manual/en/imagickdraw.affine.php
+ * @param array $affine <p>
+ * Affine matrix parameters
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function affine (array $affine) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a bezier curve
+ * @link https://php.net/manual/en/imagickdraw.bezier.php
+ * @param array $coordinates <p>
+ * Multidimensional array like array( array( 'x' => 1, 'y' => 2 ),
+ * array( 'x' => 3, 'y' => 4 ) )
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function bezier (array $coordinates) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Composites an image onto the current image
+ * @link https://php.net/manual/en/imagickdraw.composite.php
+ * @param int $compose <p>
+ * composition operator. One of COMPOSITE_ constants
+ * </p>
+ * @param float $x <p>
+ * x coordinate of the top left corner
+ * </p>
+ * @param float $y <p>
+ * y coordinate of the top left corner
+ * </p>
+ * @param float $width <p>
+ * width of the composition image
+ * </p>
+ * @param float $height <p>
+ * height of the composition image
+ * </p>
+ * @param Imagick $compositeWand <p>
+ * the Imagick object where composition image is taken from
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function composite ($compose, $x, $y, $width, $height, Imagick $compositeWand) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws color on image
+ * @link https://php.net/manual/en/imagickdraw.color.php
+ * @param float $x <p>
+ * x coordinate of the paint
+ * </p>
+ * @param float $y <p>
+ * y coordinate of the paint
+ * </p>
+ * @param int $paintMethod <p>
+ * one of the PAINT_ constants
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function color ($x, $y, $paintMethod) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds a comment
+ * @link https://php.net/manual/en/imagickdraw.comment.php
+ * @param string $comment <p>
+ * The comment string to add to vector output stream
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function comment ($comment) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Obtains the current clipping path ID
+ * @link https://php.net/manual/en/imagickdraw.getclippath.php
+ * @return string|false a string containing the clip path ID or false if no clip path exists.
+ */
+ public function getClipPath () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the current polygon fill rule
+ * @link https://php.net/manual/en/imagickdraw.getcliprule.php
+ * @return int one of the FILLRULE_ constants.
+ */
+ public function getClipRule () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the interpretation of clip path units
+ * @link https://php.net/manual/en/imagickdraw.getclipunits.php
+ * @return int an int on success.
+ */
+ public function getClipUnits () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the fill color
+ * @link https://php.net/manual/en/imagickdraw.getfillcolor.php
+ * @return ImagickPixel an ImagickPixel object.
+ */
+ public function getFillColor () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the opacity used when drawing
+ * @link https://php.net/manual/en/imagickdraw.getfillopacity.php
+ * @return float The opacity.
+ */
+ public function getFillOpacity () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the fill rule
+ * @link https://php.net/manual/en/imagickdraw.getfillrule.php
+ * @return int a FILLRULE_ constant
+ */
+ public function getFillRule () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the text placement gravity
+ * @link https://php.net/manual/en/imagickdraw.getgravity.php
+ * @return int a GRAVITY_ constant on success and 0 if no gravity is set.
+ */
+ public function getGravity () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the current stroke antialias setting
+ * @link https://php.net/manual/en/imagickdraw.getstrokeantialias.php
+ * @return bool <b>TRUE</b> if antialiasing is on and false if it is off.
+ */
+ public function getStrokeAntialias () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the color used for stroking object outlines
+ * @link https://php.net/manual/en/imagickdraw.getstrokecolor.php
+ * @return ImagickPixel an ImagickPixel object which describes the color.
+ */
+ public function getStrokeColor () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns an array representing the pattern of dashes and gaps used to stroke paths
+ * @link https://php.net/manual/en/imagickdraw.getstrokedasharray.php
+ * @return array an array on success and empty array if not set.
+ */
+ public function getStrokeDashArray () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the offset into the dash pattern to start the dash
+ * @link https://php.net/manual/en/imagickdraw.getstrokedashoffset.php
+ * @return float a float representing the offset and 0 if it's not set.
+ */
+ public function getStrokeDashOffset () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the shape to be used at the end of open subpaths when they are stroked
+ * @link https://php.net/manual/en/imagickdraw.getstrokelinecap.php
+ * @return int one of the LINECAP_ constants or 0 if stroke linecap is not set.
+ */
+ public function getStrokeLineCap () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the shape to be used at the corners of paths when they are stroked
+ * @link https://php.net/manual/en/imagickdraw.getstrokelinejoin.php
+ * @return int one of the LINEJOIN_ constants or 0 if stroke line join is not set.
+ */
+ public function getStrokeLineJoin () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the stroke miter limit
+ * @link https://php.net/manual/en/imagickdraw.getstrokemiterlimit.php
+ * @return int an int describing the miter limit
+ * and 0 if no miter limit is set.
+ */
+ public function getStrokeMiterLimit () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the opacity of stroked object outlines
+ * @link https://php.net/manual/en/imagickdraw.getstrokeopacity.php
+ * @return float a float describing the opacity.
+ */
+ public function getStrokeOpacity () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the width of the stroke used to draw object outlines
+ * @link https://php.net/manual/en/imagickdraw.getstrokewidth.php
+ * @return float a float describing the stroke width.
+ */
+ public function getStrokeWidth () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the text alignment
+ * @link https://php.net/manual/en/imagickdraw.gettextalignment.php
+ * @return int one of the ALIGN_ constants and 0 if no align is set.
+ */
+ public function getTextAlignment () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the current text antialias setting
+ * @link https://php.net/manual/en/imagickdraw.gettextantialias.php
+ * @return bool <b>TRUE</b> if text is antialiased and false if not.
+ */
+ public function getTextAntialias () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns a string containing vector graphics
+ * @link https://php.net/manual/en/imagickdraw.getvectorgraphics.php
+ * @return string a string containing the vector graphics.
+ */
+ public function getVectorGraphics () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the text under color
+ * @link https://php.net/manual/en/imagickdraw.gettextundercolor.php
+ * @return ImagickPixel an ImagickPixel object describing the color.
+ */
+ public function getTextUnderColor () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adds a path element to the current path
+ * @link https://php.net/manual/en/imagickdraw.pathclose.php
+ * @return bool No value is returned.
+ */
+ public function pathClose () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a cubic Bezier curve
+ * @link https://php.net/manual/en/imagickdraw.pathcurvetoabsolute.php
+ * @param float $x1 <p>
+ * x coordinate of the first control point
+ * </p>
+ * @param float $y1 <p>
+ * y coordinate of the first control point
+ * </p>
+ * @param float $x2 <p>
+ * x coordinate of the second control point
+ * </p>
+ * @param float $y2 <p>
+ * y coordinate of the first control point
+ * </p>
+ * @param float $x <p>
+ * x coordinate of the curve end
+ * </p>
+ * @param float $y <p>
+ * y coordinate of the curve end
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathCurveToAbsolute ($x1, $y1, $x2, $y2, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a cubic Bezier curve
+ * @link https://php.net/manual/en/imagickdraw.pathcurvetorelative.php
+ * @param float $x1 <p>
+ * x coordinate of starting control point
+ * </p>
+ * @param float $y1 <p>
+ * y coordinate of starting control point
+ * </p>
+ * @param float $x2 <p>
+ * x coordinate of ending control point
+ * </p>
+ * @param float $y2 <p>
+ * y coordinate of ending control point
+ * </p>
+ * @param float $x <p>
+ * ending x coordinate
+ * </p>
+ * @param float $y <p>
+ * ending y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathCurveToRelative ($x1, $y1, $x2, $y2, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a quadratic Bezier curve
+ * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbezierabsolute.php
+ * @param float $x1 <p>
+ * x coordinate of the control point
+ * </p>
+ * @param float $y1 <p>
+ * y coordinate of the control point
+ * </p>
+ * @param float $x <p>
+ * x coordinate of the end point
+ * </p>
+ * @param float $y <p>
+ * y coordinate of the end point
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathCurveToQuadraticBezierAbsolute ($x1, $y1, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a quadratic Bezier curve
+ * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbezierrelative.php
+ * @param float $x1 <p>
+ * starting x coordinate
+ * </p>
+ * @param float $y1 <p>
+ * starting y coordinate
+ * </p>
+ * @param float $x <p>
+ * ending x coordinate
+ * </p>
+ * @param float $y <p>
+ * ending y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathCurveToQuadraticBezierRelative ($x1, $y1, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a quadratic Bezier curve
+ * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbeziersmoothabsolute.php
+ * @param float $x <p>
+ * ending x coordinate
+ * </p>
+ * @param float $y <p>
+ * ending y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathCurveToQuadraticBezierSmoothAbsolute ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a quadratic Bezier curve
+ * @link https://php.net/manual/en/imagickdraw.pathcurvetoquadraticbeziersmoothrelative.php
+ * @param float $x <p>
+ * ending x coordinate
+ * </p>
+ * @param float $y <p>
+ * ending y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathCurveToQuadraticBezierSmoothRelative ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a cubic Bezier curve
+ * @link https://php.net/manual/en/imagickdraw.pathcurvetosmoothabsolute.php
+ * @param float $x2 <p>
+ * x coordinate of the second control point
+ * </p>
+ * @param float $y2 <p>
+ * y coordinate of the second control point
+ * </p>
+ * @param float $x <p>
+ * x coordinate of the ending point
+ * </p>
+ * @param float $y <p>
+ * y coordinate of the ending point
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathCurveToSmoothAbsolute ($x2, $y2, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a cubic Bezier curve
+ * @link https://php.net/manual/en/imagickdraw.pathcurvetosmoothrelative.php
+ * @param float $x2 <p>
+ * x coordinate of the second control point
+ * </p>
+ * @param float $y2 <p>
+ * y coordinate of the second control point
+ * </p>
+ * @param float $x <p>
+ * x coordinate of the ending point
+ * </p>
+ * @param float $y <p>
+ * y coordinate of the ending point
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathCurveToSmoothRelative ($x2, $y2, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws an elliptical arc
+ * @link https://php.net/manual/en/imagickdraw.pathellipticarcabsolute.php
+ * @param float $rx <p>
+ * x radius
+ * </p>
+ * @param float $ry <p>
+ * y radius
+ * </p>
+ * @param float $x_axis_rotation <p>
+ * x axis rotation
+ * </p>
+ * @param bool $large_arc_flag <p>
+ * large arc flag
+ * </p>
+ * @param bool $sweep_flag <p>
+ * sweep flag
+ * </p>
+ * @param float $x <p>
+ * x coordinate
+ * </p>
+ * @param float $y <p>
+ * y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathEllipticArcAbsolute ($rx, $ry, $x_axis_rotation, $large_arc_flag, $sweep_flag, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws an elliptical arc
+ * @link https://php.net/manual/en/imagickdraw.pathellipticarcrelative.php
+ * @param float $rx <p>
+ * x radius
+ * </p>
+ * @param float $ry <p>
+ * y radius
+ * </p>
+ * @param float $x_axis_rotation <p>
+ * x axis rotation
+ * </p>
+ * @param bool $large_arc_flag <p>
+ * large arc flag
+ * </p>
+ * @param bool $sweep_flag <p>
+ * sweep flag
+ * </p>
+ * @param float $x <p>
+ * x coordinate
+ * </p>
+ * @param float $y <p>
+ * y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathEllipticArcRelative ($rx, $ry, $x_axis_rotation, $large_arc_flag, $sweep_flag, $x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Terminates the current path
+ * @link https://php.net/manual/en/imagickdraw.pathfinish.php
+ * @return bool No value is returned.
+ */
+ public function pathFinish () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a line path
+ * @link https://php.net/manual/en/imagickdraw.pathlinetoabsolute.php
+ * @param float $x <p>
+ * starting x coordinate
+ * </p>
+ * @param float $y <p>
+ * ending x coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathLineToAbsolute ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a line path
+ * @link https://php.net/manual/en/imagickdraw.pathlinetorelative.php
+ * @param float $x <p>
+ * starting x coordinate
+ * </p>
+ * @param float $y <p>
+ * starting y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathLineToRelative ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a horizontal line path
+ * @link https://php.net/manual/en/imagickdraw.pathlinetohorizontalabsolute.php
+ * @param float $x <p>
+ * x coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathLineToHorizontalAbsolute ($x) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a horizontal line
+ * @link https://php.net/manual/en/imagickdraw.pathlinetohorizontalrelative.php
+ * @param float $x <p>
+ * x coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathLineToHorizontalRelative ($x) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a vertical line
+ * @link https://php.net/manual/en/imagickdraw.pathlinetoverticalabsolute.php
+ * @param float $y <p>
+ * y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathLineToVerticalAbsolute ($y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a vertical line path
+ * @link https://php.net/manual/en/imagickdraw.pathlinetoverticalrelative.php
+ * @param float $y <p>
+ * y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathLineToVerticalRelative ($y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Starts a new sub-path
+ * @link https://php.net/manual/en/imagickdraw.pathmovetoabsolute.php
+ * @param float $x <p>
+ * x coordinate of the starting point
+ * </p>
+ * @param float $y <p>
+ * y coordinate of the starting point
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathMoveToAbsolute ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Starts a new sub-path
+ * @link https://php.net/manual/en/imagickdraw.pathmovetorelative.php
+ * @param float $x <p>
+ * target x coordinate
+ * </p>
+ * @param float $y <p>
+ * target y coordinate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pathMoveToRelative ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Declares the start of a path drawing list
+ * @link https://php.net/manual/en/imagickdraw.pathstart.php
+ * @return bool No value is returned.
+ */
+ public function pathStart () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Draws a polyline
+ * @link https://php.net/manual/en/imagickdraw.polyline.php
+ * @param array $coordinates <p>
+ * array of x and y coordinates: array( array( 'x' => 4, 'y' => 6 ), array( 'x' => 8, 'y' => 10 ) )
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function polyline (array $coordinates) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Terminates a clip path definition
+ * @link https://php.net/manual/en/imagickdraw.popclippath.php
+ * @return bool No value is returned.
+ */
+ public function popClipPath () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Terminates a definition list
+ * @link https://php.net/manual/en/imagickdraw.popdefs.php
+ * @return bool No value is returned.
+ */
+ public function popDefs () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Terminates a pattern definition
+ * @link https://php.net/manual/en/imagickdraw.poppattern.php
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function popPattern () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Starts a clip path definition
+ * @link https://php.net/manual/en/imagickdraw.pushclippath.php
+ * @param string $clip_mask_id <p>
+ * Clip mask Id
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function pushClipPath ($clip_mask_id) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Indicates that following commands create named elements for early processing
+ * @link https://php.net/manual/en/imagickdraw.pushdefs.php
+ * @return bool No value is returned.
+ */
+ public function pushDefs () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Indicates that subsequent commands up to a ImagickDraw::opPattern() command comprise the definition of a named pattern
+ * @link https://php.net/manual/en/imagickdraw.pushpattern.php
+ * @param string $pattern_id <p>
+ * the pattern Id
+ * </p>
+ * @param float $x <p>
+ * x coordinate of the top-left corner
+ * </p>
+ * @param float $y <p>
+ * y coordinate of the top-left corner
+ * </p>
+ * @param float $width <p>
+ * width of the pattern
+ * </p>
+ * @param float $height <p>
+ * height of the pattern
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function pushPattern ($pattern_id, $x, $y, $width, $height) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Renders all preceding drawing commands onto the image
+ * @link https://php.net/manual/en/imagickdraw.render.php
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function render () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Applies the specified rotation to the current coordinate space
+ * @link https://php.net/manual/en/imagickdraw.rotate.php
+ * @param float $degrees <p>
+ * degrees to rotate
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function rotate ($degrees) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Adjusts the scaling factor
+ * @link https://php.net/manual/en/imagickdraw.scale.php
+ * @param float $x <p>
+ * horizontal factor
+ * </p>
+ * @param float $y <p>
+ * vertical factor
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function scale ($x, $y) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Associates a named clipping path with the image
+ * @link https://php.net/manual/en/imagickdraw.setclippath.php
+ * @param string $clip_mask <p>
+ * the clipping path name
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setClipPath ($clip_mask) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Set the polygon fill rule to be used by the clipping path
+ * @link https://php.net/manual/en/imagickdraw.setcliprule.php
+ * @param int $fill_rule <p>
+ * FILLRULE_ constant
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setClipRule ($fill_rule) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the interpretation of clip path units
+ * @link https://php.net/manual/en/imagickdraw.setclipunits.php
+ * @param int $clip_units <p>
+ * the number of clip units
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setClipUnits ($clip_units) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the opacity to use when drawing using the fill color or fill texture
+ * @link https://php.net/manual/en/imagickdraw.setfillopacity.php
+ * @param float $fillOpacity <p>
+ * the fill opacity
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setFillOpacity ($fillOpacity) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the URL to use as a fill pattern for filling objects
+ * @link https://php.net/manual/en/imagickdraw.setfillpatternurl.php
+ * @param string $fill_url <p>
+ * URL to use to obtain fill pattern.
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function setFillPatternURL ($fill_url) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the fill rule to use while drawing polygons
+ * @link https://php.net/manual/en/imagickdraw.setfillrule.php
+ * @param int $fill_rule <p>
+ * FILLRULE_ constant
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setFillRule ($fill_rule) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the text placement gravity
+ * @link https://php.net/manual/en/imagickdraw.setgravity.php
+ * @param int $gravity <p>
+ * GRAVITY_ constant
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setGravity ($gravity) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the pattern used for stroking object outlines
+ * @link https://php.net/manual/en/imagickdraw.setstrokepatternurl.php
+ * @param string $stroke_url <p>
+ * stroke URL
+ * </p>
+ * @return bool imagick.imagickdraw.return.success;
+ */
+ public function setStrokePatternURL ($stroke_url) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies the offset into the dash pattern to start the dash
+ * @link https://php.net/manual/en/imagickdraw.setstrokedashoffset.php
+ * @param float $dash_offset <p>
+ * dash offset
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setStrokeDashOffset ($dash_offset) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies the shape to be used at the end of open subpaths when they are stroked
+ * @link https://php.net/manual/en/imagickdraw.setstrokelinecap.php
+ * @param int $linecap <p>
+ * LINECAP_ constant
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setStrokeLineCap ($linecap) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies the shape to be used at the corners of paths when they are stroked
+ * @link https://php.net/manual/en/imagickdraw.setstrokelinejoin.php
+ * @param int $linejoin <p>
+ * LINEJOIN_ constant
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setStrokeLineJoin ($linejoin) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies the miter limit
+ * @link https://php.net/manual/en/imagickdraw.setstrokemiterlimit.php
+ * @param int $miterlimit <p>
+ * the miter limit
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setStrokeMiterLimit ($miterlimit) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies the opacity of stroked object outlines
+ * @link https://php.net/manual/en/imagickdraw.setstrokeopacity.php
+ * @param float $stroke_opacity <p>
+ * stroke opacity. 1.0 is fully opaque
+ * </p>
+ * @return bool No value is returned.
+ */
+ public function setStrokeOpacity ($stroke_opacity) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the vector graphics
+ * @link https://php.net/manual/en/imagickdraw.setvectorgraphics.php
+ * @param string $xml <p>
+ * xml containing the vector graphics
+ * </p>
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function setVectorGraphics ($xml) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw
+ * @link https://php.net/manual/en/imagickdraw.pop.php
+ * @return bool <b>TRUE</b> on success and false on failure.
+ */
+ public function pop () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Clones the current ImagickDraw and pushes it to the stack
+ * @link https://php.net/manual/en/imagickdraw.push.php
+ * @return bool <b>TRUE</b> on success or <b>FALSE</b> on failure.
+ */
+ public function push () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Specifies the pattern of dashes and gaps used to stroke paths
+ * @link https://php.net/manual/en/imagickdraw.setstrokedasharray.php
+ * @param array $dashArray <p>
+ * array of floats
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setStrokeDashArray (array $dashArray) {}
+
+ /**
+ * Sets the opacity to use when drawing using the fill or stroke color or texture. Fully opaque is 1.0.
+ *
+ * @param float $opacity
+ * @return void
+ * @since 3.4.1
+ */
+ public function setOpacity($opacity) { }
+
+ /**
+ * Returns the opacity used when drawing with the fill or stroke color or texture. Fully opaque is 1.0.
+ *
+ * @return float
+ * @since 3.4.1
+ */
+ public function getOpacity() { }
+
+ /**
+ * Sets the image font resolution.
+ *
+ * @param float $x
+ * @param float $y
+ * @return bool
+ * @since 3.4.1
+ */
+ public function setFontResolution($x, $y) { }
+
+ /**
+ * Gets the image X and Y resolution.
+ *
+ * @return array
+ * @since 3.4.1
+ */
+ public function getFontResolution() { }
+
+ /**
+ * Returns the direction that will be used when annotating with text.
+ * @return bool
+ * @since 3.4.1
+ */
+ public function getTextDirection() { }
+
+ /**
+ * Sets the font style to use when annotating with text. The AnyStyle enumeration acts as a wild-card "don't care" option.
+ *
+ * @param int $direction
+ * @return bool
+ * @since 3.4.1
+ */
+ public function setTextDirection($direction) { }
+
+ /**
+ * Returns the border color used for drawing bordered objects.
+ *
+ * @return ImagickPixel
+ * @since 3.4.1
+ */
+ public function getBorderColor() { }
+
+ /**
+ * Sets the border color to be used for drawing bordered objects.
+ * @param ImagickPixel $color
+ * @return bool
+ * @since 3.4.1
+ */
+ public function setBorderColor(ImagickPixel $color) { }
+
+ /**
+ * Obtains the vertical and horizontal resolution.
+ *
+ * @return string|null
+ * @since 3.4.1
+ */
+ public function getDensity() { }
+
+ /**
+ * Sets the vertical and horizontal resolution.
+ * @param string $density_string
+ * @return bool
+ * @since 3.4.1
+ */
+ public function setDensity($density_string) { }
+}
+
+/**
+ * @link https://php.net/manual/en/class.imagickpixeliterator.php
+ */
+class ImagickPixelIterator implements Iterator {
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * The ImagickPixelIterator constructor
+ * @link https://php.net/manual/en/imagickpixeliterator.construct.php
+ * @param Imagick $wand
+ */
+ public function __construct (Imagick $wand) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns a new pixel iterator
+ * @link https://php.net/manual/en/imagickpixeliterator.newpixeliterator.php
+ * @param Imagick $wand
+ * @return bool <b>TRUE</b> on success. Throwing ImagickPixelIteratorException.
+ * @throws ImagickPixelIteratorException
+ */
+ public function newPixelIterator (Imagick $wand) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns a new pixel iterator
+ * @link https://php.net/manual/en/imagickpixeliterator.newpixelregioniterator.php
+ * @param Imagick $wand
+ * @param int $x
+ * @param int $y
+ * @param int $columns
+ * @param int $rows
+ * @return bool a new ImagickPixelIterator on success; on failure, throws ImagickPixelIteratorException
+ * @throws ImagickPixelIteratorException
+ */
+ public function newPixelRegionIterator (Imagick $wand, $x, $y, $columns, $rows) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the current pixel iterator row
+ * @link https://php.net/manual/en/imagickpixeliterator.getiteratorrow.php
+ * @return int the integer offset of the row, throwing ImagickPixelIteratorException on error.
+ * @throws ImagickPixelIteratorException on error
+ */
+ public function getIteratorRow () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Set the pixel iterator row
+ * @link https://php.net/manual/en/imagickpixeliterator.setiteratorrow.php
+ * @param int $row
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setIteratorRow ($row) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the pixel iterator to the first pixel row
+ * @link https://php.net/manual/en/imagickpixeliterator.setiteratorfirstrow.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setIteratorFirstRow () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the pixel iterator to the last pixel row
+ * @link https://php.net/manual/en/imagickpixeliterator.setiteratorlastrow.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setIteratorLastRow () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the previous row
+ * @link https://php.net/manual/en/imagickpixeliterator.getpreviousiteratorrow.php
+ * @return array the previous row as an array of ImagickPixelWand objects from the
+ * ImagickPixelIterator, throwing ImagickPixelIteratorException on error.
+ * @throws ImagickPixelIteratorException on error
+ */
+ public function getPreviousIteratorRow () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the current row of ImagickPixel objects
+ * @link https://php.net/manual/en/imagickpixeliterator.getcurrentiteratorrow.php
+ * @return array a row as an array of ImagickPixel objects that can themselves be iterated.
+ */
+ public function getCurrentIteratorRow () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the next row of the pixel iterator
+ * @link https://php.net/manual/en/imagickpixeliterator.getnextiteratorrow.php
+ * @return array the next row as an array of ImagickPixel objects, throwing
+ * ImagickPixelIteratorException on error.
+ * @throws ImagickPixelIteratorException on error
+ */
+ public function getNextIteratorRow () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Resets the pixel iterator
+ * @link https://php.net/manual/en/imagickpixeliterator.resetiterator.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function resetIterator () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Syncs the pixel iterator
+ * @link https://php.net/manual/en/imagickpixeliterator.synciterator.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function syncIterator () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Deallocates resources associated with a PixelIterator
+ * @link https://php.net/manual/en/imagickpixeliterator.destroy.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function destroy () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Clear resources associated with a PixelIterator
+ * @link https://php.net/manual/en/imagickpixeliterator.clear.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function clear () {}
+
+ /**
+ * @param Imagick $Imagick
+ */
+ public static function getpixeliterator (Imagick $Imagick) {}
+
+ /**
+ * @param Imagick $Imagick
+ * @param $x
+ * @param $y
+ * @param $columns
+ * @param $rows
+ */
+ public static function getpixelregioniterator (Imagick $Imagick, $x, $y, $columns, $rows) {}
+
+ public function key () {}
+
+ public function next () {}
+
+ public function rewind () {}
+
+ public function current () {}
+
+ public function valid () {}
+
+}
+
+/**
+ * @method clone()
+ * @link https://php.net/manual/en/class.imagickpixel.php
+ */
+class ImagickPixel {
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the normalized HSL color of the ImagickPixel object
+ * @link https://php.net/manual/en/imagickpixel.gethsl.php
+ * @return array the HSL value in an array with the keys "hue",
+ * "saturation", and "luminosity". Throws ImagickPixelException on failure.
+ * @throws ImagickPixelException on failure
+ */
+ public function getHSL () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the normalized HSL color
+ * @link https://php.net/manual/en/imagickpixel.sethsl.php
+ * @param float $hue <p>
+ * The normalized value for hue, described as a fractional arc
+ * (between 0 and 1) of the hue circle, where the zero value is
+ * red.
+ * </p>
+ * @param float $saturation <p>
+ * The normalized value for saturation, with 1 as full saturation.
+ * </p>
+ * @param float $luminosity <p>
+ * The normalized value for luminosity, on a scale from black at
+ * 0 to white at 1, with the full HS value at 0.5 luminosity.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setHSL ($hue, $saturation, $luminosity) {}
+
+ public function getColorValueQuantum () {}
+
+ /**
+ * @param $color_value
+ */
+ public function setColorValueQuantum ($color_value) {}
+
+ public function getIndex () {}
+
+ /**
+ * @param $index
+ */
+ public function setIndex ($index) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * The ImagickPixel constructor
+ * @link https://php.net/manual/en/imagickpixel.construct.php
+ * @param string $color [optional] <p>
+ * The optional color string to use as the initial value of this object.
+ * </p>
+ */
+ public function __construct ($color = null) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the color
+ * @link https://php.net/manual/en/imagickpixel.setcolor.php
+ * @param string $color <p>
+ * The color definition to use in order to initialise the
+ * ImagickPixel object.
+ * </p>
+ * @return bool <b>TRUE</b> if the specified color was set, <b>FALSE</b> otherwise.
+ */
+ public function setColor ($color) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Sets the normalized value of one of the channels
+ * @link https://php.net/manual/en/imagickpixel.setcolorvalue.php
+ * @param int $color <p>
+ * One of the Imagick color constants e.g. \Imagick::COLOR_GREEN or \Imagick::COLOR_ALPHA.
+ * </p>
+ * @param float $value <p>
+ * The value to set this channel to, ranging from 0 to 1.
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function setColorValue ($color, $value) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Gets the normalized value of the provided color channel
+ * @link https://php.net/manual/en/imagickpixel.getcolorvalue.php
+ * @param int $color <p>
+ * The color to get the value of, specified as one of the Imagick color
+ * constants. This can be one of the RGB colors, CMYK colors, alpha and
+ * opacity e.g (Imagick::COLOR_BLUE, Imagick::COLOR_MAGENTA).
+ * </p>
+ * @return float The value of the channel, as a normalized floating-point number, throwing
+ * ImagickPixelException on error.
+ * @throws ImagickPixelException on error
+ */
+ public function getColorValue ($color) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Clears resources associated with this object
+ * @link https://php.net/manual/en/imagickpixel.clear.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function clear () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Deallocates resources associated with this object
+ * @link https://php.net/manual/en/imagickpixel.destroy.php
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function destroy () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Check the distance between this color and another
+ * @link https://php.net/manual/en/imagickpixel.issimilar.php
+ * @param ImagickPixel $color <p>
+ * The ImagickPixel object to compare this object against.
+ * </p>
+ * @param float $fuzz <p>
+ * The maximum distance within which to consider these colors as similar.
+ * The theoretical maximum for this value is the square root of three
+ * (1.732).
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function isSimilar (ImagickPixel $color, $fuzz) {}
+
+ /**
+ * (No version information available, might only be in SVN)<br/>
+ * Check the distance between this color and another
+ * @link https://php.net/manual/en/imagickpixel.ispixelsimilar.php
+ * @param ImagickPixel $color <p>
+ * The ImagickPixel object to compare this object against.
+ * </p>
+ * @param float $fuzz <p>
+ * The maximum distance within which to consider these colors as similar.
+ * The theoretical maximum for this value is the square root of three
+ * (1.732).
+ * </p>
+ * @return bool <b>TRUE</b> on success.
+ */
+ public function isPixelSimilar (ImagickPixel $color, $fuzz) {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the color
+ * @link https://php.net/manual/en/imagickpixel.getcolor.php
+ * @param bool $normalized [optional] <p>
+ * Normalize the color values
+ * </p>
+ * @return array An array of channel values, each normalized if <b>TRUE</b> is given as param. Throws
+ * ImagickPixelException on error.
+ * @throws ImagickPixelException on error.
+ */
+ public function getColor ($normalized = false) {}
+
+ /**
+ * (PECL imagick 2.1.0)<br/>
+ * Returns the color as a string
+ * @link https://php.net/manual/en/imagickpixel.getcolorasstring.php
+ * @return string the color of the ImagickPixel object as a string.
+ */
+ public function getColorAsString () {}
+
+ /**
+ * (PECL imagick 2.0.0)<br/>
+ * Returns the color count associated with this color
+ * @link https://php.net/manual/en/imagickpixel.getcolorcount.php
+ * @return int the color count as an integer on success, throws
+ * ImagickPixelException on failure.
+ * @throws ImagickPixelException on failure.
+ */
+ public function getColorCount () {}
+
+ /**
+ * @param $colorCount
+ */
+ public function setColorCount ($colorCount) {}
+
+
+ /**
+ * Returns true if the distance between two colors is less than the specified distance. The fuzz value should be in the range 0-QuantumRange.<br>
+ * The maximum value represents the longest possible distance in the colorspace. e.g. from RGB(0, 0, 0) to RGB(255, 255, 255) for the RGB colorspace
+ * @link https://php.net/manual/en/imagickpixel.ispixelsimilarquantum.php
+ * @param string $pixel
+ * @param string $fuzz
+ * @return bool
+ * @since 3.3.0
+ */
+ public function isPixelSimilarQuantum($color, $fuzz) { }
+
+ /**
+ * Returns the color of the pixel in an array as Quantum values. If ImageMagick was compiled as HDRI these will be floats, otherwise they will be integers.
+ * @link https://php.net/manual/en/imagickpixel.getcolorquantum.php
+ * @return mixed The quantum value of the color element. Float if ImageMagick was compiled with HDRI, otherwise an int.
+ * @since 3.3.0
+ */
+ public function getColorQuantum() { }
+
+ /**
+ * Sets the color count associated with this color from another ImagickPixel object.
+ *
+ * @param ImagickPixel $srcPixel
+ * @return bool
+ * @since 3.4.1
+ */
+ public function setColorFromPixel(ImagickPixel $srcPixel) { }
+}
+// End of imagick v.3.2.0RC1
+
+// Start of Imagick v3.3.0RC1
+
+/**
+ * @link https://php.net/manual/en/class.imagickkernel.php
+ */
+class ImagickKernel {
+ /**
+ * Attach another kernel to this kernel to allow them to both be applied in a single morphology or filter function. Returns the new combined kernel.
+ * @link https://php.net/manual/en/imagickkernel.addkernel.php
+ * @param ImagickKernel $imagickKernel
+ * @return void
+ * @since 3.3.0
+ */
+ public function addKernel(ImagickKernel $imagickKernel) { }
+
+ /**
+ * Adds a given amount of the 'Unity' Convolution Kernel to the given pre-scaled and normalized Kernel. This in effect adds that amount of the original image into the resulting convolution kernel. The resulting effect is to convert the defined kernels into blended soft-blurs, unsharp kernels or into sharpening kernels.
+ * @link https://php.net/manual/en/imagickkernel.addunitykernel.php
+ * @return void
+ * @since 3.3.0
+ */
+ public function addUnityKernel() { }
+
+ /**
+ * Create a kernel from a builtin in kernel. See https://www.imagemagick.org/Usage/morphology/#kernel for examples.<br>
+ * Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2");
+ * @link https://php.net/manual/en/imagickkernel.frombuiltin.php
+ * @param string $kernelType The type of kernel to build e.g. \Imagick::KERNEL_DIAMOND
+ * @param string $kernelString A string that describes the parameters e.g. "4,2.5"
+ * @return void
+ * @since 3.3.0
+ */
+ public static function fromBuiltin($kernelType, $kernelString) { }
+
+ /**
+ * Create a kernel from a builtin in kernel. See https://www.imagemagick.org/Usage/morphology/#kernel for examples.<br>
+ * Currently the 'rotation' symbols are not supported. Example: $diamondKernel = ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "2");
+ * @link https://php.net/manual/en/imagickkernel.frombuiltin.php
+ * @see https://www.imagemagick.org/Usage/morphology/#kernel
+ * @param array $matrix A matrix (i.e. 2d array) of values that define the kernel. Each element should be either a float value, or FALSE if that element shouldn't be used by the kernel.
+ * @param array $origin [optional] Which element of the kernel should be used as the origin pixel. e.g. For a 3x3 matrix specifying the origin as [2, 2] would specify that the bottom right element should be the origin pixel.
+ * @return ImagickKernel
+ * @since 3.3.0
+ */
+ public static function fromMatrix($matrix, $origin) { }
+
+ /**
+ * Get the 2d matrix of values used in this kernel. The elements are either float for elements that are used or 'false' if the element should be skipped.
+ * @link https://php.net/manual/en/imagickkernel.getmatrix.php
+ * @return array A matrix (2d array) of the values that represent the kernel.
+ * @since 3.3.0
+ */
+ public function getMatrix() { }
+
+ /**
+ * ScaleKernelInfo() scales the given kernel list by the given amount, with or without normalization of the sum of the kernel values (as per given flags).<br>
+ * The exact behaviour of this function depends on the normalization type being used please see https://www.imagemagick.org/api/morphology.php#ScaleKernelInfo for details.<br>
+ * Flag should be one of Imagick::NORMALIZE_KERNEL_VALUE, Imagick::NORMALIZE_KERNEL_CORRELATE, Imagick::NORMALIZE_KERNEL_PERCENT or not set.
+ * @link https://php.net/manual/en/imagickkernel.scale.php
+ * @see https://www.imagemagick.org/api/morphology.php#ScaleKernelInfo
+ * @return void
+ * @since 3.3.0
+ */
+ public function scale() { }
+
+ /**
+ * Separates a linked set of kernels and returns an array of ImagickKernels.
+ * @link https://php.net/manual/en/imagickkernel.separate.php
+ * @return void
+ * @since 3.3.0
+ */
+ public function seperate() { }
+}
diff --git a/vendor/chillerlan/php-qrcode/.scrutinizer.yml b/vendor/chillerlan/php-qrcode/.scrutinizer.yml
new file mode 100644
index 000000000..2a7e7028b
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/.scrutinizer.yml
@@ -0,0 +1,16 @@
+build:
+ nodes:
+ analysis:
+ tests:
+ override:
+ - php-scrutinizer-run
+ environment:
+ php: 8.0.0
+
+filter:
+ excluded_paths:
+ - examples/*
+ - tests/*
+ - vendor/*
+ - .github/*
+ - .phan/*
diff --git a/vendor/chillerlan/php-qrcode/README.md b/vendor/chillerlan/php-qrcode/README.md
index 3ad7bad88..f266e9bd5 100644
--- a/vendor/chillerlan/php-qrcode/README.md
+++ b/vendor/chillerlan/php-qrcode/README.md
@@ -7,23 +7,26 @@ namespaced, cleaned up, improved and other stuff.
[![PHP Version Support][php-badge]][php]
[![Packagist version][packagist-badge]][packagist]
-[![Continuous Integration][gh-action-badge]][gh-action]
+[![License][license-badge]][license]
[![CodeCov][coverage-badge]][coverage]
-[![Codacy][codacy-badge]][codacy]
-[![Packagist downloads][downloads-badge]][downloads]
+[![Scrunitizer CI][scrutinizer-badge]][scrutinizer]
+[![Packagist downloads][downloads-badge]][downloads]<br/>
+[![Continuous Integration][gh-action-badge]][gh-action]
[php-badge]: https://img.shields.io/packagist/php-v/chillerlan/php-qrcode?logo=php&color=8892BF
[php]: https://www.php.net/supported-versions.php
[packagist-badge]: https://img.shields.io/packagist/v/chillerlan/php-qrcode.svg?logo=packagist
[packagist]: https://packagist.org/packages/chillerlan/php-qrcode
-[coverage-badge]: https://img.shields.io/codecov/c/github/chillerlan/php-qrcode/v4.3.x?logo=codecov
-[coverage]: https://app.codecov.io/gh/chillerlan/php-qrcode/tree/v4.3.x
-[codacy-badge]: https://img.shields.io/codacy/grade/edccfc4fe5a34b74b1c53ee03f097b8d/v4.3.x?logo=codacy
-[codacy]: https://app.codacy.com/gh/chillerlan/php-qrcode/dashboard?branch=v4.3.x
-[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-qrcode?logo=packagist
+[license-badge]: https://img.shields.io/github/license/chillerlan/php-qrcode.svg
+[license]: https://github.com/chillerlan/php-qrcode/blob/main/LICENSE
+[coverage-badge]: https://img.shields.io/codecov/c/github/chillerlan/php-qrcode.svg?logo=codecov
+[coverage]: https://codecov.io/github/chillerlan/php-qrcode
+[scrutinizer-badge]: https://img.shields.io/scrutinizer/g/chillerlan/php-qrcode.svg?logo=scrutinizer
+[scrutinizer]: https://scrutinizer-ci.com/g/chillerlan/php-qrcode
+[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-qrcode.svg?logo=packagist
[downloads]: https://packagist.org/packages/chillerlan/php-qrcode/stats
-[gh-action-badge]: https://img.shields.io/github/actions/workflow/status/chillerlan/php-qrcode/tests.yml?branch=v4.3.x&logo=github
-[gh-action]: https://github.com/chillerlan/php-qrcode/actions/workflows/tests.yml?query=branch%3Av4.3.x
+[gh-action-badge]: https://github.com/chillerlan/php-qrcode/workflows/Continuous%20Integration/badge.svg
+[gh-action]: https://github.com/chillerlan/php-qrcode/actions?query=workflow%3A%22Continuous+Integration%22+branch%3Av4.3.x
# Documentation
@@ -45,7 +48,7 @@ via terminal: `composer require chillerlan/php-qrcode`
{
"require": {
"php": "^7.4 || ^8.0",
- "chillerlan/php-qrcode": "v4.3.x-dev#<commit_hash>"
+ "chillerlan/php-qrcode": "v4.3.x-dev"
}
}
```
@@ -59,7 +62,7 @@ For PHP version ...
In case you want to keep using `v4.3.x-dev`, specify the hash of a commit to avoid running into unforseen issues like so: `v4.3.x-dev#c115f7bc51d466ccb24c544e88329804aad8c2a0`
-PSA: [PHP 7.0 - 7.4 are EOL](https://www.php.net/supported-versions.php) and therefore the respective `QRCode` versions are also no longer supported!
+PSA: [PHP 7.0 - 7.3 are EOL](https://www.php.net/supported-versions.php) and therefore the respective `QRCode` versions are also no longer supported!
## Quickstart
We want to encode this URI for a mobile authenticator into a QRcode image:
@@ -249,41 +252,40 @@ $options = new QROptions;
// for HTML, SVG and ImageMagick
$options->moduleValues = [
// finder
- QRMatrix::M_FINDER_DARK => '#A71111', // dark (true)
- QRMatrix::M_FINDER_DOT_DARK => '#A71111', // dark (true)
- QRMatrix::M_FINDER => '#FFBFBF', // light (false)
+ 1536 => '#A71111', // dark (true)
+ 6 => '#FFBFBF', // light (false)
// alignment
- QRMatrix::M_ALIGNMENT_DARK => '#A70364',
- QRMatrix::M_ALIGNMENT => '#FFC9C9',
+ 2560 => '#A70364',
+ 10 => '#FFC9C9',
// timing
- QRMatrix::M_TIMING_DARK => '#98005D',
- QRMatrix::M_TIMING => '#FFB8E9',
+ 3072 => '#98005D',
+ 12 => '#FFB8E9',
// format
- QRMatrix::M_FORMAT_DARK => '#003804',
- QRMatrix::M_FORMAT => '#00FB12',
+ 3584 => '#003804',
+ 14 => '#00FB12',
// version
- QRMatrix::M_VERSION_DARK => '#650098',
- QRMatrix::M_VERSION => '#E0B8FF',
+ 4096 => '#650098',
+ 16 => '#E0B8FF',
// data
- QRMatrix::M_DATA_DARK => '#4A6000',
- QRMatrix::M_DATA => '#ECF9BE',
+ 1024 => '#4A6000',
+ 4 => '#ECF9BE',
// darkmodule
- QRMatrix::M_DARKMODULE_DARK => '#080063',
+ 512 => '#080063',
// separator
- QRMatrix::M_SEPARATOR => '#AFBFBF',
+ 8 => '#AFBFBF',
// quietzone
- QRMatrix::M_QUIETZONE => '#FFFFFF',
+ 18 => '#FFFFFF',
];
// for the image output types
$options->moduleValues = [
- QRMatrix::M_DATA_DARK => [0, 0, 0],
+ 512 => [0, 0, 0],
// ...
];
// for string/text output
$options->moduleValues = [
- QRMatrix::M_DATA_DARK => '#',
+ 512 => '#',
// ...
];
```
@@ -292,115 +294,106 @@ $options->moduleValues = [
## Public API
### `QRCode` API
-#### Methods
-| method | return | description |
-|---------------------------------------------|------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
-| `__construct(QROptions $options = null)` | - | see [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php) |
-| `render(string $data, string $file = null)` | mixed, `QROutputInterface::dump()` | renders a QR Code for the given `$data` and `QROptions`, saves `$file` optional |
-| `getMatrix(string $data)` | `QRMatrix` | returns a `QRMatrix` object for the given `$data` and current `QROptions` |
-| `initDataInterface(string $data)` | `QRDataInterface` | returns a fresh `QRDataInterface` for the given `$data` |
-| `isNumber(string $string)` | bool | checks if a string qualifies for `Number` |
-| `isAlphaNum(string $string)` | bool | checks if a string qualifies for `AlphaNum` |
-| `isKanji(string $string)` | bool | checks if a string qualifies for `Kanji` |
-| `isByte(string $string)` | bool | checks if a string is non-empty |
+#### Methods
+method | return | description
+------ | ------ | -----------
+`__construct(QROptions $options = null)` | - | see [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php)
+`render(string $data, string $file = null)` | mixed, `QROutputInterface::dump()` | renders a QR Code for the given `$data` and `QROptions`, saves `$file` optional
+`getMatrix(string $data)` | `QRMatrix` | returns a `QRMatrix` object for the given `$data` and current `QROptions`
+`initDataInterface(string $data)` | `QRDataInterface` | returns a fresh `QRDataInterface` for the given `$data`
+`isNumber(string $string)` | bool | checks if a string qualifies for `Number`
+`isAlphaNum(string $string)` | bool | checks if a string qualifies for `AlphaNum`
+`isKanji(string $string)` | bool | checks if a string qualifies for `Kanji`
+`isByte(string $string)` | bool | checks if a string is non-empty
+
+#### Constants
+name | description
+---- | -----------
+`VERSION_AUTO` | `QROptions::$version`
+`MASK_PATTERN_AUTO` | `QROptions::$maskPattern`
+`OUTPUT_MARKUP_SVG`, `OUTPUT_MARKUP_HTML` | `QROptions::$outputType` markup
+`OUTPUT_IMAGE_PNG`, `OUTPUT_IMAGE_JPG`, `OUTPUT_IMAGE_GIF` | `QROptions::$outputType` image
+`OUTPUT_STRING_JSON`, `OUTPUT_STRING_TEXT` | `QROptions::$outputType` string
+`OUTPUT_IMAGICK` | `QROptions::$outputType` ImageMagick
+`OUTPUT_FPDF` | `QROptions::$outputType` PDF, using [FPDF](https://github.com/setasign/fpdf)
+`OUTPUT_CUSTOM` | `QROptions::$outputType`, requires `QROptions::$outputInterface`
+`ECC_L`, `ECC_M`, `ECC_Q`, `ECC_H`, | ECC-Level: 7%, 15%, 25%, 30% in `QROptions::$eccLevel`
+`DATA_NUMBER`, `DATA_ALPHANUM`, `DATA_BYTE`, `DATA_KANJI` | `QRDataInterface::$datamode`
-#### Constants
-| name | description |
-|------------------------------------------------------------|------------------------------------------------------------------------------|
-| `VERSION_AUTO` | `QROptions::$version` |
-| `MASK_PATTERN_AUTO` | `QROptions::$maskPattern` |
-| `OUTPUT_MARKUP_SVG`, `OUTPUT_MARKUP_HTML` | `QROptions::$outputType` markup |
-| `OUTPUT_IMAGE_PNG`, `OUTPUT_IMAGE_JPG`, `OUTPUT_IMAGE_GIF` | `QROptions::$outputType` image |
-| `OUTPUT_STRING_JSON`, `OUTPUT_STRING_TEXT` | `QROptions::$outputType` string |
-| `OUTPUT_IMAGICK` | `QROptions::$outputType` ImageMagick |
-| `OUTPUT_FPDF` | `QROptions::$outputType` PDF, using [FPDF](https://github.com/setasign/fpdf) |
-| `OUTPUT_CUSTOM` | `QROptions::$outputType`, requires `QROptions::$outputInterface` |
-| `ECC_L`, `ECC_M`, `ECC_Q`, `ECC_H`, | ECC-Level: 7%, 15%, 25%, 30% in `QROptions::$eccLevel` |
-| `DATA_NUMBER`, `DATA_ALPHANUM`, `DATA_BYTE`, `DATA_KANJI` | `QRDataInterface::$datamode` |
### `QRMatrix` API
#### Methods
-| method | return | description |
-|-------------------------------------------------|------------|-------------------------------------------------------------------------------------------------------|
-| `__construct(int $version, int $eclevel)` | - | - |
-| `init(int $maskPattern, bool $test = null)` | `QRMatrix` | |
-| `matrix()` | array | the internal matrix representation as a 2 dimensional array |
-| `version()` | int | the current QR Code version |
-| `eccLevel()` | int | current ECC level |
-| `maskPattern()` | int | the used mask pattern |
-| `size()` | int | the absoulute size of the matrix, including quiet zone (if set). `$version * 4 + 17 + 2 * $quietzone` |
-| `get(int $x, int $y)` | int | returns the value of the module |
-| `set(int $x, int $y, bool $value, int $M_TYPE)` | `QRMatrix` | sets the `$M_TYPE` value for the module |
-| `check(int $x, int $y)` | bool | checks whether a module is true (dark) or false (light) |
+method | return | description
+------ | ------ | -----------
+`__construct(int $version, int $eclevel)` | - | -
+`init(int $maskPattern, bool $test = null)` | `QRMatrix` |
+`matrix()` | array | the internal matrix representation as a 2 dimensional array
+`version()` | int | the current QR Code version
+`eccLevel()` | int | current ECC level
+`maskPattern()` | int | the used mask pattern
+`size()` | int | the absoulute size of the matrix, including quiet zone (if set). `$version * 4 + 17 + 2 * $quietzone`
+`get(int $x, int $y)` | int | returns the value of the module
+`set(int $x, int $y, bool $value, int $M_TYPE)` | `QRMatrix` | sets the `$M_TYPE` value for the module
+`check(int $x, int $y)` | bool | checks whether a module is true (dark) or false (light)
#### Constants
-| name | description |
-|----------------------|---------------------------------------------------------------|
-| `M_NULL` | module not set (should never appear. if so, there's an error) |
-| `M_DARKMODULE` | once per matrix at `$xy = [8, 4 * $version + 9]` |
-| `M_DARKMODULE_LIGHT` | (reserved for reflectance reversal) |
-| `M_DATA` | the actual encoded data |
-| `M_DATA_DARK` | |
-| `M_FINDER` | the 7x7 finder patterns |
-| `M_FINDER_DARK` | |
-| `M_FINDER_DOT` | the 3x3 dot inside the finder patterns |
-| `M_FINDER_DOT_LIGHT` | (reserved for reflectance reversal) |
-| `M_SEPARATOR` | separator lines around the finder patterns |
-| `M_SEPARATOR_DARK` | (reserved for reflectance reversal) |
-| `M_ALIGNMENT` | the 5x5 alignment patterns |
-| `M_ALIGNMENT_DARK` | |
-| `M_TIMING` | the timing pattern lines |
-| `M_TIMING_DARK` | |
-| `M_FORMAT` | format information pattern |
-| `M_FORMAT_DARK` | |
-| `M_VERSION` | version information pattern |
-| `M_VERSION_DARK` | |
-| `M_QUIETZONE` | margin around the QR Code |
-| `M_QUIETZONE_DARK` | (reserved for reflectance reversal) |
-| `M_LOGO` | space for a logo image |
-| `M_LOGO_DARK` | (reserved for reflectance reversal) |
+name | light (false) | dark (true) | description
+---- | ------------- | ----------- | -----------
+`M_NULL` | 0 | - | module not set (should never appear. if so, there's an error)
+`M_DARKMODULE` | - | 512 | once per matrix at `$xy = [8, 4 * $version + 9]`
+`M_DATA` | 4 | 1024 | the actual encoded data
+`M_FINDER` | 6 | 1536 | the 7x7 finder patterns
+`M_SEPARATOR` | 8 | - | separator lines around the finder patterns
+`M_ALIGNMENT` | 10 | 2560 | the 5x5 alignment patterns
+`M_TIMING` | 12 | 3072 | the timing pattern lines
+`M_FORMAT` | 14 | 3584 | format information pattern
+`M_VERSION` | 16 | 4096 | version information pattern
+`M_QUIETZONE` | 18 | - | margin around the QR Code
+`M_LOGO` | 20 | - | space for a logo image (not used yet)
+`M_TEST` | 255 | 65280 | test value
### `QROptions` API
#### Properties
-| property | type | default | allowed | description |
-|------------------------|--------|-----------------------------|---------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|
-| `$version` | int | `QRCode::VERSION_AUTO` | 1...40 | the [QR Code version number](http://www.qrcode.com/en/about/version.html) |
-| `$versionMin` | int | 1 | 1...40 | Minimum QR version (if `$version = QRCode::VERSION_AUTO`) |
-| `$versionMax` | int | 40 | 1...40 | Maximum QR version (if `$version = QRCode::VERSION_AUTO`) |
-| `$eccLevel` | int | `QRCode::ECC_L` | `QRCode::ECC_X` | Error correct level, where X = L (7%), M (15%), Q (25%), H (30%) |
-| `$maskPattern` | int | `QRCode::MASK_PATTERN_AUTO` | 0...7 | Mask Pattern to use |
-| `$addQuietzone` | bool | `true` | - | Add a "quiet zone" (margin) according to the QR code spec |
-| `$quietzoneSize` | int | 4 | clamped to 0 ... `$matrixSize / 2` | Size of the quiet zone |
-| `$dataModeOverride` | string | `null` | `Number`, `AlphaNum`, `Kanji`, `Byte` | allows overriding the data type detection |
-| `$outputType` | string | `QRCode::OUTPUT_IMAGE_PNG` | `QRCode::OUTPUT_*` | built-in output type |
-| `$outputInterface` | string | `null` | * | FQCN of the custom `QROutputInterface` if `QROptions::$outputType` is set to `QRCode::OUTPUT_CUSTOM` |
-| `$cachefile` | string | `null` | * | optional cache file path |
-| `$eol` | string | `PHP_EOL` | * | newline string (HTML, SVG, TEXT) |
-| `$scale` | int | 5 | * | size of a QR code pixel (SVG, IMAGE_*), HTML -> via CSS |
-| `$cssClass` | string | `null` | * | a common css class |
-| `$svgOpacity` | float | 1.0 | 0...1 | |
-| `$svgDefs` | string | * | * | anything between [`<defs>`](https://developer.mozilla.org/docs/Web/SVG/Element/defs) |
-| `$svgViewBoxSize` | int | `null` | * | a positive integer which defines width/height of the [viewBox attribute](https://css-tricks.com/scale-svg/#article-header-id-3) |
-| `$textDark` | string | '██' | * | string substitute for dark |
-| `$textLight` | string | 'â–‘â–‘' | * | string substitute for light |
-| `$markupDark` | string | '#000' | * | markup substitute for dark (CSS value) |
-| `$markupLight` | string | '#fff' | * | markup substitute for light (CSS value) |
-| `$imageBase64` | bool | `true` | - | whether to return the image data as base64 or raw like from `file_get_contents()` |
-| `$imageTransparent` | bool | `true` | - | toggle transparency (no jpeg support) |
-| `$imageTransparencyBG` | array | `[255, 255, 255]` | `[R, G, B]` | the RGB values for the transparent color, see [`imagecolortransparent()`](http://php.net/manual/function.imagecolortransparent.php) |
-| `$pngCompression` | int | -1 | -1 ... 9 | `imagepng()` compression level, -1 = auto |
-| `$jpegQuality` | int | 85 | 0 - 100 | `imagejpeg()` quality |
-| `$imagickFormat` | string | 'png' | * | ImageMagick output type, see `Imagick::setType()` |
-| `$imagickBG` | string | `null` | * | ImageMagick background color, see `ImagickPixel::__construct()` |
-| `$moduleValues` | array | `null` | * | Module values map, see [[Custom output interface]] and `QROutputInterface::DEFAULT_MODULE_VALUES` |
+property | type | default | allowed | description
+-------- | ---- | ------- | ------- | -----------
+`$version` | int | `QRCode::VERSION_AUTO` | 1...40 | the [QR Code version number](http://www.qrcode.com/en/about/version.html)
+`$versionMin` | int | 1 | 1...40 | Minimum QR version (if `$version = QRCode::VERSION_AUTO`)
+`$versionMax` | int | 40 | 1...40 | Maximum QR version (if `$version = QRCode::VERSION_AUTO`)
+`$eccLevel` | int | `QRCode::ECC_L` | `QRCode::ECC_X` | Error correct level, where X = L (7%), M (15%), Q (25%), H (30%)
+`$maskPattern` | int | `QRCode::MASK_PATTERN_AUTO` | 0...7 | Mask Pattern to use
+`$addQuietzone` | bool | `true` | - | Add a "quiet zone" (margin) according to the QR code spec
+`$quietzoneSize` | int | 4 | clamped to 0 ... `$matrixSize / 2` | Size of the quiet zone
+`$dataModeOverride` | string | `null` | `Number`, `AlphaNum`, `Kanji`, `Byte` | allows overriding the data type detection
+`$outputType` | string | `QRCode::OUTPUT_IMAGE_PNG` | `QRCode::OUTPUT_*` | built-in output type
+`$outputInterface` | string | `null` | * | FQCN of the custom `QROutputInterface` if `QROptions::$outputType` is set to `QRCode::OUTPUT_CUSTOM`
+`$cachefile` | string | `null` | * | optional cache file path
+`$eol` | string | `PHP_EOL` | * | newline string (HTML, SVG, TEXT)
+`$scale` | int | 5 | * | size of a QR code pixel (SVG, IMAGE_*), HTML -> via CSS
+`$cssClass` | string | `null` | * | a common css class
+`$svgOpacity` | float | 1.0 | 0...1 |
+`$svgDefs` | string | * | * | anything between [`<defs>`](https://developer.mozilla.org/docs/Web/SVG/Element/defs)
+`$svgViewBoxSize` | int | `null` | * | a positive integer which defines width/height of the [viewBox attribute](https://css-tricks.com/scale-svg/#article-header-id-3)
+`$textDark` | string | '🔴' | * | string substitute for dark
+`$textLight` | string | 'â­•' | * | string substitute for light
+`$markupDark` | string | '#000' | * | markup substitute for dark (CSS value)
+`$markupLight` | string | '#fff' | * | markup substitute for light (CSS value)
+`$imageBase64` | bool | `true` | - | whether to return the image data as base64 or raw like from `file_get_contents()`
+`$imageTransparent` | bool | `true` | - | toggle transparency (no jpeg support)
+`$imageTransparencyBG` | array | `[255, 255, 255]` | `[R, G, B]` | the RGB values for the transparent color, see [`imagecolortransparent()`](http://php.net/manual/function.imagecolortransparent.php)
+`$pngCompression` | int | -1 | -1 ... 9 | `imagepng()` compression level, -1 = auto
+`$jpegQuality` | int | 85 | 0 - 100 | `imagejpeg()` quality
+`$imagickFormat` | string | 'png' | * | ImageMagick output type, see `Imagick::setType()`
+`$imagickBG` | string | `null` | * | ImageMagick background color, see `ImagickPixel::__construct()`
+`$moduleValues` | array | `null` | * | Module values map, see [[Custom output interface]] and `QROutputInterface::DEFAULT_MODULE_VALUES`
+
## Framework Integration
- Drupal:
- [Google Authenticator Login `ga_login`](https://www.drupal.org/project/ga_login)
- Symfony
- - [phpqrcode-bundle](https://github.com/jonasarts/phpqrcode-bundle)
+ - [phpqrcode-bundle](https://github.com/jonasarts/phpqrcode-bundle)
- WordPress:
- [`wp-two-factor-auth`](https://github.com/sjinks/wp-two-factor-auth)
- [`simple-2fa`](https://wordpress.org/plugins/simple-2fa/)
diff --git a/vendor/chillerlan/php-qrcode/composer.json b/vendor/chillerlan/php-qrcode/composer.json
index 97d8bbe84..afe5bf68e 100644
--- a/vendor/chillerlan/php-qrcode/composer.json
+++ b/vendor/chillerlan/php-qrcode/composer.json
@@ -1,6 +1,6 @@
{
"name": "chillerlan/php-qrcode",
- "description": "A QR code generator with a user friendly API. PHP 7.4+",
+ "description": "A QR code generator. PHP 7.4+",
"homepage": "https://github.com/chillerlan/php-qrcode",
"license": "MIT",
"minimum-stability": "stable",
@@ -26,19 +26,16 @@
"require": {
"php": "^7.4 || ^8.0",
"ext-mbstring": "*",
- "chillerlan/php-settings-container": "^2.1.4 || ^3.1"
+ "chillerlan/php-settings-container": "^2.1.4"
},
"require-dev": {
- "phan/phan": "^5.4",
- "phpmd/phpmd": "^2.15",
- "phpunit/phpunit": "^9.6",
- "setasign/fpdf": "^1.8.2",
- "squizlabs/php_codesniffer": "^3.8"
+ "phpunit/phpunit": "^9.5",
+ "phan/phan": "^5.3",
+ "setasign/fpdf": "^1.8.2"
},
"suggest": {
"chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.",
- "setasign/fpdf": "Required to use the QR FPDF output.",
- "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code"
+ "setasign/fpdf": "Required to use the QR FPDF output."
},
"autoload": {
"psr-4": {
@@ -47,7 +44,9 @@
},
"autoload-dev": {
"psr-4": {
- "chillerlan\\QRCodeTest\\": "tests/"
+ "chillerlan\\QRCodePublic\\": "public/",
+ "chillerlan\\QRCodeTest\\": "tests/",
+ "chillerlan\\QRCodeExamples\\": "examples/"
}
},
"scripts": {
diff --git a/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php b/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php
new file mode 100644
index 000000000..3664989b8
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/MyCustomOutput.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Class MyCustomOutput
+ *
+ * @filesource MyCustomOutput.php
+ * @created 24.12.2017
+ * @package chillerlan\QRCodeExamples
+ * @author Smiley <smiley@chillerlan.net>
+ * @copyright 2017 Smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\Output\QROutputAbstract;
+
+class MyCustomOutput extends QROutputAbstract{
+
+ protected function setModuleValues():void{
+ // TODO: Implement setModuleValues() method.
+ }
+
+ public function dump(string $file = null){
+
+ $output = '';
+
+ for($row = 0; $row < $this->moduleCount; $row++){
+ for($col = 0; $col < $this->moduleCount; $col++){
+ $output .= (int)$this->matrix->check($col, $row);
+ }
+
+ $output .= \PHP_EOL;
+ }
+
+ return $output;
+ }
+
+}
diff --git a/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php b/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
new file mode 100644
index 000000000..76aa5ced7
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Class QRImageWithLogo
+ *
+ * @filesource QRImageWithLogo.php
+ * @created 18.11.2020
+ * @package chillerlan\QRCodeExamples
+ * @author smiley <smiley@chillerlan.net>
+ * @copyright 2020 smiley
+ * @license MIT
+ *
+ * @noinspection PhpComposerExtensionStubsInspection
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\Output\{QRCodeOutputException, QRImage};
+
+use function imagecopyresampled, imagecreatefrompng, imagesx, imagesy, is_file, is_readable;
+
+/**
+ * @property \chillerlan\QRCodeExamples\LogoOptions $options
+ */
+class QRImageWithLogo extends QRImage{
+
+ /**
+ * @param string|null $file
+ * @param string|null $logo
+ *
+ * @return string
+ * @throws \chillerlan\QRCode\Output\QRCodeOutputException
+ */
+ public function dump(string $file = null, string $logo = null):string{
+ // set returnResource to true to skip further processing for now
+ $this->options->returnResource = true;
+
+ // of course you could accept other formats too (such as resource or Imagick)
+ // i'm not checking for the file type either for simplicity reasons (assuming PNG)
+ if(!is_file($logo) || !is_readable($logo)){
+ throw new QRCodeOutputException('invalid logo');
+ }
+
+ $this->matrix->setLogoSpace(
+ $this->options->logoSpaceWidth,
+ $this->options->logoSpaceHeight
+ // not utilizing the position here
+ );
+
+ // there's no need to save the result of dump() into $this->image here
+ parent::dump($file);
+
+ $im = imagecreatefrompng($logo);
+
+ // get logo image size
+ $w = imagesx($im);
+ $h = imagesy($im);
+
+ // set new logo size, leave a border of 1 module (no proportional resize/centering)
+ $lw = ($this->options->logoSpaceWidth - 2) * $this->options->scale;
+ $lh = ($this->options->logoSpaceHeight - 2) * $this->options->scale;
+
+ // get the qrcode size
+ $ql = $this->matrix->size() * $this->options->scale;
+
+ // scale the logo and copy it over. done!
+ imagecopyresampled($this->image, $im, ($ql - $lw) / 2, ($ql - $lh) / 2, 0, 0, $lw, $lh, $w, $h);
+
+ $imageData = $this->dumpImage();
+
+ if($file !== null){
+ $this->saveToFile($imageData, $file);
+ }
+
+ if($this->options->imageBase64){
+ $imageData = 'data:image/'.$this->options->outputType.';base64,'.base64_encode($imageData);
+ }
+
+ return $imageData;
+ }
+
+}
diff --git a/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php b/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php
new file mode 100644
index 000000000..fe6b962a9
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/QRImageWithText.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Class QRImageWithText
+ *
+ * example for additional text
+ *
+ * @link https://github.com/chillerlan/php-qrcode/issues/35
+ *
+ * @filesource QRImageWithText.php
+ * @created 22.06.2019
+ * @package chillerlan\QRCodeExamples
+ * @author smiley <smiley@chillerlan.net>
+ * @copyright 2019 smiley
+ * @license MIT
+ *
+ * @noinspection PhpComposerExtensionStubsInspection
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\Output\QRImage;
+
+use function base64_encode, imagechar, imagecolorallocate, imagecolortransparent, imagecopymerge, imagecreatetruecolor,
+ imagedestroy, imagefilledrectangle, imagefontwidth, in_array, round, str_split, strlen;
+
+class QRImageWithText extends QRImage{
+
+ /**
+ * @param string|null $file
+ * @param string|null $text
+ *
+ * @return string
+ */
+ public function dump(string $file = null, string $text = null):string{
+ // set returnResource to true to skip further processing for now
+ $this->options->returnResource = true;
+
+ // there's no need to save the result of dump() into $this->image here
+ parent::dump($file);
+
+ // render text output if a string is given
+ if($text !== null){
+ $this->addText($text);
+ }
+
+ $imageData = $this->dumpImage();
+
+ if($file !== null){
+ $this->saveToFile($imageData, $file);
+ }
+
+ if($this->options->imageBase64){
+ $imageData = 'data:image/'.$this->options->outputType.';base64,'.base64_encode($imageData);
+ }
+
+ return $imageData;
+ }
+
+ /**
+ * @param string $text
+ */
+ protected function addText(string $text):void{
+ // save the qrcode image
+ $qrcode = $this->image;
+
+ // options things
+ $textSize = 3; // see imagefontheight() and imagefontwidth()
+ $textBG = [200, 200, 200];
+ $textColor = [50, 50, 50];
+
+ $bgWidth = $this->length;
+ $bgHeight = $bgWidth + 20; // 20px extra space
+
+ // create a new image with additional space
+ $this->image = imagecreatetruecolor($bgWidth, $bgHeight);
+ $background = imagecolorallocate($this->image, ...$textBG);
+
+ // allow transparency
+ if($this->options->imageTransparent && in_array($this->options->outputType, $this::TRANSPARENCY_TYPES, true)){
+ imagecolortransparent($this->image, $background);
+ }
+
+ // fill the background
+ imagefilledrectangle($this->image, 0, 0, $bgWidth, $bgHeight, $background);
+
+ // copy over the qrcode
+ imagecopymerge($this->image, $qrcode, 0, 0, 0, 0, $this->length, $this->length, 100);
+ imagedestroy($qrcode);
+
+ $fontColor = imagecolorallocate($this->image, ...$textColor);
+ $w = imagefontwidth($textSize);
+ $x = round(($bgWidth - strlen($text) * $w) / 2);
+
+ // loop through the string and draw the letters
+ foreach(str_split($text) as $i => $chr){
+ imagechar($this->image, $textSize, (int)($i * $w + $x), $this->length, $chr, $fontColor);
+ }
+ }
+
+}
diff --git a/vendor/chillerlan/php-qrcode/examples/custom_output.php b/vendor/chillerlan/php-qrcode/examples/custom_output.php
new file mode 100644
index 000000000..71ea62682
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/custom_output.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ *
+ * @filesource custom_output.php
+ * @created 24.12.2017
+ * @author Smiley <smiley@chillerlan.net>
+ * @copyright 2017 Smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\{QRCode, QROptions};
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
+
+// invoke the QROutputInterface manually
+$options = new QROptions([
+ 'version' => 5,
+ 'eccLevel' => QRCode::ECC_L,
+]);
+
+$qrOutputInterface = new MyCustomOutput($options, (new QRCode($options))->getMatrix($data));
+
+var_dump($qrOutputInterface->dump());
+
+
+// or just
+$options = new QROptions([
+ 'version' => 5,
+ 'eccLevel' => QRCode::ECC_L,
+ 'outputType' => QRCode::OUTPUT_CUSTOM,
+ 'outputInterface' => MyCustomOutput::class,
+]);
+
+var_dump((new QRCode($options))->render($data));
diff --git a/vendor/chillerlan/php-qrcode/examples/example_image.png b/vendor/chillerlan/php-qrcode/examples/example_image.png
new file mode 100644
index 000000000..b4a80f2ab
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/example_image.png
Binary files differ
diff --git a/vendor/chillerlan/php-qrcode/examples/example_svg.png b/vendor/chillerlan/php-qrcode/examples/example_svg.png
new file mode 100644
index 000000000..f1e7b32f7
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/example_svg.png
Binary files differ
diff --git a/vendor/chillerlan/php-qrcode/examples/fpdf.php b/vendor/chillerlan/php-qrcode/examples/fpdf.php
new file mode 100644
index 000000000..9c690a7f7
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/fpdf.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\{QRCode, QROptions};
+
+require_once __DIR__ . '/../vendor/autoload.php';
+
+$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
+
+$options = new QROptions([
+ 'version' => 7,
+ 'outputType' => QRCode::OUTPUT_FPDF,
+ 'eccLevel' => QRCode::ECC_L,
+ 'scale' => 5,
+ 'imageBase64' => false,
+ 'moduleValues' => [
+ // finder
+ 1536 => [0, 63, 255], // dark (true)
+ 6 => [255, 255, 255], // light (false), white is the transparency color and is enabled by default
+ // alignment
+ 2560 => [255, 0, 255],
+ 10 => [255, 255, 255],
+ // timing
+ 3072 => [255, 0, 0],
+ 12 => [255, 255, 255],
+ // format
+ 3584 => [67, 191, 84],
+ 14 => [255, 255, 255],
+ // version
+ 4096 => [62, 174, 190],
+ 16 => [255, 255, 255],
+ // data
+ 1024 => [0, 0, 0],
+ 4 => [255, 255, 255],
+ // darkmodule
+ 512 => [0, 0, 0],
+ // separator
+ 8 => [255, 255, 255],
+ // quietzone
+ 18 => [255, 255, 255],
+ ],
+]);
+
+\header('Content-type: application/pdf');
+
+echo (new QRCode($options))->render($data);
diff --git a/vendor/chillerlan/php-qrcode/examples/html.php b/vendor/chillerlan/php-qrcode/examples/html.php
new file mode 100644
index 000000000..aa5305d24
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/html.php
@@ -0,0 +1,102 @@
+<?php
+/**
+ *
+ * @filesource html.php
+ * @created 21.12.2017
+ * @author Smiley <smiley@chillerlan.net>
+ * @copyright 2017 Smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\{QRCode, QROptions};
+
+require_once '../vendor/autoload.php';
+
+header('Content-Type: text/html; charset=utf-8');
+
+?>
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <title>QRCode test</title>
+ <style>
+ body{
+ margin: 5em;
+ padding: 0;
+ }
+
+ div.qrcode{
+ margin: 0;
+ padding: 0;
+ }
+
+ /* rows */
+ div.qrcode > div {
+ margin: 0;
+ padding: 0;
+ height: 10px;
+ }
+
+ /* modules */
+ div.qrcode > div > span {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ }
+
+ div.qrcode > div > span {
+ background-color: #ccc;
+ }
+ </style>
+</head>
+<body>
+ <div class="qrcode">
+<?php
+
+ $data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
+
+ $options = new QROptions([
+ 'version' => 5,
+ 'outputType' => QRCode::OUTPUT_MARKUP_HTML,
+ 'eccLevel' => QRCode::ECC_L,
+ 'moduleValues' => [
+ // finder
+ 1536 => '#A71111', // dark (true)
+ 6 => '#FFBFBF', // light (false)
+ // alignment
+ 2560 => '#A70364',
+ 10 => '#FFC9C9',
+ // timing
+ 3072 => '#98005D',
+ 12 => '#FFB8E9',
+ // format
+ 3584 => '#003804',
+ 14 => '#00FB12',
+ // version
+ 4096 => '#650098',
+ 16 => '#E0B8FF',
+ // data
+ 1024 => '#4A6000',
+ 4 => '#ECF9BE',
+ // darkmodule
+ 512 => '#080063',
+ // separator
+ 8 => '#AFBFBF',
+ // quietzone
+ 18 => '#FFFFFF',
+ ],
+ ]);
+
+ echo (new QRCode($options))->render($data);
+
+?>
+ </div>
+</body>
+</html>
+
+
+
diff --git a/vendor/chillerlan/php-qrcode/examples/image.php b/vendor/chillerlan/php-qrcode/examples/image.php
new file mode 100644
index 000000000..54426c68a
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/image.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ *
+ * @filesource image.php
+ * @created 24.12.2017
+ * @author Smiley <smiley@chillerlan.net>
+ * @copyright 2017 Smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\{QRCode, QROptions};
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
+
+$options = new QROptions([
+ 'version' => 10,
+ 'outputType' => QRCode::OUTPUT_IMAGE_PNG,
+ 'eccLevel' => QRCode::ECC_H,
+ 'scale' => 5,
+ 'imageBase64' => false,
+ 'moduleValues' => [
+ // finder
+ 1536 => [0, 63, 255], // dark (true)
+ 6 => [255, 255, 255], // light (false), white is the transparency color and is enabled by default
+ 5632 => [241, 28, 163], // finder dot, dark (true)
+ // alignment
+ 2560 => [255, 0, 255],
+ 10 => [255, 255, 255],
+ // timing
+ 3072 => [255, 0, 0],
+ 12 => [255, 255, 255],
+ // format
+ 3584 => [67, 99, 84],
+ 14 => [255, 255, 255],
+ // version
+ 4096 => [62, 174, 190],
+ 16 => [255, 255, 255],
+ // data
+ 1024 => [0, 0, 0],
+ 4 => [255, 255, 255],
+ // darkmodule
+ 512 => [0, 0, 0],
+ // separator
+ 8 => [255, 255, 255],
+ // quietzone
+ 18 => [255, 255, 255],
+ // logo (requires a call to QRMatrix::setLogoSpace())
+ 20 => [255, 255, 255],
+ ],
+]);
+
+header('Content-type: image/png');
+
+echo (new QRCode($options))->render($data);
+
+
+
+
+
diff --git a/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php b/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php
new file mode 100644
index 000000000..f93aa8dd1
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ *
+ * @filesource imageWithLogo.php
+ * @created 18.11.2020
+ * @author smiley <smiley@chillerlan.net>
+ * @copyright 2020 smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\{QRCode, QROptions};
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
+/**
+ * @property int $logoSpaceWidth
+ * @property int $logoSpaceHeight
+ *
+ * @noinspection PhpIllegalPsrClassPathInspection
+ */
+class LogoOptions extends QROptions{
+ // size in QR modules, multiply with QROptions::$scale for pixel size
+ protected int $logoSpaceWidth;
+ protected int $logoSpaceHeight;
+}
+
+$options = new LogoOptions;
+
+$options->version = 7;
+$options->eccLevel = QRCode::ECC_H;
+$options->imageBase64 = false;
+$options->logoSpaceWidth = 13;
+$options->logoSpaceHeight = 13;
+$options->scale = 5;
+$options->imageTransparent = false;
+
+header('Content-type: image/png');
+
+$qrOutputInterface = new QRImageWithLogo($options, (new QRCode($options))->getMatrix($data));
+
+// dump the output, with an additional logo
+echo $qrOutputInterface->dump(null, __DIR__.'/octocat.png');
diff --git a/vendor/chillerlan/php-qrcode/examples/imageWithText.php b/vendor/chillerlan/php-qrcode/examples/imageWithText.php
new file mode 100644
index 000000000..050781cba
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/imageWithText.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * example for additional text
+ * @link https://github.com/chillerlan/php-qrcode/issues/35
+ *
+ * @filesource imageWithText.php
+ * @created 22.06.2019
+ * @author Smiley <smiley@chillerlan.net>
+ * @copyright 2019 Smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\{QRCode, QROptions};
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
+
+$options = new QROptions([
+ 'version' => 7,
+ 'outputType' => QRCode::OUTPUT_IMAGE_PNG,
+ 'scale' => 3,
+ 'imageBase64' => false,
+]);
+
+header('Content-type: image/png');
+
+$qrOutputInterface = new QRImageWithText($options, (new QRCode($options))->getMatrix($data));
+
+// dump the output, with additional text
+echo $qrOutputInterface->dump(null, 'example text');
diff --git a/vendor/chillerlan/php-qrcode/examples/imagick.php b/vendor/chillerlan/php-qrcode/examples/imagick.php
new file mode 100644
index 000000000..6bec4d02e
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/imagick.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ *
+ * @filesource image.php
+ * @created 24.12.2017
+ * @author Smiley <smiley@chillerlan.net>
+ * @copyright 2017 Smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\{QRCode, QROptions};
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
+
+$options = new QROptions([
+ 'version' => 7,
+ 'outputType' => QRCode::OUTPUT_IMAGICK,
+ 'eccLevel' => QRCode::ECC_L,
+ 'scale' => 5,
+ 'moduleValues' => [
+ // finder
+ 1536 => '#A71111', // dark (true)
+ 6 => '#FFBFBF', // light (false)
+ // alignment
+ 2560 => '#A70364',
+ 10 => '#FFC9C9',
+ // timing
+ 3072 => '#98005D',
+ 12 => '#FFB8E9',
+ // format
+ 3584 => '#003804',
+ 14 => '#00FB12',
+ // version
+ 4096 => '#650098',
+ 16 => '#E0B8FF',
+ // data
+ 1024 => '#4A6000',
+ 4 => '#ECF9BE',
+ // darkmodule
+ 512 => '#080063',
+ // separator
+ 8 => '#DDDDDD',
+ // quietzone
+ 18 => '#DDDDDD',
+ ],
+]);
+
+header('Content-type: image/png');
+
+echo (new QRCode($options))->render($data);
+
+
+
+
+
diff --git a/vendor/chillerlan/php-qrcode/examples/octocat.png b/vendor/chillerlan/php-qrcode/examples/octocat.png
new file mode 100644
index 000000000..f9050b935
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/octocat.png
Binary files differ
diff --git a/vendor/chillerlan/php-qrcode/examples/svg.php b/vendor/chillerlan/php-qrcode/examples/svg.php
new file mode 100644
index 000000000..d171cbe07
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/svg.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ *
+ * @filesource svg.php
+ * @created 21.12.2017
+ * @author Smiley <smiley@chillerlan.net>
+ * @copyright 2017 Smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\{QRCode, QROptions};
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
+$gzip = true;
+
+$options = new QROptions([
+ 'version' => 7,
+ 'outputType' => QRCode::OUTPUT_MARKUP_SVG,
+ 'imageBase64' => false,
+ 'eccLevel' => QRCode::ECC_L,
+ 'svgViewBoxSize' => 530,
+ 'addQuietzone' => true,
+ 'cssClass' => 'my-css-class',
+ 'svgOpacity' => 1.0,
+ 'svgDefs' => '
+ <linearGradient id="g2">
+ <stop offset="0%" stop-color="#39F" />
+ <stop offset="100%" stop-color="#F3F" />
+ </linearGradient>
+ <linearGradient id="g1">
+ <stop offset="0%" stop-color="#F3F" />
+ <stop offset="100%" stop-color="#39F" />
+ </linearGradient>
+ <style>rect{shape-rendering:crispEdges}</style>',
+ 'moduleValues' => [
+ // finder
+ 1536 => 'url(#g1)', // dark (true)
+ 6 => '#fff', // light (false)
+ // alignment
+ 2560 => 'url(#g1)',
+ 10 => '#fff',
+ // timing
+ 3072 => 'url(#g1)',
+ 12 => '#fff',
+ // format
+ 3584 => 'url(#g1)',
+ 14 => '#fff',
+ // version
+ 4096 => 'url(#g1)',
+ 16 => '#fff',
+ // data
+ 1024 => 'url(#g2)',
+ 4 => '#fff',
+ // darkmodule
+ 512 => 'url(#g1)',
+ // separator
+ 8 => '#fff',
+ // quietzone
+ 18 => '#fff',
+ ],
+]);
+
+$qrcode = (new QRCode($options))->render($data);
+
+header('Content-type: image/svg+xml');
+
+if($gzip === true){
+ header('Vary: Accept-Encoding');
+ header('Content-Encoding: gzip');
+ $qrcode = gzencode($qrcode ,9);
+}
+echo $qrcode;
+
+
diff --git a/vendor/chillerlan/php-qrcode/examples/text.php b/vendor/chillerlan/php-qrcode/examples/text.php
new file mode 100644
index 000000000..9bdf154f0
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/examples/text.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ *
+ * @filesource text.php
+ * @created 21.12.2017
+ * @author Smiley <smiley@chillerlan.net>
+ * @copyright 2017 Smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodeExamples;
+
+use chillerlan\QRCode\{QRCode, QROptions};
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
+
+$options = new QROptions([
+ 'version' => 5,
+ 'outputType' => QRCode::OUTPUT_STRING_TEXT,
+ 'eccLevel' => QRCode::ECC_L,
+]);
+
+// <pre> to view it in a browser
+echo '<pre style="font-size: 75%; line-height: 1;">'.(new QRCode($options))->render($data).'</pre>';
+
+
+// custom values
+$options = new QROptions([
+ 'version' => 5,
+ 'outputType' => QRCode::OUTPUT_STRING_TEXT,
+ 'eccLevel' => QRCode::ECC_L,
+ 'moduleValues' => [
+ // finder
+ 1536 => 'A', // dark (true)
+ 6 => 'a', // light (false)
+ // alignment
+ 2560 => 'B',
+ 10 => 'b',
+ // timing
+ 3072 => 'C',
+ 12 => 'c',
+ // format
+ 3584 => 'D',
+ 14 => 'd',
+ // version
+ 4096 => 'E',
+ 16 => 'e',
+ // data
+ 1024 => 'F',
+ 4 => 'f',
+ // darkmodule
+ 512 => 'G',
+ // separator
+ 8 => 'h',
+ // quietzone
+ 18 => 'i',
+ ],
+]);
+
+// <pre> to view it in a browser
+echo '<pre style="font-size: 75%; line-height: 1;">'.(new QRCode($options))->render($data).'</pre>';
+
+
+
+
+
diff --git a/vendor/chillerlan/php-qrcode/phpdoc.xml b/vendor/chillerlan/php-qrcode/phpdoc.xml
new file mode 100644
index 000000000..d440f1d8a
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/phpdoc.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<phpdoc>
+ <parser>
+ <target>docs</target>
+ <encoding>utf8</encoding>
+ <markers>
+ <item>TODO</item>
+ </markers>
+ </parser>
+ <transformer>
+ <target>docs</target>
+ </transformer>
+ <files>
+ <directory>src</directory>
+ <directory>tests</directory>
+ </files>
+ <transformations>
+ <template name="responsive-twig"/>
+ </transformations>
+</phpdoc>
diff --git a/vendor/chillerlan/php-qrcode/phpunit.xml b/vendor/chillerlan/php-qrcode/phpunit.xml
new file mode 100644
index 000000000..1fea31626
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/phpunit.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
+ bootstrap="vendor/autoload.php"
+ cacheResultFile=".build/phpunit.result.cache"
+ colors="true"
+ verbose="true"
+>
+ <coverage processUncoveredFiles="true">
+ <include>
+ <directory suffix=".php">./src</directory>
+ </include>
+ <report>
+ <clover outputFile=".build/coverage/clover.xml"/>
+ <xml outputDirectory=".build/coverage/coverage-xml"/>
+ </report>
+ </coverage>
+ <testsuites>
+ <testsuite name="php-qrcode test suite">
+ <directory suffix=".php">./tests/</directory>
+ </testsuite>
+ </testsuites>
+ <logging>
+ <junit outputFile=".build/logs/junit.xml"/>
+ </logging>
+</phpunit>
diff --git a/vendor/chillerlan/php-qrcode/public/index.html b/vendor/chillerlan/php-qrcode/public/index.html
new file mode 100644
index 000000000..d7bf6c891
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/public/index.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html>
+<html lang="en" >
+<head >
+ <meta charset="UTF-8" >
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title >QR Code Generator</title >
+ <style >
+ body{ font-size: 20px; line-height: 1.4em; font-family: "Trebuchet MS", sans-serif; color: #000;}
+ input, textarea, select{font-family: Consolas, "Liberation Mono", Courier, monospace; font-size: 75%; line-height: 1.25em; border: 1px solid #aaa; }
+ input:focus, textarea:focus, select:focus{ border: 1px solid #ccc; }
+ label{ cursor: pointer; }
+ #qrcode-settings, div#qrcode-output{ text-align: center; }
+ div#qrcode-output > div {margin: 0;padding: 0;height: 3px;}
+ div#qrcode-output > div > span {display: inline-block;width: 3px;height: 3px;}
+ div#qrcode-output > div > span {background-color: lightgrey;}
+ </style >
+</head >
+<body >
+
+<form id="qrcode-settings" >
+
+ <label for="inputstring" >Input String</label ><br /><textarea name="inputstring" id="inputstring" cols="80" rows="3" autocomplete="off" spellcheck="false"></textarea ><br />
+
+ <label for="version" >Version</label >
+ <input id="version" name="version" class="options" type="number" min="1" max="40" value="5" placeholder="version" />
+
+ <label for="maskpattern" >Mask Pattern</label >
+ <input id="maskpattern" name="maskpattern" class="options" type="number" min="-1" max="7" value="-1" placeholder="mask pattern" />
+
+ <label for="ecc" >ECC</label >
+ <select class="options" id="ecc" name="ecc" >
+ <option value="L" selected="selected" >L - 7%</option >
+ <option value="M" >M - 15%</option >
+ <option value="Q" >Q - 25%</option >
+ <option value="H" >H - 30%</option >
+ </select >
+
+ <br />
+
+ <label for="quietzone" >Quiet Zone
+ <input id="quietzone" name="quietzone" class="options" type="checkbox" value="true" />
+ </label >
+
+ <label for="quietzonesize" >size</label >
+ <input id="quietzonesize" name="quietzonesize" class="options" type="number" min="0" max="100" value="4" placeholder="quiet zone" />
+
+ <br />
+
+ <label for="output_type" >Output</label >
+ <select class="options" id="output_type" name="output_type" >
+ <option value="html" >Markup - HTML</option >
+ <option value="svg" selected="selected" >Markup - SVG</option >
+ <option value="png">Image - png</option >
+ <option value="jpg" >Image - jpg</option >
+ <option value="gif" >Image - gif</option >
+ <option value="text" >String - text</option >
+ <option value="json" >String - json</option >
+ </select >
+
+ <label for="scale" >scale</label >
+ <input id="scale" name="scale" class="options" type="number" min="1" max="10" value="5" placeholder="scale" />
+
+ <div>Finder</div>
+ <label for="m_finder_light" >
+ <input type="text" id="m_finder_light" name="m_finder_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+ <label for="m_finder_dark" >
+ <input type="text" id="m_finder_dark" name="m_finder_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+
+ <div>Alignment</div>
+ <label for="m_alignment_light" >
+ <input type="text" id="m_alignment_light" name="m_alignment_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+ <label for="m_alignment_dark" >
+ <input type="text" id="m_alignment_dark" name="m_alignment_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+
+ <div>Timing</div>
+ <label for="m_timing_light" >
+ <input type="text" id="m_timing_light" name="m_timing_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+ <label for="m_timing_dark" >
+ <input type="text" id="m_timing_dark" name="m_timing_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+
+ <div>Format</div>
+ <label for="m_format_light" >
+ <input type="text" id="m_format_light" name="m_format_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+ <label for="m_format_dark" >
+ <input type="text" id="m_format_dark" name="m_format_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+
+ <div>Version</div>
+ <label for="m_version_light" >
+ <input type="text" id="m_version_light" name="m_version_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+ <label for="m_version_dark" >
+ <input type="text" id="m_version_dark" name="m_version_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+
+ <div>Data</div>
+ <label for="m_data_light" >
+ <input type="text" id="m_data_light" name="m_data_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+ <label for="m_data_dark" >
+ <input type="text" id="m_data_dark" name="m_data_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+
+ <div>Dark Module</div>
+ <label for="m_darkmodule_light" >
+ <input disabled="disabled" type="text" id="m_darkmodule_light" class="options" value="" autocomplete="off" spellcheck="false" />
+ </label >
+ <label for="m_darkmodule_dark" >
+ <input type="text" id="m_darkmodule_dark" name="m_darkmodule_dark" class="jscolor options" value="000000" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+
+ <div>Separator</div>
+ <label for="m_separator_light" >
+ <input type="text" id="m_separator_light" name="m_separator_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+ <label for="m_separator_dark" >
+ <input disabled="disabled" type="text" id="m_separator_dark" class="options" value="" autocomplete="off" spellcheck="false" />
+ </label >
+
+ <div>Quiet Zone</div>
+ <label for="m_quietzone_light" >
+ <input type="text" id="m_quietzone_light" name="m_quietzone_light" class="jscolor options" value="ffffff" autocomplete="off" spellcheck="false" minlength="6" maxlength="6" />
+ </label >
+ <label for="m_quietzone_dark" >
+ <input disabled="disabled" type="text" id="m_quietzone_dark" class="options" value="" autocomplete="off" spellcheck="false" />
+ </label >
+
+ <br />
+ <button type="submit" >generate</button >
+</form >
+<div id="qrcode-output" ></div >
+
+<div><a href="https://play.google.com/store/apps/details?id=com.google.zxing.client.android" >ZXing Barcode Scanner</a ></div>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.3/prototype.js" ></script >
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.js" ></script >
+<script >
+ ((form, output, url) => {
+
+ $(form).observe('submit', ev => {
+ Event.stop(ev);
+
+ new Ajax.Request(url, {
+ method: 'post',
+ parameters: ev.target.serialize(true),
+ onUninitialized: $(output).update(),
+ onLoading: $(output).update('[portlandia_screaming.gif]'),
+ onFailure: response => $(output).update(response.responseJSON.error),
+ onSuccess: response => $(output).update(response.responseJSON.qrcode),
+ });
+
+ });
+ })('qrcode-settings', 'qrcode-output', './qrcode.php');
+</script >
+
+</body >
+</html > \ No newline at end of file
diff --git a/vendor/chillerlan/php-qrcode/public/qrcode.php b/vendor/chillerlan/php-qrcode/public/qrcode.php
new file mode 100644
index 000000000..1f8427c7e
--- /dev/null
+++ b/vendor/chillerlan/php-qrcode/public/qrcode.php
@@ -0,0 +1,97 @@
+<?php
+/**
+ * @filesource qrcode.php
+ * @created 18.11.2017
+ * @author Smiley <smiley@chillerlan.net>
+ * @copyright 2017 Smiley
+ * @license MIT
+ */
+
+namespace chillerlan\QRCodePublic;
+
+use chillerlan\QRCode\QRCode;
+use chillerlan\QRCode\QROptions;
+
+require_once '../vendor/autoload.php';
+
+try{
+
+ $moduleValues = [
+ // finder
+ 1536 => $_POST['m_finder_dark'],
+ 6 => $_POST['m_finder_light'],
+ // alignment
+ 2560 => $_POST['m_alignment_dark'],
+ 10 => $_POST['m_alignment_light'],
+ // timing
+ 3072 => $_POST['m_timing_dark'],
+ 12 => $_POST['m_timing_light'],
+ // format
+ 3584 => $_POST['m_format_dark'],
+ 14 => $_POST['m_format_light'],
+ // version
+ 4096 => $_POST['m_version_dark'],
+ 16 => $_POST['m_version_light'],
+ // data
+ 1024 => $_POST['m_data_dark'],
+ 4 => $_POST['m_data_light'],
+ // darkmodule
+ 512 => $_POST['m_darkmodule_dark'],
+ // separator
+ 8 => $_POST['m_separator_light'],
+ // quietzone
+ 18 => $_POST['m_quietzone_light'],
+ ];
+
+ $moduleValues = array_map(function($v){
+ if(preg_match('/[a-f\d]{6}/i', $v) === 1){
+ return in_array($_POST['output_type'], ['png', 'jpg', 'gif'])
+ ? array_map('hexdec', str_split($v, 2))
+ : '#'.$v ;
+ }
+ return null;
+ }, $moduleValues);
+
+
+ $ecc = in_array($_POST['ecc'], ['L', 'M', 'Q', 'H'], true) ? $_POST['ecc'] : 'L';
+
+ $qro = new QROptions;
+
+ $qro->version = (int)$_POST['version'];
+ $qro->eccLevel = constant('chillerlan\\QRCode\\QRCode::ECC_'.$ecc);
+ $qro->maskPattern = (int)$_POST['maskpattern'];
+ $qro->addQuietzone = isset($_POST['quietzone']);
+ $qro->quietzoneSize = (int)$_POST['quietzonesize'];
+ $qro->moduleValues = $moduleValues;
+ $qro->outputType = $_POST['output_type'];
+ $qro->scale = (int)$_POST['scale'];
+ $qro->imageTransparent = false;
+
+ $qrcode = (new QRCode($qro))->render($_POST['inputstring']);
+
+ if(in_array($_POST['output_type'], ['png', 'jpg', 'gif'])){
+ $qrcode = '<img src="'.$qrcode.'" />';
+ }
+ elseif($_POST['output_type'] === 'text'){
+ $qrcode = '<pre style="font-size: 75%; line-height: 1;">'.$qrcode.'</pre>';
+ }
+ elseif($_POST['output_type'] === 'json'){
+ $qrcode = '<pre style="font-size: 75%; overflow-x: auto;">'.$qrcode.'</pre>';
+ }
+
+ send_response(['qrcode' => $qrcode]);
+}
+// Pokémon exception handler
+catch(\Exception $e){
+ header('HTTP/1.1 500 Internal Server Error');
+ send_response(['error' => $e->getMessage()]);
+}
+
+/**
+ * @param array $response
+ */
+function send_response(array $response){
+ header('Content-type: application/json;charset=utf-8;');
+ echo json_encode($response);
+ exit;
+}
diff --git a/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php b/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
index 959892b9b..7874cb53d 100644
--- a/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
+++ b/vendor/chillerlan/php-qrcode/src/Data/MaskPatternTester.php
@@ -130,7 +130,7 @@ final class MaskPatternTester{
}
if(
- $val === $row[$x + 1]
+ $val === $m[$y][$x + 1]
&& $val === $m[$y + 1][$x]
&& $val === $m[$y + 1][$x + 1]
){
@@ -154,12 +154,12 @@ final class MaskPatternTester{
if(
$x + 6 < $size
&& $val
- && !$row[$x + 1]
- && $row[$x + 2]
- && $row[$x + 3]
- && $row[$x + 4]
- && !$row[$x + 5]
- && $row[$x + 6]
+ && !$m[$y][$x + 1]
+ && $m[$y][$x + 2]
+ && $m[$y][$x + 3]
+ && $m[$y][$x + 4]
+ && !$m[$y][$x + 5]
+ && $m[$y][$x + 6]
){
$penalties++;
}
@@ -189,8 +189,8 @@ final class MaskPatternTester{
protected function testLevel4(array $m, int $size):float{
$count = 0;
- foreach($m as $row){
- foreach($row as $val){
+ foreach($m as $y => $row){
+ foreach($row as $x => $val){
if($val){
$count++;
}
diff --git a/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php b/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php
index c6cd92372..93ad6221d 100644
--- a/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php
+++ b/vendor/chillerlan/php-qrcode/src/Data/QRDataInterface.php
@@ -21,7 +21,7 @@ interface QRDataInterface{
/**
* @var int[]
*/
- public const CHAR_MAP_NUMBER = [
+ const CHAR_MAP_NUMBER = [
'0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, '6' => 6, '7' => 7, '8' => 8, '9' => 9,
];
@@ -30,7 +30,7 @@ interface QRDataInterface{
*
* @var int[]
*/
- public const CHAR_MAP_ALPHANUM = [
+ const CHAR_MAP_ALPHANUM = [
'0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, '6' => 6, '7' => 7,
'8' => 8, '9' => 9, 'A' => 10, 'B' => 11, 'C' => 12, 'D' => 13, 'E' => 14, 'F' => 15,
'G' => 16, 'H' => 17, 'I' => 18, 'J' => 19, 'K' => 20, 'L' => 21, 'M' => 22, 'N' => 23,
@@ -46,7 +46,7 @@ interface QRDataInterface{
*
* @var int [][][]
*/
- public const MAX_LENGTH =[
+ const MAX_LENGTH =[
// v => [NUMERIC => [L, M, Q, H ], ALPHANUM => [L, M, Q, H], BINARY => [L, M, Q, H ], KANJI => [L, M, Q, H ]] // modules
1 => [[ 41, 34, 27, 17], [ 25, 20, 16, 10], [ 17, 14, 11, 7], [ 10, 8, 7, 4]], // 21
2 => [[ 77, 63, 48, 34], [ 47, 38, 29, 20], [ 32, 26, 20, 14], [ 20, 16, 12, 8]], // 25
@@ -95,7 +95,7 @@ interface QRDataInterface{
*
* @var int [][]
*/
- public const MAX_BITS = [
+ const MAX_BITS = [
// version => [L, M, Q, H ]
1 => [ 152, 128, 104, 72],
2 => [ 272, 224, 176, 128],
@@ -144,7 +144,7 @@ interface QRDataInterface{
*
* @var int [][][]
*/
- public const RSBLOCKS = [
+ const RSBLOCKS = [
1 => [[ 1, 0, 26, 19], [ 1, 0, 26, 16], [ 1, 0, 26, 13], [ 1, 0, 26, 9]],
2 => [[ 1, 0, 44, 34], [ 1, 0, 44, 28], [ 1, 0, 44, 22], [ 1, 0, 44, 16]],
3 => [[ 1, 0, 70, 55], [ 1, 0, 70, 44], [ 2, 0, 35, 17], [ 2, 0, 35, 13]],
diff --git a/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php b/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
index 9212a609f..05c8b9069 100755
--- a/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
+++ b/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
@@ -25,71 +25,32 @@ use function array_fill, array_key_exists, array_push, array_unshift, count, flo
*/
final class QRMatrix{
- /*
- * special values
- */
-
- /** @var int */
- public const M_NULL = 0x00;
- /** @var int */
- public const M_LOGO = 0x14;
- /** @var int */
- public const M_LOGO_DARK = self::M_LOGO << 8;
-
- /*
- * light values
- */
-
- /** @var int */
- public const M_DATA = 0x04;
- /** @var int */
- public const M_FINDER = 0x06;
- /** @var int */
- public const M_SEPARATOR = 0x08;
- /** @var int */
- public const M_ALIGNMENT = 0x0a;
/** @var int */
- public const M_TIMING = 0x0c;
+ public const M_NULL = 0x00;
/** @var int */
- public const M_FORMAT = 0x0e;
+ public const M_DARKMODULE = 0x02;
/** @var int */
- public const M_VERSION = 0x10;
+ public const M_DATA = 0x04;
/** @var int */
- public const M_QUIETZONE = 0x12;
-
- /*
- * dark values
- */
-
- /** @var int */
- public const M_DARKMODULE = self::M_DARKMODULE_LIGHT << 8;
- /** @var int */
- public const M_DATA_DARK = self::M_DATA << 8;
- /** @var int */
- public const M_FINDER_DARK = self::M_FINDER << 8;
+ public const M_FINDER = 0x06;
/** @var int */
- public const M_ALIGNMENT_DARK = self::M_ALIGNMENT << 8;
+ public const M_SEPARATOR = 0x08;
/** @var int */
- public const M_TIMING_DARK = self::M_TIMING << 8;
+ public const M_ALIGNMENT = 0x0a;
/** @var int */
- public const M_FORMAT_DARK = self::M_FORMAT << 8;
+ public const M_TIMING = 0x0c;
/** @var int */
- public const M_VERSION_DARK = self::M_VERSION << 8;
+ public const M_FORMAT = 0x0e;
/** @var int */
- public const M_FINDER_DOT = self::M_FINDER_DOT_LIGHT << 8;
-
- /*
- * values used for reversed reflectance
- */
-
+ public const M_VERSION = 0x10;
/** @var int */
- public const M_DARKMODULE_LIGHT = 0x02;
+ public const M_QUIETZONE = 0x12;
/** @var int */
- public const M_FINDER_DOT_LIGHT = 0x16;
+ public const M_LOGO = 0x14;
/** @var int */
- public const M_SEPARATOR_DARK = self::M_SEPARATOR << 8;
+ public const M_FINDER_DOT = 0x16;
/** @var int */
- public const M_QUIETZONE_DARK = self::M_QUIETZONE << 8;
+ public const M_TEST = 0xff;
/**
* ISO/IEC 18004:2000 Annex E, Table E.1 - Row/column coordinates of center module of Alignment Patterns
@@ -389,7 +350,7 @@ final class QRMatrix{
* Sets the "dark module", that is always on the same position 1x1px away from the bottom left finder
*/
public function setDarkModule():QRMatrix{
- $this->set(8, 4 * $this->version + 9, true, $this::M_DARKMODULE_LIGHT);
+ $this->set(8, 4 * $this->version + 9, true, $this::M_DARKMODULE);
return $this;
}
@@ -403,8 +364,8 @@ final class QRMatrix{
$pos = [
[0, 0], // top left
- [$this->moduleCount - 7, 0], // top right
- [0, $this->moduleCount - 7], // bottom left
+ [$this->moduleCount - 7, 0], // bottom left
+ [0, $this->moduleCount - 7], // top right
];
foreach($pos as $c){
@@ -420,7 +381,7 @@ final class QRMatrix{
}
// 3*3 dot
else{
- $this->set($c[0] + $y, $c[1] + $x, true, $this::M_FINDER_DOT_LIGHT);
+ $this->set($c[0] + $y, $c[1] + $x, true, $this::M_FINDER_DOT);
}
}
}
@@ -663,8 +624,8 @@ final class QRMatrix{
$startY = ($startY !== null ? $startY : ($length - $height) / 2) + $qz;
// clear the space
- for($y = 0; $y < $this->moduleCount; $y++){
- for($x = 0; $x < $this->moduleCount; $x++){
+ foreach($this->matrix as $y => $row){
+ foreach($row as $x => $val){
// out of bounds, skip
if($x < $start || $y < $start ||$x >= $end || $y >= $end){
continue;
diff --git a/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php b/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php
index 1385422fd..c42e0831c 100644
--- a/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php
+++ b/vendor/chillerlan/php-qrcode/src/Helpers/Polynomial.php
@@ -157,7 +157,7 @@ final class Polynomial{
throw new QRCodeException(sprintf('log(%s)', $n));
}
- return self::table[$n][1];
+ return Polynomial::table[$n][1];
}
/**
@@ -172,7 +172,7 @@ final class Polynomial{
$n -= 255;
}
- return self::table[$n][0];
+ return Polynomial::table[$n][0];
}
}
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php b/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php
index 53120ec6f..06d6e88cb 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QRMarkup.php
@@ -74,11 +74,9 @@ class QRMarkup extends QROutputAbstract{
$html .= '</div>'.$this->options->eol;
if($file !== null){
- /** @noinspection HtmlRequiredLangAttribute */
- return sprintf(
- '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>QR Code</title></head><body>%s</body></html>',
- $this->options->eol.$html
- );
+ return '<!DOCTYPE html>'.
+ '<head><meta charset="UTF-8"><title>QR Code</title></head>'.
+ '<body>'.$this->options->eol.$html.'</body>';
}
return $html;
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php b/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php
index 6165e1cc7..d4ed3d0c9 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QROutputAbstract.php
@@ -12,8 +12,7 @@
namespace chillerlan\QRCode\Output;
-use chillerlan\QRCode\QRCode;
-use chillerlan\QRCode\Data\QRMatrix;
+use chillerlan\QRCode\{Data\QRMatrix, QRCode};
use chillerlan\Settings\SettingsContainerInterface;
use function call_user_func_array, dirname, file_put_contents, get_called_class, in_array, is_writable, sprintf;
diff --git a/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php b/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php
index b492c27a1..b07b8e7a5 100644
--- a/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php
+++ b/vendor/chillerlan/php-qrcode/src/Output/QROutputInterface.php
@@ -19,32 +19,29 @@ use chillerlan\QRCode\Data\QRMatrix;
*/
interface QROutputInterface{
- public const DEFAULT_MODULE_VALUES = [
+ const DEFAULT_MODULE_VALUES = [
// light
- QRMatrix::M_NULL => false,
- QRMatrix::M_DARKMODULE_LIGHT => false,
- QRMatrix::M_DATA => false,
- QRMatrix::M_FINDER => false,
- QRMatrix::M_SEPARATOR => false,
- QRMatrix::M_ALIGNMENT => false,
- QRMatrix::M_TIMING => false,
- QRMatrix::M_FORMAT => false,
- QRMatrix::M_VERSION => false,
- QRMatrix::M_QUIETZONE => false,
- QRMatrix::M_LOGO => false,
- QRMatrix::M_FINDER_DOT_LIGHT => false,
+ QRMatrix::M_NULL => false, // 0
+ QRMatrix::M_DATA => false, // 4
+ QRMatrix::M_FINDER => false, // 6
+ QRMatrix::M_SEPARATOR => false, // 8
+ QRMatrix::M_ALIGNMENT => false, // 10
+ QRMatrix::M_TIMING => false, // 12
+ QRMatrix::M_FORMAT => false, // 14
+ QRMatrix::M_VERSION => false, // 16
+ QRMatrix::M_QUIETZONE => false, // 18
+ QRMatrix::M_LOGO => false, // 20
+ QRMatrix::M_TEST => false, // 255
// dark
- QRMatrix::M_DARKMODULE => true,
- QRMatrix::M_DATA_DARK => true,
- QRMatrix::M_FINDER_DARK => true,
- QRMatrix::M_SEPARATOR_DARK => true,
- QRMatrix::M_ALIGNMENT_DARK => true,
- QRMatrix::M_TIMING_DARK => true,
- QRMatrix::M_FORMAT_DARK => true,
- QRMatrix::M_VERSION_DARK => true,
- QRMatrix::M_QUIETZONE_DARK => true,
- QRMatrix::M_LOGO_DARK => true,
- QRMatrix::M_FINDER_DOT => true,
+ QRMatrix::M_DARKMODULE << 8 => true, // 512
+ QRMatrix::M_DATA << 8 => true, // 1024
+ QRMatrix::M_FINDER << 8 => true, // 1536
+ QRMatrix::M_ALIGNMENT << 8 => true, // 2560
+ QRMatrix::M_TIMING << 8 => true, // 3072
+ QRMatrix::M_FORMAT << 8 => true, // 3584
+ QRMatrix::M_VERSION << 8 => true, // 4096
+ QRMatrix::M_FINDER_DOT << 8 => true, // 5632
+ QRMatrix::M_TEST << 8 => true, // 65280
];
/**
diff --git a/vendor/chillerlan/php-qrcode/src/QRCode.php b/vendor/chillerlan/php-qrcode/src/QRCode.php
index c45b8b573..908030feb 100755
--- a/vendor/chillerlan/php-qrcode/src/QRCode.php
+++ b/vendor/chillerlan/php-qrcode/src/QRCode.php
@@ -117,23 +117,23 @@ class QRCode{
* @var string[][]
*/
public const OUTPUT_MODES = [
- QRMarkup::class => [
+ QRMarkup::class => [
self::OUTPUT_MARKUP_SVG,
self::OUTPUT_MARKUP_HTML,
],
- QRImage::class => [
+ QRImage::class => [
self::OUTPUT_IMAGE_PNG,
self::OUTPUT_IMAGE_GIF,
self::OUTPUT_IMAGE_JPG,
],
- QRString::class => [
+ QRString::class => [
self::OUTPUT_STRING_JSON,
self::OUTPUT_STRING_TEXT,
],
QRImagick::class => [
self::OUTPUT_IMAGICK,
],
- QRFpdf::class => [
+ QRFpdf::class => [
self::OUTPUT_FPDF
]
];
diff --git a/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php b/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php
index 13dfba136..74c384b13 100644
--- a/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php
+++ b/vendor/chillerlan/php-qrcode/src/QROptionsTrait.php
@@ -140,12 +140,12 @@ trait QROptionsTrait{
/**
* string substitute for dark
*/
- protected string $textDark = '██';
+ protected string $textDark = '🔴';
/**
* string substitute for light
*/
- protected string $textLight = 'â–‘â–‘';
+ protected string $textLight = 'â­•';
/**
* markup substitute for dark (CSS value)
diff --git a/vendor/chillerlan/php-settings-container/.github/FUNDING.yml b/vendor/chillerlan/php-settings-container/.github/FUNDING.yml
new file mode 100644
index 000000000..16a077f52
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+ko_fi: codemasher
+custom: "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4"
diff --git a/vendor/chillerlan/php-settings-container/.github/workflows/tests.yml b/vendor/chillerlan/php-settings-container/.github/workflows/tests.yml
new file mode 100644
index 000000000..8f108f0dd
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/.github/workflows/tests.yml
@@ -0,0 +1,105 @@
+# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
+# https://github.com/sebastianbergmann/phpunit/blob/master/.github/workflows/ci.yml
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+
+
+name: "CI"
+
+jobs:
+
+ static-code-analysis:
+ name: "Static Code Analysis"
+
+ runs-on: ubuntu-latest
+
+ env:
+ PHAN_ALLOW_XDEBUG: 0
+ PHAN_DISABLE_XDEBUG_WARN: 1
+
+ steps:
+ - name: "Checkout"
+ uses: actions/checkout@v3
+
+ - name: "Install PHP"
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: "7.4"
+ tools: pecl
+ coverage: none
+ extensions: ast, json
+
+ - name: "Update dependencies with composer"
+ run: composer update --no-interaction --no-ansi --no-progress --no-suggest
+
+ - name: "Run phan"
+ run: php vendor/bin/phan
+
+ build-docs:
+ name: "Build and publish Docs"
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: "Checkout sources"
+ uses: actions/checkout@v3
+
+ - name: "Install PHP"
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: "8.1"
+ coverage: none
+ tools: phpDocumentor
+ extensions: json
+
+ - name: "Build Docs"
+ run: phpdoc --config=phpdoc.xml
+
+ - name: "Publish Docs to gh-pages"
+ uses: JamesIves/github-pages-deploy-action@v4.3.4
+ with:
+ branch: gh-pages
+ folder: docs
+ clean: true
+
+ tests:
+ name: "Unit Tests"
+
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ os:
+ - ubuntu-latest
+ - windows-latest
+ php-version:
+ - "7.4"
+ - "8.0"
+ - "8.1"
+
+ steps:
+ - name: "Checkout"
+ uses: actions/checkout@v3
+
+ - name: "Install PHP with extensions"
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-version }}
+ coverage: pcov
+ extensions: json
+
+ - name: "Install dependencies with composer"
+ run: composer update --no-ansi --no-interaction --no-progress --no-suggest
+
+ - name: "Run tests with phpunit"
+ run: php vendor/phpunit/phpunit/phpunit --configuration=phpunit.xml
+
+ - name: "Send code coverage report to Codecov.io"
+ uses: codecov/codecov-action@v3
diff --git a/vendor/chillerlan/php-settings-container/.gitignore b/vendor/chillerlan/php-settings-container/.gitignore
new file mode 100644
index 000000000..142dd453a
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/.gitignore
@@ -0,0 +1,4 @@
+/.build
+/.idea
+/vendor
+composer.lock
diff --git a/vendor/chillerlan/php-settings-container/.phan/config.php b/vendor/chillerlan/php-settings-container/.phan/config.php
new file mode 100644
index 000000000..468bd9983
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/.phan/config.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * This configuration will be read and overlaid on top of the
+ * default configuration. Command-line arguments will be applied
+ * after this file is read.
+ */
+return [
+ // Supported values: `'5.6'`, `'7.0'`, `'7.1'`, `'7.2'`, `'7.3'`,
+ // `'7.4'`, `null`.
+ // If this is set to `null`,
+ // then Phan assumes the PHP version which is closest to the minor version
+ // of the php executable used to execute Phan.
+ //
+ // Note that the **only** effect of choosing `'5.6'` is to infer
+ // that functions removed in php 7.0 exist.
+ // (See `backward_compatibility_checks` for additional options)
+ 'target_php_version' => '7.4',
+
+ // A list of directories that should be parsed for class and
+ // method information. After excluding the directories
+ // defined in exclude_analysis_directory_list, the remaining
+ // files will be statically analyzed for errors.
+ //
+ // Thus, both first-party and third-party code being used by
+ // your application should be included in this list.
+ 'directory_list' => [
+ 'examples',
+ 'src',
+ 'tests',
+ 'vendor',
+ ],
+
+ // A regex used to match every file name that you want to
+ // exclude from parsing. Actual value will exclude every
+ // "test", "tests", "Test" and "Tests" folders found in
+ // "vendor/" directory.
+ 'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@',
+
+ // A directory list that defines files that will be excluded
+ // from static analysis, but whose class and method
+ // information should be included.
+ //
+ // Generally, you'll want to include the directories for
+ // third-party code (such as "vendor/") in this list.
+ //
+ // n.b.: If you'd like to parse but not analyze 3rd
+ // party code, directories containing that code
+ // should be added to both the `directory_list`
+ // and `exclude_analysis_directory_list` arrays.
+ 'exclude_analysis_directory_list' => [
+ 'tests',
+ 'vendor',
+ ],
+];
diff --git a/vendor/chillerlan/php-settings-container/.scrutinizer.yml b/vendor/chillerlan/php-settings-container/.scrutinizer.yml
new file mode 100644
index 000000000..daeb475f4
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/.scrutinizer.yml
@@ -0,0 +1,14 @@
+build:
+ nodes:
+ analysis:
+ tests:
+ override:
+ - php-scrutinizer-run
+ environment:
+ php: 8.0.0
+
+filter:
+ excluded_paths:
+ - examples/*
+ - tests/*
+ - vendor/*
diff --git a/vendor/chillerlan/php-settings-container/README.md b/vendor/chillerlan/php-settings-container/README.md
index 32f606fbc..579696b6e 100644
--- a/vendor/chillerlan/php-settings-container/README.md
+++ b/vendor/chillerlan/php-settings-container/README.md
@@ -1,15 +1,15 @@
# chillerlan/php-settings-container
-A container class for settings objects - decouple configuration logic from your application! Not a DI container.
-- [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php) provides immutable properties with magic getter & setter and some fancy.
+A container class for immutable settings objects. Not a DI container. PHP 7.4+
+- [`SettingsContainerInterface`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerInterface.php) provides immutable properties with magic getter & setter and some fancy - decouple configuration logic from your application!
[![PHP Version Support][php-badge]][php]
[![version][packagist-badge]][packagist]
[![license][license-badge]][license]
-[![Continuous Integration][gh-action-badge]][gh-action]
[![Coverage][coverage-badge]][coverage]
-[![Codacy][codacy-badge]][codacy]
+[![Scrunitizer][scrutinizer-badge]][scrutinizer]
[![Packagist downloads][downloads-badge]][downloads]
+[![Continuous Integration][gh-action-badge]][gh-action]
[php-badge]: https://img.shields.io/packagist/php-v/chillerlan/php-settings-container?logo=php&color=8892BF
[php]: https://www.php.net/supported-versions.php
@@ -19,23 +19,23 @@ A container class for settings objects - decouple configuration logic from your
[license]: https://github.com/chillerlan/php-settings-container/blob/main/LICENSE
[coverage-badge]: https://img.shields.io/codecov/c/github/chillerlan/php-settings-container.svg?logo=codecov
[coverage]: https://codecov.io/github/chillerlan/php-settings-container
-[codacy-badge]: https://img.shields.io/codacy/grade/bd2467799e2943d2853ce3ebad5af490/main?logo=codacy
-[codacy]: https://www.codacy.com/gh/chillerlan/php-settings-container/dashboard?branch=main
+[scrutinizer-badge]: https://img.shields.io/scrutinizer/g/chillerlan/php-settings-container.svg?logo=scrutinizer
+[scrutinizer]: https://scrutinizer-ci.com/g/chillerlan/php-settings-container
[downloads-badge]: https://img.shields.io/packagist/dt/chillerlan/php-settings-container.svg?logo=packagist
[downloads]: https://packagist.org/packages/chillerlan/php-settings-container/stats
-[gh-action-badge]: https://img.shields.io/github/actions/workflow/status/chillerlan/php-settings-container/ci.yml?branch=main&logo=github
-[gh-action]: https://github.com/chillerlan/php-settings-container/actions/workflows/ci.yml?query=branch%3Amain
+[gh-action-badge]: https://github.com/chillerlan/php-settings-container/workflows/CI/badge.svg
+[gh-action]: https://github.com/chillerlan/php-settings-container/actions?query=workflow%3A%22CI%22
## Documentation
### Installation
**requires [composer](https://getcomposer.org)**
-*composer.json* (note: replace `dev-main` with a [version constraint](https://getcomposer.org/doc/articles/versions.md#writing-version-constraints), e.g. `^3.0` - see [releases](https://github.com/chillerlan/php-settings-container/releases) for valid versions)
+*composer.json* (note: replace `dev-main` with a [version constraint](https://getcomposer.org/doc/articles/versions.md#writing-version-constraints), e.g. `^2.1` - see [releases](https://github.com/chillerlan/php-settings-container/releases) for valid versions)
```json
{
"require": {
- "php": "^8.1",
+ "php": "^7.4 || ^8.0",
"chillerlan/php-settings-container": "dev-main"
}
}
@@ -45,24 +45,31 @@ Profit!
## Usage
-The `SettingsContainerInterface` (wrapped in`SettingsContainerAbstract`) provides plug-in functionality for immutable object properties and adds some fancy, like loading/saving JSON, arrays etc.
+The `SettingsContainerInterface` (wrapped in`SettingsContainerAbstract` ) provides plug-in functionality for immutable object properties and adds some fancy, like loading/saving JSON, arrays etc.
It takes an `iterable` as the only constructor argument and calls a method with the trait's name on invocation (`MyTrait::MyTrait()`) for each used trait.
### Simple usage
```php
class MyContainer extends SettingsContainerAbstract{
+ protected $foo;
+ protected $bar;
+}
+```
+Typed properties in PHP 7.4+:
+```php
+class MyContainer extends SettingsContainerAbstract{
protected string $foo;
protected string $bar;
}
```
```php
-// use it just like a \stdClass (except the properties are fixed)
+// use it just like a \stdClass
$container = new MyContainer;
$container->foo = 'what';
$container->bar = 'foo';
-// which is equivalent to
+// which is equivalent to
$container = new MyContainer(['bar' => 'foo', 'foo' => 'what']);
// ...or try
$container->fromJSON('{"foo": "what", "bar": "foo"}');
@@ -83,48 +90,37 @@ var_dump($container->nope); // -> null
### Advanced usage
```php
-// from library 1
trait SomeOptions{
- protected string $foo;
- protected string $what;
-
+ protected $foo;
+ protected $what;
+
// this method will be called in SettingsContainerAbstract::construct()
// after the properties have been set
- protected function SomeOptions():void{
+ protected function SomeOptions(){
// just some constructor stuff...
$this->foo = strtoupper($this->foo);
}
-
- /*
- * special prefixed magic setters & getters
- */
-
+
// this method will be called from __set() when property $what is set
- protected function set_what(string $value):void{
+ protected function set_what(string $value){
$this->what = md5($value);
}
-
- // this method is called on __get() for the property $what
- protected function get_what():string{
- return 'hash: '.$this->what;
- }
}
-// from library 2
trait MoreOptions{
- protected string $bar = 'whatever'; // provide default values
+ protected $bar = 'whatever'; // provide default values
}
```
```php
$commonOptions = [
// SomeOptions
- 'foo' => 'whatever',
+ 'foo' => 'whatever',
// MoreOptions
'bar' => 'nothing',
];
-// now plug the several library options together to a single object
+// now plug the several library options together to a single object
$container = new class ($commonOptions) extends SettingsContainerAbstract{
use SomeOptions, MoreOptions;
};
@@ -133,31 +129,27 @@ var_dump($container->foo); // -> WHATEVER (constructor ran strtoupper on the val
var_dump($container->bar); // -> nothing
$container->what = 'some value';
-var_dump($container->what); // -> hash: 5946210c9e93ae37891dfe96c3e39614 (custom getter added "hash: ")
+var_dump($container->what); // -> md5 hash of "some value"
```
### API
#### [`SettingsContainerAbstract`](https://github.com/chillerlan/php-settings-container/blob/main/src/SettingsContainerAbstract.php)
-| method | return | info |
-|--------------------------------------------|------------------------------|---------------------------------------------------------------------------------------------------------------------|
-| `__construct(iterable $properties = null)` | - | calls `construct()` internally after the properties have been set |
-| (protected) `construct()` | void | calls a method with trait name as replacement constructor for each used trait |
-| `__get(string $property)` | mixed | calls `$this->{'get_'.$property}()` if such a method exists |
-| `__set(string $property, $value)` | void | calls `$this->{'set_'.$property}($value)` if such a method exists |
-| `__isset(string $property)` | bool | |
-| `__unset(string $property)` | void | |
-| `__toString()` | string | a JSON string |
-| `toArray()` | array | |
-| `fromIterable(iterable $properties)` | `SettingsContainerInterface` | |
-| `toJSON(int $jsonOptions = null)` | string | accepts [JSON options constants](http://php.net/manual/json.constants.php) |
-| `fromJSON(string $json)` | `SettingsContainerInterface` | |
-| `jsonSerialize()` | mixed | implements the [`JsonSerializable`](https://www.php.net/manual/en/jsonserializable.jsonserialize.php) interface |
-| `serialize()` | string | implements the [`Serializable`](https://www.php.net/manual/en/serializable.serialize.php) interface |
-| `unserialize(string $data)` | void | implements the [`Serializable`](https://www.php.net/manual/en/serializable.unserialize.php) interface |
-| `__serialize()` | array | implements the [`Serializable`](https://www.php.net/manual/en/language.oop5.magic.php#object.serialize) interface |
-| `__unserialize(array $data)` | void | implements the [`Serializable`](https://www.php.net/manual/en/language.oop5.magic.php#object.unserialize) interface |
+method | return | info
+-------- | ---- | -----------
+`__construct(iterable $properties = null)` | - | calls `construct()` internally after the properties have been set
+(protected) `construct()` | void | calls a method with trait name as replacement constructor for each used trait
+`__get(string $property)` | mixed | calls `$this->{'get_'.$property}()` if such a method exists
+`__set(string $property, $value)` | void | calls `$this->{'set_'.$property}($value)` if such a method exists
+`__isset(string $property)` | bool |
+`__unset(string $property)` | void |
+`__toString()` | string | a JSON string
+`toArray()` | array |
+`fromIterable(iterable $properties)` | `SettingsContainerInterface` |
+`toJSON(int $jsonOptions = null)` | string | accepts [JSON options constants](http://php.net/manual/json.constants.php)
+`fromJSON(string $json)` | `SettingsContainerInterface` |
+`jsonSerialize()` | mixed | implements the [`JsonSerializable`](https://www.php.net/manual/en/jsonserializable.jsonserialize.php) interface
## Disclaimer
This might be either an utterly genius or completely stupid idea - you decide. However, i like it and it works.
diff --git a/vendor/chillerlan/php-settings-container/composer.json b/vendor/chillerlan/php-settings-container/composer.json
index 8d19b8db4..1d89b6c41 100644
--- a/vendor/chillerlan/php-settings-container/composer.json
+++ b/vendor/chillerlan/php-settings-container/composer.json
@@ -1,12 +1,12 @@
{
"name": "chillerlan/php-settings-container",
- "description": "A container class for immutable settings objects. Not a DI container.",
+ "description": "A container class for immutable settings objects. Not a DI container. PHP 7.4+",
"homepage": "https://github.com/chillerlan/php-settings-container",
"license": "MIT",
"type": "library",
"minimum-stability": "stable",
"keywords": [
- "helper", "container", "settings", "configuration"
+ "php7", "helper", "container", "settings", "configuration"
],
"authors": [
{
@@ -20,14 +20,12 @@
"source": "https://github.com/chillerlan/php-settings-container"
},
"require": {
- "php": "^8.1",
+ "php": "^7.4 || ^8.0",
"ext-json": "*"
},
"require-dev": {
- "phan/phan": "^5.4",
- "phpmd/phpmd": "^2.15",
- "phpunit/phpunit": "^10.5",
- "squizlabs/php_codesniffer": "^3.9"
+ "phan/phan": "^5.3",
+ "phpunit/phpunit": "^9.5"
},
"autoload": {
"psr-4": {
@@ -36,7 +34,8 @@
},
"autoload-dev": {
"psr-4": {
- "chillerlan\\SettingsTest\\": "tests/"
+ "chillerlan\\SettingsTest\\": "tests/",
+ "chillerlan\\SettingsExamples\\": "examples/"
}
},
"scripts": {
diff --git a/vendor/chillerlan/php-settings-container/docs/Readme.md b/vendor/chillerlan/php-settings-container/docs/Readme.md
new file mode 100644
index 000000000..7749a1e7f
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/docs/Readme.md
@@ -0,0 +1,13 @@
+# Auto generated API documentation
+
+The API documentation can be auto generated with [phpDocumentor](https://www.phpdoc.org/).
+There is an [online version available](https://chillerlan.github.io/php-settings-container/) via the [gh-pages branch](https://github.com/chillerlan/php-settings-container/tree/gh-pages) that is [automatically deployed](https://github.com/chillerlan/php-settings-container/deployments) on each push to main.
+
+Locally created docs will appear in this directory. If you'd like to create local docs, please follow these steps:
+
+- [download phpDocumentor](https://github.com/phpDocumentor/phpDocumentor/releases) v3+ as .phar archive
+- run it in the repository root directory:
+ - on Windows `c:\path\to\php.exe c:\path\to\phpDocumentor.phar --config=phpdoc.xml`
+ - on Linux just `php /path/to/phpDocumentor.phar --config=phpdoc.xml`
+- open [index.html](./index.html) in a browser
+- profit!
diff --git a/vendor/chillerlan/php-settings-container/examples/advanced.php b/vendor/chillerlan/php-settings-container/examples/advanced.php
new file mode 100644
index 000000000..f11642c83
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/examples/advanced.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * @created 28.08.2018
+ * @author smiley <smiley@chillerlan.net>
+ * @copyright 2018 smiley
+ * @license MIT
+ */
+
+namespace chillerlan\SettingsExamples;
+
+use chillerlan\Settings\SettingsContainerAbstract;
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+// from library #1
+trait SomeOptions{
+ protected string $foo = '';
+
+ // this method will be called in SettingsContainerAbstract::__construct() after the properties have been set
+ protected function SomeOptions(){
+ // just some constructor stuff...
+ $this->foo = strtoupper($this->foo);
+ }
+}
+
+// from library #2
+trait MoreOptions{
+ protected string $bar = 'whatever'; // provide default values
+}
+
+$commonOptions = [
+ // SomeOptions
+ 'foo' => 'whatever',
+ // MoreOptions
+ 'bar' => 'nothing',
+];
+
+// now plug the several library options together to a single object
+
+/**
+ * @property string $foo
+ * @property string $bar
+ */
+class MySettings extends SettingsContainerAbstract{
+ use SomeOptions, MoreOptions; // ...
+};
+
+$container = new MySettings($commonOptions);
+
+var_dump($container->foo); // -> WHATEVER (constructor ran strtoupper on the value)
+var_dump($container->bar); // -> nothing
diff --git a/vendor/chillerlan/php-settings-container/examples/simple.php b/vendor/chillerlan/php-settings-container/examples/simple.php
new file mode 100644
index 000000000..acdbe4cb3
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/examples/simple.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * @created 28.08.2018
+ * @author smiley <smiley@chillerlan.net>
+ * @copyright 2018 smiley
+ * @license MIT
+ */
+
+namespace chillerlan\SettingsExamples;
+
+use chillerlan\Settings\SettingsContainerAbstract;
+
+require_once __DIR__.'/../vendor/autoload.php';
+
+class MyContainer extends SettingsContainerAbstract{
+ protected $foo;
+ protected $bar;
+}
+
+/** @var \chillerlan\Settings\SettingsContainerInterface $container */
+$container = new MyContainer(['foo' => 'what']);
+$container->bar = 'foo';
+
+var_dump($container->toJSON()); // -> {"foo":"what","bar":"foo"}
+
+// non-existing properties will be ignored:
+$container->nope = 'what';
+
+var_dump($container->nope); // -> NULL
diff --git a/vendor/chillerlan/php-settings-container/phpdoc.xml b/vendor/chillerlan/php-settings-container/phpdoc.xml
new file mode 100644
index 000000000..d440f1d8a
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/phpdoc.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<phpdoc>
+ <parser>
+ <target>docs</target>
+ <encoding>utf8</encoding>
+ <markers>
+ <item>TODO</item>
+ </markers>
+ </parser>
+ <transformer>
+ <target>docs</target>
+ </transformer>
+ <files>
+ <directory>src</directory>
+ <directory>tests</directory>
+ </files>
+ <transformations>
+ <template name="responsive-twig"/>
+ </transformations>
+</phpdoc>
diff --git a/vendor/chillerlan/php-settings-container/phpunit.xml b/vendor/chillerlan/php-settings-container/phpunit.xml
new file mode 100644
index 000000000..9271a1bb1
--- /dev/null
+++ b/vendor/chillerlan/php-settings-container/phpunit.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
+ bootstrap="vendor/autoload.php"
+ cacheResultFile=".build/phpunit.result.cache"
+ colors="true"
+ verbose="true"
+>
+ <coverage processUncoveredFiles="true">
+ <include>
+ <directory suffix=".php">./src</directory>
+ </include>
+ <report>
+ <clover outputFile=".build/coverage/clover.xml"/>
+ <xml outputDirectory=".build/coverage/coverage-xml"/>
+ </report>
+ </coverage>
+ <testsuites>
+ <testsuite name="php-settings-container test suite">
+ <directory suffix=".php">./tests/</directory>
+ </testsuite>
+ </testsuites>
+ <logging>
+ <junit outputFile=".build/logs/junit.xml"/>
+ </logging>
+</phpunit>
diff --git a/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php b/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php
index b54ca909c..6b7a1ecc2 100644
--- a/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php
+++ b/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php
@@ -7,13 +7,12 @@
* @copyright 2018 Smiley
* @license MIT
*/
-declare(strict_types=1);
namespace chillerlan\Settings;
-use InvalidArgumentException, ReflectionClass, ReflectionProperty;
-use function array_keys, get_object_vars, is_object, json_decode,
- json_encode, method_exists, property_exists, serialize, unserialize;
+use ReflectionClass, ReflectionProperty;
+
+use function get_object_vars, json_decode, json_encode, method_exists, property_exists;
use const JSON_THROW_ON_ERROR;
abstract class SettingsContainerAbstract implements SettingsContainerInterface{
@@ -21,7 +20,7 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* SettingsContainerAbstract constructor.
*/
- public function __construct(iterable|null $properties = null){
+ public function __construct(iterable $properties = null){
if(!empty($properties)){
$this->fromIterable($properties);
@@ -50,7 +49,7 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* @inheritdoc
*/
- public function __get(string $property):mixed{
+ public function __get(string $property){
if(!property_exists($this, $property) || $this->isPrivate($property)){
return null;
@@ -68,7 +67,7 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* @inheritdoc
*/
- public function __set(string $property, mixed $value):void{
+ public function __set(string $property, $value):void{
if(!property_exists($this, $property) || $this->isPrivate($property)){
return;
@@ -121,19 +120,13 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
* @inheritdoc
*/
public function toArray():array{
- $properties = [];
-
- foreach(array_keys(get_object_vars($this)) as $key){
- $properties[$key] = $this->__get($key);
- }
-
- return $properties;
+ return get_object_vars($this);
}
/**
* @inheritdoc
*/
- public function fromIterable(iterable $properties):static{
+ public function fromIterable(iterable $properties):SettingsContainerInterface{
foreach($properties as $key => $value){
$this->__set($key, $value);
@@ -145,14 +138,14 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* @inheritdoc
*/
- public function toJSON(int|null $jsonOptions = null):string{
- return json_encode($this, ($jsonOptions ?? 0));
+ public function toJSON(int $jsonOptions = null):string{
+ return json_encode($this, $jsonOptions ?? 0);
}
/**
* @inheritdoc
*/
- public function fromJSON(string $json):static{
+ public function fromJSON(string $json):SettingsContainerInterface{
$data = json_decode($json, true, 512, JSON_THROW_ON_ERROR);
return $this->fromIterable($data);
@@ -161,80 +154,9 @@ abstract class SettingsContainerAbstract implements SettingsContainerInterface{
/**
* @inheritdoc
*/
+ #[\ReturnTypeWillChange]
public function jsonSerialize():array{
return $this->toArray();
}
- /**
- * Returns a serialized string representation of the object in its current state (except static/readonly properties)
- *
- * @inheritdoc
- * @see \chillerlan\Settings\SettingsContainerInterface::toArray()
- */
- public function serialize():string{
- return serialize($this);
- }
-
- /**
- * Restores the data (except static/readonly properties) from the given serialized object to the current instance
- *
- * @inheritdoc
- * @see \chillerlan\Settings\SettingsContainerInterface::fromIterable()
- */
- public function unserialize(string $data):void{
- $obj = unserialize($data);
-
- if($obj === false || !is_object($obj)){
- throw new InvalidArgumentException('The given serialized string is invalid');
- }
-
- $reflection = new ReflectionClass($obj);
-
- if(!$reflection->isInstance($this)){
- throw new InvalidArgumentException('The unserialized object does not match the class of this container');
- }
-
- $properties = $reflection->getProperties(~(ReflectionProperty::IS_STATIC | ReflectionProperty::IS_READONLY));
-
- foreach($properties as $reflectionProperty){
- $this->{$reflectionProperty->name} = $reflectionProperty->getValue($obj);
- }
-
- }
-
- /**
- * Returns a serialized string representation of the object in its current state (except static/readonly properties)
- *
- * @inheritdoc
- * @see \chillerlan\Settings\SettingsContainerInterface::toArray()
- */
- public function __serialize():array{
-
- $properties = (new ReflectionClass($this))
- ->getProperties(~(ReflectionProperty::IS_STATIC | ReflectionProperty::IS_READONLY))
- ;
-
- $data = [];
-
- foreach($properties as $reflectionProperty){
- $data[$reflectionProperty->name] = $reflectionProperty->getValue($this);
- }
-
- return $data;
- }
-
- /**
- * Restores the data from the given array to the current instance
- *
- * @inheritdoc
- * @see \chillerlan\Settings\SettingsContainerInterface::fromIterable()
- */
- public function __unserialize(array $data):void{
-
- foreach($data as $key => $value){
- $this->{$key} = $value;
- }
-
- }
-
}
diff --git a/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php b/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php
index 1c9c12a73..ddacccd29 100644
--- a/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php
+++ b/vendor/chillerlan/php-settings-container/src/SettingsContainerInterface.php
@@ -7,28 +7,30 @@
* @copyright 2018 Smiley
* @license MIT
*/
-declare(strict_types=1);
namespace chillerlan\Settings;
-use JsonSerializable, Serializable;
+use JsonSerializable;
/**
* a generic container with magic getter and setter
*/
-interface SettingsContainerInterface extends JsonSerializable, Serializable{
+interface SettingsContainerInterface extends JsonSerializable{
/**
* Retrieve the value of $property
*
* @return mixed|null
*/
- public function __get(string $property):mixed;
+ public function __get(string $property);
/**
* Set $property to $value while avoiding private and non-existing properties
+ *
+ * @param string $property
+ * @param mixed $value
*/
- public function __set(string $property, mixed $value):void;
+ public function __set(string $property, $value):void;
/**
* Checks if $property is set (aka. not null), excluding private properties
@@ -41,38 +43,32 @@ interface SettingsContainerInterface extends JsonSerializable, Serializable{
public function __unset(string $property):void;
/**
- * @see \chillerlan\Settings\SettingsContainerInterface::toJSON()
+ * @see SettingsContainerInterface::toJSON()
*/
public function __toString():string;
/**
* Returns an array representation of the settings object
- *
- * The values will be run through the magic __get(), which may also call custom getters.
*/
public function toArray():array;
/**
* Sets properties from a given iterable
- *
- * The values will be run through the magic __set(), which may also call custom setters.
*/
- public function fromIterable(iterable $properties):static;
+ public function fromIterable(iterable $properties):SettingsContainerInterface;
/**
* Returns a JSON representation of the settings object
* @see \json_encode()
- * @see \chillerlan\Settings\SettingsContainerInterface::toArray()
*/
- public function toJSON(int|null $jsonOptions = null):string;
+ public function toJSON(int $jsonOptions = null):string;
/**
* Sets properties from a given JSON string
*
* @throws \Exception
* @throws \JsonException
- * @see \chillerlan\Settings\SettingsContainerInterface::fromIterable()
*/
- public function fromJSON(string $json):static;
+ public function fromJSON(string $json):SettingsContainerInterface;
}
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 1d47d8b4c..62440f63e 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -21,6 +21,7 @@ return array(
'Brick\\Math\\Internal\\Calculator\\GmpCalculator' => $vendorDir . '/brick/math/src/Internal/Calculator/GmpCalculator.php',
'Brick\\Math\\Internal\\Calculator\\NativeCalculator' => $vendorDir . '/brick/math/src/Internal/Calculator/NativeCalculator.php',
'Brick\\Math\\RoundingMode' => $vendorDir . '/brick/math/src/RoundingMode.php',
+ 'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
'CommerceGuys\\Intl\\Calculator' => $vendorDir . '/commerceguys/intl/src/Calculator.php',
'CommerceGuys\\Intl\\Currency\\Currency' => $vendorDir . '/commerceguys/intl/src/Currency/Currency.php',
'CommerceGuys\\Intl\\Currency\\CurrencyRepository' => $vendorDir . '/commerceguys/intl/src/Currency/CurrencyRepository.php',
@@ -318,10 +319,10 @@ return array(
'Michelf\\Markdown' => $vendorDir . '/michelf/php-markdown/Michelf/Markdown.php',
'Michelf\\MarkdownExtra' => $vendorDir . '/michelf/php-markdown/Michelf/MarkdownExtra.php',
'Michelf\\MarkdownInterface' => $vendorDir . '/michelf/php-markdown/Michelf/MarkdownInterface.php',
- 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizator' => $vendorDir . '/streams/php-jcs/src/JsonCanonicalizator.php',
- 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorFactory' => $vendorDir . '/streams/php-jcs/src/JsonCanonicalizatorFactory.php',
- 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorInterface' => $vendorDir . '/streams/php-jcs/src/JsonCanonicalizatorInterface.php',
- 'Mmccook\\JsonCanonicalizator\\Utils' => $vendorDir . '/streams/php-jcs/src/Utils.php',
+ 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizator' => $vendorDir . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php',
+ 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorFactory' => $vendorDir . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php',
+ 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorInterface' => $vendorDir . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php',
+ 'Mmccook\\JsonCanonicalizator\\Utils' => $vendorDir . '/mmccook/php-json-canonicalization-scheme/src/Utils.php',
'OAuth2\\Autoloader' => $vendorDir . '/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php',
'OAuth2\\ClientAssertionType\\ClientAssertionTypeInterface' => $vendorDir . '/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php',
'OAuth2\\ClientAssertionType\\HttpBasic' => $vendorDir . '/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php',
@@ -427,13 +428,13 @@ return array(
'Ramsey\\Collection\\CollectionInterface' => $vendorDir . '/ramsey/collection/src/CollectionInterface.php',
'Ramsey\\Collection\\DoubleEndedQueue' => $vendorDir . '/ramsey/collection/src/DoubleEndedQueue.php',
'Ramsey\\Collection\\DoubleEndedQueueInterface' => $vendorDir . '/ramsey/collection/src/DoubleEndedQueueInterface.php',
- 'Ramsey\\Collection\\Exception\\CollectionException' => $vendorDir . '/ramsey/collection/src/Exception/CollectionException.php',
'Ramsey\\Collection\\Exception\\CollectionMismatchException' => $vendorDir . '/ramsey/collection/src/Exception/CollectionMismatchException.php',
'Ramsey\\Collection\\Exception\\InvalidArgumentException' => $vendorDir . '/ramsey/collection/src/Exception/InvalidArgumentException.php',
- 'Ramsey\\Collection\\Exception\\InvalidPropertyOrMethod' => $vendorDir . '/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php',
+ 'Ramsey\\Collection\\Exception\\InvalidSortOrderException' => $vendorDir . '/ramsey/collection/src/Exception/InvalidSortOrderException.php',
'Ramsey\\Collection\\Exception\\NoSuchElementException' => $vendorDir . '/ramsey/collection/src/Exception/NoSuchElementException.php',
'Ramsey\\Collection\\Exception\\OutOfBoundsException' => $vendorDir . '/ramsey/collection/src/Exception/OutOfBoundsException.php',
'Ramsey\\Collection\\Exception\\UnsupportedOperationException' => $vendorDir . '/ramsey/collection/src/Exception/UnsupportedOperationException.php',
+ 'Ramsey\\Collection\\Exception\\ValueExtractionException' => $vendorDir . '/ramsey/collection/src/Exception/ValueExtractionException.php',
'Ramsey\\Collection\\GenericArray' => $vendorDir . '/ramsey/collection/src/GenericArray.php',
'Ramsey\\Collection\\Map\\AbstractMap' => $vendorDir . '/ramsey/collection/src/Map/AbstractMap.php',
'Ramsey\\Collection\\Map\\AbstractTypedMap' => $vendorDir . '/ramsey/collection/src/Map/AbstractTypedMap.php',
@@ -445,7 +446,6 @@ return array(
'Ramsey\\Collection\\Queue' => $vendorDir . '/ramsey/collection/src/Queue.php',
'Ramsey\\Collection\\QueueInterface' => $vendorDir . '/ramsey/collection/src/QueueInterface.php',
'Ramsey\\Collection\\Set' => $vendorDir . '/ramsey/collection/src/Set.php',
- 'Ramsey\\Collection\\Sort' => $vendorDir . '/ramsey/collection/src/Sort.php',
'Ramsey\\Collection\\Tool\\TypeTrait' => $vendorDir . '/ramsey/collection/src/Tool/TypeTrait.php',
'Ramsey\\Collection\\Tool\\ValueExtractorTrait' => $vendorDir . '/ramsey/collection/src/Tool/ValueExtractorTrait.php',
'Ramsey\\Collection\\Tool\\ValueToStringTrait' => $vendorDir . '/ramsey/collection/src/Tool/ValueToStringTrait.php',
@@ -561,6 +561,7 @@ return array(
'Ramsey\\Uuid\\UuidInterface' => $vendorDir . '/ramsey/uuid/src/UuidInterface.php',
'Ramsey\\Uuid\\Validator\\GenericValidator' => $vendorDir . '/ramsey/uuid/src/Validator/GenericValidator.php',
'Ramsey\\Uuid\\Validator\\ValidatorInterface' => $vendorDir . '/ramsey/uuid/src/Validator/ValidatorInterface.php',
+ 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
'Sabre\\CalDAV\\Backend\\AbstractBackend' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php',
'Sabre\\CalDAV\\Backend\\BackendInterface' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/BackendInterface.php',
'Sabre\\CalDAV\\Backend\\NotificationSupport' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php',
@@ -1212,6 +1213,7 @@ return array(
'StephenHill\\Benchmarks\\Base64Event' => $vendorDir . '/stephenhill/base58/benchmarks/Base64Event.php',
'StephenHill\\GMPService' => $vendorDir . '/stephenhill/base58/src/GMPService.php',
'StephenHill\\ServiceInterface' => $vendorDir . '/stephenhill/base58/src/ServiceInterface.php',
+ 'Symfony\\Polyfill\\Php81\\Php81' => $vendorDir . '/symfony/polyfill-php81/Php81.php',
'TPC_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
'TP_yyStackEntry' => $vendorDir . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
'Text_LanguageDetect' => $vendorDir . '/pear/text_languagedetect/Text/LanguageDetect.php',
@@ -1306,7 +1308,6 @@ return array(
'Zotlabs\\Lib\\SvgSanitizer' => $baseDir . '/Zotlabs/Lib/SvgSanitizer.php',
'Zotlabs\\Lib\\System' => $baseDir . '/Zotlabs/Lib/System.php',
'Zotlabs\\Lib\\Techlevels' => $baseDir . '/Zotlabs/Lib/Techlevels.php',
- 'Zotlabs\\Lib\\Text' => $baseDir . '/Zotlabs/Lib/Text.php',
'Zotlabs\\Lib\\ThreadItem' => $baseDir . '/Zotlabs/Lib/ThreadItem.php',
'Zotlabs\\Lib\\ThreadListener' => $baseDir . '/Zotlabs/Lib/ThreadListener.php',
'Zotlabs\\Lib\\ThreadStream' => $baseDir . '/Zotlabs/Lib/ThreadStream.php',
@@ -1380,7 +1381,6 @@ return array(
'Zotlabs\\Module\\Email_validation' => $baseDir . '/Zotlabs/Module/Email_validation.php',
'Zotlabs\\Module\\Embed' => $baseDir . '/Zotlabs/Module/Embed.php',
'Zotlabs\\Module\\Embedphotos' => $baseDir . '/Zotlabs/Module/Embedphotos.php',
- 'Zotlabs\\Module\\Emoji' => $baseDir . '/Zotlabs/Module/Emoji.php',
'Zotlabs\\Module\\Event' => $baseDir . '/Zotlabs/Module/Event.php',
'Zotlabs\\Module\\Fbrowser' => $baseDir . '/Zotlabs/Module/Fbrowser.php',
'Zotlabs\\Module\\Feed' => $baseDir . '/Zotlabs/Module/Feed.php',
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 1c97a2eee..65808f1eb 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -12,6 +12,7 @@ return array(
'a1cce3d26cc15c00fcd0b3354bd72c88' => $vendorDir . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php',
+ '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php',
'2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 9672919de..c2a27512d 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -11,6 +11,7 @@ return array(
'chillerlan\\Settings\\' => array($vendorDir . '/chillerlan/php-settings-container/src'),
'chillerlan\\QRCode\\' => array($vendorDir . '/chillerlan/php-qrcode/src'),
'Zotlabs\\' => array($baseDir . '/Zotlabs'),
+ 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'),
'StephenHill\\Benchmarks\\' => array($vendorDir . '/stephenhill/base58/benchmarks'),
'StephenHill\\' => array($vendorDir . '/stephenhill/base58/src'),
'SimplePie\\' => array($vendorDir . '/simplepie/simplepie/src'),
@@ -26,7 +27,7 @@ return array(
'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'),
'OTPHP\\' => array($vendorDir . '/spomky-labs/otphp/src'),
- 'Mmccook\\JsonCanonicalizator\\' => array($vendorDir . '/streams/php-jcs/src'),
+ 'Mmccook\\JsonCanonicalizator\\' => array($vendorDir . '/mmccook/php-json-canonicalization-scheme/src'),
'Michelf\\' => array($vendorDir . '/michelf/php-markdown/Michelf'),
'League\\HTMLToMarkdown\\' => array($vendorDir . '/league/html-to-markdown/src'),
'LanguageDetection\\' => array($vendorDir . '/patrickschur/language-detection/src/LanguageDetection'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 0fa871442..5e3f3e1cb 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -13,6 +13,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'a1cce3d26cc15c00fcd0b3354bd72c88' => __DIR__ . '/..' . '/sabre/event/lib/Promise/functions.php',
'3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php',
'93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php',
+ '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php',
'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php',
'2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
@@ -39,6 +40,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
),
'S' =>
array (
+ 'Symfony\\Polyfill\\Php81\\' => 23,
'StephenHill\\Benchmarks\\' => 23,
'StephenHill\\' => 12,
'SimplePie\\' => 10,
@@ -114,6 +116,10 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
array (
0 => __DIR__ . '/../..' . '/Zotlabs',
),
+ 'Symfony\\Polyfill\\Php81\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php81',
+ ),
'StephenHill\\Benchmarks\\' =>
array (
0 => __DIR__ . '/..' . '/stephenhill/base58/benchmarks',
@@ -176,7 +182,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
),
'Mmccook\\JsonCanonicalizator\\' =>
array (
- 0 => __DIR__ . '/..' . '/streams/php-jcs/src',
+ 0 => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src',
),
'Michelf\\' =>
array (
@@ -262,6 +268,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Brick\\Math\\Internal\\Calculator\\GmpCalculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator/GmpCalculator.php',
'Brick\\Math\\Internal\\Calculator\\NativeCalculator' => __DIR__ . '/..' . '/brick/math/src/Internal/Calculator/NativeCalculator.php',
'Brick\\Math\\RoundingMode' => __DIR__ . '/..' . '/brick/math/src/RoundingMode.php',
+ 'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php',
'CommerceGuys\\Intl\\Calculator' => __DIR__ . '/..' . '/commerceguys/intl/src/Calculator.php',
'CommerceGuys\\Intl\\Currency\\Currency' => __DIR__ . '/..' . '/commerceguys/intl/src/Currency/Currency.php',
'CommerceGuys\\Intl\\Currency\\CurrencyRepository' => __DIR__ . '/..' . '/commerceguys/intl/src/Currency/CurrencyRepository.php',
@@ -559,10 +566,10 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Michelf\\Markdown' => __DIR__ . '/..' . '/michelf/php-markdown/Michelf/Markdown.php',
'Michelf\\MarkdownExtra' => __DIR__ . '/..' . '/michelf/php-markdown/Michelf/MarkdownExtra.php',
'Michelf\\MarkdownInterface' => __DIR__ . '/..' . '/michelf/php-markdown/Michelf/MarkdownInterface.php',
- 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizator' => __DIR__ . '/..' . '/streams/php-jcs/src/JsonCanonicalizator.php',
- 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorFactory' => __DIR__ . '/..' . '/streams/php-jcs/src/JsonCanonicalizatorFactory.php',
- 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorInterface' => __DIR__ . '/..' . '/streams/php-jcs/src/JsonCanonicalizatorInterface.php',
- 'Mmccook\\JsonCanonicalizator\\Utils' => __DIR__ . '/..' . '/streams/php-jcs/src/Utils.php',
+ 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizator' => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php',
+ 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorFactory' => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php',
+ 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorInterface' => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php',
+ 'Mmccook\\JsonCanonicalizator\\Utils' => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src/Utils.php',
'OAuth2\\Autoloader' => __DIR__ . '/..' . '/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php',
'OAuth2\\ClientAssertionType\\ClientAssertionTypeInterface' => __DIR__ . '/..' . '/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php',
'OAuth2\\ClientAssertionType\\HttpBasic' => __DIR__ . '/..' . '/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php',
@@ -668,13 +675,13 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Ramsey\\Collection\\CollectionInterface' => __DIR__ . '/..' . '/ramsey/collection/src/CollectionInterface.php',
'Ramsey\\Collection\\DoubleEndedQueue' => __DIR__ . '/..' . '/ramsey/collection/src/DoubleEndedQueue.php',
'Ramsey\\Collection\\DoubleEndedQueueInterface' => __DIR__ . '/..' . '/ramsey/collection/src/DoubleEndedQueueInterface.php',
- 'Ramsey\\Collection\\Exception\\CollectionException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/CollectionException.php',
'Ramsey\\Collection\\Exception\\CollectionMismatchException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/CollectionMismatchException.php',
'Ramsey\\Collection\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/InvalidArgumentException.php',
- 'Ramsey\\Collection\\Exception\\InvalidPropertyOrMethod' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php',
+ 'Ramsey\\Collection\\Exception\\InvalidSortOrderException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/InvalidSortOrderException.php',
'Ramsey\\Collection\\Exception\\NoSuchElementException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/NoSuchElementException.php',
'Ramsey\\Collection\\Exception\\OutOfBoundsException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/OutOfBoundsException.php',
'Ramsey\\Collection\\Exception\\UnsupportedOperationException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/UnsupportedOperationException.php',
+ 'Ramsey\\Collection\\Exception\\ValueExtractionException' => __DIR__ . '/..' . '/ramsey/collection/src/Exception/ValueExtractionException.php',
'Ramsey\\Collection\\GenericArray' => __DIR__ . '/..' . '/ramsey/collection/src/GenericArray.php',
'Ramsey\\Collection\\Map\\AbstractMap' => __DIR__ . '/..' . '/ramsey/collection/src/Map/AbstractMap.php',
'Ramsey\\Collection\\Map\\AbstractTypedMap' => __DIR__ . '/..' . '/ramsey/collection/src/Map/AbstractTypedMap.php',
@@ -686,7 +693,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Ramsey\\Collection\\Queue' => __DIR__ . '/..' . '/ramsey/collection/src/Queue.php',
'Ramsey\\Collection\\QueueInterface' => __DIR__ . '/..' . '/ramsey/collection/src/QueueInterface.php',
'Ramsey\\Collection\\Set' => __DIR__ . '/..' . '/ramsey/collection/src/Set.php',
- 'Ramsey\\Collection\\Sort' => __DIR__ . '/..' . '/ramsey/collection/src/Sort.php',
'Ramsey\\Collection\\Tool\\TypeTrait' => __DIR__ . '/..' . '/ramsey/collection/src/Tool/TypeTrait.php',
'Ramsey\\Collection\\Tool\\ValueExtractorTrait' => __DIR__ . '/..' . '/ramsey/collection/src/Tool/ValueExtractorTrait.php',
'Ramsey\\Collection\\Tool\\ValueToStringTrait' => __DIR__ . '/..' . '/ramsey/collection/src/Tool/ValueToStringTrait.php',
@@ -802,6 +808,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Ramsey\\Uuid\\UuidInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/UuidInterface.php',
'Ramsey\\Uuid\\Validator\\GenericValidator' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/GenericValidator.php',
'Ramsey\\Uuid\\Validator\\ValidatorInterface' => __DIR__ . '/..' . '/ramsey/uuid/src/Validator/ValidatorInterface.php',
+ 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php',
'Sabre\\CalDAV\\Backend\\AbstractBackend' => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php',
'Sabre\\CalDAV\\Backend\\BackendInterface' => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV/Backend/BackendInterface.php',
'Sabre\\CalDAV\\Backend\\NotificationSupport' => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php',
@@ -1453,6 +1460,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'StephenHill\\Benchmarks\\Base64Event' => __DIR__ . '/..' . '/stephenhill/base58/benchmarks/Base64Event.php',
'StephenHill\\GMPService' => __DIR__ . '/..' . '/stephenhill/base58/src/GMPService.php',
'StephenHill\\ServiceInterface' => __DIR__ . '/..' . '/stephenhill/base58/src/ServiceInterface.php',
+ 'Symfony\\Polyfill\\Php81\\Php81' => __DIR__ . '/..' . '/symfony/polyfill-php81/Php81.php',
'TPC_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php',
'TP_yyStackEntry' => __DIR__ . '/..' . '/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php',
'Text_LanguageDetect' => __DIR__ . '/..' . '/pear/text_languagedetect/Text/LanguageDetect.php',
@@ -1547,7 +1555,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Lib\\SvgSanitizer' => __DIR__ . '/../..' . '/Zotlabs/Lib/SvgSanitizer.php',
'Zotlabs\\Lib\\System' => __DIR__ . '/../..' . '/Zotlabs/Lib/System.php',
'Zotlabs\\Lib\\Techlevels' => __DIR__ . '/../..' . '/Zotlabs/Lib/Techlevels.php',
- 'Zotlabs\\Lib\\Text' => __DIR__ . '/../..' . '/Zotlabs/Lib/Text.php',
'Zotlabs\\Lib\\ThreadItem' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadItem.php',
'Zotlabs\\Lib\\ThreadListener' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadListener.php',
'Zotlabs\\Lib\\ThreadStream' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadStream.php',
@@ -1621,7 +1628,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Email_validation' => __DIR__ . '/../..' . '/Zotlabs/Module/Email_validation.php',
'Zotlabs\\Module\\Embed' => __DIR__ . '/../..' . '/Zotlabs/Module/Embed.php',
'Zotlabs\\Module\\Embedphotos' => __DIR__ . '/../..' . '/Zotlabs/Module/Embedphotos.php',
- 'Zotlabs\\Module\\Emoji' => __DIR__ . '/../..' . '/Zotlabs/Module/Emoji.php',
'Zotlabs\\Module\\Event' => __DIR__ . '/../..' . '/Zotlabs/Module/Event.php',
'Zotlabs\\Module\\Fbrowser' => __DIR__ . '/../..' . '/Zotlabs/Module/Fbrowser.php',
'Zotlabs\\Module\\Feed' => __DIR__ . '/../..' . '/Zotlabs/Module/Feed.php',
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 91fc7de64..8e6b10647 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -193,37 +193,34 @@
},
{
"name": "chillerlan/php-qrcode",
- "version": "4.4.1",
- "version_normalized": "4.4.1.0",
+ "version": "4.3.4",
+ "version_normalized": "4.3.4.0",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-qrcode.git",
- "reference": "f5e243f3b61a60934780579430a951460f40888d"
+ "reference": "2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/f5e243f3b61a60934780579430a951460f40888d",
- "reference": "f5e243f3b61a60934780579430a951460f40888d",
+ "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d",
+ "reference": "2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d",
"shasum": ""
},
"require": {
- "chillerlan/php-settings-container": "^2.1.4 || ^3.1",
+ "chillerlan/php-settings-container": "^2.1.4",
"ext-mbstring": "*",
"php": "^7.4 || ^8.0"
},
"require-dev": {
- "phan/phan": "^5.4",
- "phpmd/phpmd": "^2.15",
- "phpunit/phpunit": "^9.6",
- "setasign/fpdf": "^1.8.2",
- "squizlabs/php_codesniffer": "^3.8"
+ "phan/phan": "^5.3",
+ "phpunit/phpunit": "^9.5",
+ "setasign/fpdf": "^1.8.2"
},
"suggest": {
"chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.",
- "setasign/fpdf": "Required to use the QR FPDF output.",
- "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code"
+ "setasign/fpdf": "Required to use the QR FPDF output."
},
- "time": "2024-01-06T16:56:58+00:00",
+ "time": "2022-07-25T09:12:45+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -250,7 +247,7 @@
"homepage": "https://github.com/chillerlan/php-qrcode/graphs/contributors"
}
],
- "description": "A QR code generator with a user friendly API. PHP 7.4+",
+ "description": "A QR code generator. PHP 7.4+",
"homepage": "https://github.com/chillerlan/php-qrcode",
"keywords": [
"phpqrcode",
@@ -261,7 +258,7 @@
],
"support": {
"issues": "https://github.com/chillerlan/php-qrcode/issues",
- "source": "https://github.com/chillerlan/php-qrcode/tree/4.4.1"
+ "source": "https://github.com/chillerlan/php-qrcode/tree/4.3.4"
},
"funding": [
{
@@ -277,30 +274,28 @@
},
{
"name": "chillerlan/php-settings-container",
- "version": "3.2.0",
- "version_normalized": "3.2.0.0",
+ "version": "2.1.4",
+ "version_normalized": "2.1.4.0",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-settings-container.git",
- "reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6"
+ "reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/8f93648fac8e6bacac8e00a8d325eba4950295e6",
- "reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6",
+ "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/1beb7df3c14346d4344b0b2e12f6f9a74feabd4a",
+ "reference": "1beb7df3c14346d4344b0b2e12f6f9a74feabd4a",
"shasum": ""
},
"require": {
"ext-json": "*",
- "php": "^8.1"
+ "php": "^7.4 || ^8.0"
},
"require-dev": {
- "phan/phan": "^5.4",
- "phpmd/phpmd": "^2.15",
- "phpunit/phpunit": "^10.5",
- "squizlabs/php_codesniffer": "^3.9"
+ "phan/phan": "^5.3",
+ "phpunit/phpunit": "^9.5"
},
- "time": "2024-03-02T20:07:15+00:00",
+ "time": "2022-07-05T22:32:14+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -319,9 +314,10 @@
"homepage": "https://github.com/codemasher"
}
],
- "description": "A container class for immutable settings objects. Not a DI container.",
+ "description": "A container class for immutable settings objects. Not a DI container. PHP 7.4+",
"homepage": "https://github.com/chillerlan/php-settings-container",
"keywords": [
+ "PHP7",
"Settings",
"configuration",
"container",
@@ -768,6 +764,67 @@
"install-path": "../michelf/php-markdown"
},
{
+ "name": "mmccook/php-json-canonicalization-scheme",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mmccook/php-json-canonicalization-scheme.git",
+ "reference": "cd6d3e7645a2c1e62574a9a2437d68e9e74e799f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mmccook/php-json-canonicalization-scheme/zipball/cd6d3e7645a2c1e62574a9a2437d68e9e74e799f",
+ "reference": "cd6d3e7645a2c1e62574a9a2437d68e9e74e799f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.13",
+ "pestphp/pest": "^1.20",
+ "phpstan/phpstan": "^1.10",
+ "spatie/ray": "^1.28"
+ },
+ "time": "2023-08-07T18:12:27+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Mmccook\\JsonCanonicalizator\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mark M. McCook",
+ "email": "mark.mccook@gmail.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "This is my package php-json-canonicalization-scheme",
+ "homepage": "https://github.com/mmccook/php-json-canonicalization-scheme",
+ "keywords": [
+ "mmccook",
+ "php-json-canonicalization-scheme"
+ ],
+ "support": {
+ "issues": "https://github.com/mmccook/php-json-canonicalization-scheme/issues",
+ "source": "https://github.com/mmccook/php-json-canonicalization-scheme/tree/1.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/mmccook",
+ "type": "github"
+ }
+ ],
+ "install-path": "../mmccook/php-json-canonicalization-scheme"
+ },
+ {
"name": "paragonie/constant_time_encoding",
"version": "v2.6.3",
"version_normalized": "2.6.3.0",
@@ -1057,27 +1114,27 @@
},
{
"name": "psr/log",
- "version": "3.0.0",
- "version_normalized": "3.0.0.0",
+ "version": "2.0.0",
+ "version_normalized": "2.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
"shasum": ""
},
"require": {
"php": ">=8.0.0"
},
- "time": "2021-07-14T16:46:02+00:00",
+ "time": "2021-07-14T16:41:46+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"installation-source": "dist",
@@ -1104,60 +1161,50 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/3.0.0"
+ "source": "https://github.com/php-fig/log/tree/2.0.0"
},
"install-path": "../psr/log"
},
{
"name": "ramsey/collection",
- "version": "2.0.0",
- "version_normalized": "2.0.0.0",
+ "version": "1.2.2",
+ "version_normalized": "1.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/collection.git",
- "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5"
+ "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
- "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a",
+ "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a",
"shasum": ""
},
"require": {
- "php": "^8.1"
+ "php": "^7.3 || ^8",
+ "symfony/polyfill-php81": "^1.23"
},
"require-dev": {
- "captainhook/plugin-composer": "^5.3",
- "ergebnis/composer-normalize": "^2.28.3",
- "fakerphp/faker": "^1.21",
- "hamcrest/hamcrest-php": "^2.0",
- "jangregor/phpstan-prophecy": "^1.0",
- "mockery/mockery": "^1.5",
- "php-parallel-lint/php-console-highlighter": "^1.0",
- "php-parallel-lint/php-parallel-lint": "^1.3",
- "phpcsstandards/phpcsutils": "^1.0.0-rc1",
+ "captainhook/captainhook": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "ergebnis/composer-normalize": "^2.6",
+ "fakerphp/faker": "^1.5",
+ "hamcrest/hamcrest-php": "^2",
+ "jangregor/phpstan-prophecy": "^0.8",
+ "mockery/mockery": "^1.3",
"phpspec/prophecy-phpunit": "^2.0",
- "phpstan/extension-installer": "^1.2",
- "phpstan/phpstan": "^1.9",
- "phpstan/phpstan-mockery": "^1.1",
- "phpstan/phpstan-phpunit": "^1.3",
- "phpunit/phpunit": "^9.5",
- "psalm/plugin-mockery": "^1.1",
- "psalm/plugin-phpunit": "^0.18.4",
- "ramsey/coding-standard": "^2.0.3",
- "ramsey/conventional-commits": "^1.3",
- "vimeo/psalm": "^5.4"
+ "phpstan/extension-installer": "^1",
+ "phpstan/phpstan": "^0.12.32",
+ "phpstan/phpstan-mockery": "^0.12.5",
+ "phpstan/phpstan-phpunit": "^0.12.11",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "psy/psysh": "^0.10.4",
+ "slevomat/coding-standard": "^6.3",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.4"
},
- "time": "2022-12-31T21:50:55+00:00",
+ "time": "2021-10-10T03:01:02+00:00",
"type": "library",
- "extra": {
- "captainhook": {
- "force-install": true
- },
- "ramsey/conventional-commits": {
- "configFile": "conventional-commits.json"
- }
- },
"installation-source": "dist",
"autoload": {
"psr-4": {
@@ -1186,7 +1233,7 @@
],
"support": {
"issues": "https://github.com/ramsey/collection/issues",
- "source": "https://github.com/ramsey/collection/tree/2.0.0"
+ "source": "https://github.com/ramsey/collection/tree/1.2.2"
},
"funding": [
{
@@ -1452,17 +1499,17 @@
},
{
"name": "sabre/http",
- "version": "5.1.10",
- "version_normalized": "5.1.10.0",
+ "version": "5.1.6",
+ "version_normalized": "5.1.6.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/http.git",
- "reference": "f9f3d1fba8916fa2f4ec25636c4fedc26cb94e02"
+ "reference": "9976ac34ced206bd6579b7b37b401de9fac98dae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/http/zipball/f9f3d1fba8916fa2f4ec25636c4fedc26cb94e02",
- "reference": "f9f3d1fba8916fa2f4ec25636c4fedc26cb94e02",
+ "url": "https://api.github.com/repos/sabre-io/http/zipball/9976ac34ced206bd6579b7b37b401de9fac98dae",
+ "reference": "9976ac34ced206bd6579b7b37b401de9fac98dae",
"shasum": ""
},
"require": {
@@ -1481,7 +1528,7 @@
"suggest": {
"ext-curl": " to make http requests with the Client class"
},
- "time": "2023-08-18T01:55:28+00:00",
+ "time": "2022-07-15T14:51:14+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1518,31 +1565,28 @@
},
{
"name": "sabre/uri",
- "version": "2.3.3",
- "version_normalized": "2.3.3.0",
+ "version": "2.3.2",
+ "version_normalized": "2.3.2.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/uri.git",
- "reference": "7e0e7dfd0b7e14346a27eabd66e843a6e7f1812b"
+ "reference": "eceb4a1b8b680b45e215574222d6ca00be541970"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/uri/zipball/7e0e7dfd0b7e14346a27eabd66e843a6e7f1812b",
- "reference": "7e0e7dfd0b7e14346a27eabd66e843a6e7f1812b",
+ "url": "https://api.github.com/repos/sabre-io/uri/zipball/eceb4a1b8b680b45e215574222d6ca00be541970",
+ "reference": "eceb4a1b8b680b45e215574222d6ca00be541970",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^3.17",
- "phpstan/extension-installer": "^1.3",
- "phpstan/phpstan": "^1.10",
- "phpstan/phpstan-phpunit": "^1.3",
- "phpstan/phpstan-strict-rules": "^1.5",
- "phpunit/phpunit": "^9.6"
+ "friendsofphp/php-cs-fixer": "^3.9",
+ "phpstan/phpstan": "^1.8",
+ "phpunit/phpunit": "^9.0"
},
- "time": "2023-06-09T06:54:04+00:00",
+ "time": "2022-09-19T11:58:52+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -1688,17 +1732,17 @@
},
{
"name": "sabre/xml",
- "version": "2.2.6",
- "version_normalized": "2.2.6.0",
+ "version": "2.2.5",
+ "version_normalized": "2.2.5.0",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/xml.git",
- "reference": "9cde7cdab1e50893cc83b037b40cd47bfde42a2b"
+ "reference": "a6af111850e7536d200d9637c34885cd3c77a86c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabre-io/xml/zipball/9cde7cdab1e50893cc83b037b40cd47bfde42a2b",
- "reference": "9cde7cdab1e50893cc83b037b40cd47bfde42a2b",
+ "url": "https://api.github.com/repos/sabre-io/xml/zipball/a6af111850e7536d200d9637c34885cd3c77a86c",
+ "reference": "a6af111850e7536d200d9637c34885cd3c77a86c",
"shasum": ""
},
"require": {
@@ -1714,7 +1758,7 @@
"phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.0"
},
- "time": "2023-06-28T12:56:05+00:00",
+ "time": "2021-11-04T06:37:27+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -2128,63 +2172,83 @@
"install-path": "../stephenhill/base58"
},
{
- "name": "streams/php-jcs",
- "version": "1.0.1",
- "version_normalized": "1.0.1.0",
+ "name": "symfony/polyfill-php81",
+ "version": "v1.29.0",
+ "version_normalized": "1.29.0.0",
"source": {
"type": "git",
- "url": "https://codeberg.org/streams/php-jcs",
- "reference": "a0953ad4f4d3586d5e008b8498cc79154fca8332"
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
},
- "require": {
- "php": "^8.1"
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
+ "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
+ "shasum": ""
},
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^3.13",
- "pestphp/pest": "^1.20",
- "phpstan/phpstan": "^1.10",
- "spatie/ray": "^1.28"
+ "require": {
+ "php": ">=7.1"
},
- "time": "2024-03-12T10:28:59+00:00",
+ "time": "2024-01-29T20:11:03+00:00",
"type": "library",
- "installation-source": "source",
- "autoload": {
- "psr-4": {
- "Mmccook\\JsonCanonicalizator\\": "src"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "Mmccook\\JsonCanonicalizator\\Tests\\": "tests"
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
- "scripts": {
- "test": [
- "vendor/bin/pest"
- ],
- "test-coverage": [
- "vendor/bin/pest --coverage"
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
],
- "format": [
- "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php --allow-risky=yes"
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
]
},
+ "notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
- "name": "Mark M. McCook",
- "email": "mark.mccook@gmail.com",
- "role": "Developer"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "This is my package php-json-canonicalization-scheme",
- "homepage": "https://codeberg.org/streams/php-jcs",
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
"keywords": [
- "php-json-canonicalization-scheme"
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
],
- "install-path": "../streams/php-jcs"
+ "install-path": "../symfony/polyfill-php81"
},
{
"name": "twbs/bootstrap",
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 72b9266ae..bfd0c7e83 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => 'zotlabs/hubzilla',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '0e59cfb8390e4c6aee29ef73b53a4dc6b7fb581e',
+ 'reference' => '27e57ff7aad9b70a4d088b880fac4af2920fdd31',
'type' => 'application',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -38,18 +38,18 @@
'dev_requirement' => false,
),
'chillerlan/php-qrcode' => array(
- 'pretty_version' => '4.4.1',
- 'version' => '4.4.1.0',
- 'reference' => 'f5e243f3b61a60934780579430a951460f40888d',
+ 'pretty_version' => '4.3.4',
+ 'version' => '4.3.4.0',
+ 'reference' => '2ca4bf5ae048af1981d1023ee42a0a2a9d51e51d',
'type' => 'library',
'install_path' => __DIR__ . '/../chillerlan/php-qrcode',
'aliases' => array(),
'dev_requirement' => false,
),
'chillerlan/php-settings-container' => array(
- 'pretty_version' => '3.2.0',
- 'version' => '3.2.0.0',
- 'reference' => '8f93648fac8e6bacac8e00a8d325eba4950295e6',
+ 'pretty_version' => '2.1.4',
+ 'version' => '2.1.4.0',
+ 'reference' => '1beb7df3c14346d4344b0b2e12f6f9a74feabd4a',
'type' => 'library',
'install_path' => __DIR__ . '/../chillerlan/php-settings-container',
'aliases' => array(),
@@ -118,6 +118,15 @@
'aliases' => array(),
'dev_requirement' => false,
),
+ 'mmccook/php-json-canonicalization-scheme' => array(
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'reference' => 'cd6d3e7645a2c1e62574a9a2437d68e9e74e799f',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../mmccook/php-json-canonicalization-scheme',
+ 'aliases' => array(),
+ 'dev_requirement' => false,
+ ),
'paragonie/constant_time_encoding' => array(
'pretty_version' => 'v2.6.3',
'version' => '2.6.3.0',
@@ -155,18 +164,18 @@
'dev_requirement' => false,
),
'psr/log' => array(
- 'pretty_version' => '3.0.0',
- 'version' => '3.0.0.0',
- 'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
+ 'pretty_version' => '2.0.0',
+ 'version' => '2.0.0.0',
+ 'reference' => 'ef29f6d262798707a9edd554e2b82517ef3a9376',
'type' => 'library',
'install_path' => __DIR__ . '/../psr/log',
'aliases' => array(),
'dev_requirement' => false,
),
'ramsey/collection' => array(
- 'pretty_version' => '2.0.0',
- 'version' => '2.0.0.0',
- 'reference' => 'a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5',
+ 'pretty_version' => '1.2.2',
+ 'version' => '1.2.2.0',
+ 'reference' => 'cccc74ee5e328031b15640b51056ee8d3bb66c0a',
'type' => 'library',
'install_path' => __DIR__ . '/../ramsey/collection',
'aliases' => array(),
@@ -206,18 +215,18 @@
'dev_requirement' => false,
),
'sabre/http' => array(
- 'pretty_version' => '5.1.10',
- 'version' => '5.1.10.0',
- 'reference' => 'f9f3d1fba8916fa2f4ec25636c4fedc26cb94e02',
+ 'pretty_version' => '5.1.6',
+ 'version' => '5.1.6.0',
+ 'reference' => '9976ac34ced206bd6579b7b37b401de9fac98dae',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/http',
'aliases' => array(),
'dev_requirement' => false,
),
'sabre/uri' => array(
- 'pretty_version' => '2.3.3',
- 'version' => '2.3.3.0',
- 'reference' => '7e0e7dfd0b7e14346a27eabd66e843a6e7f1812b',
+ 'pretty_version' => '2.3.2',
+ 'version' => '2.3.2.0',
+ 'reference' => 'eceb4a1b8b680b45e215574222d6ca00be541970',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/uri',
'aliases' => array(),
@@ -233,9 +242,9 @@
'dev_requirement' => false,
),
'sabre/xml' => array(
- 'pretty_version' => '2.2.6',
- 'version' => '2.2.6.0',
- 'reference' => '9cde7cdab1e50893cc83b037b40cd47bfde42a2b',
+ 'pretty_version' => '2.2.5',
+ 'version' => '2.2.5.0',
+ 'reference' => 'a6af111850e7536d200d9637c34885cd3c77a86c',
'type' => 'library',
'install_path' => __DIR__ . '/../sabre/xml',
'aliases' => array(),
@@ -286,12 +295,12 @@
'aliases' => array(),
'dev_requirement' => false,
),
- 'streams/php-jcs' => array(
- 'pretty_version' => '1.0.1',
- 'version' => '1.0.1.0',
- 'reference' => 'a0953ad4f4d3586d5e008b8498cc79154fca8332',
+ 'symfony/polyfill-php81' => array(
+ 'pretty_version' => 'v1.29.0',
+ 'version' => '1.29.0.0',
+ 'reference' => 'c565ad1e63f30e7477fc40738343c62b40bc672d',
'type' => 'library',
- 'install_path' => __DIR__ . '/../streams/php-jcs',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-php81',
'aliases' => array(),
'dev_requirement' => false,
),
@@ -331,7 +340,7 @@
'zotlabs/hubzilla' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '0e59cfb8390e4c6aee29ef73b53a4dc6b7fb581e',
+ 'reference' => '27e57ff7aad9b70a4d088b880fac4af2920fdd31',
'type' => 'application',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
diff --git a/vendor/mmccook/php-json-canonicalization-scheme/CHANGELOG.md b/vendor/mmccook/php-json-canonicalization-scheme/CHANGELOG.md
new file mode 100644
index 000000000..a9bd9a22b
--- /dev/null
+++ b/vendor/mmccook/php-json-canonicalization-scheme/CHANGELOG.md
@@ -0,0 +1,4 @@
+# Changelog
+
+All notable changes to `php-json-canonicalization-scheme` will be documented in this file.
+
diff --git a/vendor/mmccook/php-json-canonicalization-scheme/LICENSE.md b/vendor/mmccook/php-json-canonicalization-scheme/LICENSE.md
new file mode 100644
index 000000000..bbd0c5b62
--- /dev/null
+++ b/vendor/mmccook/php-json-canonicalization-scheme/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) mmccook <mark.mccook@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/mmccook/php-json-canonicalization-scheme/README.md b/vendor/mmccook/php-json-canonicalization-scheme/README.md
new file mode 100644
index 000000000..780c431b3
--- /dev/null
+++ b/vendor/mmccook/php-json-canonicalization-scheme/README.md
@@ -0,0 +1,43 @@
+# JSON Canonicalization for PHP 8.1+
+
+[![Latest Version on Packagist](https://img.shields.io/packagist/v/mmccook/php-json-canonicalization-scheme.svg?style=flat-square)](https://packagist.org/packages/mmccook/php-json-canonicalization-scheme)
+[![Tests](https://img.shields.io/github/actions/workflow/status/mmccook/php-json-canonicalization-scheme/run-tests.yml?branch=main&label=tests&style=flat-square)](https://github.com/mmccook/php-json-canonicalization-scheme/actions/workflows/run-tests.yml)
+[![Total Downloads](https://img.shields.io/packagist/dt/mmccook/php-json-canonicalization-scheme.svg?style=flat-square)](https://packagist.org/packages/mmccook/php-json-canonicalization-scheme)
+
+Needed a way to canonicalize JSON to validate webhooks from [The Campaign Registry](https://csp-api.campaignregistry.com/v2/restAPI)
+couldn't find an actively maintained package that all passed the JCS tests, so I used the one listed on the JCS Github and updated/refactored it.
+
+## Installation
+
+You can install the package via composer:
+
+```bash
+composer require mmccook/php-json-canonicalization-scheme
+```
+
+## Usage
+
+```php
+$canonicalization = JsonCanonicalizatorFactory::getInstance();
+$canonicalizedJsonString = $canonicalization->canonicalize($input);
+```
+
+## Testing
+
+```bash
+composer test
+```
+
+## Changelog
+
+Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
+
+## Contributing
+
+Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details.
+
+## Credits
+- [Mark M. McCook](https://github.com/mmccook)
+
+## License
+The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
diff --git a/vendor/mmccook/php-json-canonicalization-scheme/composer.json b/vendor/mmccook/php-json-canonicalization-scheme/composer.json
new file mode 100644
index 000000000..62f712dcc
--- /dev/null
+++ b/vendor/mmccook/php-json-canonicalization-scheme/composer.json
@@ -0,0 +1,50 @@
+{
+ "name": "mmccook/php-json-canonicalization-scheme",
+ "description": "This is my package php-json-canonicalization-scheme",
+ "keywords": [
+ "mmccook",
+ "php-json-canonicalization-scheme"
+ ],
+ "homepage": "https://github.com/mmccook/php-json-canonicalization-scheme",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Mark M. McCook",
+ "email": "mark.mccook@gmail.com",
+ "role": "Developer"
+ }
+ ],
+ "require": {
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.13",
+ "pestphp/pest": "^1.20",
+ "phpstan/phpstan": "^1.10",
+ "spatie/ray": "^1.28"
+ },
+ "autoload": {
+ "psr-4": {
+ "Mmccook\\JsonCanonicalizator\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Mmccook\\JsonCanonicalizator\\Tests\\": "tests"
+ }
+ },
+ "scripts": {
+ "test": "vendor/bin/pest",
+ "test-coverage": "vendor/bin/pest --coverage",
+ "format": "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php --allow-risky=yes"
+ },
+ "config": {
+ "sort-packages": true,
+ "allow-plugins": {
+ "pestphp/pest-plugin": true,
+ "phpstan/extension-installer": true
+ }
+ },
+ "minimum-stability": "stable",
+ "prefer-stable": true
+}
diff --git a/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php
new file mode 100644
index 000000000..6a3c82959
--- /dev/null
+++ b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace Mmccook\JsonCanonicalizator;
+
+class JsonCanonicalizator implements JsonCanonicalizatorInterface
+{
+ public const JSON_FLAGS = \JSON_UNESCAPED_UNICODE | \JSON_UNESCAPED_SLASHES;
+
+ /**
+ * @param $data
+ * @param bool $asHex
+ * @return string
+ */
+ public function canonicalize($data, bool $asHex = false): string
+ {
+ ob_start();
+
+ $this->serialize($data);
+
+ $result = ob_get_clean();
+
+ return $asHex ? Utils::asHex($result) : $result;
+ }
+
+ private function serialize($item)
+ {
+ if (is_float($item)) {
+ echo Utils::es6NumberFormat($item);
+
+ return;
+ }
+
+ if (null === $item || is_scalar($item)) {
+ echo json_encode($item, self::JSON_FLAGS);
+
+ return;
+ }
+
+ if (is_array($item) && ! Utils::isAssoc($item)) {
+ echo '[';
+ $next = false;
+ foreach ($item as $element) {
+ if ($next) {
+ echo ',';
+ }
+ $next = true;
+ $this->serialize($element);
+ }
+ echo ']';
+
+ return;
+ }
+
+ if (is_object($item)) {
+ $item = (array)$item;
+ }
+
+ uksort($item, function (string $a, string $b) {
+ $a = mb_convert_encoding($a, 'UTF-16BE');
+ $b = mb_convert_encoding($b, 'UTF-16BE');
+
+ return strcmp($a, $b);
+ });
+
+ echo '{';
+ $next = false;
+ foreach ($item as $key => $value) {
+ //var_dump($key, $value);
+ if ($next) {
+ echo ',';
+ }
+ $next = true;
+ $outKey = json_encode((string)$key, self::JSON_FLAGS);
+ echo $outKey, ':', $this->serialize($value);
+ }
+ echo '}';
+
+ }
+}
diff --git a/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php
new file mode 100644
index 000000000..68b1c50c9
--- /dev/null
+++ b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Mmccook\JsonCanonicalizator;
+
+class JsonCanonicalizatorFactory
+{
+ public static function getInstance(): JsonCanonicalizator
+ {
+ return new JsonCanonicalizator();
+ }
+}
diff --git a/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php
new file mode 100644
index 000000000..73b25c086
--- /dev/null
+++ b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php
@@ -0,0 +1,10 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Mmccook\JsonCanonicalizator;
+
+interface JsonCanonicalizatorInterface
+{
+ public function canonicalize($data, bool $asHex): string;
+}
diff --git a/vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php b/vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php
new file mode 100644
index 000000000..57079df3b
--- /dev/null
+++ b/vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace Mmccook\JsonCanonicalizator;
+
+class Utils
+{
+ /**
+ * @param array $array
+ * @return bool
+ */
+ public static function isAssoc(array $array): bool
+ {
+ $keys = array_keys($array);
+
+ return array_keys($keys) !== $keys;
+ }
+
+ public static function asHex(string $data): string
+ {
+ return rtrim(chunk_split(bin2hex($data), 2, ' '));
+ }
+
+ public static function es6NumberFormat(float $number): string
+ {
+
+ if (is_nan($number) || is_infinite($number)) {
+ throw new \RuntimeException("can't use Nan or Infinity in json");
+ }
+
+ if (0.0 === $number) {
+ return '0';
+ }
+
+ $sign = '';
+ if ($number < 0) {
+ $sign = '-';
+ $number = -$number;
+ }
+
+ if ($number < 1e+21 && $number >= 1e-6) {
+ $formatted = number_format($number, 7, '.', '');
+ $formatted = rtrim($formatted, '.0');
+ } else {
+ $formatted = sprintf('%e', $number);
+ $parts = explode('e', $formatted);
+ $parts[0] = rtrim($parts[0], '.0');
+ $formatted = implode('e', $parts);
+ }
+
+ return $sign . $formatted;
+ }
+}
diff --git a/vendor/psr/log/composer.json b/vendor/psr/log/composer.json
index 879fc6f53..f3f066719 100644
--- a/vendor/psr/log/composer.json
+++ b/vendor/psr/log/composer.json
@@ -20,7 +20,7 @@
},
"extra": {
"branch-alias": {
- "dev-master": "3.x-dev"
+ "dev-master": "2.0.x-dev"
}
}
}
diff --git a/vendor/psr/log/src/LoggerAwareInterface.php b/vendor/psr/log/src/LoggerAwareInterface.php
index cc46a9514..4d64f4786 100644
--- a/vendor/psr/log/src/LoggerAwareInterface.php
+++ b/vendor/psr/log/src/LoggerAwareInterface.php
@@ -14,5 +14,5 @@ interface LoggerAwareInterface
*
* @return void
*/
- public function setLogger(LoggerInterface $logger): void;
+ public function setLogger(LoggerInterface $logger);
}
diff --git a/vendor/psr/log/src/LoggerAwareTrait.php b/vendor/psr/log/src/LoggerAwareTrait.php
index 4fb57a292..5f1553a4c 100644
--- a/vendor/psr/log/src/LoggerAwareTrait.php
+++ b/vendor/psr/log/src/LoggerAwareTrait.php
@@ -19,7 +19,7 @@ trait LoggerAwareTrait
*
* @param LoggerInterface $logger
*/
- public function setLogger(LoggerInterface $logger): void
+ public function setLogger(LoggerInterface $logger)
{
$this->logger = $logger;
}
diff --git a/vendor/psr/log/src/LoggerInterface.php b/vendor/psr/log/src/LoggerInterface.php
index b3a24b5f7..b4d062b9b 100644
--- a/vendor/psr/log/src/LoggerInterface.php
+++ b/vendor/psr/log/src/LoggerInterface.php
@@ -27,7 +27,7 @@ interface LoggerInterface
*
* @return void
*/
- public function emergency(string|\Stringable $message, array $context = []): void;
+ public function emergency(string|\Stringable $message, array $context = []);
/**
* Action must be taken immediately.
@@ -40,7 +40,7 @@ interface LoggerInterface
*
* @return void
*/
- public function alert(string|\Stringable $message, array $context = []): void;
+ public function alert(string|\Stringable $message, array $context = []);
/**
* Critical conditions.
@@ -52,7 +52,7 @@ interface LoggerInterface
*
* @return void
*/
- public function critical(string|\Stringable $message, array $context = []): void;
+ public function critical(string|\Stringable $message, array $context = []);
/**
* Runtime errors that do not require immediate action but should typically
@@ -63,7 +63,7 @@ interface LoggerInterface
*
* @return void
*/
- public function error(string|\Stringable $message, array $context = []): void;
+ public function error(string|\Stringable $message, array $context = []);
/**
* Exceptional occurrences that are not errors.
@@ -76,7 +76,7 @@ interface LoggerInterface
*
* @return void
*/
- public function warning(string|\Stringable $message, array $context = []): void;
+ public function warning(string|\Stringable $message, array $context = []);
/**
* Normal but significant events.
@@ -86,7 +86,7 @@ interface LoggerInterface
*
* @return void
*/
- public function notice(string|\Stringable $message, array $context = []): void;
+ public function notice(string|\Stringable $message, array $context = []);
/**
* Interesting events.
@@ -98,7 +98,7 @@ interface LoggerInterface
*
* @return void
*/
- public function info(string|\Stringable $message, array $context = []): void;
+ public function info(string|\Stringable $message, array $context = []);
/**
* Detailed debug information.
@@ -108,7 +108,7 @@ interface LoggerInterface
*
* @return void
*/
- public function debug(string|\Stringable $message, array $context = []): void;
+ public function debug(string|\Stringable $message, array $context = []);
/**
* Logs with an arbitrary level.
@@ -121,5 +121,5 @@ interface LoggerInterface
*
* @throws \Psr\Log\InvalidArgumentException
*/
- public function log($level, string|\Stringable $message, array $context = []): void;
+ public function log($level, string|\Stringable $message, array $context = []);
}
diff --git a/vendor/psr/log/src/LoggerTrait.php b/vendor/psr/log/src/LoggerTrait.php
index 9c8733f95..920bda77f 100644
--- a/vendor/psr/log/src/LoggerTrait.php
+++ b/vendor/psr/log/src/LoggerTrait.php
@@ -20,7 +20,7 @@ trait LoggerTrait
*
* @return void
*/
- public function emergency(string|\Stringable $message, array $context = []): void
+ public function emergency(string|\Stringable $message, array $context = [])
{
$this->log(LogLevel::EMERGENCY, $message, $context);
}
@@ -36,7 +36,7 @@ trait LoggerTrait
*
* @return void
*/
- public function alert(string|\Stringable $message, array $context = []): void
+ public function alert(string|\Stringable $message, array $context = [])
{
$this->log(LogLevel::ALERT, $message, $context);
}
@@ -51,7 +51,7 @@ trait LoggerTrait
*
* @return void
*/
- public function critical(string|\Stringable $message, array $context = []): void
+ public function critical(string|\Stringable $message, array $context = [])
{
$this->log(LogLevel::CRITICAL, $message, $context);
}
@@ -65,7 +65,7 @@ trait LoggerTrait
*
* @return void
*/
- public function error(string|\Stringable $message, array $context = []): void
+ public function error(string|\Stringable $message, array $context = [])
{
$this->log(LogLevel::ERROR, $message, $context);
}
@@ -81,7 +81,7 @@ trait LoggerTrait
*
* @return void
*/
- public function warning(string|\Stringable $message, array $context = []): void
+ public function warning(string|\Stringable $message, array $context = [])
{
$this->log(LogLevel::WARNING, $message, $context);
}
@@ -94,7 +94,7 @@ trait LoggerTrait
*
* @return void
*/
- public function notice(string|\Stringable $message, array $context = []): void
+ public function notice(string|\Stringable $message, array $context = [])
{
$this->log(LogLevel::NOTICE, $message, $context);
}
@@ -109,7 +109,7 @@ trait LoggerTrait
*
* @return void
*/
- public function info(string|\Stringable $message, array $context = []): void
+ public function info(string|\Stringable $message, array $context = [])
{
$this->log(LogLevel::INFO, $message, $context);
}
@@ -122,7 +122,7 @@ trait LoggerTrait
*
* @return void
*/
- public function debug(string|\Stringable $message, array $context = []): void
+ public function debug(string|\Stringable $message, array $context = [])
{
$this->log(LogLevel::DEBUG, $message, $context);
}
@@ -138,5 +138,5 @@ trait LoggerTrait
*
* @throws \Psr\Log\InvalidArgumentException
*/
- abstract public function log($level, string|\Stringable $message, array $context = []): void;
+ abstract public function log($level, string|\Stringable $message, array $context = []);
}
diff --git a/vendor/psr/log/src/NullLogger.php b/vendor/psr/log/src/NullLogger.php
index c1cc3c069..560770571 100644
--- a/vendor/psr/log/src/NullLogger.php
+++ b/vendor/psr/log/src/NullLogger.php
@@ -23,7 +23,7 @@ class NullLogger extends AbstractLogger
*
* @throws \Psr\Log\InvalidArgumentException
*/
- public function log($level, string|\Stringable $message, array $context = []): void
+ public function log($level, string|\Stringable $message, array $context = [])
{
// noop
}
diff --git a/vendor/ramsey/collection/LICENSE b/vendor/ramsey/collection/LICENSE
index a7fcf1201..ae15f590c 100644
--- a/vendor/ramsey/collection/LICENSE
+++ b/vendor/ramsey/collection/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2015-2022 Ben Ramsey <ben@benramsey.com>
+Copyright (c) 2015-2021 Ben Ramsey <ben@benramsey.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/ramsey/collection/README.md b/vendor/ramsey/collection/README.md
index c77ffcb18..9124dd77e 100644
--- a/vendor/ramsey/collection/README.md
+++ b/vendor/ramsey/collection/README.md
@@ -9,7 +9,7 @@
<a href="https://packagist.org/packages/ramsey/collection"><img src="https://img.shields.io/packagist/v/ramsey/collection.svg?style=flat-square&label=release" alt="Download Package"></a>
<a href="https://php.net"><img src="https://img.shields.io/packagist/php-v/ramsey/collection.svg?style=flat-square&colorB=%238892BF" alt="PHP Programming Language"></a>
<a href="https://github.com/ramsey/collection/blob/master/LICENSE"><img src="https://img.shields.io/packagist/l/ramsey/collection.svg?style=flat-square&colorB=darkcyan" alt="Read License"></a>
- <a href="https://github.com/ramsey/collection/actions/workflows/continuous-integration.yml"><img src="https://img.shields.io/github/actions/workflow/status/ramsey/collection/continuous-integration.yml?branch=main&logo=github&style=flat-square" alt="Build Status"></a>
+ <a href="https://github.com/ramsey/collection/actions?query=workflow%3ACI"><img src="https://img.shields.io/github/workflow/status/ramsey/collection/CI?label=CI&logo=github&style=flat-square" alt="Build Status"></a>
<a href="https://codecov.io/gh/ramsey/collection"><img src="https://img.shields.io/codecov/c/gh/ramsey/collection?label=codecov&logo=codecov&style=flat-square" alt="Codecov Code Coverage"></a>
<a href="https://shepherd.dev/github/ramsey/collection"><img src="https://img.shields.io/endpoint?style=flat-square&url=https%3A%2F%2Fshepherd.dev%2Fgithub%2Framsey%2Fcollection%2Fcoverage" alt="Psalm Type Coverage"></a>
</p>
@@ -34,13 +34,25 @@ composer require ramsey/collection
## Usage
-Examples of how to use this library may be found in the
+Examples of how to use this framework can be found in the
[Wiki pages](https://github.com/ramsey/collection/wiki/Examples).
## Contributing
-Contributions are welcome! To contribute, please familiarize yourself with
-[CONTRIBUTING.md](CONTRIBUTING.md).
+Contributions are welcome! Before contributing to this project, familiarize
+yourself with [CONTRIBUTING.md](CONTRIBUTING.md).
+
+To develop this project, you will need [PHP](https://www.php.net) 7.3 or greater
+and [Composer](https://getcomposer.org).
+
+After cloning this repository locally, execute the following commands:
+
+``` bash
+cd /path/to/repository
+composer install
+```
+
+Now, you are ready to develop!
## Coordinated Disclosure
@@ -67,4 +79,4 @@ MIT License (MIT). Please see [LICENSE](LICENSE) for more information.
[java]: http://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html
-[security.md]: https://github.com/ramsey/collection/blob/main/SECURITY.md
+[security.md]: https://github.com/ramsey/collection/blob/master/SECURITY.md
diff --git a/vendor/ramsey/collection/SECURITY.md b/vendor/ramsey/collection/SECURITY.md
index 3de4c0cbd..b052f3b65 100644
--- a/vendor/ramsey/collection/SECURITY.md
+++ b/vendor/ramsey/collection/SECURITY.md
@@ -1,59 +1,29 @@
<!--
- This policy template was created using the HackerOne Policy Builder [1],
- with guidance from the National Telecommunications and Information
- Administration Coordinated Vulnerability Disclosure Template [2].
+ This policy was created using the HackerOne Policy Builder:
+ https://hackerone.com/policy-builder/
-->
-# Vulnerability Disclosure Policy (VDP)
-
-## Brand Promise
-
-<!--
- This is your brand promise. Its objective is to "demonstrate a clear, good
- faith commitment to customers and other stakeholders potentially impacted by
- security vulnerabilities" [2].
--->
+# Vulnerability Disclosure Policy
Keeping user information safe and secure is a top priority, and we welcome the
contribution of external security researchers.
## Scope
-<!--
- This is your initial scope. It tells vulnerability finders and reporters
- "which systems and capabilities are 'fair game' versus 'off limits'" [2].
- For software packages, this is often a list of currently maintained versions
- of the package.
--->
-
If you believe you've found a security issue in software that is maintained in
this repository, we encourage you to notify us.
| Version | In scope | Source code |
-| ------- | :------: | ----------- |
+| :-----: | :------: | :---------- |
| latest | ✅ | https://github.com/ramsey/collection |
## How to Submit a Report
-<!--
- This is your communication process. It tells security researchers how to
- contact you to report a vulnerability. It may be a link to a web form that
- uses HTTPS for secure communication, or it may be an email address.
- Optionally, you may choose to include a PGP public key, so that researchers
- may send you encrypted messages.
--->
-
-To submit a vulnerability report, please contact us at security@ramsey.dev.
+To submit a vulnerability report, please contact us at <security@ramsey.dev>.
Your submission will be reviewed and validated by a member of our team.
## Safe Harbor
-<!--
- This section assures vulnerability finders and reporters that they will
- receive good faith responses to their good faith acts. In other words,
- "we will not take legal action if..." [2].
--->
-
We support safe harbor for security researchers who:
* Make a good faith effort to avoid privacy violations, destruction of data, and
@@ -63,7 +33,7 @@ We support safe harbor for security researchers who:
us immediately, do not proceed with access, and immediately purge any local
information.
* Provide us with a reasonable amount of time to resolve vulnerabilities prior
- to any disclosure to the public or a third party.
+ to any disclosure to the public or a third-party.
We will consider activities conducted consistent with this policy to constitute
"authorized" conduct and will not pursue civil action or initiate a complaint to
@@ -75,41 +45,15 @@ with or unaddressed by this policy.
## Preferences
-<!--
- The preferences section sets expectations based on priority and submission
- volume, rather than legal objection or restriction [2].
-
- According to the NTIA [2]:
-
- This section is a living document that sets expectations for preferences
- and priorities, typically maintained by the support and engineering
- team. This can outline classes of vulnerabilities, reporting style
- (crash dumps, CVSS scoring, proof-of-concept, etc.), tools, etc. Too
- many preferences can set the wrong tone or make reporting findings
- difficult to navigate. This section also sets expectations to the
- researcher community for what types of issues are considered important
- or not.
--->
-
* Please provide detailed reports with reproducible steps and a clearly defined
impact.
* Include the version number of the vulnerable package in your report
* Social engineering (e.g. phishing, vishing, smishing) is prohibited.
-<!--
- References
-
- [1] HackerOne. Policy builder. Retrieved from https://hackerone.com/policy-builder/
-
- [2] NTIA Safety Working Group. 2016. "Early stage" coordinated vulnerability
- disclosure template: Version 1.1. (15 December 2016). Retrieved from
- https://www.ntia.doc.gov/files/ntia/publications/ntia_vuln_disclosure_early_stage_template.pdf
--->
-
## Encryption Key for security@ramsey.dev
For increased privacy when reporting sensitive issues, you may encrypt your
-message using the following public key:
+messages using the following key:
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
diff --git a/vendor/ramsey/collection/composer.json b/vendor/ramsey/collection/composer.json
index 56709015a..98862ee46 100644
--- a/vendor/ramsey/collection/composer.json
+++ b/vendor/ramsey/collection/composer.json
@@ -1,8 +1,7 @@
{
"name": "ramsey/collection",
- "description": "A PHP library for representing and manipulating collections.",
- "license": "MIT",
"type": "library",
+ "description": "A PHP library for representing and manipulating collections.",
"keywords": [
"array",
"collection",
@@ -11,6 +10,7 @@
"queue",
"set"
],
+ "license": "MIT",
"authors": [
{
"name": "Ben Ramsey",
@@ -19,32 +19,31 @@
}
],
"require": {
- "php": "^8.1"
+ "php": "^7.3 || ^8",
+ "symfony/polyfill-php81": "^1.23"
},
"require-dev": {
- "captainhook/plugin-composer": "^5.3",
- "ergebnis/composer-normalize": "^2.28.3",
- "fakerphp/faker": "^1.21",
- "hamcrest/hamcrest-php": "^2.0",
- "jangregor/phpstan-prophecy": "^1.0",
- "mockery/mockery": "^1.5",
- "php-parallel-lint/php-console-highlighter": "^1.0",
- "php-parallel-lint/php-parallel-lint": "^1.3",
- "phpcsstandards/phpcsutils": "^1.0.0-rc1",
+ "captainhook/captainhook": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "ergebnis/composer-normalize": "^2.6",
+ "fakerphp/faker": "^1.5",
+ "hamcrest/hamcrest-php": "^2",
+ "jangregor/phpstan-prophecy": "^0.8",
+ "mockery/mockery": "^1.3",
"phpspec/prophecy-phpunit": "^2.0",
- "phpstan/extension-installer": "^1.2",
- "phpstan/phpstan": "^1.9",
- "phpstan/phpstan-mockery": "^1.1",
- "phpstan/phpstan-phpunit": "^1.3",
- "phpunit/phpunit": "^9.5",
- "psalm/plugin-mockery": "^1.1",
- "psalm/plugin-phpunit": "^0.18.4",
- "ramsey/coding-standard": "^2.0.3",
- "ramsey/conventional-commits": "^1.3",
- "vimeo/psalm": "^5.4"
+ "phpstan/extension-installer": "^1",
+ "phpstan/phpstan": "^0.12.32",
+ "phpstan/phpstan-mockery": "^0.12.5",
+ "phpstan/phpstan-phpunit": "^0.12.11",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "psy/psysh": "^0.10.4",
+ "slevomat/coding-standard": "^6.3",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.4"
+ },
+ "config": {
+ "sort-packages": true
},
- "minimum-stability": "RC",
- "prefer-stable": true,
"autoload": {
"psr-4": {
"Ramsey\\Collection\\": "src/"
@@ -52,6 +51,7 @@
},
"autoload-dev": {
"psr-4": {
+ "Ramsey\\Console\\": "resources/console/",
"Ramsey\\Collection\\Test\\": "tests/",
"Ramsey\\Test\\Generics\\": "tests/generics/"
},
@@ -59,61 +59,44 @@
"vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php"
]
},
- "config": {
- "allow-plugins": {
- "dealerdirect/phpcodesniffer-composer-installer": true,
- "ergebnis/composer-normalize": true,
- "phpstan/extension-installer": true,
- "captainhook/plugin-composer": true
- },
- "sort-packages": true
- },
- "extra": {
- "captainhook": {
- "force-install": true
- },
- "ramsey/conventional-commits": {
- "configFile": "conventional-commits.json"
- }
- },
"scripts": {
+ "post-autoload-dump": "captainhook install --ansi -f -s",
"dev:analyze": [
"@dev:analyze:phpstan",
"@dev:analyze:psalm"
],
- "dev:analyze:phpstan": "phpstan analyse --ansi --memory-limit=1G",
- "dev:analyze:psalm": "psalm",
- "dev:build:clean": "git clean -fX build/",
- "dev:lint": [
- "@dev:lint:syntax",
- "@dev:lint:style"
+ "dev:analyze:phpstan": "phpstan --memory-limit=1G analyse",
+ "dev:analyze:psalm": "psalm --diff --config=psalm.xml",
+ "dev:build:clean": "git clean -fX build/.",
+ "dev:build:clear-cache": "git clean -fX build/cache/.",
+ "dev:lint": "phpcs --cache=build/cache/phpcs.cache",
+ "dev:lint:fix": "./bin/lint-fix.sh",
+ "dev:repl": [
+ "echo ; echo 'Type ./bin/repl to start the REPL.'"
],
- "dev:lint:fix": "phpcbf",
- "dev:lint:style": "phpcs --colors",
- "dev:lint:syntax": "parallel-lint --colors src/ tests/",
- "dev:test": [
+ "dev:test": "phpunit",
+ "dev:test:all": [
"@dev:lint",
"@dev:analyze",
- "@dev:test:unit"
+ "@dev:test"
],
- "dev:test:coverage:ci": "phpunit --colors=always --coverage-text --coverage-clover build/coverage/clover.xml --coverage-cobertura build/coverage/cobertura.xml --coverage-crap4j build/coverage/crap4j.xml --coverage-xml build/coverage/coverage-xml --log-junit build/junit.xml",
- "dev:test:coverage:html": "phpunit --colors=always --coverage-html build/coverage/coverage-html/",
- "dev:test:unit": "phpunit --colors=always",
- "test": "@dev:test"
+ "dev:test:coverage:ci": "phpunit --coverage-clover build/logs/clover.xml",
+ "dev:test:coverage:html": "phpunit --coverage-html build/coverage",
+ "test": "@dev:test:all"
},
"scripts-descriptions": {
- "dev:analyze": "Runs all static analysis checks.",
+ "dev:analyze": "Performs static analysis on the code base.",
"dev:analyze:phpstan": "Runs the PHPStan static analyzer.",
"dev:analyze:psalm": "Runs the Psalm static analyzer.",
- "dev:build:clean": "Cleans the build/ directory.",
- "dev:lint": "Runs all linting checks.",
- "dev:lint:fix": "Auto-fixes coding standards issues, if possible.",
- "dev:lint:style": "Checks for coding standards issues.",
- "dev:lint:syntax": "Checks for syntax errors.",
- "dev:test": "Runs linting, static analysis, and unit tests.",
- "dev:test:coverage:ci": "Runs unit tests and generates CI coverage reports.",
- "dev:test:coverage:html": "Runs unit tests and generates HTML coverage report.",
- "dev:test:unit": "Runs unit tests.",
- "test": "Runs linting, static analysis, and unit tests."
+ "dev:build:clean": "Removes everything not under version control from the build directory.",
+ "dev:build:clear-cache": "Removes everything not under version control from build/cache/.",
+ "dev:lint": "Checks all source code for coding standards issues.",
+ "dev:lint:fix": "Checks source code for coding standards issues and fixes them, if possible.",
+ "dev:repl": "Note: Use ./bin/repl to run the REPL.",
+ "dev:test": "Runs the full unit test suite.",
+ "dev:test:all": "Runs linting, static analysis, and unit tests.",
+ "dev:test:coverage:ci": "Runs the unit test suite and generates a Clover coverage report.",
+ "dev:test:coverage:html": "Runs the unit tests suite and generates an HTML coverage report.",
+ "test": "Shortcut to run the full test suite."
}
}
diff --git a/vendor/ramsey/collection/conventional-commits.json b/vendor/ramsey/collection/conventional-commits.json
deleted file mode 100644
index 5fe21d2fa..000000000
--- a/vendor/ramsey/collection/conventional-commits.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "typeCase": "kebab",
- "types": [
- "chore",
- "ci",
- "docs",
- "feat",
- "fix",
- "refactor",
- "security",
- "style",
- "test"
- ],
- "scopeCase": "kebab",
- "scopeRequired": false,
- "scopes": [],
- "descriptionCase": null,
- "descriptionEndMark": "",
- "bodyRequired": false,
- "bodyWrapWidth": 72,
- "requiredFooters": []
-}
diff --git a/vendor/ramsey/collection/src/AbstractArray.php b/vendor/ramsey/collection/src/AbstractArray.php
index 5ce622aa7..d72dbe697 100644
--- a/vendor/ramsey/collection/src/AbstractArray.php
+++ b/vendor/ramsey/collection/src/AbstractArray.php
@@ -17,7 +17,8 @@ namespace Ramsey\Collection;
use ArrayIterator;
use Traversable;
-use function count;
+use function serialize;
+use function unserialize;
/**
* This class provides a basic implementation of `ArrayInterface`, to minimize
@@ -33,7 +34,7 @@ abstract class AbstractArray implements ArrayInterface
*
* @var array<array-key, T>
*/
- protected array $data = [];
+ protected $data = [];
/**
* Constructs a new array object.
@@ -68,7 +69,7 @@ abstract class AbstractArray implements ArrayInterface
*
* @param array-key $offset The offset to check.
*/
- public function offsetExists(mixed $offset): bool
+ public function offsetExists($offset): bool
{
return isset($this->data[$offset]);
}
@@ -80,12 +81,15 @@ abstract class AbstractArray implements ArrayInterface
*
* @param array-key $offset The offset for which a value should be returned.
*
- * @return T the value stored at the offset, or null if the offset
+ * @return T|null the value stored at the offset, or null if the offset
* does not exist.
+ *
+ * @psalm-suppress InvalidAttribute
*/
- public function offsetGet(mixed $offset): mixed
+ #[\ReturnTypeWillChange] // phpcs:ignore
+ public function offsetGet($offset)
{
- return $this->data[$offset];
+ return $this->data[$offset] ?? null;
}
/**
@@ -93,11 +97,12 @@ abstract class AbstractArray implements ArrayInterface
*
* @link http://php.net/manual/en/arrayaccess.offsetset.php ArrayAccess::offsetSet()
*
- * @param array-key | null $offset The offset to set. If `null`, the value
- * may be set at a numerically-indexed offset.
+ * @param array-key|null $offset The offset to set. If `null`, the value may be
+ * set at a numerically-indexed offset.
* @param T $value The value to set at the given offset.
*/
- public function offsetSet(mixed $offset, mixed $value): void
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function offsetSet($offset, $value): void
{
if ($offset === null) {
$this->data[] = $value;
@@ -113,12 +118,26 @@ abstract class AbstractArray implements ArrayInterface
*
* @param array-key $offset The offset to remove from the array.
*/
- public function offsetUnset(mixed $offset): void
+ public function offsetUnset($offset): void
{
unset($this->data[$offset]);
}
/**
+ * Returns a serialized string representation of this array object.
+ *
+ * @deprecated The Serializable interface will go away in PHP 9.
+ *
+ * @link http://php.net/manual/en/serializable.serialize.php Serializable::serialize()
+ *
+ * @return string a PHP serialized string.
+ */
+ public function serialize(): string
+ {
+ return serialize($this->data);
+ }
+
+ /**
* Returns data suitable for PHP serialization.
*
* @link https://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.serialize
@@ -132,6 +151,25 @@ abstract class AbstractArray implements ArrayInterface
}
/**
+ * Converts a serialized string representation into an instance object.
+ *
+ * @deprecated The Serializable interface will go away in PHP 9.
+ *
+ * @link http://php.net/manual/en/serializable.unserialize.php Serializable::unserialize()
+ *
+ * @param string $serialized A PHP serialized string to unserialize.
+ *
+ * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ */
+ public function unserialize($serialized): void
+ {
+ /** @var array<array-key, T> $data */
+ $data = unserialize($serialized, ['allowed_classes' => false]);
+
+ $this->data = $data;
+ }
+
+ /**
* Adds unserialized data to the object.
*
* @param array<array-key, T> $data
@@ -166,6 +204,6 @@ abstract class AbstractArray implements ArrayInterface
public function isEmpty(): bool
{
- return $this->data === [];
+ return count($this->data) === 0;
}
}
diff --git a/vendor/ramsey/collection/src/AbstractCollection.php b/vendor/ramsey/collection/src/AbstractCollection.php
index 8cb21ec02..d2cd1151c 100644
--- a/vendor/ramsey/collection/src/AbstractCollection.php
+++ b/vendor/ramsey/collection/src/AbstractCollection.php
@@ -17,27 +17,25 @@ namespace Ramsey\Collection;
use Closure;
use Ramsey\Collection\Exception\CollectionMismatchException;
use Ramsey\Collection\Exception\InvalidArgumentException;
-use Ramsey\Collection\Exception\InvalidPropertyOrMethod;
-use Ramsey\Collection\Exception\NoSuchElementException;
-use Ramsey\Collection\Exception\UnsupportedOperationException;
+use Ramsey\Collection\Exception\InvalidSortOrderException;
+use Ramsey\Collection\Exception\OutOfBoundsException;
use Ramsey\Collection\Tool\TypeTrait;
use Ramsey\Collection\Tool\ValueExtractorTrait;
use Ramsey\Collection\Tool\ValueToStringTrait;
use function array_filter;
-use function array_key_first;
-use function array_key_last;
use function array_map;
use function array_merge;
-use function array_reduce;
use function array_search;
use function array_udiff;
use function array_uintersect;
+use function current;
+use function end;
use function in_array;
use function is_int;
-use function is_object;
-use function spl_object_id;
+use function reset;
use function sprintf;
+use function unserialize;
use function usort;
/**
@@ -55,29 +53,32 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
use ValueExtractorTrait;
/**
- * @throws InvalidArgumentException if $element is of the wrong type.
+ * @inheritDoc
*/
- public function add(mixed $element): bool
+ public function add($element): bool
{
$this[] = $element;
return true;
}
- public function contains(mixed $element, bool $strict = true): bool
+ /**
+ * @inheritDoc
+ */
+ public function contains($element, bool $strict = true): bool
{
return in_array($element, $this->data, $strict);
}
/**
- * @throws InvalidArgumentException if $element is of the wrong type.
+ * @inheritDoc
*/
- public function offsetSet(mixed $offset, mixed $value): void
+ public function offsetSet($offset, $value): void
{
if ($this->checkType($this->getType(), $value) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($value),
+ . $this->toolValueToString($value)
);
}
@@ -88,10 +89,13 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
}
- public function remove(mixed $element): bool
+ /**
+ * @inheritDoc
+ */
+ public function remove($element): bool
{
if (($position = array_search($element, $this->data, true)) !== false) {
- unset($this[$position]);
+ unset($this->data[$position]);
return true;
}
@@ -100,11 +104,6 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
/**
- * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
- * on the elements in this collection.
- * @throws UnsupportedOperationException if unable to call column() on this
- * collection.
- *
* @inheritDoc
*/
public function column(string $propertyOrMethod): array
@@ -112,55 +111,55 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
$temp = [];
foreach ($this->data as $item) {
+ /** @var mixed $value */
+ $value = $this->extractValue($item, $propertyOrMethod);
+
/** @psalm-suppress MixedAssignment */
- $temp[] = $this->extractValue($item, $propertyOrMethod);
+ $temp[] = $value;
}
return $temp;
}
/**
- * @return T
- *
- * @throws NoSuchElementException if this collection is empty.
+ * @inheritDoc
*/
- public function first(): mixed
+ public function first()
{
- $firstIndex = array_key_first($this->data);
-
- if ($firstIndex === null) {
- throw new NoSuchElementException('Can\'t determine first item. Collection is empty');
+ if ($this->isEmpty()) {
+ throw new OutOfBoundsException('Can\'t determine first item. Collection is empty');
}
- return $this->data[$firstIndex];
+ reset($this->data);
+
+ /** @var T $first */
+ $first = current($this->data);
+
+ return $first;
}
/**
- * @return T
- *
- * @throws NoSuchElementException if this collection is empty.
+ * @inheritDoc
*/
- public function last(): mixed
+ public function last()
{
- $lastIndex = array_key_last($this->data);
-
- if ($lastIndex === null) {
- throw new NoSuchElementException('Can\'t determine last item. Collection is empty');
+ if ($this->isEmpty()) {
+ throw new OutOfBoundsException('Can\'t determine last item. Collection is empty');
}
- return $this->data[$lastIndex];
+ /** @var T $item */
+ $item = end($this->data);
+ reset($this->data);
+
+ return $item;
}
- /**
- * @return CollectionInterface<T>
- *
- * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
- * on the elements in this collection.
- * @throws UnsupportedOperationException if unable to call sort() on this
- * collection.
- */
- public function sort(?string $propertyOrMethod = null, Sort $order = Sort::Ascending): CollectionInterface
+ public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): CollectionInterface
{
+ if (!in_array($order, [self::SORT_ASC, self::SORT_DESC], true)) {
+ throw new InvalidSortOrderException('Invalid sort order given: ' . $order);
+ }
+
$collection = clone $this;
usort(
@@ -169,25 +168,20 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
* @param T $a
* @param T $b
*/
- function (mixed $a, mixed $b) use ($propertyOrMethod, $order): int {
+ function ($a, $b) use ($propertyOrMethod, $order): int {
/** @var mixed $aValue */
$aValue = $this->extractValue($a, $propertyOrMethod);
/** @var mixed $bValue */
$bValue = $this->extractValue($b, $propertyOrMethod);
- return ($aValue <=> $bValue) * ($order === Sort::Descending ? -1 : 1);
- },
+ return ($aValue <=> $bValue) * ($order === self::SORT_DESC ? -1 : 1);
+ }
);
return $collection;
}
- /**
- * @param callable(T): bool $callback A callable to use for filtering elements.
- *
- * @return CollectionInterface<T>
- */
public function filter(callable $callback): CollectionInterface
{
$collection = clone $this;
@@ -197,66 +191,23 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
/**
- * @return CollectionInterface<T>
- *
- * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
- * on the elements in this collection.
- * @throws UnsupportedOperationException if unable to call where() on this
- * collection.
+ * {@inheritdoc}
*/
- public function where(?string $propertyOrMethod, mixed $value): CollectionInterface
+ public function where(string $propertyOrMethod, $value): CollectionInterface
{
- return $this->filter(
- /**
- * @param T $item
- */
- function (mixed $item) use ($propertyOrMethod, $value): bool {
- /** @var mixed $accessorValue */
- $accessorValue = $this->extractValue($item, $propertyOrMethod);
+ return $this->filter(function ($item) use ($propertyOrMethod, $value) {
+ /** @var mixed $accessorValue */
+ $accessorValue = $this->extractValue($item, $propertyOrMethod);
- return $accessorValue === $value;
- },
- );
+ return $accessorValue === $value;
+ });
}
- /**
- * @param callable(T): TCallbackReturn $callback A callable to apply to each
- * item of the collection.
- *
- * @return CollectionInterface<TCallbackReturn>
- *
- * @template TCallbackReturn
- */
public function map(callable $callback): CollectionInterface
{
- /** @var Collection<TCallbackReturn> */
return new Collection('mixed', array_map($callback, $this->data));
}
- /**
- * @param callable(TCarry, T): TCarry $callback A callable to apply to each
- * item of the collection to reduce it to a single value.
- * @param TCarry $initial This is the initial value provided to the callback.
- *
- * @return TCarry
- *
- * @template TCarry
- */
- public function reduce(callable $callback, mixed $initial): mixed
- {
- /** @var TCarry */
- return array_reduce($this->data, $callback, $initial);
- }
-
- /**
- * @param CollectionInterface<T> $other The collection to check for divergent
- * items.
- *
- * @return CollectionInterface<T>
- *
- * @throws CollectionMismatchException if the compared collections are of
- * differing types.
- */
public function diff(CollectionInterface $other): CollectionInterface
{
$this->compareCollectionTypes($other);
@@ -273,15 +224,6 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $collection;
}
- /**
- * @param CollectionInterface<T> $other The collection to check for
- * intersecting items.
- *
- * @return CollectionInterface<T>
- *
- * @throws CollectionMismatchException if the compared collections are of
- * differing types.
- */
public function intersect(CollectionInterface $other): CollectionInterface
{
$this->compareCollectionTypes($other);
@@ -295,15 +237,6 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $collection;
}
- /**
- * @param CollectionInterface<T> ...$collections The collections to merge.
- *
- * @return CollectionInterface<T>
- *
- * @throws CollectionMismatchException if unable to merge any of the given
- * collections or items within the given collections due to type
- * mismatch errors.
- */
public function merge(CollectionInterface ...$collections): CollectionInterface
{
$mergedCollection = clone $this;
@@ -311,19 +244,15 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
foreach ($collections as $index => $collection) {
if (!$collection instanceof static) {
throw new CollectionMismatchException(
- sprintf('Collection with index %d must be of type %s', $index, static::class),
+ sprintf('Collection with index %d must be of type %s', $index, static::class)
);
}
// When using generics (Collection.php, Set.php, etc),
// we also need to make sure that the internal types match each other
- if ($this->getUniformType($collection) !== $this->getUniformType($this)) {
+ if ($collection->getType() !== $this->getType()) {
throw new CollectionMismatchException(
- sprintf(
- 'Collection items in collection with index %d must be of type %s',
- $index,
- $this->getType(),
- ),
+ sprintf('Collection items in collection with index %d must be of type %s', $index, $this->getType())
);
}
@@ -340,9 +269,18 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
}
/**
+ * @inheritDoc
+ */
+ public function unserialize($serialized): void
+ {
+ /** @var array<array-key, T> $data */
+ $data = unserialize($serialized, ['allowed_classes' => [$this->getType()]]);
+
+ $this->data = $data;
+ }
+
+ /**
* @param CollectionInterface<T> $other
- *
- * @throws CollectionMismatchException
*/
private function compareCollectionTypes(CollectionInterface $other): void
{
@@ -352,7 +290,7 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
// When using generics (Collection.php, Set.php, etc),
// we also need to make sure that the internal types match each other
- if ($this->getUniformType($other) !== $this->getUniformType($this)) {
+ if ($other->getType() !== $this->getType()) {
throw new CollectionMismatchException('Collection items must be of type ' . $this->getType());
}
}
@@ -363,7 +301,7 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
* @param T $a
* @param T $b
*/
- function (mixed $a, mixed $b): int {
+ function ($a, $b): int {
// If the two values are object, we convert them to unique scalars.
// If the collection contains mixed values (unlikely) where some are objects
// and some are not, we leave them as they are.
@@ -377,17 +315,4 @@ abstract class AbstractCollection extends AbstractArray implements CollectionInt
return $a === $b ? 0 : ($a < $b ? 1 : -1);
};
}
-
- /**
- * @param CollectionInterface<mixed> $collection
- */
- private function getUniformType(CollectionInterface $collection): string
- {
- return match ($collection->getType()) {
- 'integer' => 'int',
- 'boolean' => 'bool',
- 'double' => 'float',
- default => $collection->getType(),
- };
- }
}
diff --git a/vendor/ramsey/collection/src/AbstractSet.php b/vendor/ramsey/collection/src/AbstractSet.php
index 7186939d7..1126ccb0a 100644
--- a/vendor/ramsey/collection/src/AbstractSet.php
+++ b/vendor/ramsey/collection/src/AbstractSet.php
@@ -24,7 +24,10 @@ namespace Ramsey\Collection;
*/
abstract class AbstractSet extends AbstractCollection
{
- public function add(mixed $element): bool
+ /**
+ * @inheritDoc
+ */
+ public function add($element): bool
{
if ($this->contains($element)) {
return false;
@@ -33,7 +36,10 @@ abstract class AbstractSet extends AbstractCollection
return parent::add($element);
}
- public function offsetSet(mixed $offset, mixed $value): void
+ /**
+ * @inheritDoc
+ */
+ public function offsetSet($offset, $value): void
{
if ($this->contains($value)) {
return;
diff --git a/vendor/ramsey/collection/src/ArrayInterface.php b/vendor/ramsey/collection/src/ArrayInterface.php
index bc7f6f424..27af6102b 100644
--- a/vendor/ramsey/collection/src/ArrayInterface.php
+++ b/vendor/ramsey/collection/src/ArrayInterface.php
@@ -17,6 +17,7 @@ namespace Ramsey\Collection;
use ArrayAccess;
use Countable;
use IteratorAggregate;
+use Serializable;
/**
* `ArrayInterface` provides traversable array functionality to data types.
@@ -28,7 +29,8 @@ use IteratorAggregate;
interface ArrayInterface extends
ArrayAccess,
Countable,
- IteratorAggregate
+ IteratorAggregate,
+ Serializable
{
/**
* Removes all items from this array.
diff --git a/vendor/ramsey/collection/src/Collection.php b/vendor/ramsey/collection/src/Collection.php
index 44d26bf2e..1299c12c2 100644
--- a/vendor/ramsey/collection/src/Collection.php
+++ b/vendor/ramsey/collection/src/Collection.php
@@ -76,15 +76,26 @@ namespace Ramsey\Collection;
class Collection extends AbstractCollection
{
/**
+ * The type of elements stored in this collection.
+ *
+ * A collection's type is immutable once it is set. For this reason, this
+ * property is set private.
+ *
+ * @var string
+ */
+ private $collectionType;
+
+ /**
* Constructs a collection object of the specified type, optionally with the
* specified data.
*
- * @param string $collectionType The type or class name associated with this
+ * @param string $collectionType The type (FQCN) associated with this
* collection.
* @param array<array-key, T> $data The initial items to store in the collection.
*/
- public function __construct(private readonly string $collectionType, array $data = [])
+ public function __construct(string $collectionType, array $data = [])
{
+ $this->collectionType = $collectionType;
parent::__construct($data);
}
diff --git a/vendor/ramsey/collection/src/CollectionInterface.php b/vendor/ramsey/collection/src/CollectionInterface.php
index e3ad01470..aa86feb04 100644
--- a/vendor/ramsey/collection/src/CollectionInterface.php
+++ b/vendor/ramsey/collection/src/CollectionInterface.php
@@ -14,14 +14,8 @@ declare(strict_types=1);
namespace Ramsey\Collection;
-use Ramsey\Collection\Exception\CollectionMismatchException;
-use Ramsey\Collection\Exception\InvalidArgumentException;
-use Ramsey\Collection\Exception\InvalidPropertyOrMethod;
-use Ramsey\Collection\Exception\NoSuchElementException;
-use Ramsey\Collection\Exception\UnsupportedOperationException;
-
/**
- * A collection represents a group of values, known as its elements.
+ * A collection represents a group of objects, known as its elements.
*
* Some collections allow duplicate elements and others do not. Some are ordered
* and others unordered.
@@ -32,6 +26,16 @@ use Ramsey\Collection\Exception\UnsupportedOperationException;
interface CollectionInterface extends ArrayInterface
{
/**
+ * Ascending sort type.
+ */
+ public const SORT_ASC = 'asc';
+
+ /**
+ * Descending sort type.
+ */
+ public const SORT_DESC = 'desc';
+
+ /**
* Ensures that this collection contains the specified element (optional
* operation).
*
@@ -54,11 +58,9 @@ interface CollectionInterface extends ArrayInterface
* @param T $element The element to add to the collection.
*
* @return bool `true` if this collection changed as a result of the call.
- *
- * @throws InvalidArgumentException if the collection refuses to add the
- * $element for any reason other than that it already contains the element.
*/
- public function add(mixed $element): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function add($element): bool;
/**
* Returns `true` if this collection contains the specified element.
@@ -66,7 +68,8 @@ interface CollectionInterface extends ArrayInterface
* @param T $element The element to check whether the collection contains.
* @param bool $strict Whether to perform a strict type check on the value.
*/
- public function contains(mixed $element, bool $strict = true): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function contains($element, bool $strict = true): bool;
/**
* Returns the type associated with this collection.
@@ -81,20 +84,15 @@ interface CollectionInterface extends ArrayInterface
*
* @return bool `true` if an element was removed as a result of this call.
*/
- public function remove(mixed $element): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function remove($element): bool;
/**
- * Returns the values from the given property, method, or array key.
- *
- * @param string $propertyOrMethod The name of the property, method, or
- * array key to evaluate and return.
+ * Returns the values from the given property or method.
*
- * @return array<int, mixed>
+ * @param string $propertyOrMethod The property or method name to filter by.
*
- * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
- * on the elements in this collection.
- * @throws UnsupportedOperationException if unable to call column() on this
- * collection.
+ * @return list<mixed>
*/
public function column(string $propertyOrMethod): array;
@@ -102,41 +100,29 @@ interface CollectionInterface extends ArrayInterface
* Returns the first item of the collection.
*
* @return T
- *
- * @throws NoSuchElementException if this collection is empty.
*/
- public function first(): mixed;
+ public function first();
/**
* Returns the last item of the collection.
*
* @return T
- *
- * @throws NoSuchElementException if this collection is empty.
*/
- public function last(): mixed;
+ public function last();
/**
- * Sort the collection by a property, method, or array key with the given
- * sort order.
- *
- * If $propertyOrMethod is `null`, this will sort by comparing each element.
+ * Sort the collection by a property or method with the given sort order.
*
* This will always leave the original collection untouched and will return
* a new one.
*
- * @param string | null $propertyOrMethod The property, method, or array key
- * to sort by.
- * @param Sort $order The sort order for the resulting collection.
+ * @param string $propertyOrMethod The property or method to sort by.
+ * @param string $order The sort order for the resulting collection (one of
+ * this interface's `SORT_*` constants).
*
* @return CollectionInterface<T>
- *
- * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
- * on the elements in this collection.
- * @throws UnsupportedOperationException if unable to call sort() on this
- * collection.
*/
- public function sort(?string $propertyOrMethod = null, Sort $order = Sort::Ascending): self;
+ public function sort(string $propertyOrMethod, string $order = self::SORT_ASC): self;
/**
* Filter out items of the collection which don't match the criteria of
@@ -148,31 +134,24 @@ interface CollectionInterface extends ArrayInterface
* See the {@link http://php.net/manual/en/function.array-filter.php PHP array_filter() documentation}
* for examples of how the `$callback` parameter works.
*
- * @param callable(T): bool $callback A callable to use for filtering elements.
+ * @param callable(T):bool $callback A callable to use for filtering elements.
*
* @return CollectionInterface<T>
*/
public function filter(callable $callback): self;
/**
- * Create a new collection where the result of the given property, method,
- * or array key of each item in the collection equals the given value.
+ * Create a new collection where items match the criteria of given callback.
*
* This will always leave the original collection untouched and will return
* a new one.
*
- * @param string | null $propertyOrMethod The property, method, or array key
- * to evaluate. If `null`, the element itself is compared to $value.
+ * @param string $propertyOrMethod The property or method to evaluate.
* @param mixed $value The value to match.
*
* @return CollectionInterface<T>
- *
- * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist
- * on the elements in this collection.
- * @throws UnsupportedOperationException if unable to call where() on this
- * collection.
*/
- public function where(?string $propertyOrMethod, mixed $value): self;
+ public function where(string $propertyOrMethod, $value): self;
/**
* Apply a given callback method on each item of the collection.
@@ -184,7 +163,7 @@ interface CollectionInterface extends ArrayInterface
* See the {@link http://php.net/manual/en/function.array-map.php PHP array_map() documentation}
* for examples of how the `$callback` parameter works.
*
- * @param callable(T): TCallbackReturn $callback A callable to apply to each
+ * @param callable(T):TCallbackReturn $callback A callable to apply to each
* item of the collection.
*
* @return CollectionInterface<TCallbackReturn>
@@ -194,23 +173,6 @@ interface CollectionInterface extends ArrayInterface
public function map(callable $callback): self;
/**
- * Apply a given callback method on each item of the collection
- * to reduce it to a single value.
- *
- * See the {@link http://php.net/manual/en/function.array-reduce.php PHP array_reduce() documentation}
- * for examples of how the `$callback` and `$initial` parameters work.
- *
- * @param callable(TCarry, T): TCarry $callback A callable to apply to each
- * item of the collection to reduce it to a single value.
- * @param TCarry $initial This is the initial value provided to the callback.
- *
- * @return TCarry
- *
- * @template TCarry
- */
- public function reduce(callable $callback, mixed $initial): mixed;
-
- /**
* Create a new collection with divergent items between current and given
* collection.
*
@@ -218,9 +180,6 @@ interface CollectionInterface extends ArrayInterface
* items.
*
* @return CollectionInterface<T>
- *
- * @throws CollectionMismatchException if the compared collections are of
- * differing types.
*/
public function diff(CollectionInterface $other): self;
@@ -232,9 +191,6 @@ interface CollectionInterface extends ArrayInterface
* intersecting items.
*
* @return CollectionInterface<T>
- *
- * @throws CollectionMismatchException if the compared collections are of
- * differing types.
*/
public function intersect(CollectionInterface $other): self;
@@ -244,10 +200,6 @@ interface CollectionInterface extends ArrayInterface
* @param CollectionInterface<T> ...$collections The collections to merge.
*
* @return CollectionInterface<T>
- *
- * @throws CollectionMismatchException if unable to merge any of the given
- * collections or items within the given collections due to type
- * mismatch errors.
*/
public function merge(CollectionInterface ...$collections): self;
}
diff --git a/vendor/ramsey/collection/src/DoubleEndedQueue.php b/vendor/ramsey/collection/src/DoubleEndedQueue.php
index 62947a24f..c9c59502d 100644
--- a/vendor/ramsey/collection/src/DoubleEndedQueue.php
+++ b/vendor/ramsey/collection/src/DoubleEndedQueue.php
@@ -17,10 +17,6 @@ namespace Ramsey\Collection;
use Ramsey\Collection\Exception\InvalidArgumentException;
use Ramsey\Collection\Exception\NoSuchElementException;
-use function array_key_last;
-use function array_pop;
-use function array_unshift;
-
/**
* This class provides a basic implementation of `DoubleEndedQueueInterface`, to
* minimize the effort required to implement this interface.
@@ -32,135 +28,160 @@ use function array_unshift;
class DoubleEndedQueue extends Queue implements DoubleEndedQueueInterface
{
/**
- * Constructs a double-ended queue (dequeue) object of the specified type,
- * optionally with the specified data.
+ * Index of the last element in the queue.
*
- * @param string $queueType The type or class name associated with this dequeue.
- * @param array<array-key, T> $data The initial items to store in the dequeue.
+ * @var int
+ */
+ private $tail = -1;
+
+ /**
+ * @inheritDoc
*/
- public function __construct(private readonly string $queueType, array $data = [])
+ public function offsetSet($offset, $value): void
{
- parent::__construct($this->queueType, $data);
+ if ($this->checkType($this->getType(), $value) === false) {
+ throw new InvalidArgumentException(
+ 'Value must be of type ' . $this->getType() . '; value is '
+ . $this->toolValueToString($value)
+ );
+ }
+
+ $this->tail++;
+
+ $this->data[$this->tail] = $value;
}
/**
- * @throws InvalidArgumentException if $element is of the wrong type
+ * @inheritDoc
*/
- public function addFirst(mixed $element): bool
+ public function addFirst($element): bool
{
if ($this->checkType($this->getType(), $element) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($element),
+ . $this->toolValueToString($element)
);
}
- array_unshift($this->data, $element);
+ $this->index--;
+
+ $this->data[$this->index] = $element;
return true;
}
/**
- * @throws InvalidArgumentException if $element is of the wrong type
+ * @inheritDoc
*/
- public function addLast(mixed $element): bool
+ public function addLast($element): bool
{
return $this->add($element);
}
- public function offerFirst(mixed $element): bool
+ /**
+ * @inheritDoc
+ */
+ public function offerFirst($element): bool
{
try {
return $this->addFirst($element);
- } catch (InvalidArgumentException) {
+ } catch (InvalidArgumentException $e) {
return false;
}
}
- public function offerLast(mixed $element): bool
+ /**
+ * @inheritDoc
+ */
+ public function offerLast($element): bool
{
return $this->offer($element);
}
/**
- * @return T the first element in this queue.
- *
- * @throws NoSuchElementException if the queue is empty
+ * @inheritDoc
*/
- public function removeFirst(): mixed
+ public function removeFirst()
{
return $this->remove();
}
/**
- * @return T the last element in this queue.
- *
- * @throws NoSuchElementException if this queue is empty.
+ * @inheritDoc
*/
- public function removeLast(): mixed
+ public function removeLast()
{
- return $this->pollLast() ?? throw new NoSuchElementException(
- 'Can\'t return element from Queue. Queue is empty.',
- );
+ $tail = $this->pollLast();
+
+ if ($tail === null) {
+ throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
+ }
+
+ return $tail;
}
/**
- * @return T | null the head of this queue, or `null` if this queue is empty.
+ * @inheritDoc
*/
- public function pollFirst(): mixed
+ public function pollFirst()
{
return $this->poll();
}
/**
- * @return T | null the tail of this queue, or `null` if this queue is empty.
+ * @inheritDoc
*/
- public function pollLast(): mixed
+ public function pollLast()
{
- return array_pop($this->data);
+ if ($this->count() === 0) {
+ return null;
+ }
+
+ $tail = $this[$this->tail];
+
+ unset($this[$this->tail]);
+ $this->tail--;
+
+ return $tail;
}
/**
- * @return T the head of this queue.
- *
- * @throws NoSuchElementException if this queue is empty.
+ * @inheritDoc
*/
- public function firstElement(): mixed
+ public function firstElement()
{
return $this->element();
}
/**
- * @return T the tail of this queue.
- *
- * @throws NoSuchElementException if this queue is empty.
+ * @inheritDoc
*/
- public function lastElement(): mixed
+ public function lastElement()
{
- return $this->peekLast() ?? throw new NoSuchElementException(
- 'Can\'t return element from Queue. Queue is empty.',
- );
+ if ($this->count() === 0) {
+ throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
+ }
+
+ return $this->data[$this->tail];
}
/**
- * @return T | null the head of this queue, or `null` if this queue is empty.
+ * @inheritDoc
*/
- public function peekFirst(): mixed
+ public function peekFirst()
{
return $this->peek();
}
/**
- * @return T | null the tail of this queue, or `null` if this queue is empty.
+ * @inheritDoc
*/
- public function peekLast(): mixed
+ public function peekLast()
{
- $lastIndex = array_key_last($this->data);
-
- if ($lastIndex === null) {
+ if ($this->count() === 0) {
return null;
}
- return $this->data[$lastIndex];
+ return $this->data[$this->tail];
}
}
diff --git a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php
index 15cc0e97b..d7df53469 100644
--- a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php
+++ b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php
@@ -15,7 +15,6 @@ declare(strict_types=1);
namespace Ramsey\Collection;
use Ramsey\Collection\Exception\NoSuchElementException;
-use RuntimeException;
/**
* A linear collection that supports element insertion and removal at both ends.
@@ -176,12 +175,13 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if this queue changed as a result of the call.
*
- * @throws RuntimeException if a queue refuses to add a particular element
+ * @throws \RuntimeException if a queue refuses to add a particular element
* for any reason other than that it already contains the element.
* Implementations should use a more-specific exception that extends
* `\RuntimeException`.
*/
- public function addFirst(mixed $element): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function addFirst($element): bool;
/**
* Inserts the specified element at the end of this queue if it is possible
@@ -196,12 +196,13 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if this queue changed as a result of the call.
*
- * @throws RuntimeException if a queue refuses to add a particular element
+ * @throws \RuntimeException if a queue refuses to add a particular element
* for any reason other than that it already contains the element.
* Implementations should use a more-specific exception that extends
* `\RuntimeException`.
*/
- public function addLast(mixed $element): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function addLast($element): bool;
/**
* Inserts the specified element at the front of this queue if it is
@@ -215,7 +216,8 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if the element was added to this queue, else `false`.
*/
- public function offerFirst(mixed $element): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function offerFirst($element): bool;
/**
* Inserts the specified element at the end of this queue if it is possible
@@ -229,7 +231,8 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @return bool `true` if the element was added to this queue, else `false`.
*/
- public function offerLast(mixed $element): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function offerLast($element): bool;
/**
* Retrieves and removes the head of this queue.
@@ -241,7 +244,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function removeFirst(): mixed;
+ public function removeFirst();
/**
* Retrieves and removes the tail of this queue.
@@ -253,23 +256,23 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function removeLast(): mixed;
+ public function removeLast();
/**
* Retrieves and removes the head of this queue, or returns `null` if this
* queue is empty.
*
- * @return T | null the head of this queue, or `null` if this queue is empty.
+ * @return T|null the head of this queue, or `null` if this queue is empty.
*/
- public function pollFirst(): mixed;
+ public function pollFirst();
/**
* Retrieves and removes the tail of this queue, or returns `null` if this
* queue is empty.
*
- * @return T | null the tail of this queue, or `null` if this queue is empty.
+ * @return T|null the tail of this queue, or `null` if this queue is empty.
*/
- public function pollLast(): mixed;
+ public function pollLast();
/**
* Retrieves, but does not remove, the head of this queue.
@@ -281,7 +284,7 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function firstElement(): mixed;
+ public function firstElement();
/**
* Retrieves, but does not remove, the tail of this queue.
@@ -293,21 +296,21 @@ interface DoubleEndedQueueInterface extends QueueInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function lastElement(): mixed;
+ public function lastElement();
/**
* Retrieves, but does not remove, the head of this queue, or returns `null`
* if this queue is empty.
*
- * @return T | null the head of this queue, or `null` if this queue is empty.
+ * @return T|null the head of this queue, or `null` if this queue is empty.
*/
- public function peekFirst(): mixed;
+ public function peekFirst();
/**
* Retrieves, but does not remove, the tail of this queue, or returns `null`
* if this queue is empty.
*
- * @return T | null the tail of this queue, or `null` if this queue is empty.
+ * @return T|null the tail of this queue, or `null` if this queue is empty.
*/
- public function peekLast(): mixed;
+ public function peekLast();
}
diff --git a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php
index 42f5be2df..d4b335f45 100644
--- a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php
+++ b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php
@@ -14,11 +14,9 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
-use RuntimeException;
-
/**
* Thrown when attempting to operate on collections of differing types.
*/
-class CollectionMismatchException extends RuntimeException implements CollectionException
+class CollectionMismatchException extends \RuntimeException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php
index 7b41b4a7c..dcc3eac60 100644
--- a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php
+++ b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php
@@ -14,11 +14,9 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
-use InvalidArgumentException as PhpInvalidArgumentException;
-
/**
* Thrown to indicate an argument is not of the expected type.
*/
-class InvalidArgumentException extends PhpInvalidArgumentException implements CollectionException
+class InvalidArgumentException extends \InvalidArgumentException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/CollectionException.php b/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php
index 4aa92bed8..9337ccc66 100644
--- a/vendor/ramsey/collection/src/Exception/CollectionException.php
+++ b/vendor/ramsey/collection/src/Exception/InvalidSortOrderException.php
@@ -14,8 +14,9 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
-use Throwable;
-
-interface CollectionException extends Throwable
+/**
+ * Thrown when attempting to use a sort order that is not recognized.
+ */
+class InvalidSortOrderException extends \RuntimeException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php
index cd98f0c0f..9debe8f66 100644
--- a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php
+++ b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php
@@ -14,11 +14,9 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
-use RuntimeException;
-
/**
* Thrown when attempting to access an element that does not exist.
*/
-class NoSuchElementException extends RuntimeException implements CollectionException
+class NoSuchElementException extends \RuntimeException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php
index c75294e53..4e9d16fa3 100644
--- a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php
+++ b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php
@@ -14,11 +14,9 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
-use OutOfBoundsException as PhpOutOfBoundsException;
-
/**
* Thrown when attempting to access an element out of the range of the collection.
*/
-class OutOfBoundsException extends PhpOutOfBoundsException implements CollectionException
+class OutOfBoundsException extends \OutOfBoundsException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php
index d074f45fd..8f45e5836 100644
--- a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php
+++ b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php
@@ -14,11 +14,9 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
-use RuntimeException;
-
/**
* Thrown to indicate that the requested operation is not supported.
*/
-class UnsupportedOperationException extends RuntimeException implements CollectionException
+class UnsupportedOperationException extends \RuntimeException
{
}
diff --git a/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php b/vendor/ramsey/collection/src/Exception/ValueExtractionException.php
index a53be14aa..f6c6cb4ec 100644
--- a/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php
+++ b/vendor/ramsey/collection/src/Exception/ValueExtractionException.php
@@ -14,13 +14,9 @@ declare(strict_types=1);
namespace Ramsey\Collection\Exception;
-use RuntimeException;
-
/**
- * Thrown when attempting to evaluate a property, method, or array key
- * that doesn't exist on an element or cannot otherwise be evaluated in the
- * current context.
+ * Thrown when attempting to extract a value for a method or property that does not exist.
*/
-class InvalidPropertyOrMethod extends RuntimeException implements CollectionException
+class ValueExtractionException extends \RuntimeException
{
}
diff --git a/vendor/ramsey/collection/src/Map/AbstractMap.php b/vendor/ramsey/collection/src/Map/AbstractMap.php
index 7a851a80f..ae9f2fe61 100644
--- a/vendor/ramsey/collection/src/Map/AbstractMap.php
+++ b/vendor/ramsey/collection/src/Map/AbstractMap.php
@@ -16,65 +16,48 @@ namespace Ramsey\Collection\Map;
use Ramsey\Collection\AbstractArray;
use Ramsey\Collection\Exception\InvalidArgumentException;
-use Traversable;
use function array_key_exists;
use function array_keys;
use function in_array;
-use function var_export;
/**
* This class provides a basic implementation of `MapInterface`, to minimize the
* effort required to implement this interface.
*
- * @template K of array-key
* @template T
* @extends AbstractArray<T>
- * @implements MapInterface<K, T>
+ * @implements MapInterface<T>
*/
abstract class AbstractMap extends AbstractArray implements MapInterface
{
/**
- * @param array<K, T> $data The initial items to add to this map.
- */
- public function __construct(array $data = [])
- {
- parent::__construct($data);
- }
-
- /**
- * @return Traversable<K, T>
- */
- public function getIterator(): Traversable
- {
- return parent::getIterator();
- }
-
- /**
- * @param K $offset The offset to set
- * @param T $value The value to set at the given offset.
- *
* @inheritDoc
- * @psalm-suppress MoreSpecificImplementedParamType,DocblockTypeContradiction
*/
- public function offsetSet(mixed $offset, mixed $value): void
+ public function offsetSet($offset, $value): void
{
if ($offset === null) {
throw new InvalidArgumentException(
'Map elements are key/value pairs; a key must be provided for '
- . 'value ' . var_export($value, true),
+ . 'value ' . var_export($value, true)
);
}
$this->data[$offset] = $value;
}
- public function containsKey(int | string $key): bool
+ /**
+ * @inheritDoc
+ */
+ public function containsKey($key): bool
{
return array_key_exists($key, $this->data);
}
- public function containsValue(mixed $value): bool
+ /**
+ * @inheritDoc
+ */
+ public function containsValue($value): bool
{
return in_array($value, $this->data, true);
}
@@ -88,24 +71,21 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @param K $key The key to return from the map.
- * @param T | null $defaultValue The default value to use if `$key` is not found.
- *
- * @return T | null the value or `null` if the key could not be found.
+ * @inheritDoc
*/
- public function get(int | string $key, mixed $defaultValue = null): mixed
+ public function get($key, $defaultValue = null)
{
- return $this[$key] ?? $defaultValue;
+ if (!$this->containsKey($key)) {
+ return $defaultValue;
+ }
+
+ return $this[$key];
}
/**
- * @param K $key The key to put or replace in the map.
- * @param T $value The value to store at `$key`.
- *
- * @return T | null the previous value associated with key, or `null` if
- * there was no mapping for `$key`.
+ * @inheritDoc
*/
- public function put(int | string $key, mixed $value): mixed
+ public function put($key, $value)
{
$previousValue = $this->get($key);
$this[$key] = $value;
@@ -114,13 +94,9 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @param K $key The key to put in the map.
- * @param T $value The value to store at `$key`.
- *
- * @return T | null the previous value associated with key, or `null` if
- * there was no mapping for `$key`.
+ * @inheritDoc
*/
- public function putIfAbsent(int | string $key, mixed $value): mixed
+ public function putIfAbsent($key, $value)
{
$currentValue = $this->get($key);
@@ -132,12 +108,9 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @param K $key The key to remove from the map.
- *
- * @return T | null the previous value associated with key, or `null` if
- * there was no mapping for `$key`.
+ * @inheritDoc
*/
- public function remove(int | string $key): mixed
+ public function remove($key)
{
$previousValue = $this->get($key);
unset($this[$key]);
@@ -145,7 +118,10 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
return $previousValue;
}
- public function removeIf(int | string $key, mixed $value): bool
+ /**
+ * @inheritDoc
+ */
+ public function removeIf($key, $value): bool
{
if ($this->get($key) === $value) {
unset($this[$key]);
@@ -157,13 +133,9 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
}
/**
- * @param K $key The key to replace.
- * @param T $value The value to set at `$key`.
- *
- * @return T | null the previous value associated with key, or `null` if
- * there was no mapping for `$key`.
+ * @inheritDoc
*/
- public function replace(int | string $key, mixed $value): mixed
+ public function replace($key, $value)
{
$currentValue = $this->get($key);
@@ -174,7 +146,10 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
return $currentValue;
}
- public function replaceIf(int | string $key, mixed $oldValue, mixed $newValue): bool
+ /**
+ * @inheritDoc
+ */
+ public function replaceIf($key, $oldValue, $newValue): bool
{
if ($this->get($key) === $oldValue) {
$this[$key] = $newValue;
@@ -184,20 +159,4 @@ abstract class AbstractMap extends AbstractArray implements MapInterface
return false;
}
-
- /**
- * @return array<K, T>
- */
- public function __serialize(): array
- {
- return parent::__serialize();
- }
-
- /**
- * @return array<K, T>
- */
- public function toArray(): array
- {
- return parent::toArray();
- }
}
diff --git a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php
index 92fdcd54c..551d2e6c6 100644
--- a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php
+++ b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php
@@ -22,10 +22,10 @@ use Ramsey\Collection\Tool\ValueToStringTrait;
* This class provides a basic implementation of `TypedMapInterface`, to
* minimize the effort required to implement this interface.
*
- * @template K of array-key
+ * @template K
* @template T
- * @extends AbstractMap<K, T>
- * @implements TypedMapInterface<K, T>
+ * @extends AbstractMap<T>
+ * @implements TypedMapInterface<T>
*/
abstract class AbstractTypedMap extends AbstractMap implements TypedMapInterface
{
@@ -33,28 +33,37 @@ abstract class AbstractTypedMap extends AbstractMap implements TypedMapInterface
use ValueToStringTrait;
/**
- * @param K $offset
+ * @param K|null $offset
* @param T $value
*
* @inheritDoc
+ *
* @psalm-suppress MoreSpecificImplementedParamType
*/
- public function offsetSet(mixed $offset, mixed $value): void
+ public function offsetSet($offset, $value): void
{
+ if ($offset === null) {
+ throw new InvalidArgumentException(
+ 'Map elements are key/value pairs; a key must be provided for '
+ . 'value ' . var_export($value, true)
+ );
+ }
+
if ($this->checkType($this->getKeyType(), $offset) === false) {
throw new InvalidArgumentException(
'Key must be of type ' . $this->getKeyType() . '; key is '
- . $this->toolValueToString($offset),
+ . $this->toolValueToString($offset)
);
}
if ($this->checkType($this->getValueType(), $value) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getValueType() . '; value is '
- . $this->toolValueToString($value),
+ . $this->toolValueToString($value)
);
}
+ /** @psalm-suppress MixedArgumentTypeCoercion */
parent::offsetSet($offset, $value);
}
}
diff --git a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php
index 34e4e853b..79a314d96 100644
--- a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php
+++ b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php
@@ -17,7 +17,8 @@ namespace Ramsey\Collection\Map;
/**
* `AssociativeArrayMap` represents a standard associative array object.
*
- * @extends AbstractMap<string, mixed>
+ * @template T
+ * @extends AbstractMap<T>
*/
class AssociativeArrayMap extends AbstractMap
{
diff --git a/vendor/ramsey/collection/src/Map/MapInterface.php b/vendor/ramsey/collection/src/Map/MapInterface.php
index 22ba1bdd1..6ed0b2967 100644
--- a/vendor/ramsey/collection/src/Map/MapInterface.php
+++ b/vendor/ramsey/collection/src/Map/MapInterface.php
@@ -21,7 +21,6 @@ use Ramsey\Collection\ArrayInterface;
*
* A map cannot contain duplicate keys; each key can map to at most one value.
*
- * @template K of array-key
* @template T
* @extends ArrayInterface<T>
*/
@@ -30,9 +29,9 @@ interface MapInterface extends ArrayInterface
/**
* Returns `true` if this map contains a mapping for the specified key.
*
- * @param K $key The key to check in the map.
+ * @param array-key $key The key to check in the map.
*/
- public function containsKey(int | string $key): bool;
+ public function containsKey($key): bool;
/**
* Returns `true` if this map maps one or more keys to the specified value.
@@ -41,12 +40,13 @@ interface MapInterface extends ArrayInterface
*
* @param T $value The value to check in the map.
*/
- public function containsValue(mixed $value): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function containsValue($value): bool;
/**
* Return an array of the keys contained in this map.
*
- * @return list<K>
+ * @return list<array-key>
*/
public function keys(): array;
@@ -55,12 +55,13 @@ interface MapInterface extends ArrayInterface
* map contains no mapping for the key, or (optionally) `$defaultValue` if
* this map contains no mapping for the key.
*
- * @param K $key The key to return from the map.
- * @param T | null $defaultValue The default value to use if `$key` is not found.
+ * @param array-key $key The key to return from the map.
+ * @param T|null $defaultValue The default value to use if `$key` is not found.
*
- * @return T | null the value or `null` if the key could not be found.
+ * @return T|null the value or `null` if the key could not be found.
*/
- public function get(int | string $key, mixed $defaultValue = null): mixed;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function get($key, $defaultValue = null);
/**
* Associates the specified value with the specified key in this map.
@@ -68,13 +69,14 @@ interface MapInterface extends ArrayInterface
* If the map previously contained a mapping for the key, the old value is
* replaced by the specified value.
*
- * @param K $key The key to put or replace in the map.
+ * @param array-key $key The key to put or replace in the map.
* @param T $value The value to store at `$key`.
*
- * @return T | null the previous value associated with key, or `null` if
+ * @return T|null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- public function put(int | string $key, mixed $value): mixed;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function put($key, $value);
/**
* Associates the specified value with the specified key in this map only if
@@ -83,23 +85,25 @@ interface MapInterface extends ArrayInterface
* If there is already a value associated with `$key`, this returns that
* value without replacing it.
*
- * @param K $key The key to put in the map.
+ * @param array-key $key The key to put in the map.
* @param T $value The value to store at `$key`.
*
- * @return T | null the previous value associated with key, or `null` if
+ * @return T|null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- public function putIfAbsent(int | string $key, mixed $value): mixed;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function putIfAbsent($key, $value);
/**
* Removes the mapping for a key from this map if it is present.
*
- * @param K $key The key to remove from the map.
+ * @param array-key $key The key to remove from the map.
*
- * @return T | null the previous value associated with key, or `null` if
+ * @return T|null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- public function remove(int | string $key): mixed;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function remove($key);
/**
* Removes the entry for the specified key only if it is currently mapped to
@@ -107,24 +111,26 @@ interface MapInterface extends ArrayInterface
*
* This performs a strict type check on the value.
*
- * @param K $key The key to remove from the map.
+ * @param array-key $key The key to remove from the map.
* @param T $value The value to match.
*
* @return bool true if the value was removed.
*/
- public function removeIf(int | string $key, mixed $value): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function removeIf($key, $value): bool;
/**
* Replaces the entry for the specified key only if it is currently mapped
* to some value.
*
- * @param K $key The key to replace.
+ * @param array-key $key The key to replace.
* @param T $value The value to set at `$key`.
*
- * @return T | null the previous value associated with key, or `null` if
+ * @return T|null the previous value associated with key, or `null` if
* there was no mapping for `$key`.
*/
- public function replace(int | string $key, mixed $value): mixed;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function replace($key, $value);
/**
* Replaces the entry for the specified key only if currently mapped to the
@@ -132,11 +138,12 @@ interface MapInterface extends ArrayInterface
*
* This performs a strict type check on the value.
*
- * @param K $key The key to remove from the map.
+ * @param array-key $key The key to remove from the map.
* @param T $oldValue The value to match.
* @param T $newValue The value to use as a replacement.
*
* @return bool true if the value was replaced.
*/
- public function replaceIf(int | string $key, mixed $oldValue, mixed $newValue): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function replaceIf($key, $oldValue, $newValue): bool;
}
diff --git a/vendor/ramsey/collection/src/Map/NamedParameterMap.php b/vendor/ramsey/collection/src/Map/NamedParameterMap.php
index f948e476c..9926ddd8c 100644
--- a/vendor/ramsey/collection/src/Map/NamedParameterMap.php
+++ b/vendor/ramsey/collection/src/Map/NamedParameterMap.php
@@ -26,7 +26,7 @@ use function is_int;
* `NamedParameterMap` represents a mapping of values to a set of named keys
* that may optionally be typed
*
- * @extends AbstractMap<string, mixed>
+ * @extends AbstractMap<mixed>
*/
class NamedParameterMap extends AbstractMap
{
@@ -38,13 +38,13 @@ class NamedParameterMap extends AbstractMap
*
* @var array<string, string>
*/
- private readonly array $namedParameters;
+ protected $namedParameters;
/**
* Constructs a new `NamedParameterMap`.
*
* @param array<array-key, string> $namedParameters The named parameters defined for this map.
- * @param array<string, mixed> $data An initial set of data to set on this map.
+ * @param array<array-key, mixed> $data An initial set of data to set on this map.
*/
public function __construct(array $namedParameters, array $data = [])
{
@@ -62,12 +62,22 @@ class NamedParameterMap extends AbstractMap
return $this->namedParameters;
}
- public function offsetSet(mixed $offset, mixed $value): void
+ /**
+ * @inheritDoc
+ */
+ public function offsetSet($offset, $value): void
{
+ if ($offset === null) {
+ throw new InvalidArgumentException(
+ 'Map elements are key/value pairs; a key must be provided for '
+ . 'value ' . var_export($value, true)
+ );
+ }
+
if (!array_key_exists($offset, $this->namedParameters)) {
throw new InvalidArgumentException(
'Attempting to set value for unconfigured parameter \''
- . $this->toolValueToString($offset) . '\'',
+ . $offset . '\''
);
}
@@ -75,7 +85,7 @@ class NamedParameterMap extends AbstractMap
throw new InvalidArgumentException(
'Value for \'' . $offset . '\' must be of type '
. $this->namedParameters[$offset] . '; value is '
- . $this->toolValueToString($value),
+ . $this->toolValueToString($value)
);
}
diff --git a/vendor/ramsey/collection/src/Map/TypedMap.php b/vendor/ramsey/collection/src/Map/TypedMap.php
index f914d9c70..2e796377a 100644
--- a/vendor/ramsey/collection/src/Map/TypedMap.php
+++ b/vendor/ramsey/collection/src/Map/TypedMap.php
@@ -14,11 +14,13 @@ declare(strict_types=1);
namespace Ramsey\Collection\Map;
+use Ramsey\Collection\Tool\TypeTrait;
+
/**
* A `TypedMap` represents a map of elements where key and value are typed.
*
* Each element is identified by a key with defined type and a value of defined
- * type. The keys of the map must be unique. The values on the map can be
+ * type. The keys of the map must be unique. The values on the map can be=
* repeated but each with its own different key.
*
* The most common case is to use a string type key, but it's not limited to
@@ -78,12 +80,34 @@ namespace Ramsey\Collection\Map;
* }
* ```
*
- * @template K of array-key
+ * @template K
* @template T
* @extends AbstractTypedMap<K, T>
*/
class TypedMap extends AbstractTypedMap
{
+ use TypeTrait;
+
+ /**
+ * The data type of keys stored in this collection.
+ *
+ * A map key's type is immutable once it is set. For this reason, this
+ * property is set private.
+ *
+ * @var string data type of the map key.
+ */
+ private $keyType;
+
+ /**
+ * The data type of values stored in this collection.
+ *
+ * A map value's type is immutable once it is set. For this reason, this
+ * property is set private.
+ *
+ * @var string data type of the map value.
+ */
+ private $valueType;
+
/**
* Constructs a map object of the specified key and value types,
* optionally with the specified data.
@@ -92,11 +116,12 @@ class TypedMap extends AbstractTypedMap
* @param string $valueType The data type of the map's values.
* @param array<K, T> $data The initial data to set for this map.
*/
- public function __construct(
- private readonly string $keyType,
- private readonly string $valueType,
- array $data = [],
- ) {
+ public function __construct(string $keyType, string $valueType, array $data = [])
+ {
+ $this->keyType = $keyType;
+ $this->valueType = $valueType;
+
+ /** @psalm-suppress MixedArgumentTypeCoercion */
parent::__construct($data);
}
diff --git a/vendor/ramsey/collection/src/Map/TypedMapInterface.php b/vendor/ramsey/collection/src/Map/TypedMapInterface.php
index 5a44f0647..0308109cc 100644
--- a/vendor/ramsey/collection/src/Map/TypedMapInterface.php
+++ b/vendor/ramsey/collection/src/Map/TypedMapInterface.php
@@ -18,9 +18,8 @@ namespace Ramsey\Collection\Map;
* A `TypedMapInterface` represents a map of elements where key and value are
* typed.
*
- * @template K of array-key
* @template T
- * @extends MapInterface<K, T>
+ * @extends MapInterface<T>
*/
interface TypedMapInterface extends MapInterface
{
diff --git a/vendor/ramsey/collection/src/Queue.php b/vendor/ramsey/collection/src/Queue.php
index 0f5b33740..93e032b43 100644
--- a/vendor/ramsey/collection/src/Queue.php
+++ b/vendor/ramsey/collection/src/Queue.php
@@ -19,8 +19,6 @@ use Ramsey\Collection\Exception\NoSuchElementException;
use Ramsey\Collection\Tool\TypeTrait;
use Ramsey\Collection\Tool\ValueToStringTrait;
-use function array_key_first;
-
/**
* This class provides a basic implementation of `QueueInterface`, to minimize
* the effort required to implement this interface.
@@ -35,14 +33,32 @@ class Queue extends AbstractArray implements QueueInterface
use ValueToStringTrait;
/**
+ * The type of elements stored in this queue.
+ *
+ * A queue's type is immutable once it is set. For this reason, this
+ * property is set private.
+ *
+ * @var string
+ */
+ private $queueType;
+
+ /**
+ * The index of the head of the queue.
+ *
+ * @var int
+ */
+ protected $index = 0;
+
+ /**
* Constructs a queue object of the specified type, optionally with the
* specified data.
*
- * @param string $queueType The type or class name associated with this queue.
- * @param array<array-key, T> $data The initial items to store in the queue.
+ * @param string $queueType The type (FQCN) associated with this queue.
+ * @param array<array-key, T> $data The initial items to store in the collection.
*/
- public function __construct(private readonly string $queueType, array $data = [])
+ public function __construct(string $queueType, array $data = [])
{
+ $this->queueType = $queueType;
parent::__construct($data);
}
@@ -52,15 +68,13 @@ class Queue extends AbstractArray implements QueueInterface
* Since arbitrary offsets may not be manipulated in a queue, this method
* serves only to fulfill the `ArrayAccess` interface requirements. It is
* invoked by other operations when adding values to the queue.
- *
- * @throws InvalidArgumentException if $value is of the wrong type.
*/
- public function offsetSet(mixed $offset, mixed $value): void
+ public function offsetSet($offset, $value): void
{
if ($this->checkType($this->getType(), $value) === false) {
throw new InvalidArgumentException(
'Value must be of type ' . $this->getType() . '; value is '
- . $this->toolValueToString($value),
+ . $this->toolValueToString($value)
);
}
@@ -68,9 +82,9 @@ class Queue extends AbstractArray implements QueueInterface
}
/**
- * @throws InvalidArgumentException if $value is of the wrong type.
+ * @inheritDoc
*/
- public function add(mixed $element): bool
+ public function add($element): bool
{
$this[] = $element;
@@ -78,67 +92,74 @@ class Queue extends AbstractArray implements QueueInterface
}
/**
- * @return T
- *
- * @throws NoSuchElementException if this queue is empty.
+ * @inheritDoc
*/
- public function element(): mixed
+ public function element()
{
- return $this->peek() ?? throw new NoSuchElementException(
- 'Can\'t return element from Queue. Queue is empty.',
- );
+ $element = $this->peek();
+
+ if ($element === null) {
+ throw new NoSuchElementException(
+ 'Can\'t return element from Queue. Queue is empty.'
+ );
+ }
+
+ return $element;
}
- public function offer(mixed $element): bool
+ /**
+ * @inheritDoc
+ */
+ public function offer($element): bool
{
try {
return $this->add($element);
- } catch (InvalidArgumentException) {
+ } catch (InvalidArgumentException $e) {
return false;
}
}
/**
- * @return T | null
+ * @inheritDoc
*/
- public function peek(): mixed
+ public function peek()
{
- $index = array_key_first($this->data);
-
- if ($index === null) {
+ if ($this->count() === 0) {
return null;
}
- return $this[$index];
+ return $this[$this->index];
}
/**
- * @return T | null
+ * @inheritDoc
*/
- public function poll(): mixed
+ public function poll()
{
- $index = array_key_first($this->data);
-
- if ($index === null) {
+ if ($this->count() === 0) {
return null;
}
- $head = $this[$index];
- unset($this[$index]);
+ $head = $this[$this->index];
+
+ unset($this[$this->index]);
+ $this->index++;
return $head;
}
/**
- * @return T
- *
- * @throws NoSuchElementException if this queue is empty.
+ * @inheritDoc
*/
- public function remove(): mixed
+ public function remove()
{
- return $this->poll() ?? throw new NoSuchElementException(
- 'Can\'t return element from Queue. Queue is empty.',
- );
+ $head = $this->poll();
+
+ if ($head === null) {
+ throw new NoSuchElementException('Can\'t return element from Queue. Queue is empty.');
+ }
+
+ return $head;
}
public function getType(): string
diff --git a/vendor/ramsey/collection/src/QueueInterface.php b/vendor/ramsey/collection/src/QueueInterface.php
index f29ce43ab..8c7383df8 100644
--- a/vendor/ramsey/collection/src/QueueInterface.php
+++ b/vendor/ramsey/collection/src/QueueInterface.php
@@ -15,7 +15,6 @@ declare(strict_types=1);
namespace Ramsey\Collection;
use Ramsey\Collection\Exception\NoSuchElementException;
-use RuntimeException;
/**
* A queue is a collection in which the entities in the collection are kept in
@@ -124,12 +123,13 @@ interface QueueInterface extends ArrayInterface
*
* @return bool `true` if this queue changed as a result of the call.
*
- * @throws RuntimeException if a queue refuses to add a particular element
+ * @throws \RuntimeException if a queue refuses to add a particular element
* for any reason other than that it already contains the element.
* Implementations should use a more-specific exception that extends
* `\RuntimeException`.
*/
- public function add(mixed $element): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function add($element): bool;
/**
* Retrieves, but does not remove, the head of this queue.
@@ -143,7 +143,7 @@ interface QueueInterface extends ArrayInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function element(): mixed;
+ public function element();
/**
* Inserts the specified element into this queue if it is possible to do so
@@ -159,7 +159,8 @@ interface QueueInterface extends ArrayInterface
*
* @return bool `true` if the element was added to this queue, else `false`.
*/
- public function offer(mixed $element): bool;
+ // phpcs:ignore SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
+ public function offer($element): bool;
/**
* Retrieves, but does not remove, the head of this queue, or returns `null`
@@ -167,9 +168,9 @@ interface QueueInterface extends ArrayInterface
*
* @see self::element()
*
- * @return T | null the head of this queue, or `null` if this queue is empty.
+ * @return T|null the head of this queue, or `null` if this queue is empty.
*/
- public function peek(): mixed;
+ public function peek();
/**
* Retrieves and removes the head of this queue, or returns `null`
@@ -177,9 +178,9 @@ interface QueueInterface extends ArrayInterface
*
* @see self::remove()
*
- * @return T | null the head of this queue, or `null` if this queue is empty.
+ * @return T|null the head of this queue, or `null` if this queue is empty.
*/
- public function poll(): mixed;
+ public function poll();
/**
* Retrieves and removes the head of this queue.
@@ -193,7 +194,7 @@ interface QueueInterface extends ArrayInterface
*
* @throws NoSuchElementException if this queue is empty.
*/
- public function remove(): mixed;
+ public function remove();
/**
* Returns the type associated with this queue.
diff --git a/vendor/ramsey/collection/src/Set.php b/vendor/ramsey/collection/src/Set.php
index aa93351c4..6932f247a 100644
--- a/vendor/ramsey/collection/src/Set.php
+++ b/vendor/ramsey/collection/src/Set.php
@@ -28,7 +28,7 @@ namespace Ramsey\Collection;
* $foo = new \My\Foo();
* $set = new Set(\My\Foo::class);
*
- * $set->add($foo); // returns TRUE, the element doesn't exist
+ * $set->add($foo); // returns TRUE, the element don't exists
* $set->add($foo); // returns FALSE, the element already exists
*
* $bar = new \My\Foo();
@@ -41,14 +41,24 @@ namespace Ramsey\Collection;
class Set extends AbstractSet
{
/**
+ * The type of elements stored in this set
+ *
+ * A set's type is immutable. For this reason, this property is private.
+ *
+ * @var string
+ */
+ private $setType;
+
+ /**
* Constructs a set object of the specified type, optionally with the
* specified data.
*
- * @param string $setType The type or class name associated with this set.
+ * @param string $setType The type (FQCN) associated with this set.
* @param array<array-key, T> $data The initial items to store in the set.
*/
- public function __construct(private readonly string $setType, array $data = [])
+ public function __construct(string $setType, array $data = [])
{
+ $this->setType = $setType;
parent::__construct($data);
}
diff --git a/vendor/ramsey/collection/src/Sort.php b/vendor/ramsey/collection/src/Sort.php
deleted file mode 100644
index 0c3c19213..000000000
--- a/vendor/ramsey/collection/src/Sort.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/**
- * This file is part of the ramsey/collection library
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
- * @license http://opensource.org/licenses/MIT MIT
- */
-
-declare(strict_types=1);
-
-namespace Ramsey\Collection;
-
-/**
- * Collection sorting
- */
-enum Sort: string
-{
- /**
- * Sort items in a collection in ascending order.
- */
- case Ascending = 'asc';
-
- /**
- * Sort items in a collection in descending order.
- */
- case Descending = 'desc';
-}
diff --git a/vendor/ramsey/collection/src/Tool/TypeTrait.php b/vendor/ramsey/collection/src/Tool/TypeTrait.php
index ac51b7f10..8214e9654 100644
--- a/vendor/ramsey/collection/src/Tool/TypeTrait.php
+++ b/vendor/ramsey/collection/src/Tool/TypeTrait.php
@@ -36,22 +36,38 @@ trait TypeTrait
* @param string $type The type to check the value against.
* @param mixed $value The value to check.
*/
- protected function checkType(string $type, mixed $value): bool
+ protected function checkType(string $type, $value): bool
{
- return match ($type) {
- 'array' => is_array($value),
- 'bool', 'boolean' => is_bool($value),
- 'callable' => is_callable($value),
- 'float', 'double' => is_float($value),
- 'int', 'integer' => is_int($value),
- 'null' => $value === null,
- 'numeric' => is_numeric($value),
- 'object' => is_object($value),
- 'resource' => is_resource($value),
- 'scalar' => is_scalar($value),
- 'string' => is_string($value),
- 'mixed' => true,
- default => $value instanceof $type,
- };
+ switch ($type) {
+ case 'array':
+ return is_array($value);
+ case 'bool':
+ case 'boolean':
+ return is_bool($value);
+ case 'callable':
+ return is_callable($value);
+ case 'float':
+ case 'double':
+ return is_float($value);
+ case 'int':
+ case 'integer':
+ return is_int($value);
+ case 'null':
+ return $value === null;
+ case 'numeric':
+ return is_numeric($value);
+ case 'object':
+ return is_object($value);
+ case 'resource':
+ return is_resource($value);
+ case 'scalar':
+ return is_scalar($value);
+ case 'string':
+ return is_string($value);
+ case 'mixed':
+ return true;
+ default:
+ return $value instanceof $type;
+ }
}
}
diff --git a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php
index 44c422252..f9be1be28 100644
--- a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php
+++ b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php
@@ -14,11 +14,9 @@ declare(strict_types=1);
namespace Ramsey\Collection\Tool;
-use Ramsey\Collection\Exception\InvalidPropertyOrMethod;
-use Ramsey\Collection\Exception\UnsupportedOperationException;
+use Ramsey\Collection\Exception\ValueExtractionException;
-use function is_array;
-use function is_object;
+use function get_class;
use function method_exists;
use function property_exists;
use function sprintf;
@@ -29,53 +27,32 @@ use function sprintf;
trait ValueExtractorTrait
{
/**
- * Extracts the value of the given property, method, or array key from the
- * element.
+ * Extracts the value of the given property or method from the object.
*
- * If `$propertyOrMethod` is `null`, we return the element as-is.
- *
- * @param mixed $element The element to extract the value from.
- * @param string | null $propertyOrMethod The property or method for which the
+ * @param mixed $object The object to extract the value from.
+ * @param string $propertyOrMethod The property or method for which the
* value should be extracted.
*
- * @return mixed the value extracted from the specified property, method,
- * or array key, or the element itself.
+ * @return mixed the value extracted from the specified property or method.
*
- * @throws InvalidPropertyOrMethod
- * @throws UnsupportedOperationException
+ * @throws ValueExtractionException if the method or property is not defined.
*/
- protected function extractValue(mixed $element, ?string $propertyOrMethod): mixed
+ protected function extractValue($object, string $propertyOrMethod)
{
- if ($propertyOrMethod === null) {
- return $element;
- }
-
- if (!is_object($element) && !is_array($element)) {
- throw new UnsupportedOperationException(sprintf(
- 'The collection type "%s" does not support the $propertyOrMethod parameter',
- $this->getType(),
- ));
- }
-
- if (is_array($element)) {
- return $element[$propertyOrMethod] ?? throw new InvalidPropertyOrMethod(sprintf(
- 'Key or index "%s" not found in collection elements',
- $propertyOrMethod,
- ));
+ if (!is_object($object)) {
+ throw new ValueExtractionException('Unable to extract a value from a non-object');
}
- if (property_exists($element, $propertyOrMethod)) {
- return $element->$propertyOrMethod;
+ if (property_exists($object, $propertyOrMethod)) {
+ return $object->$propertyOrMethod;
}
- if (method_exists($element, $propertyOrMethod)) {
- return $element->{$propertyOrMethod}();
+ if (method_exists($object, $propertyOrMethod)) {
+ return $object->{$propertyOrMethod}();
}
- throw new InvalidPropertyOrMethod(sprintf(
- 'Method or property "%s" not defined in %s',
- $propertyOrMethod,
- $element::class,
- ));
+ throw new ValueExtractionException(
+ sprintf('Method or property "%s" not defined in %s', $propertyOrMethod, get_class($object))
+ );
}
}
diff --git a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php
index 64fc5fa42..721ade002 100644
--- a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php
+++ b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php
@@ -16,12 +16,11 @@ namespace Ramsey\Collection\Tool;
use DateTimeInterface;
-use function assert;
+use function get_class;
use function get_resource_type;
use function is_array;
use function is_bool;
use function is_callable;
-use function is_object;
use function is_resource;
use function is_scalar;
@@ -45,7 +44,7 @@ trait ValueToStringTrait
*
* @param mixed $value the value to return as a string.
*/
- protected function toolValueToString(mixed $value): string
+ protected function toolValueToString($value): string
{
// null
if ($value === null) {
@@ -72,8 +71,12 @@ trait ValueToStringTrait
return '(' . get_resource_type($value) . ' resource #' . (int) $value . ')';
}
+ // If we don't know what it is, use var_export().
+ if (!is_object($value)) {
+ return '(' . var_export($value, true) . ')';
+ }
+
// From here, $value should be an object.
- assert(is_object($value));
// __toString() is implemented
if (is_callable([$value, '__toString'])) {
@@ -86,6 +89,6 @@ trait ValueToStringTrait
}
// unknown type
- return '(' . $value::class . ' Object)';
+ return '(' . get_class($value) . ' Object)';
}
}
diff --git a/vendor/sabre/http/CHANGELOG.md b/vendor/sabre/http/CHANGELOG.md
index 7c6f4b6ec..2dddce4fb 100644
--- a/vendor/sabre/http/CHANGELOG.md
+++ b/vendor/sabre/http/CHANGELOG.md
@@ -1,27 +1,6 @@
ChangeLog
=========
-5.1.10 (2023-08-18)
-------------------
-
-* #225 Enhance tests/bootstrap.php to find autoloader in more environments (@phil-davis)
-
-5.1.9 (2023-08-17)
-------------------
-
-* #223 skip testParseMimeTypeOnInvalidMimeType (@phil-davis)
-
-5.1.8 (2023-08-17)
-------------------
-
-* #215 Improve CURLOPT_HTTPHEADER Setting Assignment (@amrita-shrestha)
-
-5.1.7 (2023-06-26)
-------------------
-
-* #98 and #176 Add more tests (@peter279k)
-* #207 fix: handle client disconnect properly with ignore_user_abort true (@kesselb)
-
5.1.6 (2022-07-15)
------------------
diff --git a/vendor/sabre/http/lib/Client.php b/vendor/sabre/http/lib/Client.php
index 0837e8d2a..2bc7483a7 100644
--- a/vendor/sabre/http/lib/Client.php
+++ b/vendor/sabre/http/lib/Client.php
@@ -402,10 +402,7 @@ class Client extends EventEmitter
$nHeaders[] = $key.': '.$value;
}
}
-
- if ([] !== $nHeaders) {
- $settings[CURLOPT_HTTPHEADER] = $nHeaders;
- }
+ $settings[CURLOPT_HTTPHEADER] = $nHeaders;
$settings[CURLOPT_URL] = $request->getUrl();
// FIXME: CURLOPT_PROTOCOLS is currently unsupported by HHVM
if (defined('CURLOPT_PROTOCOLS')) {
diff --git a/vendor/sabre/http/lib/Sapi.php b/vendor/sabre/http/lib/Sapi.php
index 55a4c46e7..f8e8397fc 100644
--- a/vendor/sabre/http/lib/Sapi.php
+++ b/vendor/sabre/http/lib/Sapi.php
@@ -115,12 +115,6 @@ class Sapi
if ($copied <= 0) {
break;
}
- // Abort on client disconnect.
- // With ignore_user_abort(true), the script is not aborted on client disconnect.
- // To avoid reading the entire stream and dismissing the data afterward, check between the chunks if the client is still there.
- if (1 === ignore_user_abort() && 1 === connection_aborted()) {
- break;
- }
$left -= $copied;
}
} else {
diff --git a/vendor/sabre/http/lib/Version.php b/vendor/sabre/http/lib/Version.php
index 93c64797b..47582f22e 100644
--- a/vendor/sabre/http/lib/Version.php
+++ b/vendor/sabre/http/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- const VERSION = '5.1.10';
+ const VERSION = '5.1.6';
}
diff --git a/vendor/sabre/uri/composer.json b/vendor/sabre/uri/composer.json
index 03c33877c..0e0cf2d36 100644
--- a/vendor/sabre/uri/composer.json
+++ b/vendor/sabre/uri/composer.json
@@ -37,12 +37,9 @@
}
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^3.17",
- "phpstan/phpstan": "^1.10",
- "phpstan/phpstan-phpunit": "^1.3",
- "phpstan/phpstan-strict-rules": "^1.5",
- "phpstan/extension-installer": "^1.3",
- "phpunit/phpunit" : "^9.6"
+ "friendsofphp/php-cs-fixer": "^3.9",
+ "phpstan/phpstan": "^1.8",
+ "phpunit/phpunit" : "^9.0"
},
"scripts": {
"phpstan": [
@@ -59,10 +56,5 @@
"composer cs-fixer",
"composer phpunit"
]
- },
- "config": {
- "allow-plugins": {
- "phpstan/extension-installer": true
- }
}
}
diff --git a/vendor/sabre/uri/lib/Version.php b/vendor/sabre/uri/lib/Version.php
index a30694f2c..e4f289e90 100644
--- a/vendor/sabre/uri/lib/Version.php
+++ b/vendor/sabre/uri/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- public const VERSION = '2.3.3';
+ public const VERSION = '2.3.2';
}
diff --git a/vendor/sabre/uri/lib/functions.php b/vendor/sabre/uri/lib/functions.php
index 01ef92d7e..64e64027f 100644
--- a/vendor/sabre/uri/lib/functions.php
+++ b/vendor/sabre/uri/lib/functions.php
@@ -26,15 +26,15 @@ function resolve(string $basePath, string $newPath): string
// If the new path defines a scheme, it's absolute and we can just return
// that.
- if (null !== $delta['scheme']) {
+ if ($delta['scheme']) {
return build($delta);
}
$base = parse($basePath);
$pick = function ($part) use ($base, $delta) {
- if (null !== $delta[$part]) {
+ if ($delta[$part]) {
return $delta[$part];
- } elseif (null !== $base[$part]) {
+ } elseif ($base[$part]) {
return $base[$part];
}
@@ -47,6 +47,7 @@ function resolve(string $basePath, string $newPath): string
$newParts['host'] = $pick('host');
$newParts['port'] = $pick('port');
+ $path = '';
if (is_string($delta['path']) and strlen($delta['path']) > 0) {
// If the path starts with a slash
if ('/' === $delta['path'][0]) {
@@ -61,10 +62,7 @@ function resolve(string $basePath, string $newPath): string
$path .= '/'.$delta['path'];
}
} else {
- $path = $base['path'] ?? '/';
- if ('' === $path) {
- $path = '/';
- }
+ $path = $base['path'] ?: '/';
}
// Removing .. and .
$pathParts = explode('/', $path);
@@ -87,17 +85,13 @@ function resolve(string $basePath, string $newPath): string
// If the source url ended with a /, we want to preserve that.
$newParts['path'] = 0 === strpos($path, '/') ? $path : '/'.$path;
- // From PHP 8, no "?" query at all causes 'query' to be null.
- // An empty query "http://example.com/foo?" causes 'query' to be the empty string
- if (null !== $delta['query'] && '' !== $delta['query']) {
+ if ($delta['query']) {
$newParts['query'] = $delta['query'];
- } elseif (isset($base['query']) && null === $delta['host'] && null === $delta['path']) {
+ } elseif (!empty($base['query']) && empty($delta['host']) && empty($delta['path'])) {
// Keep the old query if host and path didn't change
$newParts['query'] = $base['query'];
}
- // From PHP 8, no "#" fragment at all causes 'fragment' to be null.
- // An empty fragment "http://example.com/foo#" causes 'fragment' to be the empty string
- if (null !== $delta['fragment'] && '' !== $delta['fragment']) {
+ if ($delta['fragment']) {
$newParts['fragment'] = $delta['fragment'];
}
@@ -119,7 +113,7 @@ function normalize(string $uri): string
{
$parts = parse($uri);
- if (null !== $parts['path']) {
+ if (!empty($parts['path'])) {
$pathParts = explode('/', ltrim($parts['path'], '/'));
$newPathParts = [];
foreach ($pathParts as $pathPart) {
@@ -140,14 +134,14 @@ function normalize(string $uri): string
$parts['path'] = '/'.implode('/', $newPathParts);
}
- if (null !== $parts['scheme']) {
+ if ($parts['scheme']) {
$parts['scheme'] = strtolower($parts['scheme']);
$defaultPorts = [
'http' => '80',
'https' => '443',
];
- if (null !== $parts['port'] && isset($defaultPorts[$parts['scheme']]) && $defaultPorts[$parts['scheme']] == $parts['port']) {
+ if (!empty($parts['port']) && isset($defaultPorts[$parts['scheme']]) && $defaultPorts[$parts['scheme']] == $parts['port']) {
// Removing default ports.
unset($parts['port']);
}
@@ -155,7 +149,7 @@ function normalize(string $uri): string
switch ($parts['scheme']) {
case 'http':
case 'https':
- if (null === $parts['path']) {
+ if (empty($parts['path'])) {
// An empty path is equivalent to / in http.
$parts['path'] = '/';
}
@@ -163,7 +157,7 @@ function normalize(string $uri): string
}
}
- if (null !== $parts['host']) {
+ if ($parts['host']) {
$parts['host'] = strtolower($parts['host']);
}
@@ -207,7 +201,7 @@ function parse(string $uri): array
}
$result = parse_url($uri);
- if (false === $result) {
+ if (!$result) {
$result = _parse_fallback($uri);
}
@@ -244,32 +238,32 @@ function build(array $parts): string
$uri = '';
$authority = '';
- if (isset($parts['host'])) {
+ if (!empty($parts['host'])) {
$authority = $parts['host'];
- if (isset($parts['user'])) {
+ if (!empty($parts['user'])) {
$authority = $parts['user'].'@'.$authority;
}
- if (isset($parts['port'])) {
+ if (!empty($parts['port'])) {
$authority = $authority.':'.$parts['port'];
}
}
- if (isset($parts['scheme'])) {
+ if (!empty($parts['scheme'])) {
// If there's a scheme, there's also a host.
$uri = $parts['scheme'].':';
}
- if ('' !== $authority || (isset($parts['scheme']) && 'file' === $parts['scheme'])) {
+ if ($authority || (!empty($parts['scheme']) && 'file' === $parts['scheme'])) {
// No scheme, but there is a host.
$uri .= '//'.$authority;
}
- if (isset($parts['path'])) {
+ if (!empty($parts['path'])) {
$uri .= $parts['path'];
}
- if (isset($parts['query'])) {
+ if (!empty($parts['query'])) {
$uri .= '?'.$parts['query'];
}
- if (isset($parts['fragment'])) {
+ if (!empty($parts['fragment'])) {
$uri .= '#'.$parts['fragment'];
}
@@ -296,7 +290,7 @@ function build(array $parts): string
function split(string $path): array
{
$matches = [];
- if (1 === preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', $path, $matches)) {
+ if (preg_match('/^(?:(?:(.*)(?:\/+))?([^\/]+))(?:\/?)$/u', $path, $matches)) {
return [$matches[1], $matches[2]];
}
@@ -313,7 +307,7 @@ function split(string $path): array
* This function is only called if the main parse method fails. It's pretty
* crude and probably slow, so the original parse_url is usually preferred.
*
- * @return array{scheme: string|null, host: string|null, path: string|null, port: positive-int|null, user: string|null, query: string|null, fragment: string|null}
+ * @return array<string, mixed>
*
* @throws InvalidUriException
*/
@@ -346,14 +340,10 @@ function _parse_fallback(string $uri): array
'query' => null,
];
- if (1 === preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) {
+ if (preg_match('% ^([A-Za-z][A-Za-z0-9+-\.]+): %x', $uri, $matches)) {
$result['scheme'] = $matches[1];
// Take what's left.
$uri = substr($uri, strlen($result['scheme']) + 1);
- if (false === $uri) {
- // There was nothing left.
- $uri = '';
- }
}
// Taking off a fragment part
@@ -368,11 +358,7 @@ function _parse_fallback(string $uri): array
if ('///' === substr($uri, 0, 3)) {
// The triple slash uris are a bit unusual, but we have special handling
// for them.
- $path = substr($uri, 2);
- if (false === $path) {
- throw new \RuntimeException('The string cannot be false');
- }
- $result['path'] = $path;
+ $result['path'] = substr($uri, 2);
$result['host'] = '';
} elseif ('//' === substr($uri, 0, 2)) {
// Uris that have an authority part.
@@ -383,25 +369,22 @@ function _parse_fallback(string $uri): array
(?: : (?<port> [0-9]+))?
(?<path> / .*)?
$%x';
- if (1 !== preg_match($regex, $uri, $matches)) {
+ if (!preg_match($regex, $uri, $matches)) {
throw new InvalidUriException('Invalid, or could not parse URI');
}
- if (isset($matches['host']) && '' !== $matches['host']) {
+ if ($matches['host']) {
$result['host'] = $matches['host'];
}
if (isset($matches['port'])) {
- $port = (int) $matches['port'];
- if ($port > 0) {
- $result['port'] = $port;
- }
+ $result['port'] = (int) $matches['port'];
}
if (isset($matches['path'])) {
$result['path'] = $matches['path'];
}
- if (isset($matches['user']) && '' !== $matches['user']) {
+ if ($matches['user']) {
$result['user'] = $matches['user'];
}
- if (isset($matches['pass']) && '' !== $matches['pass']) {
+ if ($matches['pass']) {
$result['pass'] = $matches['pass'];
}
} else {
diff --git a/vendor/sabre/xml/lib/Deserializer/functions.php b/vendor/sabre/xml/lib/Deserializer/functions.php
index 62d4d0e07..c4f240970 100644
--- a/vendor/sabre/xml/lib/Deserializer/functions.php
+++ b/vendor/sabre/xml/lib/Deserializer/functions.php
@@ -216,7 +216,7 @@ function valueObject(Reader $reader, string $className, string $namespace)
$reader->next();
}
} else {
- if (Reader::END_ELEMENT !== $reader->nodeType && !$reader->read()) {
+ if (!$reader->read()) {
break;
}
}
diff --git a/vendor/sabre/xml/lib/Version.php b/vendor/sabre/xml/lib/Version.php
index 6b6c53b18..1144bf085 100644
--- a/vendor/sabre/xml/lib/Version.php
+++ b/vendor/sabre/xml/lib/Version.php
@@ -16,5 +16,5 @@ class Version
/**
* Full version number.
*/
- const VERSION = '2.2.6';
+ const VERSION = '2.2.5';
}
diff --git a/vendor/streams/php-jcs b/vendor/streams/php-jcs
deleted file mode 160000
-Subproject a0953ad4f4d3586d5e008b8498cc79154fca833
diff --git a/vendor/symfony/polyfill-php81/LICENSE b/vendor/symfony/polyfill-php81/LICENSE
new file mode 100644
index 000000000..99c6bdf35
--- /dev/null
+++ b/vendor/symfony/polyfill-php81/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2021-present Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-php81/Php81.php b/vendor/symfony/polyfill-php81/Php81.php
new file mode 100644
index 000000000..f0507b765
--- /dev/null
+++ b/vendor/symfony/polyfill-php81/Php81.php
@@ -0,0 +1,37 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Php81;
+
+/**
+ * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @internal
+ */
+final class Php81
+{
+ public static function array_is_list(array $array): bool
+ {
+ if ([] === $array || $array === array_values($array)) {
+ return true;
+ }
+
+ $nextKey = -1;
+
+ foreach ($array as $k => $v) {
+ if ($k !== ++$nextKey) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/vendor/symfony/polyfill-php81/README.md b/vendor/symfony/polyfill-php81/README.md
new file mode 100644
index 000000000..c07ef7820
--- /dev/null
+++ b/vendor/symfony/polyfill-php81/README.md
@@ -0,0 +1,18 @@
+Symfony Polyfill / Php81
+========================
+
+This component provides features added to PHP 8.1 core:
+
+- [`array_is_list`](https://php.net/array_is_list)
+- [`enum_exists`](https://php.net/enum-exists)
+- [`MYSQLI_REFRESH_REPLICA`](https://php.net/mysqli.constants#constantmysqli-refresh-replica) constant
+- [`ReturnTypeWillChange`](https://wiki.php.net/rfc/internal_method_return_types)
+- [`CURLStringFile`](https://php.net/CURLStringFile) (but only if PHP >= 7.4 is used)
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php b/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php
new file mode 100644
index 000000000..eb5952ee3
--- /dev/null
+++ b/vendor/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID >= 70400 && extension_loaded('curl')) {
+ /**
+ * @property string $data
+ */
+ class CURLStringFile extends CURLFile
+ {
+ private $data;
+
+ public function __construct(string $data, string $postname, string $mime = 'application/octet-stream')
+ {
+ $this->data = $data;
+ parent::__construct('data://application/octet-stream;base64,'.base64_encode($data), $mime, $postname);
+ }
+
+ public function __set(string $name, $value): void
+ {
+ if ('data' !== $name) {
+ $this->$name = $value;
+
+ return;
+ }
+
+ if (is_object($value) ? !method_exists($value, '__toString') : !is_scalar($value)) {
+ throw new \TypeError('Cannot assign '.gettype($value).' to property CURLStringFile::$data of type string');
+ }
+
+ $this->name = 'data://application/octet-stream;base64,'.base64_encode($value);
+ }
+
+ public function __isset(string $name): bool
+ {
+ return isset($this->$name);
+ }
+
+ public function &__get(string $name)
+ {
+ return $this->$name;
+ }
+ }
+}
diff --git a/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php b/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php
new file mode 100644
index 000000000..cb7720a8d
--- /dev/null
+++ b/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID < 80100) {
+ #[Attribute(Attribute::TARGET_METHOD)]
+ final class ReturnTypeWillChange
+ {
+ public function __construct()
+ {
+ }
+ }
+}
diff --git a/vendor/symfony/polyfill-php81/bootstrap.php b/vendor/symfony/polyfill-php81/bootstrap.php
new file mode 100644
index 000000000..9f872e02f
--- /dev/null
+++ b/vendor/symfony/polyfill-php81/bootstrap.php
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Php81 as p;
+
+if (\PHP_VERSION_ID >= 80100) {
+ return;
+}
+
+if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) {
+ define('MYSQLI_REFRESH_REPLICA', 64);
+}
+
+if (!function_exists('array_is_list')) {
+ function array_is_list(array $array): bool { return p\Php81::array_is_list($array); }
+}
+
+if (!function_exists('enum_exists')) {
+ function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; }
+}
diff --git a/vendor/symfony/polyfill-php81/composer.json b/vendor/symfony/polyfill-php81/composer.json
new file mode 100644
index 000000000..381af79ac
--- /dev/null
+++ b/vendor/symfony/polyfill-php81/composer.json
@@ -0,0 +1,33 @@
+{
+ "name": "symfony/polyfill-php81",
+ "type": "library",
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "keywords": ["polyfill", "shim", "compatibility", "portable"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=7.1"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Php81\\": "" },
+ "files": [ "bootstrap.php" ],
+ "classmap": [ "Resources/stubs" ]
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ }
+}