clear();
}
/**
* Returns a bounding box rectangle object
*
* Pre-conditions:
* - there's at least one point in the path
*/
function getBbox() {
if (count($this->_points) < 1) {
die("Path::getBbox() called for path without points");
}
$rect = new Rectangle($this->_points[0]->_clone(),
$this->_points[0]->_clone());
foreach ($this->_points as $point) {
$rect->ur->x = max($rect->ur->x, $point->x);
$rect->ur->y = max($rect->ur->y, $point->y);
$rect->ll->x = min($rect->ll->x, $point->x);
$rect->ll->y = min($rect->ll->y, $point->y);
};
return $rect;
}
function clear() {
$this->_points = array();
}
function addPoint($point) {
$this->_points[] = $point;
}
function getPoint($index) {
return $this->_points[$index];
}
function getPoints() {
return $this->_points;
}
function getPointArray() {
$result = array();
foreach ($this->_points as $point) {
$result[] = $point->x;
$result[] = $point->y;
};
return $result;
}
function close() {
$this->addPoint($this->getPoint(0));
}
function get_point_count() {
return count($this->_points);
}
/**
* @deprecated
*/
function getPointCount() {
return $this->get_point_count();
}
function is_empty() {
return ($this->get_point_count() == 0);
}
function fill($transform, $image, $color) {
$coords = $this->getPointArray();
$size = $this->getPointCount();
for ($i=0; $i<$size; $i++) {
$transform->apply($coords[$i*2], $coords[$i*2+1]);
};
imagefilledpolygon($image, $coords, $size, $color);
}
function stroke($transform, $image, $color) {
$coords = $this->getPointArray();
$size = $this->getPointCount();
for ($i=0; $i<$size; $i++) {
$transform->apply($coords[$i*2], $coords[$i*2+1]);
};
imagepolygon($image, $coords, $size, $color);
}
}
class PathCircle extends Path {
var $_x;
var $_y;
var $_r;
function PathCircle() {
$this->Path();
$this->set_x(0);
$this->set_y(0);
$this->set_r(0);
}
function fill($transform, $image, $color) {
$x = $this->get_x();
$y = $this->get_y();
$transform->apply($x, $y);
$dummy = 0;
$transform->apply($r, $dummy);
imagefilledellipse($image,
$x,
$y,
$r*2, // width = diameter
$r*2, // height = diameter
$color);
}
function get_r() {
return $this->_r;
}
function get_x() {
return $this->_x;
}
function get_y() {
return $this->_y;
}
function set_r($r) {
$this->_r = $r;
}
function set_x($x) {
$this->_x = $x;
}
function set_y($y) {
$this->_y = $y;
}
function stroke($transform, $image, $color) {
$x = $this->get_x();
$y = $this->get_y();
$transform->apply($x, $y);
$dummy = 0;
$transform->apply($r, $dummy);
imageellipse($image,
$x,
$y,
$r*2, // width = diameter
$r*2, // height = diameter
$color);
}
}
?>