亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? omtext.java

?? openmap java寫的開源數(shù)字地圖程序. 用applet實現(xiàn),可以像google map 那樣放大縮小地圖.
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
// **********************************************************************// // <copyright>// //  BBN Technologies//  10 Moulton Street//  Cambridge, MA 02138//  (617) 873-8000// //  Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/omGraphics/OMText.java,v $// $RCSfile: OMText.java,v $// $Revision: 1.11.2.6 $// $Date: 2006/01/27 15:20:56 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.omGraphics;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.awt.FontMetrics;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Point;import java.awt.Polygon;import java.awt.Rectangle;import java.awt.Shape;import java.awt.Stroke;import java.awt.font.FontRenderContext;import java.awt.font.GlyphVector;import java.awt.geom.AffineTransform;import java.awt.geom.GeneralPath;import java.awt.geom.PathIterator;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import com.bbn.openmap.proj.Projection;import com.bbn.openmap.util.Debug;/** * The OMText graphic type lets you put text on the screen. The location of the * string is really the location of the lower left corner of the first letter of * the string. */public class OMText extends OMGraphic implements Serializable {    // ----------------------------------------------------------------------    // Static constants    // ----------------------------------------------------------------------    /** Align the text to the right of the location. */    public final static transient int JUSTIFY_LEFT = 0;    /** Align the text centered on the location. */    public final static transient int JUSTIFY_CENTER = 1;    /** Align the text to the left of the location. */    public final static transient int JUSTIFY_RIGHT = 2;    /**     * Parameter of Font to count toward footprint of height of Text. This     * indicates that the ascent, descent and leading of the text should count     * toward the footprint of the text. This is the same as the full height of     * the FontMetric, and is the default.     */    public final static transient int HEIGHT = 0;    /**     * Parameter of Font to count toward footprint of height of Text. This     * indicates that the ascent and the descent of the text should count toward     * the footprint of the text.     */    public final static transient int ASCENT_DESCENT = 1;    /**     * Parameter of Font to count toward footprint of height of Text. This     * indicates that the ascent and the leading of the text should count toward     * the footprint of the text.     */    public final static transient int ASCENT_LEADING = 2;    /**     * Parameter of Font to count toward footprint of height of Text. This     * indicates that just the ascent of the text should count toward the     * footprint of the text.     */    public final static transient int ASCENT = 3;    /**     * Parameter that dictates where the font baseline will be set compared to     * the location of the OMText. The BASELINE_BOTTOM setting, the default,     * means that the location will be set along the normal bottom edge of the     * text where the letters rest.     */    public final static transient int BASELINE_BOTTOM = 0;    /**     * Parameter that dictates where the font baseline will be set compared to     * the location of the OMText. The BASELINE_MIDDLE setting means that the     * location will be set along the middle of the height of the text.     */    public final static transient int BASELINE_MIDDLE = 1;    /**     * Parameter that dictates where the font baseline will be set compared to     * the location of the OMText. The BASELINE_TOP setting means that the     * location will be set along the top of the height of the text.     */    public final static transient int BASELINE_TOP = 2;    public static final Font DEFAULT_FONT = new Font("SansSerif", java.awt.Font.PLAIN, 12);    /**     * The default text matte stroke that is used to surround each character     * with the color set in the textMatteColor attribute.     */    public static final Stroke DEFAULT_TEXT_MATTE_STROKE = new BasicStroke(2f);    // ----------------------------------------------------------------------    // Fields    // ----------------------------------------------------------------------    /**     * The projected xy window location of the bottom left corner of the first     * letter of the text string.     */    protected Point pt;    /** The X/Y point or the offset amount depending on render type. */    protected Point point;    /** The Font type that the string should be displayed with. */    protected Font f;    /**     * The FontSizer set in the OMText, changing the font size appropriate for a     * projection scale.     */    protected FontSizer fontSizer = null;    /**     * The latitude location for the text, used for lat/lon or offset rendertype     * texts, in decimal degrees.     */    protected float lat = 0.0f;    /**     * The longitude location for the text, used for lat/lon or offset     * rendertype texts, in decimal degrees.     */    protected float lon = 0.0f;    /** The string to be displayed. */    protected String data = null;    /**     * Justification of the string. Will let you put the text to the right,     * centered or to the left of the given location.     */    protected int justify = JUSTIFY_LEFT;    /**     * Location of the baseline of the text compared to the location point of     * the OMText object. You can set this to be BASELINE_BOTTOM (default),     * BASELINE_MIDDLE or BASELINE_TOP, depending on if you want the bottom of     * the letters to be lined up to the location, or the middle or the top of     * them.     */    protected int baseline = BASELINE_BOTTOM;    /**     * The fmHeight is the FontMetric height to use for calculating the     * footprint for the line. This becomes important for multi-line text and     * text in decluttering, because it dictates the amount of space surrounding     * the text. The default height is to take into account the ascent, descent     * and leading of the font.     */    protected int fmHeight = HEIGHT;    protected boolean useMaxWidthForBounds = false;    /** The angle by which the text is to be rotated, in radians */    protected double rotationAngle = DEFAULT_ROTATIONANGLE;    /**     * The text matte color surrounds each character of the string with this     * color. If the color is null, the text matte is not used.     */    protected Color textMatteColor;    /**     * The stroke used to paint the outline of each character. The stroke should     * be larger than 1 to give proper effect.     */    protected Stroke textMatteStroke = DEFAULT_TEXT_MATTE_STROKE;    // ----------------------------------------------------------------------    // Caches    // These fields cache computed data.    // ----------------------------------------------------------------------    /** The bounding rectangle of this Text. */    protected transient Polygon polyBounds;    /** The Metrics of the current font. */    protected transient FontMetrics fm;    /** The text split by newlines. */    protected transient String parsedData[];    /** cached string widths. */    protected transient int widths[];    // ----------------------------------------------------------------------    // Constructors    // ----------------------------------------------------------------------    /**     * Default constructor. Produces an instance with no location and an empty     * string for text. For this instance to be useful it needs text (setData),     * a location (setX, setY, setLat, setLon) and a renderType (setRenderType).     */    public OMText() {        super(RENDERTYPE_UNKNOWN, LINETYPE_UNKNOWN, DECLUTTERTYPE_NONE);        point = new Point(0, 0);        setData("");        f = DEFAULT_FONT;    }    /**     * Creates a text object, with Lat/Lon placement, and default SansSerif     * font.     *      * @param lt latitude of the string, in decimal degrees.     * @param ln longitude of the string, in decimal degrees.     * @param stuff the string to be displayed.     * @param just the justification of the string     */    public OMText(float lt, float ln, String stuff, int just) {        this(lt, ln, stuff, DEFAULT_FONT, just);    }    /**     * Creates a text object, with Lat/Lon placement.     *      * @param lt latitude of the string, in decimal degrees.     * @param ln longitude of the string, in decimal degrees.     * @param stuff the string to be displayed.     * @param font the Font description for the string.     * @param just the justification of the string     */    public OMText(float lt, float ln, String stuff, Font font, int just) {        super(RENDERTYPE_LATLON, LINETYPE_UNKNOWN, DECLUTTERTYPE_NONE);        lat = lt;        lon = ln;        setData(stuff);        f = font;        justify = just;    }    /**     * Creates a text object, with XY placement, and default SansSerif font.     *      * @param px1 horizontal window pixel location of the string.     * @param py1 vertical window pixel location of the string.     * @param stuff the string to be displayed.     * @param just the justification of the string     */    public OMText(int px1, int py1, String stuff, int just) {        this(px1, py1, stuff, DEFAULT_FONT, just);    }    /**     * Creates a text object, with XY placement.     *      * @param px1 horizontal window pixel location of the string.     * @param py1 vertical window pixel location of the string.     * @param stuff the string to be displayed.     * @param font the Font description for the string.     * @param just the justification of the string     */    public OMText(int px1, int py1, String stuff, Font font, int just) {        super(RENDERTYPE_XY, LINETYPE_UNKNOWN, DECLUTTERTYPE_NONE);        point = new Point(px1, py1);        setData(stuff);        f = font;        justify = just;    }    /**     * Creates a Text object, with lat/lon placement with XY offset, and default     * SansSerif font.     *      * @param lt latitude of the string, in decimal degrees.     * @param ln longitude of the string, in decimal degrees.     * @param offX horizontal offset of string     * @param offY vertical offset of string     * @param aString the string to be displayed.     * @param just the justification of the string     */    public OMText(float lt, float ln, int offX, int offY, String aString,            int just) {        this(lt, ln, offX, offY, aString, DEFAULT_FONT, just);    }    /**     * Creates a Text object, with lat/lon placement with XY offset.     *      * @param lt latitude of the string, in decimal degrees.     * @param ln longitude of the string, in decimal degrees.     * @param offX horizontal offset of string     * @param offY vertical offset of string     * @param aString the string to be displayed.     * @param font the Font description for the string.     * @param just the justification of the string     */    public OMText(float lt, float ln, int offX, int offY, String aString,            Font font, int just) {        super(RENDERTYPE_OFFSET, LINETYPE_UNKNOWN, DECLUTTERTYPE_NONE);        lat = lt;        lon = ln;        point = new Point(offX, offY);        setData(aString);        f = font;        justify = just;    }    /**     * Get the font of the text object, which might have been scaled by the font     * sizer.     *      * @return the font of the object.     */    public Font getFont() {        if (f == null) {            f = DEFAULT_FONT;        }        return f;    }    /**     * Set the base font. Will take effect on the next render. If the font sizer     * is not null, this font will be set in that object as well, and the active     * font will come from the font sizer. To make the set font the constant     * font, set the font sizer to null. Flushes the cache fields     * <code>fm</code>, <code>widths</code>, and <code>polyBounds</code>.     * Calls setScaledFont.     *      * @param aFont font to be used for the text.     *      * @see #fm     * @see #widths     * @see #polyBounds     */    public void setFont(Font aFont) {        if (fontSizer != null) {            fontSizer.setFont(aFont);            setScaledFont(fontSizer.getScaledFont());        } else {            setScaledFont(aFont);        }    }    /**     * Sets the scaled font, which is the one that is used for rendering.     */    protected void setScaledFont(Font aFont) {        f = aFont;        // now flush the cached information about the old font        fm = null; // flush existing metrics.        widths = null; // flush existing width table.        polyBounds = null; // flush existing bounds.    }    /**     * If the font sizer is not null, sets the scaled font with the proper value     * for the given scale.     */    public void setFont(float scale) {        if (fontSizer != null) {            setScaledFont(fontSizer.getFont(scale));        }    }    /**     * Set the FontSizer object, which provides different font sizes at     * different scales. If set to null, the font size will remain constant     * regardless of projection scale.     */    public void setFontSizer(FontSizer fs) {        Font bf = getFont();        if (fontSizer != null) {            bf = fontSizer.getFont();        }        fontSizer = fs;        setFont(bf);    }    /**     * Get the FontSizer object, which provides different font sizes at     * different scales. If set to null, the font size will remain constant     * regardless of projection scale.     */    public FontSizer getFontSizer() {        return fontSizer;    }    /**     * Get the x location. Applies to XY and OFFSET text objects.     *      * @return the horizontal window location of the string, from the left of     *         the window.     */    public int getX() {        if (point != null) {            return point.x;        } else {            return 0;        }    }    /**     * Set the x location. Applies to XY and OFFSET text objects.     *      * @param newX the horizontal pixel location of the window to place the     *        string.     */    public void setX(int newX) {        if (point == null && getRenderType() == RENDERTYPE_LATLON) {            point = new Point();            setRenderType(RENDERTYPE_OFFSET);        }        point.x = newX;        setNeedToRegenerate(true);    }    /**     * Get the y location. Applies to XY and OFFSET text objects.     *      * @return the vertical pixel location of the string, from the top of the     *         window.     */    public int getY() {        if (point != null) {            return point.y;        } else {            return 0;        }    }    /**

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品美女被调教视频大全网站| 国产suv精品一区二区6| 国产午夜精品久久| 欧美日韩亚洲国产综合| 国产成人精品亚洲午夜麻豆| 一区二区三区免费看视频| 精品国产免费一区二区三区香蕉| 色综合一区二区| 国产精品系列在线观看| 日本午夜精品一区二区三区电影| 亚洲免费视频中文字幕| 五月天欧美精品| 中文幕一区二区三区久久蜜桃| 91精品国产美女浴室洗澡无遮挡| 91片在线免费观看| 国产91色综合久久免费分享| 麻豆精品一区二区综合av| 亚洲国产sm捆绑调教视频 | 日本亚洲天堂网| 亚洲三级电影全部在线观看高清| 精品处破学生在线二十三| 欧美理论片在线| 91国产视频在线观看| 岛国精品在线观看| 国产一区不卡在线| 久久精品免费观看| 日日摸夜夜添夜夜添亚洲女人| 亚洲欧美怡红院| 中文字幕乱码久久午夜不卡| 久久久国产精华| 精品国产伦一区二区三区观看体验| 欧美麻豆精品久久久久久| 欧美视频在线观看一区二区| 色综合一个色综合亚洲| 色综合天天性综合| 91伊人久久大香线蕉| 粉嫩av亚洲一区二区图片| 国内精品伊人久久久久av影院 | 国产成人综合在线观看| 久久精品国产精品亚洲精品| 亚洲1区2区3区视频| 性做久久久久久免费观看| 亚洲成人高清在线| 视频一区在线播放| 美女网站色91| 久久99久久久久久久久久久| 奇米一区二区三区av| 亚洲一区二区精品视频| 午夜精品一区二区三区三上悠亚| 亚洲五月六月丁香激情| 日韩成人精品在线观看| 久久99精品国产91久久来源| 国产一区二区三区黄视频| 国产aⅴ综合色| 91视频www| 欧美一a一片一级一片| 69精品人人人人| 欧美大黄免费观看| 国产天堂亚洲国产碰碰| 中日韩免费视频中文字幕| 亚洲精品免费播放| 午夜精品123| 国产原创一区二区| 成人久久久精品乱码一区二区三区| 成人黄色小视频在线观看| 94色蜜桃网一区二区三区| 国产精品污网站| 亚洲一区二区三区四区中文字幕| 午夜一区二区三区视频| 国内精品嫩模私拍在线| 99久久久久久| 欧美日韩视频在线第一区| 欧美电视剧免费全集观看| 国产精品少妇自拍| 亚洲国产视频一区二区| 久久电影网站中文字幕 | 欧美一级一区二区| 亚洲国产精品黑人久久久| 亚洲一区二区精品久久av| 久久99国内精品| 色先锋久久av资源部| 日韩一区二区电影在线| 国产精品福利在线播放| 视频一区在线播放| 成人国产一区二区三区精品| 欧美日韩国产乱码电影| 国产三级欧美三级| 午夜精品视频在线观看| 成人性生交大片免费| 欧美绝品在线观看成人午夜影视| 欧美刺激午夜性久久久久久久| 精品国偷自产国产一区| 伊人开心综合网| 国产又黄又大久久| 欧美精品乱码久久久久久按摩| 日本一区二区动态图| 爽好久久久欧美精品| av激情综合网| 欧美精品一区二区三区蜜桃| 一区二区三区中文字幕电影| 国产精品一区二区在线播放 | 日韩欧美自拍偷拍| 亚洲欧洲中文日韩久久av乱码| 久久9热精品视频| 欧美色区777第一页| 国产欧美日韩视频一区二区| 日韩国产欧美在线观看| 色婷婷av久久久久久久| 久久精品免费在线观看| 久久精品国产网站| 欧洲av在线精品| 国产精品美女久久久久高潮| 精品中文字幕一区二区| 欧美日韩国产免费| 亚洲精选视频免费看| 国产999精品久久久久久| 欧美一区二区三区不卡| 亚洲香肠在线观看| 成人avav在线| 国产精品久久久久婷婷 | 欧美乱妇15p| 亚洲激情图片一区| 99久久久久免费精品国产| 国产亚洲精品aa| 另类成人小视频在线| 欧美妇女性影城| 亚洲午夜久久久久久久久电影网| 一本到不卡精品视频在线观看| 亚洲国产精品黑人久久久| 成人丝袜视频网| 亚洲国产高清不卡| 波多野结衣视频一区| 中文字幕在线不卡视频| 成人福利视频网站| 麻豆国产欧美一区二区三区| 欧美日韩精品福利| 一级特黄大欧美久久久| 日本高清不卡一区| 亚洲一区二区三区激情| 欧美亚洲国产一区二区三区| 亚洲精品国产视频| 日本道免费精品一区二区三区| 亚洲欧美日韩国产一区二区三区 | 日韩一级在线观看| 久久国产三级精品| 国产午夜亚洲精品羞羞网站| 韩国毛片一区二区三区| 国产亚洲视频系列| 99久久er热在这里只有精品15 | 国产婷婷色一区二区三区| 成人国产一区二区三区精品| 亚洲色图.com| 欧美日韩国产综合一区二区三区| 日韩不卡在线观看日韩不卡视频| 欧美一区二区播放| 国产精品资源在线看| 成人欧美一区二区三区| 欧美三级日韩在线| 久久99国产精品免费网站| 国产精品视频看| 欧美三级视频在线观看| 久久精品国产亚洲a| 国产精品久久久久久久久久免费看 | 久久蜜桃一区二区| 成人污视频在线观看| 亚洲超丰满肉感bbw| 精品美女被调教视频大全网站| 成人免费看黄yyy456| 亚洲免费在线电影| 日韩一区二区在线观看视频| 处破女av一区二区| 亚洲电影在线免费观看| 亚洲精品一区二区三区四区高清 | 免费观看30秒视频久久| 亚洲国产高清在线| 欧美日本不卡视频| 国产成人综合在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 日韩欧美高清一区| 色菇凉天天综合网| 精品一区二区三区在线观看国产| 中文字幕亚洲区| 精品美女在线播放| 欧美吻胸吃奶大尺度电影| 欧美一级在线视频| 在线观看亚洲精品| 国产精品白丝jk白祙喷水网站 | 久久精品99国产精品| 亚洲视频免费看| 久久亚洲春色中文字幕久久久| 91丨九色丨黑人外教| 韩国av一区二区三区| 亚洲香蕉伊在人在线观| 国产精品久久久久久久久图文区| 欧美一区二区三区免费| 欧美在线观看视频一区二区三区 | 国产清纯白嫩初高生在线观看91| 欧美性高清videossexo| 丰满放荡岳乱妇91ww| 日韩福利视频导航|