diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Pdf/Element/Array.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Pdf/Element/Array.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,181 @@ +items = new ArrayObject(); + + if ($val !== null && is_array($val)) { + foreach ($val as $element) { + if (!$element instanceof Zend_Pdf_Element) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Array elements must be Zend_Pdf_Element objects'); + } + $this->items[] = $element; + } + } else if ($val !== null){ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Argument must be an array'); + } + } + + + /** + * Getter + * + * @param string $property + * @throws Zend_Pdf_Exception + */ + public function __get($property) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Undefined property: Zend_Pdf_Element_Array::$' . $property); + } + + + /** + * Setter + * + * @param mixed $offset + * @param mixed $value + * @throws Zend_Pdf_Exception + */ + public function __set($property, $value) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Undefined property: Zend_Pdf_Element_Array::$' . $property); + } + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return Zend_Pdf_Element::TYPE_ARRAY; + } + + + /** + * Return object as string + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + $outStr = '['; + $lastNL = 0; + + foreach ($this->items as $element) { + if (strlen($outStr) - $lastNL > 128) { + $outStr .= "\n"; + $lastNL = strlen($outStr); + } + + $outStr .= $element->toString($factory) . ' '; + } + $outStr .= ']'; + + return $outStr; + } + + /** + * Detach PDF object from the factory (if applicable), clone it and attach to new factory. + * + * @param Zend_Pdf_ElementFactory $factory The factory to attach + * @param array &$processed List of already processed indirect objects, used to avoid objects duplication + * @param integer $mode Cloning mode (defines filter for objects cloning) + * @returns Zend_Pdf_Element + */ + public function makeClone(Zend_Pdf_ElementFactory $factory, array &$processed, $mode) + { + $newArray = new self(); + + foreach ($this->items as $key => $value) { + $newArray->items[$key] = $value->makeClone($factory, $processed, $mode); + } + + return $newArray; + } + + /** + * Set top level parent indirect object. + * + * @param Zend_Pdf_Element_Object $parent + */ + public function setParentObject(Zend_Pdf_Element_Object $parent) + { + parent::setParentObject($parent); + + foreach ($this->items as $item) { + $item->setParentObject($parent); + } + } + + /** + * Convert PDF element to PHP type. + * + * Dictionary is returned as an associative array + * + * @return mixed + */ + public function toPhp() + { + $phpArray = array(); + + foreach ($this->items as $item) { + $phpArray[] = $item->toPhp(); + } + + return $phpArray; + } +}