blob: 7b2b78040c0ba87eaa20cfb423c264ac1ca2d82b [file] [log] [blame]
<?php
/**
* File containing the two dimensional renderer
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @package Graph
* @version //autogentag//
* @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
*/
/**
* Class to transform horizontal bar charts primitives into image primitives.
* Renders charts in a two dimensional view.
*
* The class options are defined in the class {@link ezcGraphRenderer2dOptions}
* extending the basic renderer options in {@link ezcGraphRendererOptions}.
*
* <code>
* @TODO: Add example
* </code>
*
* @version //autogentag//
* @package Graph
* @mainclass
*/
class ezcGraphHorizontalRenderer
extends
ezcGraphRenderer2d
implements
ezcGraphHorizontalBarRenderer
{
/**
* Draw horizontal bar
*
* Draws a horizontal bar as a data element in a line chart
*
* @param ezcGraphBoundings $boundings Chart boundings
* @param ezcGraphContext $context Context of call
* @param ezcGraphColor $color Color of line
* @param ezcGraphCoordinate $position Position of data point
* @param float $stepSize Space which can be used for bars
* @param int $dataNumber Number of dataset
* @param int $dataCount Count of datasets in chart
* @param int $symbol Symbol to draw for line
* @param float $axisPosition Position of axis for drawing filled lines
* @return void
*/
public function drawHorizontalBar(
ezcGraphBoundings $boundings,
ezcGraphContext $context,
ezcGraphColor $color,
ezcGraphCoordinate $position,
$stepSize,
$dataNumber = 1,
$dataCount = 1,
$symbol = ezcGraph::NO_SYMBOL,
$axisPosition = 0. )
{
// Apply margin
$margin = $stepSize * $this->options->barMargin;
$padding = $stepSize * $this->options->barPadding;
$barHeight = ( $stepSize - $margin ) / $dataCount - $padding;
$offset = - $stepSize / 2 + $margin / 2 + ( $dataCount - $dataNumber - 1 ) * ( $padding + $barHeight ) + $padding / 2;
$barPointArray = array(
new ezcGraphCoordinate(
$boundings->x0 + ( $boundings->width ) * $axisPosition,
$boundings->y0 + ( $boundings->height ) * $position->y + $offset
),
new ezcGraphCoordinate(
$boundings->x0 + ( $boundings->width ) * $position->x,
$boundings->y0 + ( $boundings->height ) * $position->y + $offset
),
new ezcGraphCoordinate(
$boundings->x0 + ( $boundings->width ) * $position->x,
$boundings->y0 + ( $boundings->height ) * $position->y + $offset + $barHeight
),
new ezcGraphCoordinate(
$boundings->x0 + ( $boundings->width ) * $axisPosition,
$boundings->y0 + ( $boundings->height ) * $position->y + $offset + $barHeight
),
);
$this->addElementReference(
$context,
$this->driver->drawPolygon(
$barPointArray,
$color,
true
)
);
if ( $this->options->dataBorder > 0 )
{
$darkened = $color->darken( $this->options->dataBorder );
$this->driver->drawPolygon(
$barPointArray,
$darkened,
false,
1
);
}
}
/**
* Draw bar
*
* Draws a bar as a data element in a line chart
*
* @param ezcGraphBoundings $boundings Chart boundings
* @param ezcGraphContext $context Context of call
* @param ezcGraphColor $color Color of line
* @param ezcGraphCoordinate $position Position of data point
* @param float $stepSize Space which can be used for bars
* @param int $dataNumber Number of dataset
* @param int $dataCount Count of datasets in chart
* @param int $symbol Symbol to draw for line
* @param float $axisPosition Position of axis for drawing filled lines
* @return void
*/
public function drawBar(
ezcGraphBoundings $boundings,
ezcGraphContext $context,
ezcGraphColor $color,
ezcGraphCoordinate $position,
$stepSize,
$dataNumber = 1,
$dataCount = 1,
$symbol = ezcGraph::NO_SYMBOL,
$axisPosition = 0. )
{
throw new ezcBaseFunctionalityNotSupportedException(
"A normal bar chart",
"Only horizontal bar charts can be renderered with the ezcGraphHorizontalRenderer"
);
}
/**
* Draw data line
*
* Draws a line as a data element in a line chart
*
* @param ezcGraphBoundings $boundings Chart boundings
* @param ezcGraphContext $context Context of call
* @param ezcGraphColor $color Color of line
* @param ezcGraphCoordinate $start Starting point
* @param ezcGraphCoordinate $end Ending point
* @param int $dataNumber Number of dataset
* @param int $dataCount Count of datasets in chart
* @param int $symbol Symbol to draw for line
* @param ezcGraphColor $symbolColor Color of the symbol, defaults to linecolor
* @param ezcGraphColor $fillColor Color to fill line with
* @param float $axisPosition Position of axis for drawing filled lines
* @param float $thickness Line thickness
* @return void
*/
public function drawDataLine(
ezcGraphBoundings $boundings,
ezcGraphContext $context,
ezcGraphColor $color,
ezcGraphCoordinate $start,
ezcGraphCoordinate $end,
$dataNumber = 1,
$dataCount = 1,
$symbol = ezcGraph::NO_SYMBOL,
ezcGraphColor $symbolColor = null,
ezcGraphColor $fillColor = null,
$axisPosition = 0.,
$thickness = 1. )
{
throw new ezcBaseFunctionalityNotSupportedException(
"A normal line chart",
"Only horizontal bar charts can be renderered with the ezcGraphHorizontalRenderer"
);
}
}
?>