- * $img = WideImage::load('pic.jpg');
- * $canvas = $img->getCanvas();
- * $canvas->useFont('Verdana.ttf', 16, $img->allocateColor(255, 0, 0));
- * $canvas->writeText('right', 'bottom', 'www.website.com');
- *
- *
- * @param int $x Left
- * @param int $y Top
- * @param string $text Text to write
- * @param int $angle The angle, defaults to 0
- */
- function writeText($x, $y, $text, $angle = 0)
- {
- if ($this->font === null)
- throw new WideImage_NoFontException("Can't write text without a font.");
-
- $angle = - floatval($angle);
- if ($angle < 0)
- $angle = 360 + $angle;
- $angle = $angle % 360;
-
- $this->font->writeText($this->image, $x, $y, $text, $angle);
- }
-
- /**
- * A magic method that allows you to call any PHP function that starts with "image".
- *
- * This is a shortcut to call custom functions on the image handle.
- *
- * Example:
- *
- * $img = WideImage::load('pic.jpg');
- * $canvas = $img->getCanvas();
- * $canvas->filledRect(10, 10, 20, 30, $img->allocateColor(0, 0, 0));
- * $canvas->line(60, 80, 30, 100, $img->allocateColor(255, 0, 0));
- *
- */
- function __call($method, $params)
- {
- if (function_exists('image' . $method))
- {
- array_unshift($params, $this->handle);
- call_user_func_array('image' . $method, $params);
- }
- else
- throw new WideImage_InvalidCanvasMethodException("Function doesn't exist: image{$method}.");
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Coordinate.php b/admin/compiler/joomla_3/wideimage/Coordinate.php
deleted file mode 100644
index a3f6f6373..000000000
--- a/admin/compiler/joomla_3/wideimage/Coordinate.php
+++ /dev/null
@@ -1,208 +0,0 @@
- 'operand', 'value' => trim($current_operand));
-
- $current_operand = '';
- $flush_operand = false;
- }
-
- if ($flush_operator)
- {
- $tokens[] = array('type' => 'operator', 'value' => $char);
- $flush_operator = false;
- }
- }
- return $tokens;
- }
-
- /**
- * Evaluates the $coord relatively to $dim
- *
- * @param string $coord A numeric value or percent string
- * @param int $dim Dimension
- * @param int $sec_dim Secondary dimension (for align)
- * @return int Calculated value
- */
- static function evaluate($coord, $dim, $sec_dim = null)
- {
- $comp_regex = implode('|', self::$coord_align) . '|' . implode('|', self::$coord_numeric);
- if (preg_match("/^([+-])?({$comp_regex})$/", $coord, $matches))
- {
- $sign = intval($matches[1] . "1");
- $val = $matches[2];
- if (in_array($val, self::$coord_align))
- {
- if ($sec_dim === null)
- {
- switch ($val)
- {
- case 'left':
- case 'top':
- return 0;
- break;
- case 'center':
- case 'middle':
- return $sign * intval($dim / 2);
- break;
- case 'right':
- case 'bottom':
- return $sign * $dim;
- break;
- default:
- return null;
- }
- }
- else
- {
- switch ($val)
- {
- case 'left':
- case 'top':
- return 0;
- break;
- case 'center':
- case 'middle':
- return $sign * intval($dim / 2 - $sec_dim / 2);
- break;
- case 'right':
- case 'bottom':
- return $sign * ($dim - $sec_dim);
- break;
- default:
- return null;
- }
- }
- }
- elseif (substr($val, -1) === '%')
- return intval(round($sign * $dim * floatval(str_replace('%', '', $val)) / 100));
- else
- return $sign * intval(round($val));
- }
- }
-
- /**
- * Calculates and fixes a smart coordinate into a numeric value
- *
- * @param mixed $value Smart coordinate, relative to $dim
- * @param int $dim Coordinate to which $value is relative
- * @param int $sec_dim Secondary dimension (for align)
- * @return int Calculated value
- */
- static function fix($value, $dim, $sec_dim = null)
- {
- $coord_tokens = self::parse($value);
-
- if (count($coord_tokens) == 0 || $coord_tokens[count($coord_tokens) - 1]['type'] != 'operand')
- throw new WideImage_InvalidCoordinateException("Couldn't parse coordinate '$value' properly.");
-
- $value = 0;
- $operation = 1;
- foreach ($coord_tokens as $token)
- {
- if ($token['type'] == 'operand')
- {
- $operand_value = self::evaluate($token['value'], $dim, $sec_dim);
- if ($operation == 1)
- $value = $value + $operand_value;
- elseif ($operation == -1)
- $value = $value - $operand_value;
- else
- throw new WideImage_InvalidCoordinateException("Invalid coordinate syntax.");
-
- $operation = 0;
- }
- elseif ($token['type'] == 'operator')
- {
- if ($token['value'] == '-')
- {
- if ($operation == 0)
- $operation = -1;
- else
- $operation = $operation * -1;
- }
- elseif ($token['value'] == '+')
- {
- if ($operation == 0)
- $operation = '1';
- }
- }
- }
- return $value;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Exception.php b/admin/compiler/joomla_3/wideimage/Exception.php
deleted file mode 100644
index 0aae4f0f9..000000000
--- a/admin/compiler/joomla_3/wideimage/Exception.php
+++ /dev/null
@@ -1,31 +0,0 @@
-= 1 && $face <= 5)
- $this->font = $face;
- else
- $this->font = imageloadfont($face);
- $this->color = $color;
- }
-
- function writeText($image, $x, $y, $text)
- {
- imagestring($image->getHandle(), $this->font, $x, $y, $text, $this->color);
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Font/PS.php b/admin/compiler/joomla_3/wideimage/Font/PS.php
deleted file mode 100644
index 9359e2e5c..000000000
--- a/admin/compiler/joomla_3/wideimage/Font/PS.php
+++ /dev/null
@@ -1,60 +0,0 @@
-handle = imagepsloadfont($file);
- $this->size = $size;
- $this->color = $color;
- if ($bgcolor === null)
- $this->bgcolor = $color;
- else
- $this->color = $color;
- }
-
- function writeText($image, $x, $y, $text, $angle = 0)
- {
- if ($image->isTrueColor())
- $image->alphaBlending(true);
-
- imagepstext($image->getHandle(), $text, $this->handle, $this->size, $this->color, $this->bgcolor, $x, $y, 0, 0, $angle, 4);
- }
-
- function __destruct()
- {
- imagepsfreefont($this->handle);
- $this->handle = null;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Font/TTF.php b/admin/compiler/joomla_3/wideimage/Font/TTF.php
deleted file mode 100644
index 10877117f..000000000
--- a/admin/compiler/joomla_3/wideimage/Font/TTF.php
+++ /dev/null
@@ -1,75 +0,0 @@
-face = $face;
- $this->size = $size;
- $this->color = $color;
- }
-
- /**
- * Writes text onto an image
- *
- * @param WideImage_Image $image
- * @param mixed $x smart coordinate
- * @param mixed $y smart coordinate
- * @param string $text
- * @param int $angle Angle in degrees clockwise
- */
- function writeText($image, $x, $y, $text, $angle = 0)
- {
- if ($image->isTrueColor())
- $image->alphaBlending(true);
-
- $box = imageftbbox($this->size, $angle, $this->face, $text);
- $obox = array(
- 'left' => min($box[0], $box[2], $box[4], $box[6]),
- 'top' => min($box[1], $box[3], $box[5], $box[7]),
- 'right' => max($box[0], $box[2], $box[4], $box[6]) - 1,
- 'bottom' => max($box[1], $box[3], $box[5], $box[7]) - 1
- );
- $obox['width'] = abs($obox['left']) + abs($obox['right']);
- $obox['height'] = abs($obox['top']) + abs($obox['bottom']);
-
- $x = WideImage_Coordinate::fix($x, $image->getWidth(), $obox['width']);
- $y = WideImage_Coordinate::fix($y, $image->getHeight(), $obox['height']);
-
- $fixed_x = $x - $obox['left'];
- $fixed_y = $y - $obox['top'];
-
- imagettftext($image->getHandle(), $this->size, $angle, $fixed_x, $fixed_y, $this->color, $this->face, $text);
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Image.php b/admin/compiler/joomla_3/wideimage/Image.php
deleted file mode 100644
index 3a9928000..000000000
--- a/admin/compiler/joomla_3/wideimage/Image.php
+++ /dev/null
@@ -1,964 +0,0 @@
-handle = $handle;
- }
-
- /**
- * Cleanup
- *
- * Destroys the handle via WideImage_Image::destroy() when called by the GC.
- */
- function __destruct()
- {
- $this->destroy();
- }
-
- /**
- * This method destroy the image handle, and releases the image resource.
- *
- * After this is called, the object doesn't hold a valid image any more.
- * No operation should be called after that.
- */
- function destroy()
- {
- if ($this->isValid() && !$this->handleReleased)
- imagedestroy($this->handle);
-
- $this->handle = null;
- }
-
- /**
- * Returns the GD image resource
- *
- * @return resource GD image resource
- */
- function getHandle()
- {
- return $this->handle;
- }
-
- /**
- * @return bool True, if the image object holds a valid GD image, false otherwise
- */
- function isValid()
- {
- return WideImage::isValidImageHandle($this->handle);
- }
-
- /**
- * Releases the handle
- */
- function releaseHandle()
- {
- $this->handleReleased = true;
- }
-
- /**
- * Saves an image to a file
- *
- * The file type is recognized from the $uri. If you save to a GIF8, truecolor images
- * are automatically converted to palette.
- *
- * This method supports additional parameters: quality (for jpeg images) and
- * compression quality and filters (for png images). See http://www.php.net/imagejpeg and
- * http://www.php.net/imagepng for details.
- *
- * Examples:
- *
- * // save to a GIF
- * $image->saveToFile('image.gif');
- *
- * // save to a PNG with compression=7 and no filters
- * $image->saveToFile('image.png', 7, PNG_NO_FILTER);
- *
- * // save to a JPEG with quality=80
- * $image->saveToFile('image.jpg', 80);
- *
- * // save to a JPEG with default quality=100
- * $image->saveToFile('image.jpg');
- *
- *
- * @param string $uri File location
- */
- function saveToFile($uri)
- {
- $mapper = WideImage_MapperFactory::selectMapper($uri, null);
- $args = func_get_args();
- array_unshift($args, $this->getHandle());
- $res = call_user_func_array(array($mapper, 'save'), $args);
- if (!$res)
- throw new WideImage_UnknownErrorWhileMappingException(get_class($mapper) . " returned an invalid result while saving to $uri");
- }
-
- /**
- * Returns binary string with image data in format specified by $format
- *
- * Additional parameters may be passed to the function. See WideImage_Image::saveToFile() for more details.
- *
- * @param string $format The format of the image
- * @return string The binary image data in specified format
- */
- function asString($format)
- {
- ob_start();
- $args = func_get_args();
- $args[0] = null;
- array_unshift($args, $this->getHandle());
-
- $mapper = WideImage_MapperFactory::selectMapper(null, $format);
- $res = call_user_func_array(array($mapper, 'save'), $args);
- if (!$res)
- throw new WideImage_UnknownErrorWhileMappingException(get_class($mapper) . " returned an invalid result while writing the image data");
-
- return ob_get_clean();
- }
-
- /**
- * Output a header to browser.
- *
- * @param $name Name of the header
- * @param $data Data
- */
- protected function writeHeader($name, $data)
- {
- header($name . ": " . $data);
- }
-
- /**
- * Outputs the image to browser
- *
- * Sets headers Content-length and Content-type, and echoes the image in the specified format.
- * All other headers (such as Content-disposition) must be added manually.
- *
- * Example:
- *
- * WideImage::load('image1.png')->resize(100, 100)->output('gif');
- *
- *
- * @param string $format Image format
- */
- function output($format)
- {
- $args = func_get_args();
- $data = call_user_func_array(array($this, 'asString'), $args);
-
- $this->writeHeader('Content-length', strlen($data));
- $this->writeHeader('Content-type', WideImage_MapperFactory::mimeType($format));
- echo $data;
- }
-
- /**
- * @return int Image width
- */
- function getWidth()
- {
- return imagesx($this->handle);
- }
-
- /**
- * @return int Image height
- */
- function getHeight()
- {
- return imagesy($this->handle);
- }
-
- /**
- * Allocate a color by RGB values.
- *
- * @param mixed $R Red-component value or an RGB array (with red, green, blue keys)
- * @param int $G If $R is int, this is the green component
- * @param int $B If $R is int, this is the blue component
- * @return int Image color index
- */
- function allocateColor($R, $G = null, $B = null)
- {
- if (is_array($R))
- return imageColorAllocate($this->handle, $R['red'], $R['green'], $R['blue']);
- else
- return imageColorAllocate($this->handle, $R, $G, $B);
- }
-
- /**
- * @return bool True if the image is transparent, false otherwise
- */
- function isTransparent()
- {
- return $this->getTransparentColor() >= 0;
- }
-
- /**
- * @return int Transparent color index
- */
- function getTransparentColor()
- {
- return imagecolortransparent($this->handle);
- }
-
- /**
- * Sets the current transparent color index. Only makes sense for palette images (8-bit).
- *
- * @param int $color Transparent color index
- */
- function setTransparentColor($color)
- {
- return imagecolortransparent($this->handle, $color);
- }
-
- /**
- * Returns a RGB array of the transparent color or null if none.
- *
- * @return mixed Transparent color RGBA array
- */
- function getTransparentColorRGB()
- {
- $total = imagecolorstotal($this->handle);
- $tc = $this->getTransparentColor();
-
- if ($tc >= $total && $total > 0)
- return null;
- else
- return $this->getColorRGB($tc);
- }
-
- /**
- * Returns a RGBA array for pixel at $x, $y
- *
- * @param int $x
- * @param int $y
- * @return array RGB array
- */
- function getRGBAt($x, $y)
- {
- return $this->getColorRGB($this->getColorAt($x, $y));
- }
-
- /**
- * Writes a pixel at the designated coordinates
- *
- * Takes an associative array of colours and uses getExactColor() to
- * retrieve the exact index color to write to the image with.
- *
- * @param int $x
- * @param int $y
- * @param array $color
- */
- function setRGBAt($x, $y, $color)
- {
- $this->setColorAt($x, $y, $this->getExactColor($color));
- }
-
- /**
- * Returns a color's RGB
- *
- * @param int $colorIndex Color index
- * @return mixed RGBA array for a color with index $colorIndex
- */
- function getColorRGB($colorIndex)
- {
- return imageColorsForIndex($this->handle, $colorIndex);
- }
-
- /**
- * Returns an index of the color at $x, $y
- *
- * @param int $x
- * @param int $y
- * @return int Color index for a pixel at $x, $y
- */
- function getColorAt($x, $y)
- {
- return imagecolorat($this->handle, $x, $y);
- }
-
- /**
- * Set the color index $color to a pixel at $x, $y
- *
- * @param int $x
- * @param int $y
- * @param int $color Color index
- */
- function setColorAt($x, $y, $color)
- {
- return imagesetpixel($this->handle, $x, $y, $color);
- }
-
- /**
- * Returns closest color index that matches the given RGB value. Uses
- * PHP's imagecolorclosest()
- *
- * @param mixed $R Red or RGBA array
- * @param int $G Green component (or null if $R is an RGB array)
- * @param int $B Blue component (or null if $R is an RGB array)
- * @return int Color index
- */
- function getClosestColor($R, $G = null, $B = null)
- {
- if (is_array($R))
- return imagecolorclosest($this->handle, $R['red'], $R['green'], $R['blue']);
- else
- return imagecolorclosest($this->handle, $R, $G, $B);
- }
-
- /**
- * Returns the color index that exactly matches the given RGB value. Uses
- * PHP's imagecolorexact()
- *
- * @param mixed $R Red or RGBA array
- * @param int $G Green component (or null if $R is an RGB array)
- * @param int $B Blue component (or null if $R is an RGB array)
- * @return int Color index
- */
- function getExactColor($R, $G = null, $B = null)
- {
- if (is_array($R))
- return imagecolorexact($this->handle, $R['red'], $R['green'], $R['blue']);
- else
- return imagecolorexact($this->handle, $R, $G, $B);
- }
-
- /**
- * Copies transparency information from $sourceImage. Optionally fills
- * the image with the transparent color at (0, 0).
- *
- * @param object $sourceImage
- * @param bool $fill True if you want to fill the image with transparent color
- */
- function copyTransparencyFrom($sourceImage, $fill = true)
- {
- if ($sourceImage->isTransparent())
- {
- $rgba = $sourceImage->getTransparentColorRGB();
- if ($rgba === null)
- return;
-
- if ($this->isTrueColor())
- {
- $rgba['alpha'] = 127;
- $color = $this->allocateColorAlpha($rgba);
- }
- else
- $color = $this->allocateColor($rgba);
-
- $this->setTransparentColor($color);
- if ($fill)
- $this->fill(0, 0, $color);
- }
- }
-
- /**
- * Fill the image at ($x, $y) with color index $color
- *
- * @param int $x
- * @param int $y
- * @param int $color
- */
- function fill($x, $y, $color)
- {
- return imagefill($this->handle, $x, $y, $color);
- }
-
- /**
- * Used internally to create Operation objects
- *
- * @param string $name
- * @return object
- */
- protected function getOperation($name)
- {
- return WideImage_OperationFactory::get($name);
- }
-
- /**
- * Returns the image's mask
- *
- * Mask is a greyscale image where the shade defines the alpha channel (black = transparent, white = opaque).
- *
- * For opaque images (JPEG), the result will be white. For images with single-color transparency (GIF, 8-bit PNG),
- * the areas with the transparent color will be black. For images with alpha channel transparenct,
- * the result will be alpha channel.
- *
- * @return WideImage_Image An image mask
- **/
- function getMask()
- {
- return $this->getOperation('GetMask')->execute($this);
- }
-
- /**
- * Resize the image to given dimensions.
- *
- * $width and $height are both smart coordinates. This means that you can pass any of these values in:
- * - positive or negative integer (100, -20, ...)
- * - positive or negative percent string (30%, -15%, ...)
- * - complex coordinate (50% - 20, 15 + 30%, ...)
- *
- * If $width is null, it's calculated proportionally from $height, and vice versa.
- *
- * Example (resize to half-size):
- *
- * $smaller = $image->resize('50%');
- *
- * $smaller = $image->resize('100', '100', 'inside', 'down');
- * is the same as
- * $smaller = $image->resizeDown(100, 100, 'inside');
- *
- *
- * @param mixed $width The new width (smart coordinate), or null.
- * @param mixed $height The new height (smart coordinate), or null.
- * @param string $fit 'inside', 'outside', 'fill'
- * @param string $scale 'down', 'up', 'any'
- * @return WideImage_Image The resized image
- */
- function resize($width = null, $height = null, $fit = 'inside', $scale = 'any')
- {
- return $this->getOperation('Resize')->execute($this, $width, $height, $fit, $scale);
- }
-
- /**
- * Same as WideImage_Image::resize(), but the image is only applied if it is larger then the given dimensions.
- * Otherwise, the resulting image retains the source's dimensions.
- *
- * @param int $width New width, smart coordinate
- * @param int $height New height, smart coordinate
- * @param string $fit 'inside', 'outside', 'fill'
- * @return WideImage_Image resized image
- */
- function resizeDown($width = null, $height = null, $fit = 'inside')
- {
- return $this->resize($width, $height, $fit, 'down');
- }
-
- /**
- * Same as WideImage_Image::resize(), but the image is only applied if it is smaller then the given dimensions.
- * Otherwise, the resulting image retains the source's dimensions.
- *
- * @param int $width New width, smart coordinate
- * @param int $height New height, smart coordinate
- * @param string $fit 'inside', 'outside', 'fill'
- * @return WideImage_Image resized image
- */
- function resizeUp($width = null, $height = null, $fit = 'inside')
- {
- return $this->resize($width, $height, $fit, 'up');
- }
-
- /**
- * Rotate the image for angle $angle clockwise.
- *
- * Preserves transparency. Has issues when saving to a BMP.
- *
- * @param int $angle Angle in degrees, clock-wise
- * @param int $bgColor color of the new background
- * @param bool $ignoreTransparent
- * @return WideImage_Image The rotated image
- */
- function rotate($angle, $bgColor = null, $ignoreTransparent = true)
- {
- return $this->getOperation('Rotate')->execute($this, $angle, $bgColor, $ignoreTransparent);
- }
-
- /**
- * This method lays the overlay (watermark) on the image.
- *
- * Hint: if the overlay is a truecolor image with alpha channel, you should leave $pct at 100.
- *
- * This operation supports alignment notation in coordinates:
- *
- * $watermark = WideImage::load('logo.gif');
- * $base = WideImage::load('picture.jpg');
- * $result = $base->merge($watermark, "right - 10", "bottom - 10", 50);
- * // applies a logo aligned to bottom-right corner with a 10 pixel margin
- *
- *
- * @param WideImage_Image $overlay The overlay image
- * @param mixed $left Left position of the overlay, smart coordinate
- * @param mixed $top Top position of the overlay, smart coordinate
- * @param int $pct The opacity of the overlay
- * @return WideImage_Image The merged image
- */
- function merge($overlay, $left = 0, $top = 0, $pct = 100)
- {
- return $this->getOperation('Merge')->execute($this, $overlay, $left, $top, $pct);
- }
-
- /**
- * Resizes the canvas of the image, but doesn't scale the content of the image
- *
- * This operation creates an empty canvas with dimensions $width x $height, filled with
- * background color $bg_color and draws the original image onto it at position [$pos_x, $pos_y].
- *
- * Arguments $width, $height, $pos_x and $pos_y are all smart coordinates. $width and $height are
- * relative to the current image size, $pos_x and $pos_y are relative to the newly calculated
- * canvas size. This can be confusing, but it makes sense. See the example below.
- *
- * The example below loads a 100x150 image and then resizes its canvas to 200% x 100%+20
- * (which evaluates to 200x170). The image is placed at position [10, center+20], which evaluates to [10, 30].
- *
- * $image = WideImage::load('someimage.jpg'); // 100x150
- * $white = $image->allocateColor(255, 255, 255);
- * $image->resizeCanvas('200%', '100% + 20', 10, 'center+20', $white);
- *
- *
- * The parameter $merge defines whether the original image should be merged onto the new canvas.
- * This means it blends transparent color and alpha colors into the background color. If set to false,
- * the original image is just copied over, preserving the transparency/alpha information.
- *
- * You can set the $scale parameter to limit when to resize the canvas. For example, if you want
- * to resize the canvas only if the image is smaller than the new size, but leave the image intact
- * if it's larger, set it to 'up'. Likewise, if you want to shrink the canvas, but don't want to
- * change images that are already smaller, set it to 'down'.
- *
- * @param mixed $width Width of the new canvas (smart coordinate, relative to current image width)
- * @param mixed $height Height of the new canvas (smart coordinate, relative to current image height)
- * @param mixed $pos_x x-position of the image (smart coordinate, relative to the new width)
- * @param mixed $pos_y y-position of the image (smart coordinate, relative to the new height)
- * @param int $bg_color Background color (created with allocateColor or allocateColorAlpha), defaults to null (tries to use a transparent color)
- * @param string $scale Possible values: 'up' (enlarge only), 'down' (downsize only), 'any' (resize precisely to $width x $height). Defaults to 'any'.
- * @param bool $merge Merge the original image (flatten alpha channel and transparency) or copy it over (preserve). Defaults to false.
- * @return WideImage_Image The resulting image with resized canvas
- */
- function resizeCanvas($width, $height, $pos_x, $pos_y, $bg_color = null, $scale = 'any', $merge = false)
- {
- return $this->getOperation('ResizeCanvas')->execute($this, $width, $height, $pos_x, $pos_y, $bg_color, $scale, $merge);
- }
-
- /**
- * Returns an image with round corners
- *
- * You can either set the corners' color or set them transparent.
- *
- * Note on $smoothness: 1 means jagged edges, 2 is much better, more than 4 doesn't noticeably improve the quality.
- * Rendering becomes increasingly slower if you increase smoothness.
- *
- * Example:
- *
- * $nice = $ugly->roundCorners(20, $ugly->allocateColor(255, 0, 0), 2);
- *
- *
- * Use $corners parameter to specify which corners to draw rounded. Possible values are
- * WideImage::SIDE_TOP_LEFT, WideImage::SIDE_TOP,
- * WideImage::SIDE_TOP_RIGHT, WideImage::SIDE_RIGHT,
- * WideImage::SIDE_BOTTOM_RIGHT, WideImage::SIDE_BOTTOM,
- * WideImage::SIDE_BOTTOM_LEFT, WideImage::SIDE_LEFT, and WideImage::SIDE_ALL.
- * You can specify any combination of corners with a + operation, see example below.
- *
- * Example:
- *
- * $white = $image->allocateColor(255, 255, 255);
- * $diagonal_corners = $image->roundCorners(15, $white, 2, WideImage::SIDE_TOP_LEFT + WideImage::SIDE_BOTTOM_RIGHT);
- * $right_corners = $image->roundCorners(15, $white, 2, WideImage::SIDE_RIGHT);
- *
- *
- * @param int $radius Radius of the corners
- * @param int $color The color of corners. If null, corners are rendered transparent (slower than using a solid color).
- * @param int $smoothness Specify the level of smoothness. Suggested values from 1 to 4.
- * @param int $corners Specify which corners to draw (defaults to WideImage::SIDE_ALL = all corners)
- * @return WideImage_Image The resulting image with round corners
- */
- function roundCorners($radius, $color = null, $smoothness = 2, $corners = 255)
- {
- return $this->getOperation('RoundCorners')->execute($this, $radius, $color, $smoothness, $corners);
- }
-
- /**
- * Returns an image with applied mask
- *
- * A mask is a grayscale image, where the shade determines the alpha channel. Black is fully transparent
- * and white is fully opaque.
- *
- * @param WideImage_Image $mask The mask image, greyscale
- * @param mixed $left Left coordinate, smart coordinate
- * @param mixed $top Top coordinate, smart coordinate
- * @return WideImage_Image The resulting image
- **/
- function applyMask($mask, $left = 0, $top = 0)
- {
- return $this->getOperation('ApplyMask')->execute($this, $mask, $left, $top);
- }
-
- /**
- * Applies a filter
- *
- * @param int $filter One of the IMG_FILTER_* constants
- * @param int $arg1
- * @param int $arg2
- * @param int $arg3
- * @param int $arg4
- * @return WideImage_Image
- */
- function applyFilter($filter, $arg1 = null, $arg2 = null, $arg3 = null, $arg4 = null)
- {
- return $this->getOperation('ApplyFilter')->execute($this, $filter, $arg1, $arg2, $arg3, $arg4);
- }
-
- /**
- * Applies convolution matrix with imageconvolution()
- *
- * @param array $matrix
- * @param float $div
- * @param float $offset
- * @return WideImage_Image
- */
- function applyConvolution($matrix, $div, $offset)
- {
- return $this->getOperation('ApplyConvolution')->execute($this, $matrix, $div, $offset);
- }
-
- /**
- * Returns a cropped rectangular portion of the image
- *
- * If the rectangle specifies area that is out of bounds, it's limited to the current image bounds.
- *
- * Examples:
- *
- * $cropped = $img->crop(10, 10, 150, 200); // crops a 150x200 rect at (10, 10)
- * $cropped = $img->crop(-100, -50, 100, 50); // crops a 100x50 rect at the right-bottom of the image
- * $cropped = $img->crop('25%', '25%', '50%', '50%'); // crops a 50%x50% rect from the center of the image
- *
- *
- * This operation supports alignment notation in left/top coordinates.
- * Example:
- *
- * $cropped = $img->crop("right", "bottom", 100, 200); // crops a 100x200 rect from right bottom
- * $cropped = $img->crop("center", "middle", 50, 30); // crops a 50x30 from the center of the image
- *
- *
- * @param mixed $left Left-coordinate of the crop rect, smart coordinate
- * @param mixed $top Top-coordinate of the crop rect, smart coordinate
- * @param mixed $width Width of the crop rect, smart coordinate
- * @param mixed $height Height of the crop rect, smart coordinate
- * @return WideImage_Image The cropped image
- **/
- function crop($left = 0, $top = 0, $width = '100%', $height = '100%')
- {
- return $this->getOperation('Crop')->execute($this, $left, $top, $width, $height);
- }
-
- /**
- * Performs an auto-crop on the image
- *
- * The image is auto-cropped from each of four sides. All sides are
- * scanned for pixels that differ from $base_color for more than
- * $rgb_threshold in absolute RGB difference. If more than $pixel_cutoff
- * differentiating pixels are found, that line is considered to be the crop line for the side.
- * If the line isn't different enough, the algorithm procedes to the next line
- * towards the other edge of the image.
- *
- * When the crop rectangle is found, it's enlarged by the $margin value on each of the four sides.
- *
- * @param int $margin Margin for the crop rectangle, can be negative.
- * @param int $rgb_threshold RGB difference which still counts as "same color".
- * @param int $pixel_cutoff How many pixels need to be different to mark a cut line.
- * @param int $base_color The base color index. If none specified (or null given), left-top pixel is used.
- * @return WideImage_Image The cropped image
- */
- function autoCrop($margin = 0, $rgb_threshold = 0, $pixel_cutoff = 1, $base_color = null)
- {
- return $this->getOperation('AutoCrop')->execute($this, $margin, $rgb_threshold, $pixel_cutoff, $base_color);
- }
-
- /**
- * Returns a negative of the image
- *
- * This operation differs from calling WideImage_Image::applyFilter(IMG_FILTER_NEGATIVE), because it's 8-bit and transparency safe.
- * This means it will return an 8-bit image, if the source image is 8-bit. If that 8-bit image has a palette transparency,
- * the resulting image will keep transparency.
- *
- * @return WideImage_Image negative of the image
- */
- function asNegative()
- {
- return $this->getOperation('AsNegative')->execute($this);
- }
-
- /**
- * Returns a grayscale copy of the image
- *
- * @return WideImage_Image grayscale copy
- **/
- function asGrayscale()
- {
- return $this->getOperation('AsGrayscale')->execute($this);
- }
-
- /**
- * Returns a mirrored copy of the image
- *
- * @return WideImage_Image Mirrored copy
- **/
- function mirror()
- {
- return $this->getOperation('Mirror')->execute($this);
- }
-
- /**
- * Applies the unsharp filter
- *
- * @param float $amount
- * @param float $radius
- * @param float $threshold
- * @return WideImage_Image Unsharpened copy of the image
- **/
- function unsharp($amount, $radius, $threshold)
- {
- return $this->getOperation('Unsharp')->execute($this, $amount, $radius, $threshold);
- }
-
- /**
- * Returns a flipped (mirrored over horizontal line) copy of the image
- *
- * @return WideImage_Image Flipped copy
- **/
- function flip()
- {
- return $this->getOperation('Flip')->execute($this);
- }
-
- /**
- * Corrects gamma on the image
- *
- * @param float $inputGamma
- * @param float $outputGamma
- * @return WideImage_Image Image with corrected gamma
- **/
- function correctGamma($inputGamma, $outputGamma)
- {
- return $this->getOperation('CorrectGamma')->execute($this, $inputGamma, $outputGamma);
- }
-
- /**
- * Adds noise to the image
- *
- * @author Tomasz Kapusta
- *
- * @param int $amount Number of noise pixels to add
- * @param string $type Type of noise 'salt&pepper', 'color' or 'mono'
- * @return WideImage_Image Image with noise added
- **/
- function addNoise($amount, $type)
- {
- return $this->getOperation('AddNoise')->execute($this, $amount, $type);
- }
-
- /**
- * Used internally to execute operations
- *
- * @param string $name
- * @param array $args
- * @return WideImage_Image
- */
- function __call($name, $args)
- {
- $op = $this->getOperation($name);
- array_unshift($args, $this);
- return call_user_func_array(array($op, 'execute'), $args);
- }
-
- /**
- * Returns an image in GIF or PNG format
- *
- * @return string
- */
- function __toString()
- {
- if ($this->isTransparent())
- return $this->asString('gif');
- else
- return $this->asString('png');
- }
-
- /**
- * Returns a copy of the image object
- *
- * @return WideImage_Image The copy
- **/
- function copy()
- {
- $dest = $this->doCreate($this->getWidth(), $this->getHeight());
- $dest->copyTransparencyFrom($this, true);
- $this->copyTo($dest, 0, 0);
- return $dest;
- }
-
- /**
- * Copies this image onto another image
- *
- * @param WideImage_Image $dest
- * @param int $left
- * @param int $top
- **/
- function copyTo($dest, $left = 0, $top = 0)
- {
- if (!imagecopy($dest->getHandle(), $this->handle, $left, $top, 0, 0, $this->getWidth(), $this->getHeight()))
- throw new WideImage_GDFunctionResultException("imagecopy() returned false");
- }
-
- /**
- * Returns the canvas object
- *
- * The Canvas object can be used to draw text and shapes on the image
- *
- * Examples:
- *
- * $img = WideImage::load('pic.jpg);
- * $canvas = $img->getCanvas();
- * $canvas->useFont('arial.ttf', 15, $img->allocateColor(200, 220, 255));
- * $canvas->writeText(10, 50, "Hello world!");
- *
- * $canvas->filledRectangle(10, 10, 80, 40, $img->allocateColor(255, 127, 255));
- * $canvas->line(60, 80, 30, 100, $img->allocateColor(255, 0, 0));
- * $img->saveToFile('new.png');
- *
- *
- * @return WideImage_Canvas The Canvas object
- **/
- function getCanvas()
- {
- if ($this->canvas == null)
- $this->canvas = new WideImage_Canvas($this);
- return $this->canvas;
- }
-
- /**
- * Returns true if the image is true-color, false otherwise
- *
- * @return bool
- **/
- abstract function isTrueColor();
-
- /**
- * Returns a true-color copy of the image
- *
- * @return WideImage_TrueColorImage
- **/
- abstract function asTrueColor();
-
- /**
- * Returns a palette copy (8bit) of the image
- *
- * @param int $nColors Number of colors in the resulting image, more than 0, less or equal to 255
- * @param bool $dither Use dithering or not
- * @param bool $matchPalette Set to true to use imagecolormatch() to match the resulting palette more closely to the original image
- * @return WideImage_Image
- **/
- abstract function asPalette($nColors = 255, $dither = null, $matchPalette = true);
-
- /**
- * Retrieve an image with selected channels
- *
- * Examples:
- *
- * $channels = $img->getChannels('red', 'blue');
- * $channels = $img->getChannels('alpha', 'green');
- * $channels = $img->getChannels(array('green', 'blue'));
- *
- *
- * @return WideImage_Image
- **/
- abstract function getChannels();
-
- /**
- * Returns an image without an alpha channel
- *
- * @return WideImage_Image
- **/
- abstract function copyNoAlpha();
-
- /**
- * Returns an array of serializable protected variables. Called automatically upon serialize().
- *
- * @return array
- */
- function __sleep()
- {
- $this->sdata = $this->asString('png');
- return array('sdata', 'handleReleased');
- }
-
- /**
- * Restores an image from serialization. Called automatically upon unserialize().
- */
- function __wakeup()
- {
- $temp_image = WideImage::loadFromString($this->sdata);
- $temp_image->releaseHandle();
- $this->handle = $temp_image->handle;
- $temp_image = null;
- $this->sdata = null;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Mapper/BMP.php b/admin/compiler/joomla_3/wideimage/Mapper/BMP.php
deleted file mode 100644
index 0620f0590..000000000
--- a/admin/compiler/joomla_3/wideimage/Mapper/BMP.php
+++ /dev/null
@@ -1,51 +0,0 @@
- 'JPEG',
- 'image/jpeg' => 'JPEG',
- 'image/pjpeg' => 'JPEG',
- 'image/gif' => 'GIF',
- 'image/png' => 'PNG'
- );
-
- /**
- * Returns a mapper, based on the $uri and $format
- *
- * @param string $uri File URI
- * @param string $format File format (extension or mime-type) or null
- * @return WideImage_Mapper
- **/
- static function selectMapper($uri, $format = null)
- {
- $format = self::determineFormat($uri, $format);
-
- if (array_key_exists($format, self::$mappers))
- return self::$mappers[$format];
-
- $mapperClassName = 'WideImage_Mapper_' . $format;
-
- if (!class_exists($mapperClassName, false))
- {
- $mapperFileName = WideImage::path() . 'Mapper/' . $format . '.php';
- if (file_exists($mapperFileName))
- require_once $mapperFileName;
- }
-
- if (class_exists($mapperClassName))
- {
- self::$mappers[$format] = new $mapperClassName();
- return self::$mappers[$format];
- }
-
- throw new WideImage_UnsupportedFormatException("Format '{$format}' is not supported.");
- }
-
- static function registerMapper($mapper_class_name, $mime_type, $extension)
- {
- self::$customMappers[$mime_type] = $mapper_class_name;
- self::$mimeTable[$mime_type] = $extension;
- }
-
- static function getCustomMappers()
- {
- return self::$customMappers;
- }
-
- static function determineFormat($uri, $format = null)
- {
- if ($format == null)
- $format = self::extractExtension($uri);
-
- // mime-type match
- if (preg_match('~[a-z]*/[a-z-]*~i', $format))
- if (isset(self::$mimeTable[strtolower($format)]))
- {
- return self::$mimeTable[strtolower($format)];
- }
-
- // clean the string
- $format = strtoupper(preg_replace('/[^a-z0-9_-]/i', '', $format));
- if ($format == 'JPG')
- $format = 'JPEG';
-
- return $format;
- }
-
- static function mimeType($format)
- {
- return array_search(strtoupper($format), self::$mimeTable);
- }
-
- static function extractExtension($uri)
- {
- $p = strrpos($uri, '.');
- if ($p === false)
- return '';
- else
- return substr($uri, $p + 1);
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/AddNoise.php b/admin/compiler/joomla_3/wideimage/Operation/AddNoise.php
deleted file mode 100644
index 5206c3ef3..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/AddNoise.php
+++ /dev/null
@@ -1,153 +0,0 @@
-asTrueColor(), $fun, $amount);
- }
-
- /**
- * Returns image with every pixel changed by specififed function
- *
- * @param WideImage_Image $image
- * @param str $function
- * @param int $value
- * @return WideImage_Image
- */
- function filter($image, $function, $value)
- {
- for ($y = 0; $y < $image->getHeight(); $y++)
- {
- for ($x = 0; $x< $image->getWidth(); $x++)
- {
- $rgb = imagecolorat($image->getHandle(), $x, $y);
-
- $a = ($rgb >> 24) & 0xFF;
- $r = ($rgb >> 16) & 0xFF;
- $g = ($rgb >> 8) & 0xFF;
- $b = $rgb & 0xFF;
-
-
- self::$function($r, $g, $b, $value);
-
- $color = imagecolorallocatealpha($image->getHandle(), $r, $g, $b, $a);
- imagesetpixel($image->getHandle(), $x, $y, $color);
- }
- }
- return $image;
- }
- /**
- * Adds color noise by altering given R,G,B values using specififed amount
- *
- * @param int $r
- * @param int $g
- * @param int $b
- * @param int $value
- * @return void
- */
- function colorNoise_fun(&$r, &$g, &$b, $amount)
- {
- $r = self::byte($r + mt_rand(0, $amount) - ($amount >> 1) );
- $g = self::byte($g + mt_rand(0, $amount) - ($amount >> 1) );
- $b = self::byte($b + mt_rand(0, $amount) - ($amount >> 1) );
- }
- /**
- * Adds mono noise by altering given R,G,B values using specififed amount
- *
- * @param int $r
- * @param int $g
- * @param int $b
- * @param int $value
- * @return void
- */
- function monoNoise_fun(&$r, &$g, &$b, $amount)
- {
- $rand = mt_rand(0, $amount) - ($amount >> 1);
-
- $r = self::byte($r + $rand);
- $g = self::byte($g + $rand);
- $b = self::byte($b + $rand);
- }
- /**
- * Adds salt&pepper noise by altering given R,G,B values using specififed amount
- *
- * @param int $r
- * @param int $g
- * @param int $b
- * @param int $value
- * @return void
- */
- function saltPepperNoise_fun(&$r, &$g, &$b, $amount)
- {
- if (mt_rand(0, 255 - $amount) != 0) return;
-
- $rand = mt_rand(0, 1);
- switch ($rand)
- {
- case 0 : $r = $g = $b = 0;
- break;
- case 1 : $r = $g = $b = 255;
- break;
- }
- }
- /**
- * Returns value within (0,255)
- *
- * @param int $b
- * @return int
- */
- function byte($b)
- {
- if ($b > 255) return 255;
- if ($b < 0) return 0;
- return (int) $b;
- }
-
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/ApplyConvolution.php b/admin/compiler/joomla_3/wideimage/Operation/ApplyConvolution.php
deleted file mode 100644
index 9a1c5f74c..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/ApplyConvolution.php
+++ /dev/null
@@ -1,48 +0,0 @@
-asTrueColor();
- if (!imageconvolution($new->getHandle(), $matrix, $div, $offset))
- throw new WideImage_GDFunctionResultException("imageconvolution() returned false");
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/ApplyFilter.php b/admin/compiler/joomla_3/wideimage/Operation/ApplyFilter.php
deleted file mode 100644
index ec6d210b2..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/ApplyFilter.php
+++ /dev/null
@@ -1,67 +0,0 @@
-asTrueColor();
-
- if (in_array($filter, self::$one_arg_filters))
- $res = imagefilter($new->getHandle(), $filter, $arg1);
- elseif (defined('IMG_FILTER_PIXELATE') && $filter == IMG_FILTER_PIXELATE)
- $res = imagefilter($new->getHandle(), $filter, $arg1, $arg2);
- elseif ($filter == IMG_FILTER_COLORIZE)
- $res = imagefilter($new->getHandle(), $filter, $arg1, $arg2, $arg3, $arg4);
- else
- $res = imagefilter($new->getHandle(), $filter);
-
- if (!$res)
- throw new WideImage_GDFunctionResultException("imagefilter() returned false");
-
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/ApplyMask.php b/admin/compiler/joomla_3/wideimage/Operation/ApplyMask.php
deleted file mode 100644
index 949213f0c..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/ApplyMask.php
+++ /dev/null
@@ -1,105 +0,0 @@
-getWidth(), $mask->getWidth());
- $top = WideImage_Coordinate::fix($top, $image->getHeight(), $mask->getHeight());
-
- $width = $image->getWidth();
- $mask_width = $mask->getWidth();
-
- $height = $image->getHeight();
- $mask_height = $mask->getHeight();
-
- $result = $image->asTrueColor();
-
- $result->alphaBlending(false);
- $result->saveAlpha(true);
-
- $srcTransparentColor = $result->getTransparentColor();
- if ($srcTransparentColor >= 0)
- {
- # this was here. works without.
- #$trgb = $image->getColorRGB($srcTransparentColor);
- #$trgb['alpha'] = 127;
- #$destTransparentColor = $result->allocateColorAlpha($trgb);
- #$result->setTransparentColor($destTransparentColor);
- $destTransparentColor = $srcTransparentColor;
- }
- else
- {
- $destTransparentColor = $result->allocateColorAlpha(255, 255, 255, 127);
- }
-
- for ($x = 0; $x < $width; $x++)
- for ($y = 0; $y < $height; $y++)
- {
- $mx = $x - $left;
- $my = $y - $top;
- if ($mx >= 0 && $mx < $mask_width && $my >= 0 && $my < $mask_height)
- {
- $srcColor = $image->getColorAt($x, $y);
- if ($srcColor == $srcTransparentColor)
- $destColor = $destTransparentColor;
- else
- {
- $maskRGB = $mask->getRGBAt($mx, $my);
- if ($maskRGB['red'] == 0)
- $destColor = $destTransparentColor;
- elseif ($srcColor >= 0)
- {
- $imageRGB = $image->getRGBAt($x, $y);
- $level = ($maskRGB['red'] / 255) * (1 - $imageRGB['alpha'] / 127);
- $imageRGB['alpha'] = 127 - round($level * 127);
- if ($imageRGB['alpha'] == 127)
- $destColor = $destTransparentColor;
- else
- $destColor = $result->allocateColorAlpha($imageRGB);
- }
- else
- $destColor = $destTransparentColor;
- }
- $result->setColorAt($x, $y, $destColor);
- }
- }
- return $result;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/AsGrayscale.php b/admin/compiler/joomla_3/wideimage/Operation/AsGrayscale.php
deleted file mode 100644
index dc72f8554..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/AsGrayscale.php
+++ /dev/null
@@ -1,49 +0,0 @@
-asTrueColor();
- if (!imagefilter($new->getHandle(), IMG_FILTER_GRAYSCALE))
- throw new WideImage_GDFunctionResultException("imagefilter() returned false");
-
- if (!$image->isTrueColor())
- $new = $new->asPalette();
-
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/AsNegative.php b/admin/compiler/joomla_3/wideimage/Operation/AsNegative.php
deleted file mode 100644
index 9a13c4297..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/AsNegative.php
+++ /dev/null
@@ -1,63 +0,0 @@
-isTrueColor();
- $transparent = $image->isTransparent();
-
- if ($palette && $transparent)
- $tcrgb = $image->getTransparentColorRGB();
-
- $new = $image->asTrueColor();
- if (!imagefilter($new->getHandle(), IMG_FILTER_NEGATE))
- throw new WideImage_GDFunctionResultException("imagefilter() returned false");
-
- if ($palette)
- {
- $new = $new->asPalette();
- if ($transparent)
- {
- $irgb = array('red' => 255 - $tcrgb['red'], 'green' => 255 - $tcrgb['green'], 'blue' => 255 - $tcrgb['blue'], 'alpha' => 127);
- // needs imagecolorexactalpha instead of imagecolorexact, otherwise doesn't work on some transparent GIF images
- $new_tci = imagecolorexactalpha($new->getHandle(), $irgb['red'], $irgb['green'], $irgb['blue'], 127);
- $new->setTransparentColor($new_tci);
- }
- }
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/AutoCrop.php b/admin/compiler/joomla_3/wideimage/Operation/AutoCrop.php
deleted file mode 100644
index 2fd0909e6..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/AutoCrop.php
+++ /dev/null
@@ -1,162 +0,0 @@
-getRGBAt(0, 0);
- else
- {
- if ($base_color < 0)
- return $img->copy();
-
- $rgb_base = $img->getColorRGB($base_color);
- }
-
- $cut_rect = array('left' => 0, 'top' => 0, 'right' => $img->getWidth() - 1, 'bottom' => $img->getHeight() - 1);
-
- for ($y = 0; $y <= $cut_rect['bottom']; $y++)
- {
- $count = 0;
- for ($x = 0; $x <= $cut_rect['right']; $x++)
- {
- $rgb = $img->getRGBAt($x, $y);
- $diff = abs($rgb['red'] - $rgb_base['red']) + abs($rgb['green'] - $rgb_base['green']) + abs($rgb['blue'] - $rgb_base['blue']);
- if ($diff > $rgb_threshold)
- {
- $count++;
- if ($count >= $pixel_cutoff)
- {
- $cut_rect['top'] = $y;
- break 2;
- }
- }
- }
- }
-
- for ($y = $img->getHeight() - 1; $y >= $cut_rect['top']; $y--)
- {
- $count = 0;
- for ($x = 0; $x <= $cut_rect['right']; $x++)
- {
- $rgb = $img->getRGBAt($x, $y);
- $diff = abs($rgb['red'] - $rgb_base['red']) + abs($rgb['green'] - $rgb_base['green']) + abs($rgb['blue'] - $rgb_base['blue']);
- if ($diff > $rgb_threshold)
- {
- $count++;
- if ($count >= $pixel_cutoff)
- {
- $cut_rect['bottom'] = $y;
- break 2;
- }
- }
- }
- }
-
- for ($x = 0; $x <= $cut_rect['right']; $x++)
- {
- $count = 0;
- for ($y = $cut_rect['top']; $y <= $cut_rect['bottom']; $y++)
- {
- $rgb = $img->getRGBAt($x, $y);
- $diff = abs($rgb['red'] - $rgb_base['red']) + abs($rgb['green'] - $rgb_base['green']) + abs($rgb['blue'] - $rgb_base['blue']);
- if ($diff > $rgb_threshold)
- {
- $count++;
- if ($count >= $pixel_cutoff)
- {
- $cut_rect['left'] = $x;
- break 2;
- }
- }
- }
- }
-
- for ($x = $cut_rect['right']; $x >= $cut_rect['left']; $x--)
- {
- $count = 0;
- for ($y = $cut_rect['top']; $y <= $cut_rect['bottom']; $y++)
- {
- $rgb = $img->getRGBAt($x, $y);
- $diff = abs($rgb['red'] - $rgb_base['red']) + abs($rgb['green'] - $rgb_base['green']) + abs($rgb['blue'] - $rgb_base['blue']);
- if ($diff > $rgb_threshold)
- {
- $count++;
- if ($count >= $pixel_cutoff)
- {
- $cut_rect['right'] = $x;
- break 2;
- }
- }
- }
- }
-
- $cut_rect = array(
- 'left' => $cut_rect['left'] - $margin,
- 'top' => $cut_rect['top'] - $margin,
- 'right' => $cut_rect['right'] + $margin,
- 'bottom' => $cut_rect['bottom'] + $margin
- );
-
- if ($cut_rect['left'] < 0)
- $cut_rect['left'] = 0;
-
- if ($cut_rect['top'] < 0)
- $cut_rect['top'] = 0;
-
- if ($cut_rect['right'] >= $img->getWidth())
- $cut_rect['right'] = $img->getWidth() - 1;
-
- if ($cut_rect['bottom'] >= $img->getHeight())
- $cut_rect['bottom'] = $img->getHeight() - 1;
-
- return $img->crop($cut_rect['left'], $cut_rect['top'], $cut_rect['right'] - $cut_rect['left'] + 1, $cut_rect['bottom'] - $cut_rect['top'] + 1);
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/CopyChannelsPalette.php b/admin/compiler/joomla_3/wideimage/Operation/CopyChannelsPalette.php
deleted file mode 100644
index 048975005..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/CopyChannelsPalette.php
+++ /dev/null
@@ -1,90 +0,0 @@
- 0, 'green' => 0, 'blue' => 0);
- if (isset($channels['alpha']))
- unset($channels['alpha']);
-
- $width = $img->getWidth();
- $height = $img->getHeight();
- $copy = WideImage_PaletteImage::create($width, $height);
-
- if ($img->isTransparent())
- {
- $otci = $img->getTransparentColor();
- $TRGB = $img->getColorRGB($otci);
- $tci = $copy->allocateColor($TRGB);
- }
- else
- {
- $otci = null;
- $tci = null;
- }
-
- for ($x = 0; $x < $width; $x++)
- for ($y = 0; $y < $height; $y++)
- {
- $ci = $img->getColorAt($x, $y);
- if ($ci === $otci)
- {
- $copy->setColorAt($x, $y, $tci);
- continue;
- }
- $RGB = $img->getColorRGB($ci);
-
- $newRGB = $blank;
- foreach ($channels as $channel)
- $newRGB[$channel] = $RGB[$channel];
-
- $color = $copy->getExactColor($newRGB);
- if ($color == -1)
- $color = $copy->allocateColor($newRGB);
-
- $copy->setColorAt($x, $y, $color);
- }
-
- if ($img->isTransparent())
- $copy->setTransparentColor($tci);
-
- return $copy;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/CopyChannelsTrueColor.php b/admin/compiler/joomla_3/wideimage/Operation/CopyChannelsTrueColor.php
deleted file mode 100644
index bf39520cd..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/CopyChannelsTrueColor.php
+++ /dev/null
@@ -1,67 +0,0 @@
- 0, 'green' => 0, 'blue' => 0, 'alpha' => 0);
-
- $width = $img->getWidth();
- $height = $img->getHeight();
- $copy = WideImage_TrueColorImage::create($width, $height);
-
- if (count($channels) > 0)
- for ($x = 0; $x < $width; $x++)
- for ($y = 0; $y < $height; $y++)
- {
- $RGBA = $img->getRGBAt($x, $y);
- $newRGBA = $blank;
- foreach ($channels as $channel)
- $newRGBA[$channel] = $RGBA[$channel];
-
- $color = $copy->getExactColorAlpha($newRGBA);
- if ($color == -1)
- $color = $copy->allocateColorAlpha($newRGBA);
-
- $copy->setColorAt($x, $y, $color);
- }
-
- return $copy;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/CorrectGamma.php b/admin/compiler/joomla_3/wideimage/Operation/CorrectGamma.php
deleted file mode 100644
index 49562f1d3..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/CorrectGamma.php
+++ /dev/null
@@ -1,48 +0,0 @@
-copy();
- if (!imagegammacorrect($new->getHandle(), $input_gamma, $output_gamma))
- throw new WideImage_GDFunctionResultException("imagegammacorrect() returned false");
-
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/Crop.php b/admin/compiler/joomla_3/wideimage/Operation/Crop.php
deleted file mode 100644
index 6a9d4f5b3..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/Crop.php
+++ /dev/null
@@ -1,86 +0,0 @@
-getWidth(), $width);
- $height = WideImage_Coordinate::fix($height, $img->getHeight(), $height);
- $left = WideImage_Coordinate::fix($left, $img->getWidth(), $width);
- $top = WideImage_Coordinate::fix($top, $img->getHeight(), $height);
- if ($left < 0)
- {
- $width = $left + $width;
- $left = 0;
- }
-
- if ($width > $img->getWidth() - $left)
- $width = $img->getWidth() - $left;
-
- if ($top < 0)
- {
- $height = $top + $height;
- $top = 0;
- }
-
- if ($height > $img->getHeight() - $top)
- $height = $img->getHeight() - $top;
-
- if ($width <= 0 || $height <= 0)
- throw new WideImage_Exception("Can't crop outside of an image.");
-
- $new = $img->doCreate($width, $height);
-
- if ($img->isTransparent() || $img instanceof WideImage_PaletteImage)
- {
- $new->copyTransparencyFrom($img);
- if (!imagecopyresized($new->getHandle(), $img->getHandle(), 0, 0, $left, $top, $width, $height, $width, $height))
- throw new WideImage_GDFunctionResultException("imagecopyresized() returned false");
- }
- else
- {
- $new->alphaBlending(false);
- $new->saveAlpha(true);
- if (!imagecopyresampled($new->getHandle(), $img->getHandle(), 0, 0, $left, $top, $width, $height, $width, $height))
- throw new WideImage_GDFunctionResultException("imagecopyresampled() returned false");
- }
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/Flip.php b/admin/compiler/joomla_3/wideimage/Operation/Flip.php
deleted file mode 100644
index d2f189c7b..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/Flip.php
+++ /dev/null
@@ -1,54 +0,0 @@
-copy();
-
- $width = $image->getWidth();
- $height = $image->getHeight();
-
- if ($new->isTransparent())
- imagefilledrectangle($new->getHandle(), 0, 0, $width, $height, $new->getTransparentColor());
-
- for ($y = 0; $y < $height; $y++)
- if (!imagecopy($new->getHandle(), $image->getHandle(), 0, $y, 0, $height - $y - 1, $width, 1))
- throw new WideImage_GDFunctionResultException("imagecopy() returned false");
-
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/GetMask.php b/admin/compiler/joomla_3/wideimage/Operation/GetMask.php
deleted file mode 100644
index f203a91d6..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/GetMask.php
+++ /dev/null
@@ -1,67 +0,0 @@
-getWidth();
- $height = $image->getHeight();
-
- $mask = WideImage_TrueColorImage::create($width, $height);
- $mask->setTransparentColor(-1);
- $mask->alphaBlending(false);
- $mask->saveAlpha(false);
-
- for ($i = 0; $i <= 255; $i++)
- $greyscale[$i] = ImageColorAllocate($mask->getHandle(), $i, $i, $i);
-
- imagefilledrectangle($mask->getHandle(), 0, 0, $width, $height, $greyscale[255]);
-
- $transparentColor = $image->getTransparentColor();
- $alphaToGreyRatio = 255 / 127;
- for ($x = 0; $x < $width; $x++)
- for ($y = 0; $y < $height; $y++)
- {
- $color = $image->getColorAt($x, $y);
- if ($color == $transparentColor)
- $rgba['alpha'] = 127;
- else
- $rgba = $image->getColorRGB($color);
- imagesetpixel($mask->getHandle(), $x, $y, $greyscale[255 - round($rgba['alpha'] * $alphaToGreyRatio)]);
- }
- return $mask;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/Merge.php b/admin/compiler/joomla_3/wideimage/Operation/Merge.php
deleted file mode 100644
index ee897119b..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/Merge.php
+++ /dev/null
@@ -1,78 +0,0 @@
-getWidth(), $overlay->getWidth());
- $y = WideImage_Coordinate::fix($top, $base->getHeight(), $overlay->getHeight());
-
- $result = $base->asTrueColor();
- $result->alphaBlending(true);
- $result->saveAlpha(true);
-
- if ($pct <= 0)
- return $result;
-
- if ($pct < 100)
- {
- if (!imagecopymerge(
- $result->getHandle(),
- $overlay->getHandle(),
- $x, $y, 0, 0,
- $overlay->getWidth(),
- $overlay->getHeight(),
- $pct))
- throw new WideImage_GDFunctionResultException("imagecopymerge() returned false");
- }
- else
- {
- if (!imagecopy(
- $result->getHandle(),
- $overlay->getHandle(),
- $x, $y, 0, 0,
- $overlay->getWidth(),
- $overlay->getHeight()))
- throw new WideImage_GDFunctionResultException("imagecopy() returned false");
- }
-
- return $result;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/Mirror.php b/admin/compiler/joomla_3/wideimage/Operation/Mirror.php
deleted file mode 100644
index ebefbfc4f..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/Mirror.php
+++ /dev/null
@@ -1,55 +0,0 @@
-copy();
-
- $width = $image->getWidth();
- $height = $image->getHeight();
-
- if ($new->isTransparent())
- imagefilledrectangle($new->getHandle(), 0, 0, $width, $height, $new->getTransparentColor());
-
- for ($x = 0; $x < $width; $x++)
- {
- if (!imagecopy($new->getHandle(), $image->getHandle(), $x, 0, $width - $x - 1, 0, 1, $height))
- throw new WideImage_GDFunctionResultException("imagecopy() returned false");
- }
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/Resize.php b/admin/compiler/joomla_3/wideimage/Operation/Resize.php
deleted file mode 100644
index c495b7cd3..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/Resize.php
+++ /dev/null
@@ -1,157 +0,0 @@
-getWidth();
- $height = $img->getHeight();
- }
-
- if ($width !== null)
- $width = WideImage_Coordinate::fix($width, $img->getWidth());
-
- if ($height !== null)
- $height = WideImage_Coordinate::fix($height, $img->getHeight());
-
- if ($width === null)
- $width = floor($img->getWidth() * $height / $img->getHeight());
-
- if ($height === null)
- $height = floor($img->getHeight() * $width / $img->getWidth());
-
- if ($width === 0 || $height === 0)
- return array('width' => 0, 'height' => 0);
-
- if ($fit == null)
- $fit = 'inside';
-
- $dim = array();
- if ($fit == 'fill')
- {
- $dim['width'] = $width;
- $dim['height'] = $height;
- }
- elseif ($fit == 'inside' || $fit == 'outside')
- {
- $rx = $img->getWidth() / $width;
- $ry = $img->getHeight() / $height;
-
- if ($fit == 'inside')
- $ratio = ($rx > $ry) ? $rx : $ry;
- else
- $ratio = ($rx < $ry) ? $rx : $ry;
-
- $dim['width'] = round($img->getWidth() / $ratio);
- $dim['height'] = round($img->getHeight() / $ratio);
- }
- else
- throw new WideImage_Operation_InvalidFitMethodException("{$fit} is not a valid resize-fit method.");
-
- return $dim;
- }
-
- /**
- * Returns a resized image
- *
- * @param WideImage_Image $img
- * @param smart_coordinate $width
- * @param smart_coordinate $height
- * @param string $fit
- * @param string $scale
- * @return WideImage_Image
- */
- function execute($img, $width, $height, $fit, $scale)
- {
- $dim = $this->prepareDimensions($img, $width, $height, $fit);
- if (($scale === 'down' && ($dim['width'] >= $img->getWidth() && $dim['height'] >= $img->getHeight())) ||
- ($scale === 'up' && ($dim['width'] <= $img->getWidth() && $dim['height'] <= $img->getHeight())))
- $dim = array('width' => $img->getWidth(), 'height' => $img->getHeight());
-
- if ($dim['width'] <= 0 || $dim['height'] <= 0)
- throw new WideImage_Operation_InvalidResizeDimensionException("Both dimensions must be larger than 0.");
-
- if ($img->isTransparent() || $img instanceof WideImage_PaletteImage)
- {
- $new = WideImage_PaletteImage::create($dim['width'], $dim['height']);
- $new->copyTransparencyFrom($img);
- if (!imagecopyresized(
- $new->getHandle(),
- $img->getHandle(),
- 0, 0, 0, 0,
- $new->getWidth(),
- $new->getHeight(),
- $img->getWidth(),
- $img->getHeight()))
- throw new WideImage_GDFunctionResultException("imagecopyresized() returned false");
- }
- else
- {
- $new = WideImage_TrueColorImage::create($dim['width'], $dim['height']);
- $new->alphaBlending(false);
- $new->saveAlpha(true);
- if (!imagecopyresampled(
- $new->getHandle(),
- $img->getHandle(),
- 0, 0, 0, 0,
- $new->getWidth(),
- $new->getHeight(),
- $img->getWidth(),
- $img->getHeight()))
- throw new WideImage_GDFunctionResultException("imagecopyresampled() returned false");
- $new->alphaBlending(true);
- }
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/ResizeCanvas.php b/admin/compiler/joomla_3/wideimage/Operation/ResizeCanvas.php
deleted file mode 100644
index 8262b15ae..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/ResizeCanvas.php
+++ /dev/null
@@ -1,107 +0,0 @@
-getWidth());
- $new_height = WideImage_Coordinate::fix($height, $img->getHeight());
-
- if ($scale == 'down')
- {
- $new_width = min($new_width, $img->getWidth());
- $new_height = min($new_height, $img->getHeight());
- }
- elseif ($scale == 'up')
- {
- $new_width = max($new_width, $img->getWidth());
- $new_height = max($new_height, $img->getHeight());
- }
-
- $new = WideImage::createTrueColorImage($new_width, $new_height);
- if ($img->isTrueColor())
- {
- if ($color === null)
- $color = $new->allocateColorAlpha(0, 0, 0, 127);
- }
- else
- {
- imagepalettecopy($new->getHandle(), $img->getHandle());
-
- if ($img->isTransparent())
- {
- $new->copyTransparencyFrom($img);
- $tc_rgb = $img->getTransparentColorRGB();
- $t_color = $new->allocateColorAlpha($tc_rgb);
- }
-
- if ($color === null)
- {
- if ($img->isTransparent())
- $color = $t_color;
- else
- $color = $new->allocateColorAlpha(255, 0, 127, 127);
-
- imagecolortransparent($new->getHandle(), $color);
- }
- }
- $new->fill(0, 0, $color);
-
-
- $x = WideImage_Coordinate::fix($left, $new->getWidth(), $img->getWidth());
- $y = WideImage_Coordinate::fix($top, $new->getHeight(), $img->getHeight());
-
- // blending for truecolor images
- if ($img->isTrueColor())
- $new->alphaBlending($merge);
-
- // not-blending for palette images
- if (!$merge && !$img->isTrueColor() && isset($t_color))
- $new->getCanvas()->filledRectangle($x, $y, $x + $img->getWidth(), $y + $img->getHeight(), $t_color);
-
- $img->copyTo($new, $x, $y);
- return $new;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/Rotate.php b/admin/compiler/joomla_3/wideimage/Operation/Rotate.php
deleted file mode 100644
index 690b04f52..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/Rotate.php
+++ /dev/null
@@ -1,64 +0,0 @@
-copy();
-
- $image = $image->asTrueColor();
-
- if ($bgColor === null)
- {
- $bgColor = $image->getTransparentColor();
- if ($bgColor == -1)
- {
- $bgColor = $image->allocateColorAlpha(255, 255, 255, 127);
- imagecolortransparent($image->getHandle(), $bgColor);
- }
- }
- return new WideImage_TrueColorImage(imagerotate($image->getHandle(), $angle, $bgColor, $ignoreTransparent));
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/RoundCorners.php b/admin/compiler/joomla_3/wideimage/Operation/RoundCorners.php
deleted file mode 100644
index 22eb84991..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/RoundCorners.php
+++ /dev/null
@@ -1,114 +0,0 @@
- 16)
- $sample_ratio = 16;
- else
- $sample_ratio = $smoothness;
-
- $corner = WideImage::createTrueColorImage($radius * $sample_ratio, $radius * $sample_ratio);
- if ($color === null)
- {
- imagepalettecopy($corner->getHandle(), $image->getHandle());
- $bg_color = $corner->allocateColor(0, 0, 0);
-
- $corner->fill(0, 0, $bg_color);
- $fg_color = $corner->allocateColor(255, 255, 255);
- $corner->getCanvas()->filledEllipse($radius * $sample_ratio, $radius * $sample_ratio, $radius * 2 * $sample_ratio, $radius * 2 * $sample_ratio, $fg_color);
- $corner = $corner->resize($radius, $radius);
-
- $result = $image->asTrueColor();
-
- $tc = $result->getTransparentColor();
- if ($tc == -1)
- {
- $tc = $result->allocateColorAlpha(255, 255, 255, 127);
- imagecolortransparent($result->getHandle(), $tc);
- $result->setTransparentColor($tc);
- }
-
- if ($corners & WideImage::SIDE_TOP_LEFT || $corners & WideImage::SIDE_LEFT || $corners & WideImage::SIDE_TOP)
- $result = $result->applyMask($corner, -1, -1);
-
- $corner = $corner->rotate(90);
- if ($corners & WideImage::SIDE_TOP_RIGHT || $corners & WideImage::SIDE_TOP || $corners & WideImage::SIDE_RIGHT)
- $result = $result->applyMask($corner, $result->getWidth() - $corner->getWidth() + 1, -1, 100);
-
- $corner = $corner->rotate(90);
- if ($corners & WideImage::SIDE_BOTTOM_RIGHT || $corners & WideImage::SIDE_RIGHT || $corners & WideImage::SIDE_BOTTOM)
- $result = $result->applyMask($corner, $result->getWidth() - $corner->getWidth() + 1, $result->getHeight() - $corner->getHeight() + 1, 100);
-
- $corner = $corner->rotate(90);
- if ($corners & WideImage::SIDE_BOTTOM_LEFT || $corners & WideImage::SIDE_LEFT || $corners & WideImage::SIDE_BOTTOM)
- $result = $result->applyMask($corner, -1, $result->getHeight() - $corner->getHeight() + 1, 100);
-
- return $result;
- }
- else
- {
- $bg_color = $color;
-
- $corner->fill(0, 0, $bg_color);
- $fg_color = $corner->allocateColorAlpha(127, 127, 127, 127);
- $corner->getCanvas()->filledEllipse($radius * $sample_ratio, $radius * $sample_ratio, $radius * 2 * $sample_ratio, $radius * 2 * $sample_ratio, $fg_color);
- $corner = $corner->resize($radius, $radius);
-
- $result = $image->copy();
- if ($corners & WideImage::SIDE_TOP_LEFT || $corners & WideImage::SIDE_LEFT || $corners & WideImage::SIDE_TOP)
- $result = $result->merge($corner, -1, -1, 100);
-
- $corner = $corner->rotate(90);
- if ($corners & WideImage::SIDE_TOP_RIGHT || $corners & WideImage::SIDE_TOP || $corners & WideImage::SIDE_RIGHT)
- $result = $result->merge($corner, $result->getWidth() - $corner->getWidth() + 1, -1, 100);
-
- $corner = $corner->rotate(90);
- if ($corners & WideImage::SIDE_BOTTOM_RIGHT || $corners & WideImage::SIDE_RIGHT || $corners & WideImage::SIDE_BOTTOM)
- $result = $result->merge($corner, $result->getWidth() - $corner->getWidth() + 1, $result->getHeight() - $corner->getHeight() + 1, 100);
-
- $corner = $corner->rotate(90);
- if ($corners & WideImage::SIDE_BOTTOM_LEFT || $corners & WideImage::SIDE_LEFT || $corners & WideImage::SIDE_BOTTOM)
- $result = $result->merge($corner, -1, $result->getHeight() - $corner->getHeight() + 1, 100);
-
- return $result;
- }
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/Operation/Unsharp.php b/admin/compiler/joomla_3/wideimage/Operation/Unsharp.php
deleted file mode 100644
index 4c5087e39..000000000
--- a/admin/compiler/joomla_3/wideimage/Operation/Unsharp.php
+++ /dev/null
@@ -1,135 +0,0 @@
- 500) $amount = 500;
- $amount = $amount * 0.016;
- if ($radius > 50) $radius = 50;
- $radius = $radius * 2;
- if ($threshold > 255) $threshold = 255;
-
- $radius = abs(round($radius)); // Only integers make sense.
- if ($radius == 0) {
- return $image;
- }
-
- // Gaussian blur matrix
-
- $matrix = array(
- array(1, 2, 1),
- array(2, 4, 2),
- array(1, 2, 1)
- );
-
- $blurred = $image->applyConvolution($matrix, 16, 0);
-
- if($threshold > 0) {
- // Calculate the difference between the blurred pixels and the original
- // and set the pixels
- for ($x = 0; $x < $image->getWidth(); $x++) {
- for ($y = 0; $y < $image->getHeight(); $y++) {
- $rgbOrig = $image->getRGBAt($x, $y);
- $rOrig = $rgbOrig["red"];
- $gOrig = $rgbOrig["green"];
- $bOrig = $rgbOrig["blue"];
-
- $rgbBlur = $blurred->getRGBAt($x, $y);
- $rBlur = $rgbBlur["red"];
- $gBlur = $rgbBlur["green"];
- $bBlur = $rgbBlur["blue"];
-
- // When the masked pixels differ less from the original
- // than the threshold specifies, they are set to their original value.
- $rNew = (abs($rOrig - $rBlur) >= $threshold)
- ? max(0, min(255, ($amount * ($rOrig - $rBlur)) + $rOrig))
- : $rOrig;
- $gNew = (abs($gOrig - $gBlur) >= $threshold)
- ? max(0, min(255, ($amount * ($gOrig - $gBlur)) + $gOrig))
- : $gOrig;
- $bNew = (abs($bOrig - $bBlur) >= $threshold)
- ? max(0, min(255, ($amount * ($bOrig - $bBlur)) + $bOrig))
- : $bOrig;
- $rgbNew = array("red" => $rNew, "green" => $gNew, "blue" => $bNew, "alpha" => 0);
-
- if (($rOrig != $rNew) || ($gOrig != $gNew) || ($bOrig != $bNew)) {
- $image->setRGBAt($x, $y, $rgbNew);
- }
- }
- }
- }
- else {
- $w = $image->getWidth();
- $h = $image->getHeight();
- for ($x = 0; $x < $w; $x++) {
- for ($y = 0; $y < $h; $y++) {
- $rgbOrig = $image->getRGBAt($x, $y);
- $rOrig = $rgbOrig["red"];
- $gOrig = $rgbOrig["green"];
- $bOrig = $rgbOrig["blue"];
-
- $rgbBlur = $blurred->getRGBAt($x, $y);
- $rBlur = $rgbBlur["red"];
- $gBlur = $rgbBlur["green"];
- $bBlur = $rgbBlur["blue"];
-
- $rNew = ($amount * ($rOrig - $rBlur)) + $rOrig;
- if($rNew>255){$rNew=255;}
- elseif($rNew<0){$rNew=0;}
- $gNew = ($amount * ($gOrig - $gBlur)) + $gOrig;
- if($gNew>255){$gNew=255;}
- elseif($gNew<0){$gNew=0;}
- $bNew = ($amount * ($bOrig - $bBlur)) + $bOrig;
- if($bNew>255){$bNew=255;}
- elseif($bNew<0){$bNew=0;}
- $rgbNew = array("red" => $rNew, "green" => $gNew, "blue" => $bNew, "alpha" => 0);
-
- $image->setRGBAt($x, $y, $rgbNew);
- }
- }
- }
-
- return $image;
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/OperationFactory.php b/admin/compiler/joomla_3/wideimage/OperationFactory.php
deleted file mode 100644
index 3a5f36c49..000000000
--- a/admin/compiler/joomla_3/wideimage/OperationFactory.php
+++ /dev/null
@@ -1,57 +0,0 @@
-copy();
- }
-
- /**
- * Returns a copy of the image
- *
- * @param $trueColor True if the new image should be truecolor
- * @return WideImage_Image
- */
- protected function copyAsNew($trueColor = false)
- {
- $width = $this->getWidth();
- $height = $this->getHeight();
-
- if ($trueColor)
- $new = WideImage_TrueColorImage::create($width, $height);
- else
- $new = WideImage_PaletteImage::create($width, $height);
-
- // copy transparency of source to target
- if ($this->isTransparent())
- {
- $rgb = $this->getTransparentColorRGB();
- if (is_array($rgb))
- {
- $tci = $new->allocateColor($rgb['red'], $rgb['green'], $rgb['blue']);
- $new->fill(0, 0, $tci);
- $new->setTransparentColor($tci);
- }
- }
-
- imageCopy($new->getHandle(), $this->handle, 0, 0, 0, 0, $width, $height);
- return $new;
- }
-
- /**
- * (non-PHPdoc)
- * @see WideImage_Image#asTrueColor()
- */
- function asTrueColor()
- {
- $width = $this->getWidth();
- $height = $this->getHeight();
- $new = WideImage::createTrueColorImage($width, $height);
- if ($this->isTransparent())
- $new->copyTransparencyFrom($this);
- if (!imageCopy($new->getHandle(), $this->handle, 0, 0, 0, 0, $width, $height))
- throw new WideImage_GDFunctionResultException("imagecopy() returned false");
- return $new;
- }
-
- /**
- * (non-PHPdoc)
- * @see WideImage_Image#getChannels()
- */
- function getChannels()
- {
- $args = func_get_args();
- if (count($args) == 1 && is_array($args[0]))
- $args = $args[0];
- return WideImage_OperationFactory::get('CopyChannelsPalette')->execute($this, $args);
- }
-
- /**
- * (non-PHPdoc)
- * @see WideImage_Image#copyNoAlpha()
- */
- function copyNoAlpha()
- {
- return WideImage_Image::loadFromString($this->asString('png'));
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/TrueColorImage.php b/admin/compiler/joomla_3/wideimage/TrueColorImage.php
deleted file mode 100644
index a4addcdfa..000000000
--- a/admin/compiler/joomla_3/wideimage/TrueColorImage.php
+++ /dev/null
@@ -1,218 +0,0 @@
-alphaBlending(false);
- $this->saveAlpha(true);
- }
-
- /**
- * Factory method that creates a true-color image object
- *
- * @param int $width
- * @param int $height
- * @return WideImage_TrueColorImage
- */
- static function create($width, $height)
- {
- if ($width * $height <= 0 || $width < 0)
- throw new WideImage_InvalidImageDimensionException("Can't create an image with dimensions [$width, $height].");
-
- return new WideImage_TrueColorImage(imagecreatetruecolor($width, $height));
- }
-
- function doCreate($width, $height)
- {
- return self::create($width, $height);
- }
-
- function isTrueColor()
- {
- return true;
- }
-
- /**
- * Sets alpha blending mode via imagealphablending()
- *
- * @param bool $mode
- * @return bool
- */
- function alphaBlending($mode)
- {
- return imagealphablending($this->handle, $mode);
- }
-
- /**
- * Toggle if alpha channel should be saved with the image via imagesavealpha()
- *
- * @param bool $on
- * @return bool
- */
- function saveAlpha($on)
- {
- return imagesavealpha($this->handle, $on);
- }
-
- /**
- * Allocates a color and returns its index
- *
- * This method accepts either each component as an integer value,
- * or an associative array that holds the color's components in keys
- * 'red', 'green', 'blue', 'alpha'.
- *
- * @param mixed $R
- * @param int $G
- * @param int $B
- * @param int $A
- * @return int
- */
- function allocateColorAlpha($R, $G = null, $B = null, $A = null)
- {
- if (is_array($R))
- return imageColorAllocateAlpha($this->handle, $R['red'], $R['green'], $R['blue'], $R['alpha']);
- else
- return imageColorAllocateAlpha($this->handle, $R, $G, $B, $A);
- }
-
- /**
- * @see WideImage_Image#asPalette($nColors, $dither, $matchPalette)
- */
- function asPalette($nColors = 255, $dither = null, $matchPalette = true)
- {
- $nColors = intval($nColors);
- if ($nColors < 1)
- $nColors = 1;
- elseif ($nColors > 255)
- $nColors = 255;
-
- if ($dither === null)
- $dither = $this->isTransparent();
-
- $temp = $this->copy();
- imagetruecolortopalette($temp->handle, $dither, $nColors);
- if ($matchPalette == true && function_exists('imagecolormatch'))
- imagecolormatch($this->handle, $temp->handle);
-
- // The code below isn't working properly; it corrupts transparency on some palette->tc->palette conversions.
- // Why is this code here?
- /*
- if ($this->isTransparent())
- {
- $trgb = $this->getTransparentColorRGB();
- $tci = $temp->getClosestColor($trgb);
- $temp->setTransparentColor($tci);
- }
- /**/
-
- $temp->releaseHandle();
- return new WideImage_PaletteImage($temp->handle);
- }
-
- /**
- * Returns the index of the color that best match the given color components
- *
- * This method accepts either each component as an integer value,
- * or an associative array that holds the color's components in keys
- * 'red', 'green', 'blue', 'alpha'.
- *
- * @param mixed $R Red component value or an associative array
- * @param int $G Green component
- * @param int $B Blue component
- * @param int $A Alpha component
- * @return int The color index
- */
- function getClosestColorAlpha($R, $G = null, $B = null, $A = null)
- {
- if (is_array($R))
- return imagecolorclosestalpha($this->handle, $R['red'], $R['green'], $R['blue'], $R['alpha']);
- else
- return imagecolorclosestalpha($this->handle, $R, $G, $B, $A);
- }
-
- /**
- * Returns the index of the color that exactly match the given color components
- *
- * This method accepts either each component as an integer value,
- * or an associative array that holds the color's components in keys
- * 'red', 'green', 'blue', 'alpha'.
- *
- * @param mixed $R Red component value or an associative array
- * @param int $G Green component
- * @param int $B Blue component
- * @param int $A Alpha component
- * @return int The color index
- */
- function getExactColorAlpha($R, $G = null, $B = null, $A = null)
- {
- if (is_array($R))
- return imagecolorexactalpha($this->handle, $R['red'], $R['green'], $R['blue'], $R['alpha']);
- else
- return imagecolorexactalpha($this->handle, $R, $G, $B, $A);
- }
-
- /**
- * @see WideImage_Image#getChannels()
- */
- function getChannels()
- {
- $args = func_get_args();
- if (count($args) == 1 && is_array($args[0]))
- $args = $args[0];
- return WideImage_OperationFactory::get('CopyChannelsTrueColor')->execute($this, $args);
- }
-
- /**
- * (non-PHPdoc)
- * @see WideImage_Image#copyNoAlpha()
- */
- function copyNoAlpha()
- {
- $prev = $this->saveAlpha(false);
- $result = WideImage_Image::loadFromString($this->asString('png'));
- $this->saveAlpha($prev);
- //$result->releaseHandle();
- return $result;
- }
-
- /**
- * (non-PHPdoc)
- * @see WideImage_Image#asTrueColor()
- */
- function asTrueColor()
- {
- return $this->copy();
- }
- }
diff --git a/admin/compiler/joomla_3/wideimage/WideImage.php b/admin/compiler/joomla_3/wideimage/WideImage.php
deleted file mode 100644
index fd5419f5d..000000000
--- a/admin/compiler/joomla_3/wideimage/WideImage.php
+++ /dev/null
@@ -1,377 +0,0 @@
-
- * WideImage::registerCustomMapper('WideImage_Mapper_TGA', 'image/tga', 'tga');
- *
- *
- * @param string $mapper_class_name
- * @param string $mime_type
- * @param string $extension
- */
- static function registerCustomMapper($mapper_class_name, $mime_type, $extension)
- {
- WideImage_MapperFactory::registerMapper($mapper_class_name, $mime_type, strtoupper($extension));
- }
-
- /**
- * Loads an image from a file, URL, HTML input file field, binary string, or a valid image handle.
- * The image format is auto-detected.
- *
- * Currently supported formats: PNG, GIF, JPG, BMP, TGA, GD, GD2.
- *
- * This function analyzes the input and decides whether to use WideImage::loadFromHandle(),
- * WideImage::loadFromFile(), WideImage::loadFromUpload() or WideImage::loadFromString(),
- * all of which you can also call directly to spare WideImage some guessing.
- *
- * Arrays are supported for upload fields; it returns an array of loaded images.
- * To load only a single image from an array field, use WideImage::loadFromUpload('img', $i),
- * where $i is the index of the image you want to load.
- *
- *
- * $img = WideImage::load('http://url/image.png'); // image URL
- * $img = WideImage::load('/path/to/image.png'); // local file path
- * $img = WideImage::load('img'); // upload field name
- * $img = WideImage::load(imagecreatetruecolor(10, 10)); // a GD resource
- * $img = WideImage::load($image_data); // binary string containing image data
- *
- *
- * @param mixed $source File name, url, HTML file input field name, binary string, or a GD image resource
- * @return WideImage_Image WideImage_PaletteImage or WideImage_TrueColorImage instance
- */
- static function load($source)
- {
- $predictedSourceType = '';
-
- if ($source == '')
- $predictedSourceType = 'String';
-
- // Creating image via a valid resource
- if (!$predictedSourceType && self::isValidImageHandle($source))
- $predictedSourceType = 'Handle';
-
- // Check for binary string
- if (!$predictedSourceType)
- {
- // search first $binLength bytes (at a maximum) for ord<32 characters (binary image data)
- $binLength = 64;
- $sourceLength = strlen($source);
- $maxlen = ($sourceLength > $binLength) ? $binLength : $sourceLength;
- for ($i = 0; $i < $maxlen; $i++)
- if (ord($source[$i]) < 32)
- {
- $predictedSourceType = 'String';
- break;
- }
- }
-
- // Uploaded image (array uploads not supported)
- if (isset($_FILES[$source]) && isset($_FILES[$source]['tmp_name']))
- $predictedSourceType = 'Upload';
-
- // Otherwise, must be a file or an URL
- if (!$predictedSourceType)
- $predictedSourceType = 'File';
-
- return call_user_func(array('WideImage', 'loadFrom' . $predictedSourceType), $source);
- }
-
- /**
- * Create and load an image from a file or URL. The image format is auto-detected.
- *
- * @param string $uri File or url
- * @return WideImage_Image WideImage_PaletteImage or WideImage_TrueColorImage instance
- */
- static function loadFromFile($uri)
- {
- $data = file_get_contents($uri);
- $handle = @imagecreatefromstring($data);
- if (!self::isValidImageHandle($handle))
- {
- try
- {
- // try to find a mapper first
- $mapper = WideImage_MapperFactory::selectMapper($uri);
- if ($mapper)
- $handle = $mapper->load($uri);
- }
- catch (WideImage_UnsupportedFormatException $e)
- {
- // mapper not found
- }
-
- // try all custom mappers
- if (!self::isValidImageHandle($handle))
- {
- $custom_mappers = WideImage_MapperFactory::getCustomMappers();
- foreach ($custom_mappers as $mime_type => $mapper_class)
- {
- $mapper = WideImage_MapperFactory::selectMapper(null, $mime_type);
- $handle = $mapper->loadFromString($data);
- if (self::isValidImageHandle($handle))
- break;
- }
- }
- }
-
- if (!self::isValidImageHandle($handle))
- throw new WideImage_InvalidImageSourceException("File '{$uri}' appears to be an invalid image source.");
-
- return self::loadFromHandle($handle);
- }
-
- /**
- * Create and load an image from a string. Format is auto-detected.
- *
- * @param string $string Binary data, i.e. from BLOB field in the database
- * @return WideImage_Image WideImage_PaletteImage or WideImage_TrueColorImage instance
- */
- static function loadFromString($string)
- {
- if (strlen($string) < 128)
- throw new WideImage_InvalidImageSourceException("String doesn't contain image data.");
-
- $handle = @imagecreatefromstring($string);
- if (!self::isValidImageHandle($handle))
- {
- $custom_mappers = WideImage_MapperFactory::getCustomMappers();
- foreach ($custom_mappers as $mime_type => $mapper_class)
- {
- $mapper = WideImage_MapperFactory::selectMapper(null, $mime_type);
- $handle = $mapper->loadFromString($string);
- if (self::isValidImageHandle($handle))
- break;
- }
- }
-
- if (!self::isValidImageHandle($handle))
- throw new WideImage_InvalidImageSourceException("String doesn't contain valid image data.");
-
- return self::loadFromHandle($handle);
- }
-
- /**
- * Create and load an image from an image handle.
- *
- * Note: the resulting image object takes ownership of the passed
- * handle. When the newly-created image object is destroyed, the handle is
- * destroyed too, so it's not a valid image handle anymore. In order to
- * preserve the handle for use after object destruction, you have to call
- * WideImage_Image::releaseHandle() on the created image instance prior to its
- * destruction.
- *
- *
- * $handle = imagecreatefrompng('file.png');
- * $image = WideImage::loadFromHandle($handle);
- *
- *
- * @param resource $handle A valid GD image resource
- * @return WideImage_Image WideImage_PaletteImage or WideImage_TrueColorImage instance
- */
- static function loadFromHandle($handle)
- {
- if (!self::isValidImageHandle($handle))
- throw new WideImage_InvalidImageSourceException("Handle is not a valid GD image resource.");
-
- if (imageistruecolor($handle))
- return new WideImage_TrueColorImage($handle);
- else
- return new WideImage_PaletteImage($handle);
- }
-
- /**
- * This method loads a file from the $_FILES array. The image format is auto-detected.
- *
- * You only have to pass the field name as the parameter. For array fields, this function will
- * return an array of image objects, unless you specify the $index parameter, which will
- * load the desired image.
- *
- * @param $field_name Name of the key in $_FILES array
- * @param int $index The index of the file to load (if the input field is an array)
- * @return WideImage_Image The loaded image
- */
- static function loadFromUpload($field_name, $index = null)
- {
- if (!array_key_exists($field_name, $_FILES))
- throw new WideImage_InvalidImageSourceException("Upload field '{$field_name}' doesn't exist.");
-
- if (is_array($_FILES[$field_name]['tmp_name']))
- {
- if (isset($_FILES[$field_name]['tmp_name'][$index]))
- $filename = $_FILES[$field_name]['tmp_name'][$index];
- else
- {
- $result = array();
- foreach ($_FILES[$field_name]['tmp_name'] as $idx => $tmp_name)
- $result[$idx] = self::loadFromFile($tmp_name);
- return $result;
- }
- }
- else
- $filename = $_FILES[$field_name]['tmp_name'];
-
- if (!file_exists($filename))
- throw new WideImage_InvalidImageSourceException("Uploaded file doesn't exist.");
- return self::loadFromFile($filename);
- }
-
- /**
- * Factory method for creating a palette image
- *
- * @param int $width
- * @param int $height
- * @return WideImage_PaletteImage
- */
- static function createPaletteImage($width, $height)
- {
- return WideImage_PaletteImage::create($width, $height);
- }
-
- /**
- * Factory method for creating a true-color image
- *
- * @param int $width
- * @param int $height
- * @return WideImage_TrueColorImage
- */
- static function createTrueColorImage($width, $height)
- {
- return WideImage_TrueColorImage::create($width, $height);
- }
-
- /**
- * Check whether the given handle is a valid GD resource
- *
- * @param mixed $handle The variable to check
- * @return bool
- */
- static function isValidImageHandle($handle)
- {
- return (is_resource($handle) && get_resource_type($handle) == 'gd');
- }
-
- /**
- * Throws exception if the handle isn't a valid GD resource
- *
- * @param mixed $handle The variable to check
- */
- static function assertValidImageHandle($handle)
- {
- if (!self::isValidImageHandle($handle))
- throw new WideImage_InvalidImageHandleException("{$handle} is not a valid image handle.");
- }
- }
-
- WideImage::checkGD();
-
- WideImage::registerCustomMapper('WideImage_Mapper_BMP', 'image/bmp', 'bmp');
- WideImage::registerCustomMapper('WideImage_Mapper_TGA', 'image/tga', 'tga');
-
\ No newline at end of file
diff --git a/admin/compiler/joomla_3/wideimage/vendor/de77/index.html b/admin/compiler/joomla_3/wideimage/vendor/de77/index.html
deleted file mode 100644
index fa6d84e80..000000000
--- a/admin/compiler/joomla_3/wideimage/vendor/de77/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/admin/compiler/joomla_3/wideimage/vendor/index.html b/admin/compiler/joomla_3/wideimage/vendor/index.html
deleted file mode 100644
index fa6d84e80..000000000
--- a/admin/compiler/joomla_3/wideimage/vendor/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/admin/componentbuilder.php b/admin/componentbuilder.php
index c7ecaec73..db43e39fe 100644
--- a/admin/componentbuilder.php
+++ b/admin/componentbuilder.php
@@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
- @version 2.2.6
- @build 20th January, 2017
+ @version 2.2.9
+ @build 1st February, 2017
@created 30th April, 2015
@package Component Builder
@subpackage componentbuilder.php
diff --git a/admin/controller.php b/admin/controller.php
index 1945f5c9d..26f25a1f5 100644
--- a/admin/controller.php
+++ b/admin/controller.php
@@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
- @version 2.2.6
- @build 20th January, 2017
+ @version 2.2.9
+ @build 1st February, 2017
@created 30th April, 2015
@package Component Builder
@subpackage controller.php
@@ -95,6 +95,7 @@ class ComponentbuilderController extends JControllerLegacy
'template' => 'templates',
'layout' => 'layouts',
'dynamic_get' => 'dynamic_gets',
+ 'custom_code' => 'custom_codes',
'snippet' => 'snippets',
'field' => 'fields',
'fieldtype' => 'fieldtypes',
diff --git a/admin/controllers/admin_view.php b/admin/controllers/admin_view.php
index 393cc7340..e615c6136 100644
--- a/admin/controllers/admin_view.php
+++ b/admin/controllers/admin_view.php
@@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
- @version 2.2.6
- @build 20th January, 2017
+ @version @update number 94 of this MVC
+ @build 13th January, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin_view.php
diff --git a/admin/controllers/admin_views.php b/admin/controllers/admin_views.php
index ae338c812..ac55ad104 100644
--- a/admin/controllers/admin_views.php
+++ b/admin/controllers/admin_views.php
@@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
- @version 2.2.6
- @build 20th January, 2017
+ @version @update number 94 of this MVC
+ @build 13th January, 2017
@created 30th April, 2015
@package Component Builder
@subpackage admin_views.php
diff --git a/admin/controllers/ajax.json.php b/admin/controllers/ajax.json.php
index f62752caf..05b8d2ced 100644
--- a/admin/controllers/ajax.json.php
+++ b/admin/controllers/ajax.json.php
@@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
- @version 2.2.6
- @build 20th January, 2017
+ @version 2.2.9
+ @build 1st February, 2017
@created 30th April, 2015
@package Component Builder
@subpackage ajax.json.php
diff --git a/admin/controllers/compiler.php b/admin/controllers/compiler.php
index 029049bb5..9ffeca6f7 100644
--- a/admin/controllers/compiler.php
+++ b/admin/controllers/compiler.php
@@ -10,8 +10,8 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
- @version 2.2.6
- @build 20th January, 2017
+ @version 2.2.9
+ @build 1st February, 2017
@created 30th April, 2015
@package Component Builder
@subpackage compiler.php
diff --git a/admin/controllers/component.php b/admin/controllers/component.php
index 525e3cd70..df24d3e84 100644
--- a/admin/controllers/component.php
+++ b/admin/controllers/component.php
@@ -10,9 +10,9 @@
|_|
/-------------------------------------------------------------------------------------------------------------------------------/
- @version 2.2.6
- @build 20th January, 2017
- @created 30th April, 2015
+ @version @update number 77 of this MVC
+ @build 26th December, 2016
+ @created 6th May, 2015
@package Component Builder
@subpackage component.php
@author Llewellyn van der Merwe