|
Server IP : 10.2.73.233 / Your IP : 216.73.216.59 Web Server : Apache/2.4.59 (Debian) System : Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64 User : www-data ( 33) PHP Version : 5.6.40-64+0~20230107.71+debian10~1.gbp673146 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/gp/../leksykografia/library/Zend/Pdf/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Pdf
* @subpackage Actions
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: NameTree.php 23651 2011-01-21 21:51:00Z mikaelkael $
*/
/** Internally used classes */
require_once 'Zend/Pdf/Element.php';
/**
* PDF name tree representation class
*
* @todo implement lazy resource loading so resources will be really loaded at access time
*
* @package Zend_Pdf
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Pdf_NameTree implements ArrayAccess, Iterator, Countable
{
/**
* Elements
* Array of name => object tree entries
*
* @var array
*/
protected $_items = array();
/**
* Object constructor
*
* @param Zend_Pdf_Element $rootDictionary root of name dictionary
*/
public function __construct(Zend_Pdf_Element $rootDictionary)
{
if ($rootDictionary->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Name tree root must be a dictionary.');
}
$intermediateNodes = array();
$leafNodes = array();
if ($rootDictionary->Kids !== null) {
$intermediateNodes[] = $rootDictionary;
} else {
$leafNodes[] = $rootDictionary;
}
while (count($intermediateNodes) != 0) {
$newIntermediateNodes = array();
foreach ($intermediateNodes as $node) {
foreach ($node->Kids->items as $childNode) {
if ($childNode->Kids !== null) {
$newIntermediateNodes[] = $childNode;
} else {
$leafNodes[] = $childNode;
}
}
}
$intermediateNodes = $newIntermediateNodes;
}
foreach ($leafNodes as $leafNode) {
$destinationsCount = count($leafNode->Names->items)/2;
for ($count = 0; $count < $destinationsCount; $count++) {
$this->_items[$leafNode->Names->items[$count*2]->value] = $leafNode->Names->items[$count*2 + 1];
}
}
}
public function current()
{
return current($this->_items);
}
public function next()
{
return next($this->_items);
}
public function key()
{
return key($this->_items);
}
public function valid() {
return current($this->_items)!==false;
}
public function rewind()
{
reset($this->_items);
}
public function offsetExists($offset)
{
return array_key_exists($offset, $this->_items);
}
public function offsetGet($offset)
{
return $this->_items[$offset];
}
public function offsetSet($offset, $value)
{
if ($offset === null) {
$this->_items[] = $value;
} else {
$this->_items[$offset] = $value;
}
}
public function offsetUnset($offset)
{
unset($this->_items[$offset]);
}
public function clear()
{
$this->_items = array();
}
public function count()
{
return count($this->_items);
}
}