Search in sources :

Example 1 with TextRun

use of org.apache.poi.hslf.model.TextRun 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)

Aggregations

Rectangle (java.awt.Rectangle)1 Picture (org.apache.poi.hslf.model.Picture)1 Slide (org.apache.poi.hslf.model.Slide)1 TextBox (org.apache.poi.hslf.model.TextBox)1 TextRun (org.apache.poi.hslf.model.TextRun)1