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 }