001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/graphics/sld/LabelPlacement.java $ 002 /*---------------- FILE HEADER ------------------------------------------ 003 004 This file is part of deegree. 005 Copyright (C) 2001-2008 by: 006 EXSE, Department of Geography, University of Bonn 007 http://www.giub.uni-bonn.de/deegree/ 008 lat/lon GmbH 009 http://www.lat-lon.de 010 011 This library is free software; you can redistribute it and/or 012 modify it under the terms of the GNU Lesser General Public 013 License as published by the Free Software Foundation; either 014 version 2.1 of the License, or (at your option) any later version. 015 016 This library is distributed in the hope that it will be useful, 017 but WITHOUT ANY WARRANTY; without even the implied warranty of 018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 019 Lesser General Public License for more details. 020 021 You should have received a copy of the GNU Lesser General Public 022 License along with this library; if not, write to the Free Software 023 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 024 025 Contact: 026 027 Andreas Poth 028 lat/lon GmbH 029 Aennchenstr. 19 030 53115 Bonn 031 Germany 032 E-Mail: poth@lat-lon.de 033 034 Prof. Dr. Klaus Greve 035 Department of Geography 036 University of Bonn 037 Meckenheimer Allee 166 038 53115 Bonn 039 Germany 040 E-Mail: greve@giub.uni-bonn.de 041 042 043 ---------------------------------------------------------------------------*/ 044 package org.deegree.graphics.sld; 045 046 import org.deegree.framework.xml.Marshallable; 047 048 /** 049 * Used to position a label relative to a point or a line string. For a point, you can specify the 050 * anchor point of the label and a linear displacement from the point (so that you can also plot a 051 * graphic symbol at the point). For a line-string placement, you can specify a perpendicular offset 052 * (so you can draw a stroke on the line). MORE PARAMETERS ARE PROBABLY NEEDED HERE. 053 * <p> 054 * 055 * @author <a href="mailto:k.lupp@web.de">Katharina Lupp</a> 056 * @author <a href="mailto:mschneider@lat-lon.de">Markus Schneider</a> 057 * @version $Revision: 9340 $ $Date: 2007-12-27 13:32:12 +0100 (Do, 27 Dez 2007) $ 058 */ 059 060 public class LabelPlacement implements Marshallable { 061 062 private LinePlacement linePlacement = null; 063 064 private PointPlacement pointPlacement = null; 065 066 /** 067 * constructor initializing the class with the <LabelPlacement> 068 */ 069 public LabelPlacement( PointPlacement pointPlacement ) { 070 setPointPlacement( pointPlacement ); 071 } 072 073 /** 074 * constructor initializing the class with the <LabelPlacement> 075 */ 076 public LabelPlacement( LinePlacement linePlacement ) { 077 setLinePlacement( linePlacement ); 078 } 079 080 /** 081 * For a PointPlacement, the anchor point of the label and a linear displacement from the point 082 * can be specified, to allow a graphic symbol to be plotted directly at the point. This might 083 * be useful to label a city, for example. 084 * 085 * @return the pointplacement for the label 086 * 087 */ 088 public PointPlacement getPointPlacement() { 089 return pointPlacement; 090 } 091 092 /** 093 * sets <PointPlacement> 094 * 095 * @param pointPlacement 096 * the pointplacement for the label 097 * 098 */ 099 public void setPointPlacement( PointPlacement pointPlacement ) { 100 this.pointPlacement = pointPlacement; 101 linePlacement = null; 102 } 103 104 /** 105 * For a LinePlacement, a perpendicular offset can be specified, to allow the line itself to be 106 * plotted also. This might be useful for labelling a road or a river, for example. 107 * 108 * @return the lineplacement for the label 109 * 110 */ 111 public LinePlacement getLinePlacement() { 112 return linePlacement; 113 } 114 115 /** 116 * sets <LinePlacement> 117 * 118 * @param linePlacement 119 * the lineplacement for the label 120 * 121 */ 122 public void setLinePlacement( LinePlacement linePlacement ) { 123 this.linePlacement = linePlacement; 124 pointPlacement = null; 125 } 126 127 /** 128 * exports the content of the Font as XML formated String 129 * 130 * @return xml representation of the Font 131 */ 132 public String exportAsXML() { 133 134 StringBuffer sb = new StringBuffer( 1000 ); 135 sb.append( "<LabelPlacement>" ); 136 if ( pointPlacement != null ) { 137 sb.append( ( (Marshallable) pointPlacement ).exportAsXML() ); 138 } else if ( linePlacement != null ) { 139 sb.append( ( (Marshallable) linePlacement ).exportAsXML() ); 140 } 141 sb.append( "</LabelPlacement>" ); 142 143 return sb.toString(); 144 } 145 146 }