cacert-testmgr/external/ZendFramework-1.9.5/library/Zend/Pdf/Outline/Created.php
Markus Warg 8398c9048d initially import ZendFramework-1.9.5 into repository
code was modified slightly, so the code differs from the original downloadable 1.9.5 version
2010-03-31 10:12:32 +02:00

317 lines
8.9 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';
/** Zend_Pdf_Outline */
require_once 'Zend/Pdf/Outline.php';
/** Zend_Pdf_Destination */
require_once 'Zend/Pdf/Destination.php';
/** Zend_Pdf_Action */
require_once 'Zend/Pdf/Action.php';
/**
* PDF outline representation class
*
* @todo Implement an ability to associate an outline item with a structure element (PDF 1.3 feature)
*
* @package Zend_Pdf
* @subpackage Outlines
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Pdf_Outline_Created extends Zend_Pdf_Outline
{
/**
* Outline title.
*
* @var string
*/
protected $_title;
/**
* Color to be used for the outline entrys text.
* It uses the DeviceRGB color space for color representation.
* Null means default value - black ([0.0 0.0 0.0] in RGB representation).
*
* @var Zend_Pdf_Color_Rgb
*/
protected $_color = null;
/**
* True if outline item is displayed in italic.
* Default value is false.
*
* @var boolean
*/
protected $_italic = false;
/**
* True if outline item is displayed in bold.
* Default value is false.
*
* @var boolean
*/
protected $_bold = false;
/**
* Target destination or action.
* String means named destination
*
* Null means no target.
*
* @var Zend_Pdf_Destination|Zend_Pdf_Action
*/
protected $_target = null;
/**
* Get outline title.
*
* @return string
*/
public function getTitle()
{
return $this->_title;
}
/**
* Set outline title
*
* @param string $title
* @return Zend_Pdf_Outline
*/
public function setTitle($title)
{
$this->_title = $title;
return $this;
}
/**
* Returns true if outline item is displayed in italic
*
* @return boolean
*/
public function isItalic()
{
return $this->_italic;
}
/**
* Sets 'isItalic' outline flag
*
* @param boolean $isItalic
* @return Zend_Pdf_Outline
*/
public function setIsItalic($isItalic)
{
$this->_italic = $isItalic;
return $this;
}
/**
* Returns true if outline item is displayed in bold
*
* @return boolean
*/
public function isBold()
{
return $this->_bold;
}
/**
* Sets 'isBold' outline flag
*
* @param boolean $isBold
* @return Zend_Pdf_Outline
*/
public function setIsBold($isBold)
{
$this->_bold = $isBold;
return $this;
}
/**
* Get outline text color.
*
* @return Zend_Pdf_Color_Rgb
*/
public function getColor()
{
return $this->_color;
}
/**
* Set outline text color.
* (null means default color which is black)
*
* @param Zend_Pdf_Color_Rgb $color
* @return Zend_Pdf_Outline
*/
public function setColor(Zend_Pdf_Color_Rgb $color)
{
$this->_color = $color;
return $this;
}
/**
* Get outline target.
*
* @return Zend_Pdf_Target
*/
public function getTarget()
{
return $this->_target;
}
/**
* Set outline target.
* Null means no target
*
* @param Zend_Pdf_Target|string $target
* @return Zend_Pdf_Outline
* @throws Zend_Pdf_Exception
*/
public function setTarget($target = null)
{
if (is_string($target)) {
require_once 'Zend/Pdf/Destination/Named.php';
$target = new Zend_Pdf_Destination_Named($target);
}
if ($target === null || $target instanceof Zend_Pdf_Target) {
$this->_target = $target;
} else {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Outline target has to be Zend_Pdf_Destination or Zend_Pdf_Action object or string');
}
return $this;
}
/**
* Object constructor
*
* @param array $options
* @throws Zend_Pdf_Exception
*/
public function __construct($options = array())
{
if (!isset($options['title'])) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Title parameter is required.');
}
$this->setOptions($options);
}
/**
* Dump Outline and its child outlines into PDF structures
*
* Returns dictionary indirect object or reference
*
* @internal
* @param Zend_Pdf_ElementFactory $factory object factory for newly created indirect objects
* @param boolean $updateNavigation Update navigation flag
* @param Zend_Pdf_Element $parent Parent outline dictionary reference
* @param Zend_Pdf_Element $prev Previous outline dictionary reference
* @param SplObjectStorage $processedOutlines List of already processed outlines
* @return Zend_Pdf_Element
* @throws Zend_Pdf_Exception
*/
public function dumpOutline(Zend_Pdf_ElementFactory_Interface $factory,
$updateNavigation,
Zend_Pdf_Element $parent,
Zend_Pdf_Element $prev = null,
SplObjectStorage $processedOutlines = null)
{
if ($processedOutlines === null) {
$processedOutlines = new SplObjectStorage();
}
$processedOutlines->attach($this);
$outlineDictionary = $factory->newObject(new Zend_Pdf_Element_Dictionary());
$outlineDictionary->Title = new Zend_Pdf_Element_String($this->getTitle());
$target = $this->getTarget();
if ($target === null) {
// Do nothing
} else if ($target instanceof Zend_Pdf_Destination) {
$outlineDictionary->Dest = $target->getResource();
} else if ($target instanceof Zend_Pdf_Action) {
$outlineDictionary->A = $target->getResource();
} else {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Outline target has to be Zend_Pdf_Destination, Zend_Pdf_Action object or null');
}
$color = $this->getColor();
if ($color !== null) {
$components = $color->getComponents();
$colorComponentElements = array(new Zend_Pdf_Element_Numeric($components[0]),
new Zend_Pdf_Element_Numeric($components[1]),
new Zend_Pdf_Element_Numeric($components[2]));
$outlineDictionary->C = new Zend_Pdf_Element_Array($colorComponentElements);
}
if ($this->isItalic() || $this->isBold()) {
$outlineDictionary->F = new Zend_Pdf_Element_Numeric(($this->isItalic()? 1 : 0) | // Bit 1 - Italic
($this->isBold()? 2 : 0)); // Bit 2 - Bold
}
$outlineDictionary->Parent = $parent;
$outlineDictionary->Prev = $prev;
$lastChild = null;
foreach ($this->childOutlines as $childOutline) {
if ($processedOutlines->contains($childOutline)) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Outlines cyclyc reference is detected.');
}
if ($lastChild === null) {
$lastChild = $childOutline->dumpOutline($factory, true, $outlineDictionary, null, $processedOutlines);
$outlineDictionary->First = $lastChild;
} else {
$childOutlineDictionary = $childOutline->dumpOutline($factory, true, $outlineDictionary, $lastChild, $processedOutlines);
$lastChild->Next = $childOutlineDictionary;
$lastChild = $childOutlineDictionary;
}
}
$outlineDictionary->Last = $lastChild;
if (count($this->childOutlines) != 0) {
$outlineDictionary->Count = new Zend_Pdf_Element_Numeric(($this->isOpen()? 1 : -1)*count($this->childOutlines));
}
return $outlineDictionary;
}
}