⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iconpartlist.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
字号:
// **********************************************************************// // <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/tools/icon/IconPartList.java,v $// $RCSfile: IconPartList.java,v $// $Revision: 1.3.2.1 $// $Date: 2004/10/14 18:27:43 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.tools.icon;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Shape;import java.awt.geom.GeneralPath;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import com.bbn.openmap.omGraphics.DrawingAttributes;/** * An IconPartList is a group of IconParts that can be rendered * together. If you ask an IconPartList for it's geometry, it will * combine all its parts into one geometry, and use its * DrawingAttributes to render that combined shape. The IconPartList * is itself an IconPart, so the recursive possibilities are endless. */public class IconPartList implements IconPart {    protected List parts;    protected DrawingAttributes renderingAttributes = null;    protected Shape clip = null;    public IconPartList() {}    protected List getList() {        if (parts == null) {            parts = new LinkedList();        }        return parts;    }    public Iterator iterator() {        return parts.iterator();    }    /**     * First in drawn on bottom. Last in on top.     */    public void add(IconPart part) {        getList().add(part);    }    public boolean remove(IconPart part) {        return getList().remove(part);    }    public void clear() {        getList().clear();    }    public void render(Graphics g, int width, int height) {        render(g, width, height, null);    }    /**     * @param appDA drawing attributes to use under certain     *        conditions. Certain IconParts on this list may use these     *        drawing attributes if they want/should. May be null.     */    public void render(Graphics g, int width, int height,                       DrawingAttributes appDA) {        // Handle clip area in Graphics, first        Shape clip = getClip();        if (clip != null) {            g.setClip(clip);        }        DrawingAttributes da = getRenderingAttributes();        DrawingAttributes tmpDA = null;        Iterator it = iterator();        while (it.hasNext()) {            IconPart part = (IconPart) it.next();            if (da != null) {                tmpDA = part.getRenderingAttributes();                part.setRenderingAttributes(da);            }            Graphics2D g2 = (Graphics2D) g.create();            part.render(g2, width, height);            g2.dispose();            if (da != null) {                part.setRenderingAttributes(tmpDA);                tmpDA = null;            }        }    }    public void setClip(Shape clipArea) {        clip = clipArea;    }    public Shape getClip() {        return clip;    }    public void setGeometry(Shape shape) {        // dump the list, create a generic IconPart to hold the shape.        List list = getList();        list.clear();        list.add(new BasicIconPart(shape));    }    /**     * If you ask a IconPartList for its geometry, it will combine all     * its parts to make one Shape object. All the rendering     * attributes from the individual parts will be ignored. The     * contributions will be kept geometrically separate     * (disconnected) and their clipping areas will be ignored.     */    public Shape getGeometry() {        GeneralPath geometry = null;        Iterator it = iterator();        while (it.hasNext()) {            IconPart part = (IconPart) it.next();            Shape shp = part.getGeometry();            if (shp == null) {                continue;            }            if (geometry == null) {                geometry = new GeneralPath(shp);            } else {                geometry.append(shp, false);            }        }        return geometry;    }    public void setRenderingAttributes(DrawingAttributes da) {        renderingAttributes = da;    }    public DrawingAttributes getRenderingAttributes() {        return renderingAttributes;    }    public Object clone() {        IconPartList clone = new IconPartList();        Iterator it = iterator();        while (it.hasNext()) {            IconPart ip = (IconPart) it.next();            clone.add((IconPart) ip.clone());        }        clone.setRenderingAttributes(getRenderingAttributes());        clone.setClip(getClip());        return clone;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -