Frames | No Frames |
1: /* ======================================================================== 2: * JCommon : a free general purpose class library for the Java(tm) platform 3: * ======================================================================== 4: * 5: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors. 6: * 7: * Project Info: http://www.jfree.org/jcommon/index.html 8: * 9: * This library is free software; you can redistribute it and/or modify it 10: * under the terms of the GNU Lesser General Public License as published by 11: * the Free Software Foundation; either version 2.1 of the License, or 12: * (at your option) any later version. 13: * 14: * This library is distributed in the hope that it will be useful, but 15: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 17: * License for more details. 18: * 19: * You should have received a copy of the GNU Lesser General Public 20: * License along with this library; if not, write to the Free Software 21: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 22: * USA. 23: * 24: * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 25: * in the United States and other countries.] 26: * 27: * ---------------------------- 28: * BasicStrokeWriteHandler.java 29: * ---------------------------- 30: * (C)opyright 2003-2005, by Thomas Morgner and Contributors. 31: * 32: * Original Author: Thomas Morgner; 33: * Contributor(s): David Gilbert (for Object Refinery Limited); 34: * 35: * $Id: BasicStrokeWriteHandler.java,v 1.3 2005/10/18 13:35:21 mungady Exp $ 36: * 37: * Changes 38: * ------- 39: * 12-Nov-2003 : Initial version (TM); 40: * 25-Nov-2003 : Updated header (DG); 41: * 42: */ 43: 44: package org.jfree.xml.writer.coretypes; 45: 46: import java.awt.BasicStroke; 47: import java.io.IOException; 48: 49: import org.jfree.xml.writer.AbstractXmlWriteHandler; 50: import org.jfree.xml.writer.AttributeList; 51: import org.jfree.xml.writer.XMLWriter; 52: import org.jfree.xml.writer.XMLWriterException; 53: 54: /** 55: * A handler that can write the XML description for a {@link BasicStroke} object. 56: */ 57: public class BasicStrokeWriteHandler extends AbstractXmlWriteHandler { 58: 59: /** 60: * Creates a new handler. 61: */ 62: public BasicStrokeWriteHandler() { 63: super(); 64: } 65: 66: /** 67: * Performs the writing of a single object. 68: * 69: * @param tagName the tag name. 70: * @param object the object ({@link BasicStroke} expected). 71: * @param writer the writer. 72: * @param mPlexAttribute ?? 73: * @param mPlexValue ?? 74: * 75: * @throws IOException if there is an I/O problem. 76: * @throws XMLWriterException if there is a problem with the writer. 77: */ 78: public void write(final String tagName, final Object object, final XMLWriter writer, 79: final String mPlexAttribute, final String mPlexValue) 80: throws IOException, XMLWriterException { 81: final BasicStroke stroke = (BasicStroke) object; 82: final float[] dashArray = stroke.getDashArray(); 83: final float dashPhase = stroke.getDashPhase(); 84: final int endCap = stroke.getEndCap(); 85: final int lineJoin = stroke.getLineJoin(); 86: final float lineWidth = stroke.getLineWidth(); 87: final float miterLimit = stroke.getMiterLimit(); 88: final AttributeList attribs = new AttributeList(); 89: if (mPlexAttribute != null) { 90: attribs.setAttribute(mPlexAttribute, mPlexValue); 91: } 92: attribs.setAttribute("type", "basic"); 93: attribs.setAttribute("endCap", String.valueOf(endCap)); 94: attribs.setAttribute("lineJoin", String.valueOf(lineJoin)); 95: attribs.setAttribute("lineWidth", String.valueOf(lineWidth)); 96: attribs.setAttribute("miterLimit", String.valueOf(miterLimit)); 97: if (dashArray != null) { 98: attribs.setAttribute("dashArray", toString(dashArray)); 99: attribs.setAttribute("dashPhase", String.valueOf(dashPhase)); 100: } 101: writer.writeTag(tagName, attribs, true); 102: } 103: 104: /** 105: * A utility method that converts a dash array (from a {@link BasicStroke} object) to 106: * a {@link String}. 107: * 108: * @param dashArray the dash array. 109: * 110: * @return a {@link String} representing the dash array. 111: */ 112: private String toString(final float[] dashArray) { 113: final StringBuffer buffer = new StringBuffer(); 114: for (int i = 0; i < dashArray.length; i++) { 115: final float f = dashArray[i]; 116: if (i != 0) { 117: buffer.append(','); 118: } 119: buffer.append(f); 120: } 121: return buffer.toString(); 122: } 123: 124: }