Source for file Component.class.php
Documentation is available at Component.class.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";
* A graph can contain some groups of components
* @package linea21.externals
* Components of this group
* Build the component group
* Add a component to the group
* @param awComponent $component A component
public function add(awComponent $component) {
* Position X of the center the graph (from 0 to 1)
* Position Y of the center the graph (from 0 to 1)
* Component absolute width (in pixels)
* Component absolute height (in pixels)
* Left-top corner Y position
* Left-top corner X position
* Component background color
* Adjust automatically the component ?
* Adjust automatically the component ?
public function auto($auto) {
$this->auto = (bool) $auto;
* Change the size of the component
* @param int $width Component width (from 0 to 1)
* @param int $height Component height (from 0 to 1)
public function setSize($width, $height) {
$this->width = (float) $width;
$this->height = (float) $height;
* Change the absolute size of the component
* @param int $w Component width (in pixels)
* @param int $h Component height (in pixels)
* Change component background color
* @param awColor $color (can be null)
if($color === NULL or $color instanceof awColor) {
* Change component background gradient
* @param awGradient $gradient (can be null)
if($gradient === NULL or $gradient instanceof awGradient) {
* Change component background image
* @param awImage $image (can be null)
if($image === NULL or $image instanceof awImage) {
* Return the component background
* @return Color, Gradient
* Change component padding
* @param int $left Padding in pixels (NULL to keep old value)
* @param int $right Padding in pixels (NULL to keep old value)
* @param int $top Padding in pixels (NULL to keep old value)
* @param int $bottom Padding in pixels (NULL to keep old value)
public function setPadding($left = NULL, $right = NULL, $top = NULL, $bottom = NULL) {
$this->padding->set($left, $right, $top, $bottom);
* @param float $left Space in % (NULL to keep old value)
* @param float $right Space in % (NULL to keep old value)
* @param float $bottom Space in % (NULL to keep old value)
* @param float $top Space in % (NULL to keep old value)
public function setSpace($left = NULL, $right = NULL, $bottom = NULL, $top = NULL) {
$this->space->set($left, $right, $bottom, $top);
* Change the absolute position of the component on the graph
* @var int $x Left-top corner X position
* @var int $y Left-top corner Y position
$this->left = (int) $left;
* Set the center of the component
* @param int $x Position X of the center of the component
* @param int $y Position Y of the center of the component
* Get component coords with its padding
* @return array Coords of the component
$y2 = $this->h - $this->padding->bottom;
return array($x1, $y1, $x2, $y2);
* Init the drawing of the component
public function init(awDriver $driver) {
// Set component background
if($background !== NULL) {
$p2 = new awPoint($this->w - 1, $this->h - 1);
if($background instanceof awImage) {
$driver->filledRectangle(
* Finalize the drawing of the component
public function finalize(awDriver $driver) {
$this->title->draw($driver, $point);
* Draw the grid around your component
* @return array Coords for the component
* Draw the component on the graph
* Component should be drawed into specified coords
* @param bool $aliasing Use anti-aliasing to draw the component ?
abstract public function drawComponent(awDriver $driver, $x1, $y1, $x2, $y2, $aliasing);
* Get space width in pixels
* @param int $width Component width
* @param int $height Component height
protected function getSpace($width, $height) {
$left = (int) ($width * $this->space->left / 100);
$right = (int) ($width * $this->space->right / 100);
$top = (int) ($height * $this->space->top / 100);
$bottom = (int) ($height * $this->space->bottom / 100);
return array($left, $right, $top, $bottom);
|