use of org.apache.poi.hslf.model.Picture in project ddf by codice.
the class RrdMetricsRetriever method createSlide.
/**
* Adds a slide containing the metric's graph to the PowerPoint slide deck. The title is usually
* the metric's name and is usually in camelCase format. This will be converted to individual,
* capitalized words to the slide's title. The metric's data is used to determine the total
* count across all of the metric's data, which is displayed at the bottom of the slide, under
* the graph.
*
* @param ppt the PowerPoint slide deck to add this slide to
* @param title the title for this slide
* @param graph the metric's graph to be added to this slide
* @param metricData the metric's data
* @throws IOException
* @throws MetricsGraphException
*/
private void createSlide(SlideShow ppt, String title, byte[] graph, MetricData metricData) throws IOException, MetricsGraphException {
LOGGER.trace("ENTERING: createSlide");
if (LOGGER.isDebugEnabled()) {
java.awt.Dimension pgsize = ppt.getPageSize();
// slide width (720)
int pgx = pgsize.width;
// slide height (540)
int pgy = pgsize.height;
LOGGER.debug("ppt page width = {}", pgx);
LOGGER.debug("ppt page height = {}", pgy);
}
// Convert title, if it is in camelCase, to individual words with each word
// starting with a capital letter
String slideTitle = convertCamelCase(title);
Slide slide = ppt.createSlide();
// Add the title to the slide
TextBox titleTextBox = slide.addTitle();
TextRun textRun = titleTextBox.getTextRun();
textRun.getRichTextRuns()[0].setFontSize(32);
titleTextBox.setText(slideTitle);
titleTextBox.setHorizontalAlignment(TextBox.AlignCenter);
// Add the metric's graph to the slide
int idx = ppt.addPicture(graph, Picture.PNG);
Picture pict = new Picture(idx);
// set graph's position and size in the slide
// (Be sure to maintain aspect ratio for the image when specifying the
// width and height. Refer to width and height values used in createGraph())
pict.setAnchor(new Rectangle(20, 100, 650, 325));
slide.addShape(pict);
// If metric has a total count, add it under the graph on the slide
if (metricData.hasTotalCount()) {
TextBox totalCountTextBox = new TextBox();
textRun = totalCountTextBox.getTextRun();
textRun.getRichTextRuns()[0].setFontSize(14);
totalCountTextBox.setText("Total Count: " + metricData.getTotalCount());
totalCountTextBox.setHorizontalAlignment(TextBox.AlignLeft);
// x,y values determined relative to x,y of graph's anchor position
// and the height of the graph
totalCountTextBox.setAnchor(new Rectangle(20, 450, 250, 80));
slide.addShape(totalCountTextBox);
}
LOGGER.trace("EXITING: createSlide");
}
use of org.apache.poi.hslf.model.Picture in project ddf by codice.
the class RrdMetricsRetrieverTest method verifySlide.
private void verifySlide(Slide slide, String metricName, boolean hasTotalCount) {
assertThat(slide, not(nullValue()));
Shape[] shapes = slide.getShapes();
assertThat(shapes, not(nullValue()));
// expected shapes: title text box, metric's graph, metric's total count text box
int numExpectedShapes = 2;
int numExpectedTextBoxes = 1;
if (hasTotalCount) {
numExpectedShapes++;
numExpectedTextBoxes++;
}
assertThat(shapes.length, equalTo(numExpectedShapes));
Picture picture = null;
int numTextBoxes = 0;
for (int i = 0; i < numExpectedShapes; i++) {
if (shapes[i] instanceof Picture) {
picture = (Picture) shapes[i];
// title text box is actually an AutoShape
} else if (shapes[i] instanceof TextBox || shapes[i] instanceof AutoShape) {
numTextBoxes++;
}
}
assertThat(picture, not(nullValue()));
PictureData picData = picture.getPictureData();
assertThat(picData, not(nullValue()));
assertThat(picData.getType(), equalTo(Picture.PNG));
assertThat(numTextBoxes, equalTo(numExpectedTextBoxes));
}
Aggregations