Search in sources :

Example 1 with Picture

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");
}
Also used : Slide(org.apache.poi.hslf.model.Slide) Picture(org.apache.poi.hslf.model.Picture) Rectangle(java.awt.Rectangle) TextBox(org.apache.poi.hslf.model.TextBox) TextRun(org.apache.poi.hslf.model.TextRun)

Example 2 with Picture

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));
}
Also used : AutoShape(org.apache.poi.hslf.model.AutoShape) Shape(org.apache.poi.hslf.model.Shape) Picture(org.apache.poi.hslf.model.Picture) AutoShape(org.apache.poi.hslf.model.AutoShape) TextBox(org.apache.poi.hslf.model.TextBox) PictureData(org.apache.poi.hslf.usermodel.PictureData)

Aggregations

Picture (org.apache.poi.hslf.model.Picture)2 TextBox (org.apache.poi.hslf.model.TextBox)2 Rectangle (java.awt.Rectangle)1 AutoShape (org.apache.poi.hslf.model.AutoShape)1 Shape (org.apache.poi.hslf.model.Shape)1 Slide (org.apache.poi.hslf.model.Slide)1 TextRun (org.apache.poi.hslf.model.TextRun)1 PictureData (org.apache.poi.hslf.usermodel.PictureData)1