#include "chartdir.h"
int main(int argc, char *argv[])
{
// The data for the upper and lower bounding lines
double upperY[] = {60, 60, 100, 100, 60, 60};
double lowerY[] = {40, 40, 80, 80, 40, 40};
double zoneX[] = {0, 2.5, 3.5, 5.5, 6.5, 10};
// The data for the spline curve
double curveY[] = {50, 44, 54, 48, 58, 50, 90, 85, 104, 82, 96, 90, 74, 52, 35,
58, 46, 54, 48, 52, 50};
double curveX[] = {0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7,
7.5, 8, 8.5, 9, 9.5, 10};
// Create a XYChart object of size 600 x 300 pixels, with a light grey (cccccc)
// background, black border, and 1 pixel 3D border effect.
XYChart *c = new XYChart(600, 300, 0xcccccc, 0x000000, 1);
// Set the plotarea at (55, 58) and of size 520 x 195 pixels, with white
// background. Turn on both horizontal and vertical grid lines with light grey
// color (cccccc)
c->setPlotArea(55, 58, 520, 195, 0xffffff, -1, -1, 0xcccccc, 0xcccccc);
// Add a legend box at (55, 32) (top of the chart) with horizontal layout. Use 9
// pts Arial Bold font. Set the background and border color to Transparent.
c->addLegend(55, 32, false, "arialbd.ttf", 9)->setBackground(Chart::Transparent);
// Add a title box to the chart using 15 pts Times Bold Italic font. The title is
// in CDML and includes embedded images for highlight. The text is white (ffffff)
// on a black background, with a 1 pixel 3D border.
c->addTitle(
"<*block,valign=absmiddle*><*img=star.png*><*img=star.png*> Performance "
"Enhancer <*img=star.png*><*img=star.png*><*/*>", "timesbi.ttf", 15, 0xffffff
)->setBackground(0x000000, -1, 1);
// Add a title to the y axis
c->yAxis()->setTitle("Temperature");
// Add a title to the x axis using CMDL
c->xAxis()->setTitle(
"<*block,valign=absmiddle*><*img=clock.png*> Elapsed Time (hour)<*/*>");
// Set the axes width to 2 pixels
c->xAxis()->setWidth(2);
c->yAxis()->setWidth(2);
// Add a purple (800080) spline layer to the chart with a line width of 2 pixels
SplineLayer *splineLayer = c->addSplineLayer(DoubleArray(curveY,
sizeof(curveY)/sizeof(curveY[0])), 0x800080, "Molecular Temperature");
splineLayer->setXData(DoubleArray(curveX, sizeof(curveX)/sizeof(curveX[0])));
splineLayer->setLineWidth(2);
// Add a line layer to the chart with two dark green (338033) data sets, and a
// line width of 2 pixels
LineLayer *lineLayer = c->addLineLayer();
lineLayer->addDataSet(DoubleArray(upperY, sizeof(upperY)/sizeof(upperY[0])),
0x338033, "Target Zone");
lineLayer->addDataSet(DoubleArray(lowerY, sizeof(lowerY)/sizeof(lowerY[0])),
0x338033);
lineLayer->setXData(DoubleArray(zoneX, sizeof(zoneX)/sizeof(zoneX[0])));
lineLayer->setLineWidth(2);
// Color the zone between the upper zone line and lower zone line as
// semi-transparent light green (8099ff99)
c->addInterLineLayer(lineLayer->getLine(0), lineLayer->getLine(1), 0x8099FF99,
0x8099FF99);
// If the spline line gets above the upper zone line, color to area between the
// lines red (ff0000)
c->addInterLineLayer(splineLayer->getLine(0), lineLayer->getLine(0), 0xff0000,
Chart::Transparent);
// If the spline line gets below the lower zone line, color to area between the
// lines blue (0000ff)
c->addInterLineLayer(splineLayer->getLine(0), lineLayer->getLine(1),
Chart::Transparent, 0x0000ff);
// Add a custom CDML text at the bottom right of the plot area as the logo
c->addText(575, 250,
"<*block,valign=absmiddle*><*img=small_molecule.png*> <*block*>"
"<*font=timesbi.ttf,size=10,color=804040*>Molecular\nEngineering<*/*>"
)->setAlignment(Chart::BottomRight);
// output the chart
c->makeChart("linecompare.png");
//free up resources
delete c;
return 0;
} |