public function init(awDriver $driver) { list($x1, $y1, $x2, $y2) = $this->getPosition(); // Get space informations list($leftSpace, $rightSpace, $topSpace, $bottomSpace) = $this->getSpace($x2 - $x1, $y2 - $y1); $this->xAxis->setPadding($leftSpace, $rightSpace); if ($this->space->bottom > 0 or $this->space->top > 0) { list($min, $max) = $this->yAxis->getRange(); $interval = $max - $min; $this->yAxis->setRange($min - $interval * $this->space->bottom / 100, $max + $interval * $this->space->top / 100); } // Auto-scaling mode $this->yAxis->autoScale(); // Number of labels is not specified if ($this->yAxis->getLabelNumber() === NULL) { $number = round(($y2 - $y1) / 75) + 2; $this->yAxis->setLabelNumber($number); } $this->xAxis->line->setX($x1, $x2); $this->yAxis->line->setY($y2, $y1); // Set ticks $this->xAxis->tick('major')->setNumber($this->getXAxisNumber()); $this->yAxis->tick('major')->setNumber($this->yAxis->getLabelNumber()); // Center X axis on zero if ($this->xAxisZero) { $this->xAxis->setYCenter($this->yAxis, 0); } // Center Y axis on zero if ($this->yAxisZero) { $this->yAxis->setXCenter($this->xAxis, 0); } // Set axis labels $labels = array(); list($xMin, $xMax) = $this->xAxis->getRange(); for ($i = $xMin; $i <= $xMax; $i++) { $labels[] = $i; } $this->xAxis->label->set($labels); parent::init($driver); list($x1, $y1, $x2, $y2) = $this->getPosition(); list($leftSpace, $rightSpace) = $this->getSpace($x2 - $x1, $y2 - $y1); // Create the grid $this->createGrid(); // Draw the grid $this->grid->setSpace($leftSpace, $rightSpace, 0, 0); $this->grid->draw($driver, $x1, $y1, $x2, $y2); }
function init($drawer) { list($x1, $y1, $x2, $y2) = $this->getPosition(); $this->xAxis->line->setX($x1, $x2); $this->xAxis->label->setAlign(NULL, LABEL_BOTTOM); $this->xAxis->label->move(0, 3); $this->xAxis->setRange($this->extremum->left, $this->extremum->right); $this->yAxis->line->setY($y2, $y1); $this->yAxis->label->setAlign(LABEL_RIGHT); $this->yAxis->label->move(-6, 0); $this->yAxis->reverseTickStyle(); $this->yAxis->setRange($this->extremum->bottom, $this->extremum->top); $this->xAxis->setYCenter($this->yAxis, 0); $this->yAxis->setXCenter($this->xAxis, 0); if ($this->yAxis->getLabelNumber() === NULL) { $number = $this->extremum->top - $this->extremum->bottom + 1; $this->yAxis->setLabelNumber($number); } if ($this->xAxis->getLabelNumber() === NULL) { $number = $this->extremum->right - $this->extremum->left + 1; $this->xAxis->setLabelNumber($number); } // Set ticks $this->xAxis->ticks['major']->setNumber($this->xAxis->getLabelNumber()); $this->yAxis->ticks['major']->setNumber($this->yAxis->getLabelNumber()); // Set axis labels $labels = array(); for ($i = 0, $count = $this->xAxis->getLabelNumber(); $i < $count; $i++) { $labels[] = $i; } $this->xAxis->label->set($labels); $labels = array(); for ($i = 0, $count = $this->yAxis->getLabelNumber(); $i < $count; $i++) { $labels[] = $i; } $this->yAxis->label->set($labels); parent::init($drawer); // Create the grid $this->createGrid(); // Draw the grid $this->grid->draw($drawer, $x1, $y1, $x2, $y2); }
/** * Draw a component on the image * * @var awComponent $component A component */ public function drawComponent(awComponent $component) { $shadow = $this->shadow->getSpace(); // Image shadow $border = $this->border->visible() ? 1 : 0; // Image border size $drawer = clone $this->drawer; $drawer->setImageSize( $this->width - $shadow->left - $shadow->right - $border * 2, $this->height - $shadow->top - $shadow->bottom - $border * 2 ); // No absolute size specified if($component->w === NULL and $component->h === NULL) { list($width, $height) = $drawer->setSize($component->width, $component->height); // Set component size in pixels $component->setAbsSize($width, $height); } else { $drawer->setAbsSize($component->w, $component->h); } if($component->top !== NULL and $component->left !== NULL) { $drawer->setAbsPosition( $border + $shadow->left + $component->left, $border + $shadow->top + $component->top ); } else { $drawer->setPosition($component->x, $component->y); } $drawer->movePosition($border + $shadow->left, $border + $shadow->top); list($x1, $y1, $x2, $y2) = $component->getPosition(); $component->init($drawer); $component->drawComponent($drawer, $x1, $y1, $x2, $y2, $this->antiAliasing); $component->drawEnvelope($drawer, $x1, $y1, $x2, $y2); $component->finalize($drawer); }