001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/graphics/ScaleBar.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;
045    
046    import java.awt.Color;
047    import java.awt.Font;
048    import java.awt.Graphics;
049    import java.text.NumberFormat;
050    
051    /**
052     * 
053     * 
054     * @version $Revision: 9340 $
055     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
056     * @author last edited by: $Author: apoth $
057     * 
058     * @version $Revision: 9340 $, $Date: 2007-12-27 13:32:12 +0100 (Do, 27 Dez 2007) $
059     */
060    public interface ScaleBar {
061    
062        public static int L_NONE = -1;
063    
064        public static int L_SCALE = 0;
065    
066        public static int L_SCALEDENOMINATOR = 1;
067    
068        /**
069         * will paint the scale bar to the passed graphic context
070         * 
071         * @param g
072         *            graphic context
073         */
074        void paint( Graphics g );
075    
076        /**
077         * sets the type of the label above the scale bar
078         * 
079         * @param labelType
080         *            lable type
081         */
082        void setTopLabel( int labelType );
083    
084        /**
085         * sets the type of the label below the scale bar
086         * 
087         * @param labelType
088         *            lable type
089         */
090        void setBottomLabel( int labelType );
091    
092        /**
093         * sets the scale as defined in the OGC WMS 1.1.1 specification. Scale is defined as the
094         * diagonal size of a pixel in the center of a map measured in meter. The setting of the scale
095         * will affect the value of the scale denominator
096         * 
097         * @param scale
098         *            map scale
099         */
100        void setScale( double scale );
101    
102        /**
103         * sets the scale denominator for the scale bar. The scale denominator is the scale expression
104         * as we know it for printed maps (e.g. 1:10000 1:5000). The passed value is expressed in
105         * meters. The setting of the scale denominator will affect the value of the scale
106         * 
107         * @param scaleDen
108         *            scale denominator value
109         */
110        void setScaleDenominator( double scaleDen );
111    
112        /**
113         * sets the units the scale and the scale denominater will be expressed at. Settings other than
114         * meter will cause that the passed values for scale and scale denominater will be recalculated
115         * for painting. it depends on the implementation what units are supported.
116         * 
117         * @param units
118         *            name units (meter, miles, feet etc.)
119         */
120        void setUnits( String units );
121    
122        /**
123         * sets the front color of the scale bar
124         * 
125         * @param color
126         */
127        void setBarColor( Color color );
128    
129        /**
130         * sets the label color of the scale bar
131         * 
132         * @param color
133         */
134        void setLabelColor( Color color );
135    
136        /**
137         * sets the background color of the scale bar
138         * 
139         * @param color
140         */
141        void setBackgroundColor( Color color );
142    
143        /**
144         * sets the style of the scale bar. default style is |--------| the list of known styles depends
145         * on the implementation
146         * 
147         * @param style
148         *            style name
149         */
150        void setStyle( String style );
151    
152        /**
153         * sets the font for label rendering
154         * 
155         * @param font
156         *            awt font object
157         */
158        void setFont( Font font );
159    
160        /**
161         * sets the format for scale/scaleDen
162         * 
163         * @param numberFormat
164         *            a NumberFormat object
165         */
166        void setNumberFormat( NumberFormat numberFormat );
167    
168    }