Rev 61 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/** This work is hereby released into the Public Domain.* To view a copy of the public domain dedication,* visit http://creativecommons.org/licenses/publicdomain/ or send a letter to* Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.**/require_once dirname(__FILE__)."/../Graph.class.php";/*** Draw border** @package Artichow*/class awBorder {/*** Border color** @var Color*/protected $color;/*** Hide border ?** @var bool*/protected $hide = FALSE;/*** Border line style** @var int*/protected $style;/*** Build the border** @param awColor $color Border color* @param int $style Border style*/public function __construct($color = NULL, $style = awLine::SOLID) {$this->setStyle($style);if($color instanceof awColor) {$this->setColor($color);} else {$this->setColor(new awBlack);}}/*** Change border color* This method automatically shows the border if it is hidden** @param awColor $color*/public function setColor(awColor $color) {$this->color = $color;$this->show();}/*** Change border style** @param int $style*/public function setStyle($style) {$this->style = (int)$style;}/*** Hide border ?** @param bool $hide*/public function hide($hide = TRUE) {$this->hide = (bool)$hide;}/*** Show border ?** @param bool $show*/public function show($show = TRUE) {$this->hide = (bool)!$show;}/*** Is the border visible ?** @return bool*/public function visible() {return !$this->hide;}/*** Draw border as a rectangle** @param awDriver $driver* @param awPoint $p1 Top-left corner* @param awPoint $p2 Bottom-right corner*/public function rectangle(awDriver $driver, awPoint $p1, awPoint $p2) {// Border is hiddenif($this->hide) {return;}$line = new awLine;$line->setStyle($this->style);$line->setLocation($p1, $p2);$driver->rectangle($this->color, $line);}/*** Draw border as an ellipse** @param awDriver $driver* @param awPoint $center Ellipse center* @param int $width Ellipse width* @param int $height Ellipse height*/public function ellipse(awDriver $driver, awPoint $center, $width, $height) {// Border is hiddenif($this->hide) {return;}switch($this->style) {case awLine::SOLID :$driver->ellipse($this->color, $center, $width, $height);break;default :awImage::drawError("Class Border: Dashed and dotted borders and not yet implemented on ellipses.");break;}}/*** Draw border as a polygon** @param awDriver $driver A Driver object* @param awPolygon $polygon A Polygon object*/public function polygon(awDriver $driver, awPolygon $polygon) {// Border is hiddenif($this->hide) {return;}$polygon->setStyle($this->style);$driver->polygon($this->color, $polygon);// In case of Line::SOLID, Driver::polygon() uses imagepolygon()// which automatically closes the shape. In any other case,// we have to do it manually here.if($this->style !== Line::SOLID) {$this->closePolygon($driver, $polygon);}}/*** Draws the last line of a Polygon, between the first and last point** @param awDriver $driver A Driver object* @param awPolygon $polygon The polygon object to close*/private function closePolygon(awDriver $driver, awPolygon $polygon) {$first = $polygon->get(0);$last = $polygon->get($polygon->count() - 1);$line = new awLine($first, $last, $this->style, $polygon->getThickness());$driver->line($this->color, $line);}}registerClass('Border');?>