/** * Output the axis * @access private */ function _done() { parent::_done(); if (!$this->_font) { $this->_font = $GLOBALS['_Image_Graph_font']; } $value = $this->_getNextLabel(); $lastPosition = false; $this->_debug("Enumerating values from $value to ".$this->_getMaximum()); while ($value <= $this->_getMaximum()) { if ((((abs($value) > 0.0001) or ($this->_showLabelZero)) and (($value > $this->_getMinimum()) or ($this->_showLabelMinimum)) and (($value < $this->_getMaximum()) or ($this->_showLabelMaximum))) and ($value>= $this->_getMinimum()) and ($value<= $this->_getMaximum())) { $labelPosition = $this->_point($value); if (is_object($this->_dataPreProcessor)) { $labelText = $this->_dataPreProcessor->_process($value); } else { $labelText = $value; } $doOutput = false; if ($this->_type == IMAGE_GRAPH_AXIS_Y) { $text = new Image_Graph_Text($this->_right - 3, $labelPosition, $labelText, $this->_font); $text->setAlignment(IMAGE_GRAPH_ALIGN_CENTER_Y | IMAGE_GRAPH_ALIGN_RIGHT); if (($text->_fillBottom() < $lastPosition) or ($lastPosition === false)) { $lastPosition = $text->_fillTop(); $doOutput = true; } } else { $text = new Image_Graph_Text($labelPosition, $this->_top + 3, $labelText, $this->_font); $text->setAlignment(IMAGE_GRAPH_ALIGN_CENTER_X | IMAGE_GRAPH_ALIGN_TOP); if (($text->_fillLeft() > $lastPosition) or ($lastPosition === false)) { $lastPosition = $text->_fillRight(); $doOutput = true; } } if ($doOutput) { $this->add($text); $text->_done(); } if ($this->_type == IMAGE_GRAPH_AXIS_Y) { ImageLine($this->_canvas(), $this->_right, $labelPosition, $this->_right + 6, $labelPosition, $this->_getLineStyle()); } else { ImageLine($this->_canvas(), $labelPosition, $this->_top, $labelPosition, $this->_top - 6, $this->_getLineStyle()); } } $nextValue = $this->_getNextLabel($value); /* if ($minorLabelInterval = $this->_minorLabelInterval()) { $minorValue = $value + $minorLabelInterval; while (($minorValue < $nextValue) and ($minorValue < $this->_getMaximum() - $minorLabelInterval)) { if ($minorValue >= $this->_getMinimum()) { $position = $this->_point($minorValue); if ($this->_type == IMAGE_GRAPH_AXIS_Y) { ImageLine($this->_canvas(), $this->_right, $position, $this->_right + 3, $position, $this->_getLineStyle()); } else { ImageLine($this->_canvas(), $position, $this->_top, $position, $this->_top - 3, $this->_getLineStyle()); } } $minorValue += $minorLabelInterval; } }*/ $value = $nextValue; } if ($this->_type == IMAGE_GRAPH_AXIS_Y) { ImageLine($this->_canvas(), $this->_right, $this->_top, $this->_right, $this->_bottom, $this->_getLineStyle()); if ($this->_showArrow) { $arrow[] = $this->_right - 5; $arrow[] = $this->_top + 8; $arrow[] = $this->_right; $arrow[] = $this->_top; $arrow[] = $this->_right + 5; $arrow[] = $this->_top + 8; ImageFilledPolygon($this->_canvas(), $arrow, count($arrow) / 2, $this->_getFillStyle()); ImagePolygon($this->_canvas(), $arrow, count($arrow) / 2, $this->_getLineStyle()); } } else { ImageLine($this->_canvas(), $this->_left, $this->_top, $this->_right, $this->_top, $this->_getLineStyle()); if ($this->_showArrow) { $arrow[] = $this->_right - 8; $arrow[] = $this->_top + 5; $arrow[] = $this->_right; $arrow[] = $this->_top; $arrow[] = $this->_right - 8; $arrow[] = $this->_top - 5; ImageFilledPolygon($this->_canvas(), $arrow, count($arrow) / 2, $this->_getFillStyle()); ImagePolygon($this->_canvas(), $arrow, count($arrow) / 2, $this->_getLineStyle()); } } }
/** * Draw a sample for use with legend * @param int $x The x coordinate to draw the sample at * @param int $y The y coordinate to draw the sample at * @access private */ function _legendSample($x, $y, &$font) { if (is_a($this->_fillStyle, "Image_Graph_Fill")) { $fillStyle = $this->_fillStyle->_getFillStyleAt($x -5, $y -5, 10, 10); } else { $fillStyle = $this->_getFillStyle(); } if ($fillStyle != IMG_COLOR_TRANSPARENT) { ImageFilledRectangle($this->_canvas(), $x -5, $y -5, $x +5, $y +5, $fillStyle); ImageRectangle($this->_canvas(), $x -5, $y -5, $x +5, $y +5, $this->_getLineStyle()); } else { ImageLine($this->_canvas(), $x -7, $y, $x +7, $y, $this->_getLineStyle()); } if (($this->_marker) and ($this->_dataset)) { $this->_dataset->_reset(); $point = $this->_dataset->_next(); $prevPoint = $this->_dataset->_nearby(-2); $nextPoint = $this->_dataset->_nearby(); $point = $this->_getMarkerData($point, $nextPoint, $prevPoint, $i); if (is_array($point)) { $point['MARKER_X'] = $x; $point['MARKER_Y'] = $y; unset ($point['AVERAGE_Y']); $this->_marker->_drawMarker($point['MARKER_X'], $point['MARKER_Y'], $point); } } $text = new Image_Graph_Text($x + 20, $y, $this->_title, $font); $text->setAlignment(IMAGE_GRAPH_ALIGN_CENTER_Y | IMAGE_GRAPH_ALIGN_LEFT); $this->add($text); $text->_done(); return array('Width' => 20+$font->width($this->_title), 'Height' => max(10, $font->height($this->_title))); }
/** * Draw a sample for use with legend * @param int $x The x coordinate to draw the sample at * @param int $y The y coordinate to draw the sample at * @access private */ function _legendSample($x, $y, &$font) { $size['Height'] = 0; $size['Width'] = $x; if (is_array($this->_datasets)) { if (is_a($this->_fillStyle, "Image_Graph_Fill")) { $this->_fillStyle->_reset(); } $count = 0; $keys = array_keys($this->_datasets); while (list ($ID, $key) = each($keys)) { $count++; if (is_a($this->_fillStyle, "Image_Graph_Fill")) { $fillStyle = $this->_fillStyle->_getFillStyleAt($x -5, $y -5, 10, 10, $key); } else { $fillStyle = $this->_getFillStyle($key); } if ($fillStyle != IMG_COLOR_TRANSPARENT) { ImageFilledRectangle($this->_canvas(), $x -5, $y -5, $x +5, $y +5, $fillStyle); ImageRectangle($this->_canvas(), $x -5, $y -5, $x +5, $y +5, $this->_getLineStyle()); } else { ImageLine($this->_canvas(), $x -7, $y, $x +7, $y, $this->_getLineStyle()); } if (($this->_marker) and ($this->_dataset)) { $this->_dataset->_reset(); $point = $this->_dataset->_next(); $prevPoint = $this->_dataset->_nearby(-2); $nextPoint = $this->_dataset->_nearby(); $point = $this->_getMarkerData($point, $nextPoint, $prevPoint, $i); if (is_array($point)) { $point['MARKER_X'] = $x; $point['MARKER_Y'] = $y; unset ($point['AVERAGE_Y']); $this->_marker->_drawMarker($point['MARKER_X'], $point['MARKER_Y'], $point); } } $text = new Image_Graph_Text($x + 20, $y, $key, $font); $text->setAlignment(IMAGE_GRAPH_ALIGN_CENTER_Y | IMAGE_GRAPH_ALIGN_LEFT); $this->add($text); $text->_done(); $x += 40+$font->width($key); $size['Height'] = max($size['Height'], 10, $font->height($key)); } } $size['Width'] = $x-$size['Width']; return $size; }