Driver using PHPs ext/gd to draw images. The GD extension is available on nearly all PHP installations, but slow and produces slightly incorrect results.
The driver can make use of the different font extensions available with ext/gd. It is possible to use Free Type 2, native TTF and PostScript Type 1 fonts.
The options of this driver are configured in ezcGraphGdDriverOptions extending the basic driver options class ezcGraphDriverOptions.
Source for this file: /Graph/src/driver/gd.php
ezcGraphDriver | --ezcGraphGdDriver
Version: | //autogentag// |
protected resource |
$image
Image resource |
protected array |
$preProcessImages
= array()
Array with image files to draw |
protected array |
$psFontResources
= array()
Contains resources for already loaded ps fonts. array( path => resource ) |
protected array |
$strings
= array()
List of strings to draw array ( array( 'text' => array( 'strings' ), 'options' => ezcGraphFontOptions, ) |
From ezcGraphDriver | |
---|---|
protected |
ezcGraphDriver::$options
|
protected resource |
addImages(
$image
)
Draw all images to image resource handler |
protected int |
allocate(
$color
)
Allocates a color |
protected void |
drawAllTexts(
)
Draw all collected texts |
public void |
drawCircle(
$center
, $width
, $height
, $color
, [ $filled
= true] )
Draw circle |
public void |
drawCircleSector(
$center
, $width
, $height
, $startAngle
, $endAngle
, $color
, [ $filled
= true] )
Draws a sector of cirlce |
public void |
drawCircularArc(
$center
, $width
, $height
, $size
, $startAngle
, $endAngle
, $color
, [ $filled
= true] )
Draws a circular arc |
protected void |
drawCircularArcStep(
$center
, $width
, $height
, $size
, $startAngle
, $endAngle
, $color
)
Draws a single element of a circular arc |
public void |
drawImage(
$file
, $position
, $width
, $height
)
Draw an image |
public void |
drawLine(
$start
, $end
, $color
, [ $thickness
= 1.] )
Draws a line |
public void |
drawPolygon(
$points
, $color
, [ $filled
= true] , [ $thickness
= 1.] )
Draws a single polygon. |
public void |
drawTextBox(
$string
, $position
, $width
, $height
, $align
, [ $rotation
= null] )
Writes text in a box of desired size |
protected resource |
getImage(
)
Returns the image resource to draw on. |
public string |
getMimeType(
)
Return mime type for current image format |
public resource |
getResource(
)
Get resource of rendered result |
protected ezcGraphBoundings |
getTextBoundings(
$size
, $font
, $text
)
Returns boundings of text depending on the available font extension |
protected resource |
imageCreateFrom(
$file
)
Creates an image resource from an image file |
public void |
render(
$file
)
Finally save image |
protected void |
renderText(
$image
, $text
, $type
, $path
, $color
, $position
, $size
, [ $rotation
= null] )
Render text depending of font type and available font extensions |
public void |
renderToOutput(
)
Render image directly to output |
protected float |
supersample(
$value
)
Supersamples a single coordinate value. |
From ezcGraphDriver | |
---|---|
public abstract void |
ezcGraphDriver::drawCircle()
Draw circle |
public abstract void |
ezcGraphDriver::drawCircleSector()
Draws a sector of cirlce |
public abstract void |
ezcGraphDriver::drawCircularArc()
Draws a circular arc |
public abstract void |
ezcGraphDriver::drawImage()
Draw an image |
public abstract void |
ezcGraphDriver::drawLine()
Draws a line |
public abstract void |
ezcGraphDriver::drawPolygon()
Draws a single polygon. |
public abstract void |
ezcGraphDriver::drawTextBox()
Writes text in a box of desired size |
public abstract string |
ezcGraphDriver::getMimeType()
Return mime type for current image format |
protected abstract ezcGraphBoundings |
ezcGraphDriver::getTextBoundings()
Returns boundings of text depending on the available font extension |
protected array |
ezcGraphDriver::reduceEllipseSize()
Reduce the size of an ellipse |
protected array( |
ezcGraphDriver::reducePolygonSize()
Reduces the size of a polygon |
public abstract void |
ezcGraphDriver::render()
Finally save image |
public void |
ezcGraphDriver::renderToOutput()
Render image directly to output |
protected mixed |
ezcGraphDriver::testFitStringInTextBox()
Test if string fits in a box with given font size |
protected void |
ezcGraphDriver::tryFitShortenedString()
If it is allow to shortened the string, this method tries to extract as many chars as possible to display a decent amount of characters. |
Draw all images to image resource handler
Name | Type | Description |
---|---|---|
$image |
resource | Image to draw on |
Allocates a color
This function tries to allocate the requested color. If the color already exists in the imaga it will be reused.
Name | Type | Description |
---|---|---|
$color |
ezcGraphColor |
Draw all collected texts
The texts are collected and their maximum possible font size is calculated. This function finally draws the texts on the image, this delayed drawing has two reasons:
1) This way the text strings are always on top of the image, what results in better readable texts 2) The maximum possible font size can be calculated for a set of texts with the same font configuration. Strings belonging to one chart element normally have the same font configuration, so that all texts belonging to one element will have the same font size.
Draw circle
Name | Type | Description |
---|---|---|
$center |
ezcGraphCoordinate | Center of ellipse |
$width |
mixed | Width of ellipse |
$height |
mixed | height of ellipse |
$color |
ezcGraphColor | Color |
$filled |
mixed | Filled |
Method | Description |
---|---|
ezcGraphDriver::drawCircle() |
Draw circle |
Draws a sector of cirlce
Name | Type | Description |
---|---|---|
$center |
ezcGraphCoordinate | Center of circle |
$width |
mixed | Width |
$height |
mixed | Height |
$startAngle |
mixed | Start angle of circle sector |
$endAngle |
mixed | End angle of circle sector |
$color |
ezcGraphColor | Color |
$filled |
mixed | Filled |
Method | Description |
---|---|
ezcGraphDriver::drawCircleSector() |
Draws a sector of cirlce |
Draws a circular arc
Name | Type | Description |
---|---|---|
$center |
ezcGraphCoordinate | Center of ellipse |
$width |
integer | Width of ellipse |
$height |
integer | Height of ellipse |
$size |
integer | Height of border |
$startAngle |
float | Starting angle of circle sector |
$endAngle |
float | Ending angle of circle sector |
$color |
ezcGraphColor | Color of Border |
$filled |
bool |
Method | Description |
---|---|
ezcGraphDriver::drawCircularArc() |
Draws a circular arc |
Draws a single element of a circular arc
ext/gd itself does not support something like circular arcs, so that this functions draws rectangular polygons as a part of circular arcs to interpolate them. This way it is possible to apply a linear gradient to the circular arc, because we draw single steps anyway.
Name | Type | Description |
---|---|---|
$center |
ezcGraphCoordinate | Center of ellipse |
$width |
integer | Width of ellipse |
$height |
integer | Height of ellipse |
$size |
integer | Height of border |
$startAngle |
float | Starting angle of circle sector |
$endAngle |
float | Ending angle of circle sector |
$color |
ezcGraphColor | Color of Border |
Draw an image
The actual drawing of the image is delayed, to not apply supersampling to the image. The image will normally be resized using the gd function imagecopyresampled, which provides nice antialiased scaling, so that additional supersampling would make the image look blurred. The delayed images will be pre-processed, so that they are draw in the back of everything else.
Name | Type | Description |
---|---|---|
$file |
mixed | Image file |
$position |
ezcGraphCoordinate | Top left position |
$width |
mixed | Width of image in destination image |
$height |
mixed | Height of image in destination image |
Method | Description |
---|---|
ezcGraphDriver::drawImage() |
Draw an image |
Draws a line
Name | Type | Description |
---|---|---|
$start |
ezcGraphCoordinate | Start point |
$end |
ezcGraphCoordinate | End point |
$color |
ezcGraphColor | Line color |
$thickness |
float | Line thickness |
Method | Description |
---|---|
ezcGraphDriver::drawLine() |
Draws a line |
Draws a single polygon.
Name | Type | Description |
---|---|---|
$points |
array | Point array |
$color |
ezcGraphColor | Polygon color |
$filled |
mixed | Filled |
$thickness |
float | Line thickness |
Method | Description |
---|---|
ezcGraphDriver::drawPolygon() |
Draws a single polygon. |
Writes text in a box of desired size
Name | Type | Description |
---|---|---|
$string |
string | Text |
$position |
ezcGraphCoordinate | Top left position |
$width |
float | Width of text box |
$height |
float | Height of text box |
$align |
int | Alignement of text |
$rotation |
ezcGraphRotation |
Method | Description |
---|---|
ezcGraphDriver::drawTextBox() |
Writes text in a box of desired size |
Returns the image resource to draw on.
If no resource exists the image will be created. The size of the returned image depends on the supersampling factor and the size of the chart.
Return mime type for current image format
Method | Description |
---|---|
ezcGraphDriver::getMimeType() |
Return mime type for current image format |
Get resource of rendered result
Return the resource of the rendered result. You should not use this method before you called either renderToOutput() or render(), as the image may not be completely rendered until then.
Returns boundings of text depending on the available font extension
Name | Type | Description |
---|---|---|
$size |
float | Textsize |
$font |
ezcGraphFontOptions | Font |
$text |
string | Text |
Method | Description |
---|---|
ezcGraphDriver::getTextBoundings() |
Returns boundings of text depending on the available font extension |
Creates an image resource from an image file
Name | Type | Description |
---|---|---|
$file |
string | Filename |
Finally save image
Name | Type | Description |
---|---|---|
$file |
string | Destination filename |
Method | Description |
---|---|
ezcGraphDriver::render() |
Finally save image |
Render text depending of font type and available font extensions
Name | Type | Description |
---|---|---|
$image |
resource | Image resource |
$text |
string | Text |
$type |
int | Font type |
$path |
string | Font path |
$color |
ezcGraphColor | Font color |
$position |
ezcGraphCoordinate | Position |
$size |
float | Textsize |
$rotation |
ezcGraphRotation |
Render image directly to output
The method renders the image directly to the standard output. You normally do not want to use this function, because it makes it harder to proper cache the generated graphs.
Method | Description |
---|---|
ezcGraphDriver::renderToOutput() |
Render image directly to output |
Supersamples a single coordinate value.
Applies supersampling to a single coordinate value.
Name | Type | Description |
---|---|---|
$value |
float | Coordinate value |