void createChart(int chartIndex, const char *filename) { char buffer[256]; // the tilt angle of the pie int angle = chartIndex * 15; // The data for the pie chart double data[] = {25, 18, 15, 12, 8, 30, 35}; // Create a PieChart object of size 100 x 110 pixels PieChart *c = new PieChart(100, 110); // Set the center of the pie at (50, 55) and the radius to 38 pixels c->setPieSize(50, 55, 38); // Set the depth and tilt angle of the 3D pie (-1 means auto depth) c->set3D(-1, angle); // Add a title showing the tilt angle sprintf(buffer, "Tilt = %d deg", angle); c->addTitle(buffer, "arial.ttf", 8); // Set the pie data c->setData(DoubleArray(data, (int)(sizeof(data) / sizeof(data[0])))); // Disable the sector labels by setting the color to Transparent c->setLabelStyle("", 8, Chart::Transparent); // Output the chart c->makeChart(filename); //free up resources delete c; }
int main(int argc, char *argv[]) { // The data for the pie chart double data[] = {35, 30, 25, 7, 6, 5, 4, 3, 2, 1}; // The labels for the pie chart const char *labels[] = {"Labor", "Production", "Facilities", "Taxes", "Misc", "Legal", "Insurance", "Licenses", "Transport", "Interest"}; // Create a PieChart object of size 560 x 270 pixels, with a golden background // and a 1 pixel 3D border PieChart *c = new PieChart(560, 270, Chart::goldColor(), -1, 1); // Add a title box using 15 pts Times Bold Italic font and metallic pink // background color c->addTitle("Project Cost Breakdown", "timesbi.ttf", 15)->setBackground( Chart::metalColor(0xff9999)); // Set the center of the pie at (280, 135) and the radius to 110 pixels c->setPieSize(280, 135, 110); // Draw the pie in 3D with 20 pixels 3D depth c->set3D(20); // Use the side label layout method c->setLabelLayout(Chart::SideLayout); // Set the label box background color the same as the sector color, with glass // effect, and with 5 pixels rounded corners TextBox *t = c->setLabelStyle(); t->setBackground(Chart::SameAsMainColor, Chart::Transparent, Chart::glassEffect() ); t->setRoundedCorners(5); // Set the border color of the sector the same color as the fill color. Set the // line color of the join line to black (0x0) c->setLineColor(Chart::SameAsMainColor, 0x000000); // Set the start angle to 135 degrees may improve layout when there are many // small sectors at the end of the data array (that is, data sorted in descending // order). It is because this makes the small sectors position near the // horizontal axis, where the text label has the least tendency to overlap. For // data sorted in ascending order, a start angle of 45 degrees can be used // instead. c->setStartAngle(135); // Set the pie data and the pie labels c->setData(DoubleArray(data, sizeof(data)/sizeof(data[0])), StringArray(labels, sizeof(labels)/sizeof(labels[0]))); // Output the chart c->makeChart("sidelabelpie.png"); //free up resources delete c; return 0; }
void createChart(int img, const char *filename) { // The data for the pie chart double data[] = {18, 30, 20, 15}; // The colors to use for the sectors int colors[] = {0x66aaee, 0xeebb22, 0xbbbbbb, 0x8844ff}; // Create a PieChart object of size 200 x 220 pixels. Use a vertical gradient // color from blue (0000cc) to deep blue (000044) as background. Use rounded // corners of 16 pixels radius. PieChart *c = new PieChart(200, 220); c->setBackground(c->linearGradientColor(0, 0, 0, c->getHeight(), 0x0000cc, 0x000044)); c->setRoundedFrame(0xffffff, 16); // Set the center of the pie at (100, 120) and the radius to 80 pixels c->setPieSize(100, 120, 80); // Set the pie data c->setData(DoubleArray(data, sizeof(data)/sizeof(data[0]))); // Set the sector colors c->setColors(Chart::DataColor, IntArray(colors, sizeof(colors)/sizeof(colors[0])) ); // Demonstrates various shading modes if (img == 0) { c->addTitle("Default Shading", "bold", 12, 0xffffff); } else if (img == 1) { c->addTitle("Local Gradient", "bold", 12, 0xffffff); c->setSectorStyle(Chart::LocalGradientShading); } else if (img == 2) { c->addTitle("Global Gradient", "bold", 12, 0xffffff); c->setSectorStyle(Chart::GlobalGradientShading); } else if (img == 3) { c->addTitle("Concave Shading", "bold", 12, 0xffffff); c->setSectorStyle(Chart::ConcaveShading); } else if (img == 4) { c->addTitle("Rounded Edge", "bold", 12, 0xffffff); c->setSectorStyle(Chart::RoundedEdgeShading); } else if (img == 5) { c->addTitle("Radial Gradient", "bold", 12, 0xffffff); c->setSectorStyle(Chart::RadialShading); } // Disable the sector labels by setting the color to Transparent c->setLabelStyle("", 8, Chart::Transparent); // Output the chart c->makeChart(filename); //free up resources delete c; }
int main(int argc, char *argv[]) { // The data for the pie chart double data[] = {18, 45, 28}; // The labels for the pie chart const char *labels[] = {"Marble", "Wood", "Granite"}; // The icons for the sectors const char *texture[] = {"marble3.png", "wood.png", "rock.png"}; // Create a PieChart object of size 400 x 330 pixels, with a metallic green // (88EE88) background, black border and 1 pixel 3D border effect PieChart *c = new PieChart(400, 330, Chart::metalColor(0x88ee88), 0x000000, 1); // Set donut center at (200, 160), and outer/inner radii as 120/60 pixels c->setDonutSize(200, 160, 120, 60); // Add a title box using 15 pts Times Bold Italic font and metallic deep green // (008000) background color c->addTitle("Material Composition", "timesbi.ttf", 15)->setBackground( Chart::metalColor(0x008000)); // Set the pie data and the pie labels c->setData(DoubleArray(data, sizeof(data)/sizeof(data[0])), StringArray(labels, sizeof(labels)/sizeof(labels[0]))); // Set the colors of the sectors to the 3 texture patterns c->setColor(Chart::DataColor + 0, c->patternColor(texture[0])); c->setColor(Chart::DataColor + 1, c->patternColor(texture[1])); c->setColor(Chart::DataColor + 2, c->patternColor(texture[2])); // Draw the pie in 3D with a 3D depth of 30 pixels c->set3D(30); // Use 12 pts Arial Bold Italic as the sector label font c->setLabelStyle("arialbi.ttf", 12); // Output the chart c->makeChart("texturedonut.png"); //free up resources delete c; return 0; }
void createChart(int chartIndex, const char *filename) { char buffer[256]; // Determine the donut inner radius (as percentage of outer radius) based on input parameter int donutRadius = chartIndex * 25; // The data for the pie chart double data[] = {10, 10, 10, 10, 10}; // The labels for the pie chart const char *labels[] = {"Marble", "Wood", "Granite", "Plastic", "Metal"}; // Create a PieChart object of size 150 x 120 pixels, with a grey (EEEEEE) background, black // border and 1 pixel 3D border effect PieChart *c = new PieChart(150, 120, 0xeeeeee, 0x000000, 1); // Set donut center at (75, 65) and the outer radius to 50 pixels. Inner radius is computed // according donutWidth c->setDonutSize(75, 60, 50, 50 * donutRadius / 100); // Add a title to show the donut width sprintf(buffer, "Inner Radius = %d %%", donutRadius); c->addTitle(buffer, "arial.ttf", 10)->setBackground(0xcccccc, 0); // Draw the pie in 3D c->set3D(12); // Set the pie data and the pie labels c->setData(DoubleArray(data, (int)(sizeof(data) / sizeof(data[0]))), StringArray(labels, (int)( sizeof(labels) / sizeof(labels[0])))); // Disable the sector labels by setting the color to Transparent c->setLabelStyle("", 8, Chart::Transparent); // Output the chart c->makeChart(filename); //free up resources delete c; }
void createChart(int img, const char *filename) { char buffer[256]; // the tilt angle of the pie int angle = img * 90 + 45; // The data for the pie chart double data[] = {25, 18, 15, 12, 8, 30, 35}; // Create a PieChart object of size 100 x 110 pixels PieChart *c = new PieChart(100, 110); // Set the center of the pie at (50, 55) and the radius to 36 pixels c->setPieSize(50, 55, 36); // Set the depth, tilt angle and 3D mode of the 3D pie (-1 means auto depth, // "true" means the 3D effect is in shadow mode) c->set3D(-1, angle, true); // Add a title showing the shadow angle sprintf(buffer, "Shadow @ %d deg", angle); c->addTitle(buffer, "arial.ttf", 8); // Set the pie data c->setData(DoubleArray(data, sizeof(data)/sizeof(data[0]))); // Disable the sector labels by setting the color to Transparent c->setLabelStyle("", 8, Chart::Transparent); // output the chart c->makeChart(filename); //free up resources delete c; }
int main(int argc, char *argv[]) { // The data for the pie chart double data[] = {21, 18, 15, 12, 8, 24}; // The labels for the pie chart const char *labels[] = {"Labor", "Licenses", "Taxes", "Legal", "Facilities", "Production"}; // The colors to use for the sectors int colors[] = {0x66aaee, 0xeebb22, 0xbbbbbb, 0x8844ff, 0xdd2222, 0x009900}; // Create a PieChart object of size 600 x 320 pixels. Use a vertical gradient color from light // blue (99ccff) to white (ffffff) spanning the top 100 pixels as background. Set border to grey // (888888). Use rounded corners. Enable soft drop shadow. PieChart *c = new PieChart(600, 320); c->setBackground(c->linearGradientColor(0, 0, 0, 100, 0x99ccff, 0xffffff), 0x888888); c->setRoundedFrame(); c->setDropShadow(); // Add a title using 18pt Times New Roman Bold Italic font. Add 16 pixels top margin to the // title. c->addTitle("Pie Chart With Legend Demonstration", "timesbi.ttf", 18)->setMargin(0, 0, 16, 0); // Set the center of the pie at (160, 165) and the radius to 110 pixels c->setPieSize(160, 165, 110); // Draw the pie in 3D with a pie thickness of 25 pixels c->set3D(25); // Set the pie data and the pie labels c->setData(DoubleArray(data, (int)(sizeof(data) / sizeof(data[0]))), StringArray(labels, (int)( sizeof(labels) / sizeof(labels[0])))); // Set the sector colors c->setColors(Chart::DataColor, IntArray(colors, (int)(sizeof(colors) / sizeof(colors[0])))); // Use local gradient shading for the sectors c->setSectorStyle(Chart::LocalGradientShading); // Use the side label layout method, with the labels positioned 16 pixels from the pie bounding // box c->setLabelLayout(Chart::SideLayout, 16); // Show only the sector number as the sector label c->setLabelFormat("{={sector}+1}"); // Set the sector label style to Arial Bold 10pt, with a dark grey (444444) border c->setLabelStyle("arialbd.ttf", 10)->setBackground(Chart::Transparent, 0x444444); // Add a legend box, with the center of the left side anchored at (330, 175), and using 10pt // Arial Bold Italic font LegendBox *b = c->addLegend(330, 175, true, "arialbi.ttf", 10); b->setAlignment(Chart::Left); // Set the legend box border to dark grey (444444), and with rounded conerns b->setBackground(Chart::Transparent, 0x444444); b->setRoundedCorners(); // Set the legend box margin to 16 pixels, and the extra line spacing between the legend entries // as 5 pixels b->setMargin(16); b->setKeySpacing(0, 5); // Set the legend box icon to have no border (border color same as fill color) b->setKeyBorder(Chart::SameAsMainColor); // Set the legend text to show the sector number, followed by a 120 pixels wide block showing // the sector label, and a 40 pixels wide block showing the percentage b->setText( "<*block,valign=top*>{={sector}+1}.<*advanceTo=22*><*block,width=120*>{label}<*/*>" "<*block,width=40,halign=right*>{percent}<*/*>%"); // Output the chart c->makeChart("legendpie2.png"); //free up resources delete c; return 0; }
int main(int argc, char *argv[]) { // The data for the pie chart double data[] = {28, 45, 5, 1, 12}; // The labels for the pie chart const char *labels[] = {"Excellent", "Good", "Bad", "Very Bad", "Neutral"}; // The icons for the sectors const char *icons[] = {"laugh.png", "smile.png", "sad.png", "angry.png", "nocomment.png"}; // Create a PieChart object of size 560 x 300 pixels, with a silver background, // black border, 1 pxiel 3D border effect and rounded corners PieChart *c = new PieChart(560, 300, Chart::silverColor(), 0x000000, 1); c->setRoundedFrame(); // Set the center of the pie at (280, 150) and the radius to 120 pixels c->setPieSize(280, 150, 120); // Add a title box with title written in CDML, on a sky blue (A0C8FF) background // with glass effect c->addTitle( "<*block,valign=absmiddle*><*img=doc.png*> Customer Survey: " "<*font=timesi.ttf,color=000000*>Do you like our <*font,color=dd0000*>Hyper" "<*super*>TM<*/font*> molecules?", "timesbi.ttf", 15, 0x000080 )->setBackground(0xa0c8ff, 0x000000, Chart::glassEffect()); // Add a logo to the chart written in CDML as the bottom title aligned to the // bottom right c->addTitle(Chart::BottomRight, "<*block,valign=absmiddle*><*img=molecule.png*> <*block*><*color=FF*>" "<*font=timesbi.ttf,size=12*>Molecular Engineering\n" "<*font=arial.ttf,size=10*>Creating better molecules"); // Set the pie data and the pie labels c->setData(DoubleArray(data, sizeof(data)/sizeof(data[0])), StringArray(labels, sizeof(labels)/sizeof(labels[0]))); // Set 3D style c->set3D(); // Use the side label layout method c->setLabelLayout(Chart::SideLayout); // Set the label background color to transparent c->setLabelStyle()->setBackground(Chart::Transparent); // Add icons to the chart as a custom field c->addExtraField(StringArray(icons, sizeof(icons)/sizeof(icons[0]))); // Configure the sector labels using CDML to include the icon images c->setLabelFormat( "<*block,valign=absmiddle*><*img={field0}*> {label} ({percent|0}%)"); // Explode the 3rd and 4th sectors as a group (index = 2 and 3) c->setExplodeGroup(2, 3); // Set the start angle to 135 degrees may improve layout when there are many // small sectors at the end of the data array (that is, data sorted in descending // order). It is because this makes the small sectors position near the // horizontal axis, where the text label has the least tendency to overlap. For // data sorted in ascending order, a start angle of 45 degrees can be used // instead. c->setStartAngle(135); // output the chart c->makeChart("iconpie2.png"); //free up resources delete c; return 0; }
int main(int argc, char *argv[]) { // The data for the pie chart double data[] = {25, 18, 15, 12, 8, 30, 35}; // The labels for the pie chart const char *labels[] = {"Labor", "Licenses", "Taxes", "Legal", "Insurance", "Facilities", "Production"}; // Create a PieChart object of size 600 x 320 pixels. Set background color to // brushed silver, with a 2 pixel 3D border. Use rounded corners of 20 pixels // radius. PieChart *c = new PieChart(600, 320, Chart::brushedSilverColor(), Chart::Transparent, 2); c->setRoundedFrame(0xffffff, 20); // Add a title using 18 pts Times New Roman Bold Italic font. #Set top/bottom // margins to 8 pixels. TextBox *title = c->addTitle("Donut Chart Demonstration", "timesbi.ttf", 18); title->setMargin(0, 0, 8, 8); // Add a 2 pixels wide separator line just under the title c->addLine(10, title->getHeight(), c->getWidth() - 11, title->getHeight(), Chart::LineColor, 2); // Set donut center at (160, 175), and outer/inner radii as 110/55 pixels c->setDonutSize(160, 175, 110, 55); // Set the pie data and the pie labels c->setData(DoubleArray(data, sizeof(data)/sizeof(data[0])), StringArray(labels, sizeof(labels)/sizeof(labels[0]))); // Use ring shading effect for the sectors c->setSectorStyle(Chart::RingShading); // Use the side label layout method, with the labels positioned 16 pixels from // the donut bounding box c->setLabelLayout(Chart::SideLayout, 16); // Show only the sector number as the sector label c->setLabelFormat("{={sector}+1}"); // Set the sector label style to Arial Bold 10pt, with a dark grey (444444) // border c->setLabelStyle("arialbd.ttf", 10)->setBackground(Chart::Transparent, 0x444444); // Add a legend box, with the center of the left side anchored at (330, 175), and // using 10 pts Arial Bold Italic font LegendBox *b = c->addLegend(330, 175, true, "arialbi.ttf", 10); b->setAlignment(Chart::Left); // Set the legend box border to dark grey (444444), and with rounded conerns b->setBackground(Chart::Transparent, 0x444444); b->setRoundedCorners(); // Set the legend box margin to 16 pixels, and the extra line spacing between the // legend entries as 5 pixels b->setMargin(16); b->setKeySpacing(0, 5); // Set the legend text to show the sector number, followed by a 120 pixels wide // block showing the sector label, and a 40 pixels wide block showing the // percentage b->setText( "<*block,valign=top*>{={sector}+1}.<*advanceTo=22*><*block,width=120*>" "{label}<*/*><*block,width=40,halign=right*>{percent}<*/*>%"); // Output the chart c->makeChart("donut.jpg"); //free up resources delete c; return 0; }