diff options
Diffstat (limited to 'pts-core/objects/bilde_renderer')
-rw-r--r-- | pts-core/objects/bilde_renderer/bilde_png_renderer.php | 22 | ||||
-rw-r--r-- | pts-core/objects/bilde_renderer/bilde_renderer.php | 2 | ||||
-rw-r--r-- | pts-core/objects/bilde_renderer/bilde_svg_renderer.php | 23 |
3 files changed, 47 insertions, 0 deletions
diff --git a/pts-core/objects/bilde_renderer/bilde_png_renderer.php b/pts-core/objects/bilde_renderer/bilde_png_renderer.php index e35f13f..68e0347 100644 --- a/pts-core/objects/bilde_renderer/bilde_png_renderer.php +++ b/pts-core/objects/bilde_renderer/bilde_png_renderer.php @@ -123,6 +123,28 @@ class bilde_png_renderer extends bilde_renderer { imagerectangle($this->image, $x1, $y1, $width, $height, $border_color); } + public function draw_polygon($points, $body_color, $border_color = null, $border_width = 0) + { + $num_points = floor(count($points) / 2); + + imagefilledpolygon($this->image, $points, $num_points, $body_color); + + if($border_width > 0 && !empty($border_color)) + { + // TODO: implement $border_width + imagepolygon($this->image, $points, $num_points, $border_color); + } + } + public function draw_ellipse($center_x, $center_y, $width, $height, $body_color, $border_color = null, $border_width = 0) + { + imagefilledellipse($this->image, $center_x, $center_y, $width, $height, $body_color); + + if($border_width > 0 && !empty($border_color)) + { + // TODO: implement $border_width + imageellipse($this->image, $center_x, $center_y, $width, $height, $border_color); + } + } public function draw_line($start_x, $start_y, $end_x, $end_y, $color, $line_width = 1) { for($i = 0; $i < $line_width; $i++) diff --git a/pts-core/objects/bilde_renderer/bilde_renderer.php b/pts-core/objects/bilde_renderer/bilde_renderer.php index 7258813..8b03675 100644 --- a/pts-core/objects/bilde_renderer/bilde_renderer.php +++ b/pts-core/objects/bilde_renderer/bilde_renderer.php @@ -35,6 +35,8 @@ abstract class bilde_renderer abstract function draw_rectangle($x1, $y1, $width, $height, $background_color); abstract function draw_rectangle_border($x1, $y1, $width, $height, $border_color); + abstract function draw_polygon($points, $body_color, $border_color = null, $border_width = 0); + abstract function draw_ellipse($center_x, $center_y, $width, $height, $body_color, $border_color = null, $border_width = 0); abstract function draw_line($start_x, $start_y, $end_x, $end_y, $color, $line_width = 1); abstract function png_image_to_type($file); diff --git a/pts-core/objects/bilde_renderer/bilde_svg_renderer.php b/pts-core/objects/bilde_renderer/bilde_svg_renderer.php index 08c8824..818f850 100644 --- a/pts-core/objects/bilde_renderer/bilde_svg_renderer.php +++ b/pts-core/objects/bilde_renderer/bilde_svg_renderer.php @@ -134,6 +134,29 @@ class bilde_svg_renderer extends bilde_renderer { $this->image .= "<rect x=\"" . round($x1) . "\" y=\"" . round($y1) . "\" width=\"" . round($width - $x1) . "\" height=\"" . round($height - $y1) . "\" fill=\"transparent\" stroke=\"" . $border_color . "\" stroke-width=\"1px\" />\n"; } + public function draw_polygon($points, $body_color, $border_color = null, $border_width = 0) + { + $point_pairs = array(); + $this_pair = array(); + + foreach($points as $one_point) + { + array_push($this_pair, $one_point); + + if(count($this_pair) == 2) + { + $pair = implode(",", $this_pair); + array_push($point_pairs, $pair); + $this_pair = array(); + } + } + + $this->image .= "<polygon fill=\"" . $body_color . "\" stroke=\"" . $border_color . "\" stroke-width=\"" . $border_width . "\" points=\"" . implode(" ", $point_pairs) . "\" />"; + } + public function draw_ellipse($center_x, $center_y, $width, $height, $body_color, $border_color = null, $border_width = 0) + { + $this->image .= "<ellipse cx=\"" . $center_x . "\" cy=\"" . $center_y . "\" rx=\"" . floor($width / 2) . "\" ry=\"" . floor($height / 2) . "\" stroke=\"" . $border_color . "\" stroke-width=\"" . $border_width . "\" />"; + } public function draw_line($start_x, $start_y, $end_x, $end_y, $color, $line_width = 1) { $this->image .= "<line x1=\"" . round($start_x) . "\" y1=\"" . round($start_y) . "\" x2=\"" . round($end_x) . "\" y2=\"" . round($end_y) . "\" stroke=\"" . $color . "\" stroke-width=\"" . $line_width . "px\" />\n"; |