1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
<?php
/**
* Copyright 2002-2017 Horde LLC (http://www.horde.org/)
*
* See the enclosed file LICENSE for license information (LGPL). If you
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
*
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Michael J. Rubinsky <mrubinsk@horde.org>
* @author Jan Schneider <jan@horde.org>
* @category Horde
* @license http://www.horde.org/licenses/lgpl21 LGPL-2.1
* @package Image
*/
/**
* The Horde_Image_Effect parent class defines a general API for ways to apply
* effects to Horde_Image objects.
*
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Michael J. Rubinsky <mrubinsk@horde.org>
* @author Jan Schneider <jan@horde.org>
* @category Horde
* @copyright 2002-2017 Horde LLC
* @license http://www.horde.org/licenses/lgpl21 LGPL-2.1
* @package Image
*/
class Horde_Image_Effect
{
/**
* Effect parameters.
*
* @var array
*/
protected $_params = array();
/**
* The bound Horde_Image object
*
* @var Horde_Image
*/
protected $_image = null;
/**
* Logger.
*/
protected $_logger;
/**
* Effect constructor.
*
* @param array $params Any parameters for the effect. Parameters are
* documented in each subclass.
*/
public function __construct($params = array())
{
$this->_logger = new Horde_Support_Stub();
foreach ($params as $key => $val) {
$this->_params[$key] = $val;
}
}
/**
* Bind this effect to a Horde_Image object.
*
* @param Horde_Image $image The Horde_Image object
*/
public function setImageObject($image)
{
$this->_image = $image;
}
/**
* Attaches a logger.
*
* @param Horde_Log_Logger $logger A logger.
*/
public function setLogger($logger)
{
$this->_logger = $logger;
}
/**
* Effect factory.
*
* @param string $type An effect name.
* @param string $driver An image driver name.
* @param array $params Any effect parameters.
*
* @return Horde_Image_Effect An effect instance.
*/
public static function factory($type, $driver, $params)
{
if (is_array($type)) {
list($app, $type) = $type;
}
// First check for a driver specific effect, if we can't find one,
// assume there is a vanilla effect object around.
$class = 'Horde_Image_Effect_' . $driver . '_' . $type;
$vclass = 'Horde_Image_Effect_' . $type;
if (class_exists($class)) {
$effect = new $class($params);
} elseif (class_exists($vclass)) {
$effect = new $vclass($params);
} else {
$message = sprintf(
'Horde_Image Effect "%s" for "%s" driver not found.',
$type,
$driver
);
if (!empty($params['logger'])) {
$params['logger']->err($message);
}
throw new Horde_Image_Exception($message);
}
if (!empty($params['logger'])) {
$effect->setLogger($params['logger']);
}
return $effect;
}
}
|