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

📄 multitheme.java

📁 geotools的源码
💻 JAVA
字号:
package uk.ac.leeds.ccg.geotools;
 
import java.lang.*;
import java.awt.*;
import java.util.*;
import java.io.*;

/** an <strong>experimental</strong> class to hold multiple layers in a
	* single theme. Layers are drawn in the order they are added. 
	* Other than painting this object behaves as a theme with the first layer
	* being used for highlighting/selection etc. Feel free to modify this
	* behaviour if you need.
	* <p>Ian
	*/
public class MultiTheme extends Theme{
	static boolean DEBUG=false;
	static String DBC="MT->";
	Vector layers = new Vector();
	GeoRectangle bounds = new GeoRectangle();

	public MultiTheme(Layer l){
		super(l);
		layers.addElement(l);
		bounds.add(l.getBounds());
	}
	public MultiTheme(Layer l, Shader s){
    super(l,s);
    layers.addElement(l);
		bounds.add(l.getBounds());
  } 
	public MultiTheme(Layer l, Shader s, java.lang.String n){
    super(l,s,n);
    layers.addElement(l);
		bounds.add(l.getBounds());
  } 
	public MultiTheme(Layer l, Shader s, java.lang.String n, HighlightManager
hm) {
    super(l,s,n,hm);
    layers.addElement(l);
		bounds.add(l.getBounds());
  } 
	public MultiTheme(Layer l, Shader s, java.lang.String n, HighlightManager
hm, GeoData d){
    super(l,s,n,hm,d);
    layers.addElement(l);
		bounds.add(l.getBounds());
  } 
  public MultiTheme(Layer l, Shader s, java.lang.String n, HighlightManager hm, GeoData d, GeoData t, ShadeStyle style){
    super(l,s,n,hm,d,t,style);
    layers.addElement(l);
		bounds.add(l.getBounds());
  } 
  public MultiTheme(Layer l, Shader s, java.lang.String n, HighlightManager
hm, GeoData d, ShadeStyle style){
    super(l,s,n,hm,d,style);
    layers.addElement(l);
		bounds.add(l.getBounds());
  } 
	protected void paintScaled(Graphics g,Scaler scale){
		GeoGraphics gg = new GeoGraphics(g,scale,shade,data,style,filter,1);
		GeoRectangle ext = scale.getMapExtent();
		for(int i=0;i<layers.size();i++){
			if(DEBUG)System.out.println(DBC+getName()+" Drawing layer "+i);
			if(((Layer)layers.elementAt(i)).getBounds().intersects(ext))
				((Layer)layers.elementAt(i)).paintScaled(gg);
		}
	}
	public void addLayer(Layer l){
		bounds.add(l.getBounds());
		layers.addElement(l);
		l.addLayerChangedListener(this);
	}
	public void removeLayer(Layer l){
		layers.remove(l);
	}
	public Vector getLayers(){
		return layers; // possibly should clone here?
	}
	public GeoRectangle getBounds(){
		return bounds;
	}
}

⌨️ 快捷键说明

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