package org.activityinfo.server.report.renderer.itext;
/*
* #%L
* ActivityInfo Server
* %%
* Copyright (C) 2009 - 2013 UNICEF
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import com.google.code.appengine.awt.Color;
import com.lowagie.text.*;
import org.activityinfo.i18n.shared.I18N;
import org.activityinfo.legacy.shared.reports.model.PivotChartReportElement;
import org.activityinfo.server.report.renderer.ChartRendererJC;
import org.activityinfo.server.report.renderer.image.ImageCreator;
import org.activityinfo.server.report.renderer.image.ItextGraphic;
public class ItextChartRenderer implements ItextRenderer<PivotChartReportElement> {
private final ImageCreator imageCreator;
private final ChartRendererJC chartRenderer = new ChartRendererJC();
public ItextChartRenderer(ImageCreator imageCreator) {
super();
this.imageCreator = imageCreator;
}
@Override
public void render(DocWriter writer, Document doc, PivotChartReportElement element) throws DocumentException {
doc.add(ThemeHelper.elementTitle(element.getTitle()));
ItextRendererHelper.addFilterDescription(doc, element.getContent().getFilterDescriptions());
ItextRendererHelper.addDateFilterDescription(doc, element.getFilter().getDateRange());
if (element.getContent().getData().isEmpty()) {
Paragraph para = new Paragraph(I18N.CONSTANTS.noData());
para.setFont(new Font(Font.HELVETICA, 12, Font.NORMAL, new Color(0, 0, 0)));
doc.add(para);
} else {
float width = doc.getPageSize().getWidth() - doc.rightMargin() - doc.leftMargin();
float height = (doc.getPageSize().getHeight() - doc.topMargin() - doc.bottomMargin()) / 3f;
renderImage(writer, doc, element, width, height);
}
}
protected void renderImage(DocWriter writer,
Document doc,
PivotChartReportElement element,
float width,
float height) throws BadElementException, DocumentException {
ItextGraphic image = imageCreator.create((int) width, (int) height);
chartRenderer.render(element, false, image.getGraphics(), (int) width, (int) height, 72);
doc.add(image.toItextImage());
}
}