summaryrefslogtreecommitdiffstats
path: root/vendor/setasign/fpdi/src/PdfParser/Type/PdfArray.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/setasign/fpdi/src/PdfParser/Type/PdfArray.php')
-rw-r--r--vendor/setasign/fpdi/src/PdfParser/Type/PdfArray.php85
1 files changed, 85 insertions, 0 deletions
diff --git a/vendor/setasign/fpdi/src/PdfParser/Type/PdfArray.php b/vendor/setasign/fpdi/src/PdfParser/Type/PdfArray.php
new file mode 100644
index 0000000..5d0bbbd
--- /dev/null
+++ b/vendor/setasign/fpdi/src/PdfParser/Type/PdfArray.php
@@ -0,0 +1,85 @@
+<?php
+
+/**
+ * This file is part of FPDI
+ *
+ * @package setasign\Fpdi
+ * @copyright Copyright (c) 2020 Setasign GmbH & Co. KG (https://www.setasign.com)
+ * @license http://opensource.org/licenses/mit-license The MIT License
+ */
+
+namespace setasign\Fpdi\PdfParser\Type;
+
+use setasign\Fpdi\PdfParser\PdfParser;
+use setasign\Fpdi\PdfParser\Tokenizer;
+
+/**
+ * Class representing a PDF array object
+ *
+ * @property array $value The value of the PDF type.
+ */
+class PdfArray extends PdfType
+{
+ /**
+ * Parses an array of the passed tokenizer and parser.
+ *
+ * @param Tokenizer $tokenizer
+ * @param PdfParser $parser
+ * @return bool|self
+ * @throws PdfTypeException
+ */
+ public static function parse(Tokenizer $tokenizer, PdfParser $parser)
+ {
+ $result = [];
+
+ // Recurse into this function until we reach the end of the array.
+ while (($token = $tokenizer->getNextToken()) !== ']') {
+ if ($token === false || ($value = $parser->readValue($token)) === false) {
+ return false;
+ }
+
+ $result[] = $value;
+ }
+
+ $v = new self();
+ $v->value = $result;
+
+ return $v;
+ }
+
+ /**
+ * Helper method to create an instance.
+ *
+ * @param PdfType[] $values
+ * @return self
+ */
+ public static function create(array $values = [])
+ {
+ $v = new self();
+ $v->value = $values;
+
+ return $v;
+ }
+
+ /**
+ * Ensures that the passed array is a PdfArray instance with a (optional) specific size.
+ *
+ * @param mixed $array
+ * @param null|int $size
+ * @return self
+ * @throws PdfTypeException
+ */
+ public static function ensure($array, $size = null)
+ {
+ $result = PdfType::ensureType(self::class, $array, 'Array value expected.');
+
+ if ($size !== null && \count($array->value) !== $size) {
+ throw new PdfTypeException(
+ \sprintf('Array with %s entries expected.', $size),
+ PdfTypeException::INVALID_DATA_SIZE
+ );
+ }
+
+ return $result;
+ }
+}