ChartDirector Ver 3.0 (C++ Edition)

Icon Pie Chart




This example demonstrates using CDML and and parameter substitution to include icons in sector labels.

Source Code Listing

[The following project is available in "cppdemo/iconpie".]
#include "chartdir.h" int main(int argc, char *argv[]) { //The data for the pie chart double data[] = {72, 18, 15, 12}; //The depths for the sectors double depths[] = {30, 20, 10, 10}; //The labels for the pie chart const char *labels[] = {"Sunny", "Cloudy", "Rainy", "Snowy"}; //The icons for the sectors const char *icons[] = {"sun.png", "cloud.png", "rain.png", "snowy.png"}; //Create a PieChart object of size 400 x 300 pixels, with 0xffeecc as the //background color, a black border, and 1 pixel 3D border effect PieChart *c = new PieChart(400, 300, 0xffeecc, 0, 1); //Set the center of the pie at (200, 175) and the radius to 100 pixels c->setPieSize(200, 175, 100); //Add a title box using Times Bold Italic/14 points as font and 0xffcccc as //background color c->addTitle("Weather Profile in Wonderland", "timesbi.ttf", 14 )->setBackground(0xffcccc); //Set the pie data and the pie labels c->setData(DoubleArray(data, sizeof(data)/sizeof(*data)), StringArray( labels, sizeof(labels)/sizeof(*labels))); //Add icons to the chart as a custom field c->addExtraField(StringArray(icons, sizeof(icons)/sizeof(*icons))); //Configure the sector labels using CDML to include the icon images c->setLabelFormat( "<*block,valign=absmiddle*><*img={field0}*> <*block*>" "{label}\n{percent}%<*/*><*/*>"); //Draw the pie in 3D c->set3D(DoubleArray(depths, sizeof(depths)/sizeof(*depths))); //Set the start angle to 225 degrees may improve layout when the depths of //the sector are sorted in descending order, because it ensures the tallest //sector is at the back. c->setStartAngle(225); //output the chart c->makeChart("iconpie.png"); //free up resources delete c; return 0; }