diff options
author | Michael Larabel <michael@phx-laptop.(none)> | 2008-12-26 14:32:47 -0500 |
---|---|---|
committer | Michael Larabel <michael@phx-laptop.(none)> | 2008-12-26 14:32:47 -0500 |
commit | 639536c7c3dd92e3ecb77c5287a24c72a521ffac (patch) | |
tree | 16ea2d646b0ee4126d212fad97049b4906de07db /pts-core | |
parent | 05b141aa210e2d50db0f665d6f54ba43868696e3 (diff) | |
download | phoronix-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.php | 35 | ||||
-rw-r--r-- | pts-core/objects/bilde_renderer/bilde_renderer.php | 4 | ||||
-rw-r--r-- | pts-core/objects/bilde_renderer/bilde_svg_renderer.php | 28 |
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() { |