/* * JasperReports - Free Java Reporting Library. * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved. * http://www.jaspersoft.com * * Unless you have purchased a commercial license agreement from Jaspersoft, * the following license terms apply: * * This program is part of JasperReports. * * JasperReports is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * JasperReports 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with JasperReports. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.jasperreports.engine.export.oasis; import java.io.IOException; import java.io.Writer; import net.sf.jasperreports.engine.JRPrintGraphicElement; import net.sf.jasperreports.engine.JRPrintImage; import net.sf.jasperreports.engine.type.HorizontalAlignEnum; import net.sf.jasperreports.engine.type.ModeEnum; import net.sf.jasperreports.engine.type.VerticalAlignEnum; import net.sf.jasperreports.engine.util.JRColorUtil; /** * @author Teodor Danciu (teodord@users.sourceforge.net) * @version $Id: GraphicStyle.java 3653 2010-03-30 16:12:52Z teodord $ */ public class GraphicStyle extends Style { /** * */ private String backcolor = null; private String forecolor = null; private String style = null; private String width = null; private String hAlign = null; private String vAlign = null; /** * */ public GraphicStyle(Writer styleWriter, JRPrintGraphicElement element) { super(styleWriter); if (element.getModeValue() == ModeEnum.OPAQUE) { //fill = "solid"; backcolor = JRColorUtil.getColorHexa(element.getBackcolor()); } // else // { // //fill = "none"; // } forecolor = JRColorUtil.getColorHexa(element.getLinePen().getLineColor()); double doubleWidth = element.getLinePen().getLineWidth().doubleValue(); if (doubleWidth < 0) { style = "none"; } else { switch (element.getLinePen().getLineStyleValue()) { case DOTTED : //FIXMEBORDER case DASHED : { style = "dash"; break; } case SOLID : default : { style = "solid"; break; } } } width = String.valueOf(Utility.translatePixelsToInchesWithNoRoundOff(doubleWidth)); HorizontalAlignEnum horizontalAlignment = HorizontalAlignEnum.LEFT; VerticalAlignEnum verticalAlignment = VerticalAlignEnum.TOP; if(element instanceof JRPrintImage) { JRPrintImage imageElement = (JRPrintImage)element; horizontalAlignment = imageElement.getHorizontalAlignmentValue(); verticalAlignment = imageElement.getVerticalAlignmentValue(); } switch(horizontalAlignment) { case RIGHT: { hAlign = "right"; break; } case JUSTIFIED: { hAlign = "justified"; break; } case CENTER: { hAlign = "center"; break; } case LEFT: default: { hAlign = "left"; break; } } switch(verticalAlignment) { case BOTTOM: { vAlign = "bottom"; break; } case MIDDLE: { vAlign = "middle"; break; } case TOP: default: { vAlign = "top"; break; } } } /** * */ public String getId() { //return fill + "|" + backcolor StringBuffer id = new StringBuffer(); id.append(backcolor); id.append("|"); id.append(forecolor); id.append("|"); id.append(style); id.append("|"); id.append(width); id.append("|"); id.append(hAlign); id.append("|"); id.append(vAlign); return id.toString(); } /** * */ public void write(String lineStyleName) throws IOException { styleWriter.write(" <style:style style:name=\"" + lineStyleName + "\""); styleWriter.write(" style:family=\"graphic\" style:parent-style-name=\"Graphics\">\n"); styleWriter.write(" <style:graphic-properties"); styleWriter.write(" draw:fill-color=\"#" + backcolor + "\""); styleWriter.write(" style:horizontal-pos=\""+hAlign+ "\" style:horizontal-rel=\"paragraph\""); styleWriter.write(" style:vertical-pos=\""+vAlign+ "\" style:vertical-rel=\"paragraph\""); styleWriter.write(" svg:stroke-color=\"#" + forecolor + "\""); styleWriter.write(" draw:stroke=\"" + style + "\"");//FIXMENOW dashed borders do not work; only dashed lines and ellipses seem to work styleWriter.write(" draw:stroke-dash=\"Dashed\""); styleWriter.write(" svg:stroke-width=\"" + width + "in\""); styleWriter.write("/>\n"); styleWriter.write("</style:style>\n"); } }