Initial commit.
This commit is contained in:
167
library/Zend/Pdf/Action/URI.php
Normal file
167
library/Zend/Pdf/Action/URI.php
Normal file
@ -0,0 +1,167 @@
|
||||
<?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-2012 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id: URI.php 24593 2012-01-05 20:35:02Z matthew $
|
||||
*/
|
||||
|
||||
/** Internally used classes */
|
||||
// require_once 'Zend/Pdf/Element/Dictionary.php';
|
||||
// require_once 'Zend/Pdf/Element/Name.php';
|
||||
// require_once 'Zend/Pdf/Element/String.php';
|
||||
// require_once 'Zend/Pdf/Element/Boolean.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Action */
|
||||
// require_once 'Zend/Pdf/Action.php';
|
||||
|
||||
|
||||
/**
|
||||
* PDF 'Resolve a uniform resource identifier' action
|
||||
*
|
||||
* A URI action causes a URI to be resolved.
|
||||
*
|
||||
* @package Zend_Pdf
|
||||
* @subpackage Actions
|
||||
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Pdf_Action_URI extends Zend_Pdf_Action
|
||||
{
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* @param Zend_Pdf_Element_Dictionary $dictionary
|
||||
* @param SplObjectStorage $processedActions list of already processed action dictionaries, used to avoid cyclic references
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function __construct(Zend_Pdf_Element $dictionary, SplObjectStorage $processedActions)
|
||||
{
|
||||
parent::__construct($dictionary, $processedActions);
|
||||
|
||||
if ($dictionary->URI === null) {
|
||||
// require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('URI action dictionary entry is required');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate URI
|
||||
*
|
||||
* @param string $uri
|
||||
* @return true
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
protected static function _validateUri($uri)
|
||||
{
|
||||
$scheme = parse_url((string)$uri, PHP_URL_SCHEME);
|
||||
if ($scheme === false || $scheme === null) {
|
||||
// require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('Invalid URI');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new Zend_Pdf_Action_URI object using specified uri
|
||||
*
|
||||
* @param string $uri The URI to resolve, encoded in 7-bit ASCII
|
||||
* @param boolean $isMap A flag specifying whether to track the mouse position when the URI is resolved
|
||||
* @return Zend_Pdf_Action_URI
|
||||
*/
|
||||
public static function create($uri, $isMap = false)
|
||||
{
|
||||
self::_validateUri($uri);
|
||||
|
||||
$dictionary = new Zend_Pdf_Element_Dictionary();
|
||||
$dictionary->Type = new Zend_Pdf_Element_Name('Action');
|
||||
$dictionary->S = new Zend_Pdf_Element_Name('URI');
|
||||
$dictionary->Next = null;
|
||||
$dictionary->URI = new Zend_Pdf_Element_String($uri);
|
||||
if ($isMap) {
|
||||
$dictionary->IsMap = new Zend_Pdf_Element_Boolean(true);
|
||||
}
|
||||
|
||||
return new Zend_Pdf_Action_URI($dictionary, new SplObjectStorage());
|
||||
}
|
||||
|
||||
/**
|
||||
* Set URI to resolve
|
||||
*
|
||||
* @param string $uri The uri to resolve, encoded in 7-bit ASCII.
|
||||
* @return Zend_Pdf_Action_URI
|
||||
*/
|
||||
public function setUri($uri)
|
||||
{
|
||||
$this->_validateUri($uri);
|
||||
|
||||
$this->_actionDictionary->touch();
|
||||
$this->_actionDictionary->URI = new Zend_Pdf_Element_String($uri);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get URI to resolve
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getUri()
|
||||
{
|
||||
return $this->_actionDictionary->URI->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set IsMap property
|
||||
*
|
||||
* If the IsMap flag is true and the user has triggered the URI action by clicking
|
||||
* an annotation, the coordinates of the mouse position at the time the action is
|
||||
* performed should be transformed from device space to user space and then offset
|
||||
* relative to the upper-left corner of the annotation rectangle.
|
||||
*
|
||||
* @param boolean $isMap A flag specifying whether to track the mouse position when the URI is resolved
|
||||
* @return Zend_Pdf_Action_URI
|
||||
*/
|
||||
public function setIsMap($isMap)
|
||||
{
|
||||
$this->_actionDictionary->touch();
|
||||
|
||||
if ($isMap) {
|
||||
$this->_actionDictionary->IsMap = new Zend_Pdf_Element_Boolean(true);
|
||||
} else {
|
||||
$this->_actionDictionary->IsMap = null;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get IsMap property
|
||||
*
|
||||
* If the IsMap flag is true and the user has triggered the URI action by clicking
|
||||
* an annotation, the coordinates of the mouse position at the time the action is
|
||||
* performed should be transformed from device space to user space and then offset
|
||||
* relative to the upper-left corner of the annotation rectangle.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getIsMap()
|
||||
{
|
||||
return $this->_actionDictionary->IsMap !== null &&
|
||||
$this->_actionDictionary->IsMap->value;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user