summaryrefslogtreecommitdiffstats
path: root/pts-core
diff options
context:
space:
mode:
authorMichael Larabel <michael@phx-laptop.(none)>2008-12-26 14:32:47 -0500
committerMichael Larabel <michael@phx-laptop.(none)>2008-12-26 14:32:47 -0500
commit639536c7c3dd92e3ecb77c5287a24c72a521ffac (patch)
tree16ea2d646b0ee4126d212fad97049b4906de07db /pts-core
parent05b141aa210e2d50db0f665d6f54ba43868696e3 (diff)
downloadphoronix-test-suite-upstream-639536c7c3dd92e3ecb77c5287a24c72a521ffac.tar.gz
phoronix-test-suite-upstream-639536c7c3dd92e3ecb77c5287a24c72a521ffac.tar.xz
phoronix-test-suite-upstream-639536c7c3dd92e3ecb77c5287a24c72a521ffac.zip
bilde_renderer: Add support for dynamically resizing the image drawing
buffer
Diffstat (limited to 'pts-core')
-rw-r--r--pts-core/objects/bilde_renderer/bilde_png_renderer.php35
-rw-r--r--pts-core/objects/bilde_renderer/bilde_renderer.php4
-rw-r--r--pts-core/objects/bilde_renderer/bilde_svg_renderer.php28
3 files changed, 50 insertions, 17 deletions
diff --git a/pts-core/objects/bilde_renderer/bilde_png_renderer.php b/pts-core/objects/bilde_renderer/bilde_png_renderer.php
index 68e0347..c03ff3a 100644
--- a/pts-core/objects/bilde_renderer/bilde_png_renderer.php
+++ b/pts-core/objects/bilde_renderer/bilde_png_renderer.php
@@ -25,19 +25,22 @@ class bilde_png_renderer extends bilde_renderer
{
public function __construct($width, $height, $embed_identifiers = "")
{
- $this->image = imagecreate($width, $height);
-
- imageinterlace($this->image, true);
-
- if(function_exists("imageantialias"))
- {
- imageantialias($this->image, true);
- }
+ $this->image = $this->init_new_gd_image($width, $height);
+ $this->image_width = $width;
+ $this->image_height = $height;
}
public function render_image($output_file = null, $quality = 0)
{
return imagepng($this->image, $output_file, $quality);
}
+ public function resize_image($width, $height)
+ {
+ $img = $this->image;
+ $this->image = $this->init_new_gd_image($width, $height);
+ $this->image_width = $width;
+ $this->image_height = $height;
+ $this->image_copy_merge($img, 0, 0);
+ }
public function destroy_image()
{
imagedestroy($this->image);
@@ -199,6 +202,22 @@ class bilde_png_renderer extends bilde_renderer
return array($box_width, $box_height);
}
+
+ // Privates
+
+ private function init_new_gd_image($width, $height)
+ {
+ $img = imagecreate($width, $height);
+
+ imageinterlace($img, true);
+
+ if(function_exists("imageantialias"))
+ {
+ imageantialias($img, true);
+ }
+
+ return $img;
+ }
}
?>
diff --git a/pts-core/objects/bilde_renderer/bilde_renderer.php b/pts-core/objects/bilde_renderer/bilde_renderer.php
index 8b03675..1f11697 100644
--- a/pts-core/objects/bilde_renderer/bilde_renderer.php
+++ b/pts-core/objects/bilde_renderer/bilde_renderer.php
@@ -24,9 +24,13 @@
abstract class bilde_renderer
{
var $image;
+ var $image_width = -1;
+ var $image_height = -1;
+ var $embed_identifiers = null;
abstract function __construct($width, $height, $embed_identifiers = ""); // create the object
abstract function render_image($output_file = null, $quality = 0);
+ abstract function resize_image($width, $height);
abstract function destroy_image();
abstract function write_text_left($text_string, $font_type, $font_size, $font_color, $bound_x1, $bound_y1, $bound_x2, $bound_y2, $rotate_text = false);
diff --git a/pts-core/objects/bilde_renderer/bilde_svg_renderer.php b/pts-core/objects/bilde_renderer/bilde_svg_renderer.php
index 818f850..0169f75 100644
--- a/pts-core/objects/bilde_renderer/bilde_svg_renderer.php
+++ b/pts-core/objects/bilde_renderer/bilde_svg_renderer.php
@@ -25,21 +25,31 @@ class bilde_svg_renderer extends bilde_renderer
{
public function __construct($width, $height, $embed_identifiers = null)
{
- $this->image = "<?xml version=\"1.0\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n";
+ $this->image_width = $width;
+ $this->image_height = $height;
+ $this->embed_identifiers = $embed_identifiers;
+ }
+ public function resize_image($width, $height)
+ {
+ $this->image_width = $width;
+ $this->image_height = $height;
+ }
+ public function render_image($output_file = null, $quality = 0)
+ {
+ $svg_image = "<?xml version=\"1.0\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n";
- if(is_array($embed_identifiers))
+ if(is_array($this->embed_identifiers))
{
- foreach($embed_identifiers as $key => $value)
+ foreach($this->embed_identifiers as $key => $value)
{
- $this->image .= "<!-- " . $key . ": " . $value . " -->\n";
+ $svg_image .= "<!-- " . $key . ": " . $value . " -->\n";
}
}
- $this->image .= "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewbox=\"0 0 " . $width . " " . $height . "\" width=\"" . $width . "\" height=\"" . $height . "\">\n\n";
- }
- public function render_image($output_file = null, $quality = 0)
- {
- return $output_file != null && @file_put_contents($output_file, $this->image . "\n\n</svg>");
+ $svg_image .= "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewbox=\"0 0 " . $this->image_width . " " . $this->image_height . "\" width=\"" . $this->image_width . "\" height=\"" . $this->image_height . "\">\n\n";
+ $svg_image .= $this->image . "\n\n</svg>";
+
+ return $output_file != null && @file_put_contents($output_file, $svg_image);
}
public function destroy_image()
{