ChartDirector 6.0 (Perl Edition)

Built-In Symbols




This example demonstrates the built-in symbols supported by ChartDirector.

Source Code Listing

[Standalone Version] perldemo\builtinsymbols.pl
#!/usr/bin/perl

# In the sample code, the ChartDirector for Perl module is assumed to be in "../lib"
use File::Basename;
use lib (dirname($0)."/../lib") =~ /(.*)/;

use perlchartdir;

# Some ChartDirector built-in symbols
my $symbols = [$perlchartdir::CircleShape, $perlchartdir::GlassSphereShape,
    $perlchartdir::GlassSphere2Shape, $perlchartdir::SolidSphereShape, $perlchartdir::SquareShape,
    $perlchartdir::DiamondShape, $perlchartdir::TriangleShape, $perlchartdir::RightTriangleShape,
    $perlchartdir::LeftTriangleShape, $perlchartdir::InvertedTriangleShape, perlchartdir::StarShape(
    3), perlchartdir::StarShape(4), perlchartdir::StarShape(5), perlchartdir::StarShape(6),
    perlchartdir::StarShape(7), perlchartdir::StarShape(8), perlchartdir::StarShape(9),
    perlchartdir::StarShape(10), perlchartdir::PolygonShape(5), perlchartdir::Polygon2Shape(5),
    perlchartdir::PolygonShape(6), perlchartdir::Polygon2Shape(6), perlchartdir::Polygon2Shape(7),
    perlchartdir::CrossShape(0.1), perlchartdir::CrossShape(0.2), perlchartdir::CrossShape(0.3),
    perlchartdir::CrossShape(0.4), perlchartdir::CrossShape(0.5), perlchartdir::CrossShape(0.6),
    perlchartdir::CrossShape(0.7), perlchartdir::Cross2Shape(0.1), perlchartdir::Cross2Shape(0.2),
    perlchartdir::Cross2Shape(0.3), perlchartdir::Cross2Shape(0.4), perlchartdir::Cross2Shape(0.5),
    perlchartdir::Cross2Shape(0.6), perlchartdir::Cross2Shape(0.7), perlchartdir::ArrowShape(),
    perlchartdir::ArrowShape(45), perlchartdir::ArrowShape(90, 0.5), perlchartdir::ArrowShape(135,
    0.5, 0.2), perlchartdir::ArrowShape(180, 0.3, 0.2, 0.3), perlchartdir::ArrowShape(225, 1, 0.5,
    0.7), perlchartdir::ArrowShape(270, 1, 0.5, 0.25), perlchartdir::ArrowShape(315, 0.5, 0.5, 0),
    perlchartdir::ArrowShape(30, 0.5, 0.1, 0.6), perlchartdir::ArrowShape(210, 0.5, 0.1, 0.6),
    perlchartdir::ArrowShape(330, 0.7, 0.1), perlchartdir::ArrowShape(150, 0.7, 0.1)];

# Create a XYChart object of size 500 x 450 pixels
my $c = new XYChart(500, 450);

# Set the plotarea at (55, 40) and of size 400 x 350 pixels, with a light grey border (0xc0c0c0).
# Turn on both horizontal and vertical grid lines with light grey color (0xc0c0c0)
$c->setPlotArea(55, 40, 400, 350, -1, -1, 0xc0c0c0, 0xc0c0c0, -1);

# Add a title to the chart using 18pt Times Bold Itatic font.
$c->addTitle("Built-in Symbols", "timesbi.ttf", 18);

# Set the axes line width to 3 pixels
$c->xAxis()->setWidth(3);
$c->yAxis()->setWidth(3);

# Ensure the ticks are at least 1 unit part (integer ticks)
$c->xAxis()->setMinTickInc(1);
$c->yAxis()->setMinTickInc(1);

# Add each symbol as a separate scatter layer.
for(my $i = 0; $i < scalar(@$symbols); ++$i) {
    $c->addScatterLayer([$i % 7 + 1.0], [int($i / 7 + 1.0)], "", $symbols->[$i], 17);
}

# Output the chart
$c->makeChart("builtinsymbols.png")

[CGI Version] perldemo_cgi\builtinsymbols.pl
#!/usr/bin/perl

# In the sample code, the ChartDirector for Perl module is assumed to be in "../lib"
use File::Basename;
use lib (dirname($0)."/../lib") =~ /(.*)/;

use perlchartdir;

# Some ChartDirector built-in symbols
my $symbols = [$perlchartdir::CircleShape, $perlchartdir::GlassSphereShape,
    $perlchartdir::GlassSphere2Shape, $perlchartdir::SolidSphereShape, $perlchartdir::SquareShape,
    $perlchartdir::DiamondShape, $perlchartdir::TriangleShape, $perlchartdir::RightTriangleShape,
    $perlchartdir::LeftTriangleShape, $perlchartdir::InvertedTriangleShape, perlchartdir::StarShape(
    3), perlchartdir::StarShape(4), perlchartdir::StarShape(5), perlchartdir::StarShape(6),
    perlchartdir::StarShape(7), perlchartdir::StarShape(8), perlchartdir::StarShape(9),
    perlchartdir::StarShape(10), perlchartdir::PolygonShape(5), perlchartdir::Polygon2Shape(5),
    perlchartdir::PolygonShape(6), perlchartdir::Polygon2Shape(6), perlchartdir::Polygon2Shape(7),
    perlchartdir::CrossShape(0.1), perlchartdir::CrossShape(0.2), perlchartdir::CrossShape(0.3),
    perlchartdir::CrossShape(0.4), perlchartdir::CrossShape(0.5), perlchartdir::CrossShape(0.6),
    perlchartdir::CrossShape(0.7), perlchartdir::Cross2Shape(0.1), perlchartdir::Cross2Shape(0.2),
    perlchartdir::Cross2Shape(0.3), perlchartdir::Cross2Shape(0.4), perlchartdir::Cross2Shape(0.5),
    perlchartdir::Cross2Shape(0.6), perlchartdir::Cross2Shape(0.7), perlchartdir::ArrowShape(),
    perlchartdir::ArrowShape(45), perlchartdir::ArrowShape(90, 0.5), perlchartdir::ArrowShape(135,
    0.5, 0.2), perlchartdir::ArrowShape(180, 0.3, 0.2, 0.3), perlchartdir::ArrowShape(225, 1, 0.5,
    0.7), perlchartdir::ArrowShape(270, 1, 0.5, 0.25), perlchartdir::ArrowShape(315, 0.5, 0.5, 0),
    perlchartdir::ArrowShape(30, 0.5, 0.1, 0.6), perlchartdir::ArrowShape(210, 0.5, 0.1, 0.6),
    perlchartdir::ArrowShape(330, 0.7, 0.1), perlchartdir::ArrowShape(150, 0.7, 0.1)];

# Create a XYChart object of size 500 x 450 pixels
my $c = new XYChart(500, 450);

# Set the plotarea at (55, 40) and of size 400 x 350 pixels, with a light grey border (0xc0c0c0).
# Turn on both horizontal and vertical grid lines with light grey color (0xc0c0c0)
$c->setPlotArea(55, 40, 400, 350, -1, -1, 0xc0c0c0, 0xc0c0c0, -1);

# Add a title to the chart using 18pt Times Bold Itatic font.
$c->addTitle("Built-in Symbols", "timesbi.ttf", 18);

# Set the axes line width to 3 pixels
$c->xAxis()->setWidth(3);
$c->yAxis()->setWidth(3);

# Ensure the ticks are at least 1 unit part (integer ticks)
$c->xAxis()->setMinTickInc(1);
$c->yAxis()->setMinTickInc(1);

# Add each symbol as a separate scatter layer.
for(my $i = 0; $i < scalar(@$symbols); ++$i) {
    $c->addScatterLayer([$i % 7 + 1.0], [int($i / 7 + 1.0)], "", $symbols->[$i], 17);
}

# Output the chart
binmode(STDOUT);
print "Content-type: image/png\n\n";
print $c->makeChart2($perlchartdir::PNG);