You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(39) |
Dec
(70) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
(52) |
Feb
(168) |
Mar
(248) |
Apr
(143) |
May
(418) |
Jun
(558) |
Jul
(702) |
Aug
(311) |
Sep
(141) |
Oct
(350) |
Nov
(172) |
Dec
(182) |
| 2003 |
Jan
(320) |
Feb
(362) |
Mar
(356) |
Apr
(218) |
May
(447) |
Jun
(203) |
Jul
(745) |
Aug
(494) |
Sep
(175) |
Oct
(422) |
Nov
(554) |
Dec
(162) |
| 2004 |
Jan
(217) |
Feb
(353) |
Mar
(228) |
Apr
(407) |
May
(211) |
Jun
(270) |
Jul
(264) |
Aug
(198) |
Sep
(268) |
Oct
(227) |
Nov
(118) |
Dec
(47) |
| 2005 |
Jan
(207) |
Feb
(243) |
Mar
(297) |
Apr
(197) |
May
(281) |
Jun
(166) |
Jul
(164) |
Aug
(92) |
Sep
(155) |
Oct
(196) |
Nov
(189) |
Dec
(114) |
| 2006 |
Jan
(129) |
Feb
(219) |
Mar
(274) |
Apr
(213) |
May
(245) |
Jun
(220) |
Jul
(376) |
Aug
(347) |
Sep
(179) |
Oct
(493) |
Nov
(448) |
Dec
(339) |
| 2007 |
Jan
(304) |
Feb
(273) |
Mar
(237) |
Apr
(186) |
May
(215) |
Jun
(320) |
Jul
(229) |
Aug
(313) |
Sep
(331) |
Oct
(279) |
Nov
(347) |
Dec
(266) |
| 2008 |
Jan
(332) |
Feb
(280) |
Mar
(203) |
Apr
(277) |
May
(301) |
Jun
(356) |
Jul
(292) |
Aug
(203) |
Sep
(277) |
Oct
(142) |
Nov
(210) |
Dec
(239) |
| 2009 |
Jan
(250) |
Feb
(193) |
Mar
(174) |
Apr
(183) |
May
(342) |
Jun
(230) |
Jul
(292) |
Aug
(161) |
Sep
(204) |
Oct
(280) |
Nov
(281) |
Dec
(175) |
| 2010 |
Jan
(113) |
Feb
(106) |
Mar
(199) |
Apr
(166) |
May
(298) |
Jun
(147) |
Jul
(175) |
Aug
(192) |
Sep
(71) |
Oct
(79) |
Nov
(58) |
Dec
(55) |
| 2011 |
Jan
(83) |
Feb
(169) |
Mar
(142) |
Apr
(207) |
May
(311) |
Jun
(183) |
Jul
(218) |
Aug
(190) |
Sep
(158) |
Oct
(197) |
Nov
(93) |
Dec
(74) |
| 2012 |
Jan
(92) |
Feb
(50) |
Mar
(64) |
Apr
(45) |
May
(100) |
Jun
(70) |
Jul
(3) |
Aug
(1) |
Sep
(2) |
Oct
(5) |
Nov
(7) |
Dec
(4) |
| 2013 |
Jan
(6) |
Feb
(2) |
Mar
(2) |
Apr
(4) |
May
(3) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
| 2014 |
Jan
(2) |
Feb
(2) |
Mar
(2) |
Apr
(3) |
May
(3) |
Jun
(1) |
Jul
|
Aug
(4) |
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
| 2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
(1) |
| 2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2017 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Artur H. <ko...@us...> - 2001-11-21 13:48:23
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/raster
In directory usw-pr-cvs1:/tmp/cvs-serv13012/uk/ac/leeds/ccg/raster
Modified Files:
ImageLayer.java
Log Message:
Added support for creating ImageLayer with InputStream as image data source and full support for downaloding map data from WMS with jprotocols package
Index: ImageLayer.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/raster/ImageLayer.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -d -r1.27 -r1.28
*** ImageLayer.java 2001/10/26 06:16:47 1.27
--- ImageLayer.java 2001/11/21 13:48:19 1.28
***************
*** 23,333 ****
* <a href="mailto:ia...@ge...">i.t...@ge...</a>
* @author <a href="mailto:ca...@sh...">Cameron Shorter</a>
*/
public class ImageLayer extends uk.ac.leeds.ccg.geotools.SimpleLayer implements Runnable
{
! /* Stores all informatation about an image and it's geographic reference */
! private Image image = null;
! private GeoRectangle bbox = null;
! private MediaTracker tracker;
! private int myID = 1;
! private final static boolean DEBUG=false;
! private Canvas obs = new Canvas();
! private Toolkit tk;
! private URL src;
! private Thread thread;
! public ImageLayer(URL source,GeoRectangle bounds){
! if(DEBUG)System.out.println("---->uk.ac.leeds.ccg.raster.ImageLayer constructed. Will identify itself as IL-->");
! changeImage(source,bounds);
! }
! public ImageLayer(Image image,GeoRectangle bounds){
bbox = bounds;
! this.image = image;
! tracker = new MediaTracker(new Frame());
! tracker.addImage(this.image,0);
! this.setStatus(Layer.COMPLETED);
! }
! /** Change the image and extent for the layer. */
! public void changeImage(URL source,GeoRectangle bounds){
! this.src=source;
! //if (DEBUG) System.out.println("ImageLayer.changeImage= "+src);
! this.bbox=bounds;
! setStatus(Layer.LOADING);
! thread = new Thread(this);
! thread.setPriority(Thread.MIN_PRIORITY);
! thread.start();
! return;
! }
! /** Change the image and but not the extent. */
! public void changeImage(URL source){
! changeImage(
! source,
! this.bbox);
! }
! /** Change the extent of the image */
! public void changeExtent(GeoRectangle bounds){
! this.bbox = bounds;
! this.notifyLayerChangedListeners(LayerChangedEvent.GEOGRAPHY);
! }
! public GeoRectangle getBounds()
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return this.bbox;
! }
! public GeoRectangle getBoundsOf(int id[])
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return null;
! }
! public GeoRectangle getBoundsOf(int id)
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return null;
! }
! public int getID(GeoPoint p)
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return 0;
! }
! public int getID(double x, double y)
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return 0;
! }
! public void paintHighlight(Graphics g, Scaler scale, int id, ShadeStyle style)
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! }
! public void paintScaled(GeoGraphics gg)
! {
! // Print out a call stack
! //if(DEBUG) {
! // try {
! // throw new RuntimeException();
! // } catch (RuntimeException e) {
! // System.out.println("IL ("+this+")-->paintScaled call stack ");
! // e.printStackTrace();
! // }
! //}
! double cellSizeX = 0;
! double cellSizeY = 0;
! boolean drawn;
! Graphics g= gg.getGraphics();
! Scaler scale = gg.getScale();
! GeoRectangle gr = scale.getMapExtent();
! //if(DEBUG)System.out.println("IL-->gr "+gr);
! GeoRectangle me = getBounds();
! //if(DEBUG)System.out.println("IL-->me "+me);
! GeoRectangle out = gr.createIntersect(me);
! //if(DEBUG)System.out.println("IL-->gr "+gr+"\nme "+me+"\nout "+out);
! //if(DEBUG)System.out.println("IL-->getStatus="+this.getStatus());
! int gh,gw;
! if(DEBUG)System.out.println("IL ("+this+") -->0");
! if(out!=null){
! if(DEBUG)System.out.println("IL ("+this+") -->1");
! if(out.equals(me)){
! if(DEBUG)System.out.println("IL ("+this+") -->2 ");
! //if(DEBUG)System.out.println("IL-->No clip");
! //GeoRectangle out = bbox;
! int origin[]=scale.toGraphics(out.x,out.y);
! gh=scale.toGraphics(out.height);
! gw=scale.toGraphics(out.width);
! if(this.image!=null){
! drawn = g.drawImage(
! this.image,
! origin[0],
! origin[1]-gh,
! gw,
! gh,
! null);
! try {
! tracker.waitForID(myID);
! } catch (InterruptedException e) {
! System.out.println("IL-->Interupted while drawing");
! setStatus(Layer.ERRORED);
! return;
! }
! if(DEBUG)System.out.println("IL ("+this+") -->3 drawn="+drawn);
! }
! //if((this.getStatus()&Layer.COMPLETED)==Layer.COMPLETED){
! // if(DEBUG)System.out.println("IL ("+this+") -->4 ");
! // g.setColor(Color.red);
! // g.drawRect(origin[0]+1,origin[1]-gh-1,gw-1,gh-1);
! //}
! }
! else{
! if(DEBUG)System.out.println("IL ("+this+") -->5 ");
! if((this.getStatus()&Layer.COMPLETED)!=Layer.COMPLETED) {
! if(DEBUG)System.out.println("IL ("
! +this+") -->Layer not loaded");
! return;
! }
! //complex clip case
! MemoryImageSource source;
! cellSizeX = me.width/this.image.getWidth(
! new Frame());
! cellSizeY = me.height/this.image.getHeight(
! new Frame());
! int x,y,width,height;
! if(out.y%cellSizeY>0){
! out.y=out.y+cellSizeY-(out.y%cellSizeY);
! out.height+=cellSizeY;
! }
! // out.x=out.x-(out.x%cellSizeX);
! x=(int)Math.floor(((out.x-me.x)/cellSizeX));
! y=(int)Math.ceil(((me.y-out.y+me.height-out.height)/cellSizeY));
! width=(int)Math.ceil((out.width/cellSizeX));
! height=(int)Math.ceil(((out.height)/cellSizeY));
! // out.x=out.x-(out.x%cellSizeX);
! x=(int)Math.floor(((out.x-me.x)/cellSizeX));
! //y=(int)Math.ceil(((out.y-me.y+out.height)/cellSizeY));
! //h=(int)Math.ceil(((out.height)/cellsize));
! //mh=(int)Math.ceil(((me.height)/cellsize));
! //gh=(int)Math.ceil(((gr.height)/cellsize));
! //top=(int)Math.ceil(((out.y)/cellsize))+h;
! //mtop=(int)Math.ceil(((me.y)/cellsize))+mh;
! //y=(int)(Math.max(Math.ceil(out.y),Math.ceil(me.y))/cellSizeY);
! y=(int)Math.ceil(((me.y-out.y+me.height-out.height)/cellSizeY));
! // if(DEBUG)System.out.println("IL-->start "+x+" "+y);
! width=(int)Math.ceil((out.width/cellSizeX));
! height=(int)Math.ceil(((out.height)/cellSizeY));
! //if(DEBUG)System.out.println("IL-->w/h "+width+" "+height);
! y=Math.max(y,0);
! int[] data = new int[(height*width)];
! PixelGrabber pg = new PixelGrabber(
! this.image,
! x,
! y,
! width,
! height,
! data,
! 0,
! width);
! //if(DEBUG)System.out.println("IL-->about to grab");
! try {
! pg.grabPixels();
! } catch (InterruptedException e) {
! System.err.println("IL-->interrupted waiting for pixels!");
! return;
! }
! if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
! System.err.println("IL-->image fetch aborted or errored, status="+pg.getStatus());
! return ;
! }
! source = new MemoryImageSource(width,height,data,0,width);
! Image image2 = obs.createImage(source);
! int origin[]=scale.toGraphics(out.x,out.y);
! gh=scale.toGraphics(out.height);
! gw=scale.toGraphics(out.width);
! drawn=g.drawImage(image2,origin[0],origin[1]-gh,gw,gh,obs);
! try {
! tracker.waitForID(myID);
! } catch (InterruptedException e) {
! System.out.println("IL-->Interupted while drawing");
! setStatus(Layer.ERRORED);
! return;
! }
! if(DEBUG)System.out.println("IL ("+this+") -->5.1 drawn="+drawn);
! image2=null;
! if((this.getStatus()&Layer.COMPLETED)!=Layer.COMPLETED){
! if(DEBUG)System.out.println("IL ("+this+") -->6 ");
! g.setColor(Color.red);
! g.drawRect(origin[0],origin[1]-gh,gw,gh);
! }
! }
! }
! }
! public void run() {
! setStatus(Layer.PENDING);
! if(DEBUG) System.out.println(
! "IL--> Request image " + this.src + " " + bbox);
! // Start getting the image. If the image is .gif or .jpg then
! // use default java tools otherwise use Jimi class
! //String type="";
! //try{
! // URLConnection con = this.src.openConnection();
! // type = con.getContentType();
! //}catch(java.io.IOException ioe){
! // System.err.println("IL--> problem opening connection");
//}
! //if((type!=null) && type.startsWith("image")){
! Frame dummy = new Frame();
! Toolkit tk = Toolkit.getDefaultToolkit();
! // if(type.trim().endsWith("gif")
! // || type.trim().endsWith("jpeg")){
!
! // If a previous image was being tracked, then remove it.
! if(tracker!=null){
! tracker.removeImage(this.image);
! this.image=null;
}
! this.image = tk.getImage(this.src);
! // }else{
! // this.image = Jimi.getImage(this.src,type);
! // }
! // if(DEBUG)System.out.println(
! // "IL--> Image Width="+this.image.getWidth(dummy));
! if(tracker==null)tracker = new MediaTracker(dummy);
! tracker.addImage(this.image,++myID);
! try {
! if(DEBUG)System.out.println("IL ("+this+")-->Waiting ");
! while((tracker.statusID(myID,true)&tracker.LOADING)!=0){
! if(getStatus()==Layer.ABORTED){
! tracker.removeImage(this.image,myID);
! break;
! }
! tracker.waitForID(myID,500);
! //if(DEBUG)System.out.println("IL ("+this+")-->status loop, status="+tracker.statusID(myID,true)+" myID="+myID);
! }
! int state=tracker.statusID(myID,true);
! if((state&tracker.COMPLETE) == tracker.COMPLETE){
! if(DEBUG)System.out.println("IL ("+this+")-->Image Ready ");
! setStatus(Layer.COMPLETED);
! //setStatus() triggers a LayerChangedEvent.
! }else if(state == tracker.ABORTED){
! setStatus(Layer.ABORTED);
! if(DEBUG)System.out.println("IL ("+this+")-->Image Aborted ");
! //}else if(state == tracker.ERRORED){
! // setStatus(Layer.ERRORED);
! // if(DEBUG)System.out.println("IL ("+this+")-->Image Error ");
! }else {
! setStatus(Layer.ERRORED);
! if(DEBUG)System.out.println("IL ("+this+")-->Image Error ");
! }
! } catch (InterruptedException e) {
! System.out.println("IL ("+this+")-->Interupted ");
! setStatus(Layer.ERRORED);
! return;
}
! //} else { // not image
! // if (DEBUG) System.out.println("Image unavailable, con type= "+type);
//}
//setStatus(Layer.ERRORED);
! }
}
--- 23,386 ----
* <a href="mailto:ia...@ge...">i.t...@ge...</a>
* @author <a href="mailto:ca...@sh...">Cameron Shorter</a>
+ * @author <a href="mailto:ko...@us...">Artur Hefczyc</a>
*/
public class ImageLayer extends uk.ac.leeds.ccg.geotools.SimpleLayer implements Runnable
{
! /* Stores all informatation about an image and it's geographic reference */
! private Image image = null;
! private GeoRectangle bbox = null;
! private MediaTracker tracker;
! private int myID = 1;
! private final static boolean DEBUG=false;
! private Canvas obs = new Canvas();
! private Toolkit tk;
! private URL src = null;
! protected java.io.InputStream src_stream = null;
! private Thread thread;
! public ImageLayer(URL source,GeoRectangle bounds){
! if(DEBUG)System.out.println("---->uk.ac.leeds.ccg.raster.ImageLayer constructed. Will identify itself as IL-->");
! changeImage(source,bounds);
! }
!
! public ImageLayer(java.io.InputStream in, GeoRectangle bounds)
! {
! changeImage(in, bounds);
! }
! public ImageLayer(Image image,GeoRectangle bounds){
bbox = bounds;
! this.image = image;
! tracker = new MediaTracker(new Frame());
! tracker.addImage(this.image,0);
! this.setStatus(Layer.COMPLETED);
! }
! /** Change the image and extent for the layer. */
! public void changeImage(URL source,GeoRectangle bounds){
! this.src = source;
! this.src_stream = null;
! //if (DEBUG) System.out.println("ImageLayer.changeImage= "+src);
! changeImage(bounds);
! }
! public void changeImage(java.io.InputStream in, GeoRectangle bounds)
! {
! this.src_stream = in;
! this.src = null;
! changeImage(bounds);
! }
! public void changeImage(GeoRectangle bounds)
! {
! this.bbox=bounds;
! setStatus(Layer.LOADING);
! thread = new Thread(this);
! thread.setPriority(Thread.MIN_PRIORITY);
! thread.start();
! }
! /** Change the image and but not the extent. */
! public void changeImage(URL source){
! changeImage(source, this.bbox);
! }
! /** Change the extent of the image */
! public void changeExtent(GeoRectangle bounds){
! this.bbox = bounds;
! this.notifyLayerChangedListeners(LayerChangedEvent.GEOGRAPHY);
! }
! public GeoRectangle getBounds()
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return this.bbox;
! }
! public GeoRectangle getBoundsOf(int id[])
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return null;
! }
! public GeoRectangle getBoundsOf(int id)
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return null;
! }
! public int getID(GeoPoint p)
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return 0;
! }
! public int getID(double x, double y)
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! return 0;
! }
! public void paintHighlight(Graphics g, Scaler scale, int id, ShadeStyle style)
! {
! // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
! // to do: code goes here
! }
! public void paintScaled(GeoGraphics gg)
! {
! // Print out a call stack
! //if(DEBUG) {
! // try {
! // throw new RuntimeException();
! // } catch (RuntimeException e) {
! // System.out.println("IL ("+this+")-->paintScaled call stack ");
! // e.printStackTrace();
! // }
! //}
! double cellSizeX = 0;
! double cellSizeY = 0;
! boolean drawn;
! Graphics g= gg.getGraphics();
! Scaler scale = gg.getScale();
! GeoRectangle gr = scale.getMapExtent();
! //if(DEBUG)System.out.println("IL-->gr "+gr);
! GeoRectangle me = getBounds();
! //if(DEBUG)System.out.println("IL-->me "+me);
! GeoRectangle out = gr.createIntersect(me);
! //if(DEBUG)System.out.println("IL-->gr "+gr+"\nme "+me+"\nout "+out);
! //if(DEBUG)System.out.println("IL-->getStatus="+this.getStatus());
! int gh,gw;
! if(DEBUG)System.out.println("IL ("+this+") -->0");
! if(out!=null){
! if(DEBUG)System.out.println("IL ("+this+") -->1");
! if(out.equals(me)){
! if(DEBUG)System.out.println("IL ("+this+") -->2 ");
! //if(DEBUG)System.out.println("IL-->No clip");
! //GeoRectangle out = bbox;
! int origin[]=scale.toGraphics(out.x,out.y);
! gh=scale.toGraphics(out.height);
! gw=scale.toGraphics(out.width);
! if(this.image!=null){
! drawn = g.drawImage(
! this.image,
! origin[0],
! origin[1]-gh,
! gw,
! gh,
! null);
! try {
! tracker.waitForID(myID);
! } catch (InterruptedException e) {
! System.out.println("IL-->Interupted while drawing");
! setStatus(Layer.ERRORED);
! return;
! }
! if(DEBUG)System.out.println("IL ("+this+") -->3 drawn="+drawn);
! }
! //if((this.getStatus()&Layer.COMPLETED)==Layer.COMPLETED){
! // if(DEBUG)System.out.println("IL ("+this+") -->4 ");
! // g.setColor(Color.red);
! // g.drawRect(origin[0]+1,origin[1]-gh-1,gw-1,gh-1);
//}
! }
! else{
! if(DEBUG)System.out.println("IL ("+this+") -->5 ");
! if((this.getStatus()&Layer.COMPLETED)!=Layer.COMPLETED) {
! if(DEBUG)System.out.println("IL ("
! +this+") -->Layer not loaded");
! return;
}
! //complex clip case
! MemoryImageSource source;
! cellSizeX = me.width/this.image.getWidth(
! new Frame());
! cellSizeY = me.height/this.image.getHeight(
! new Frame());
! int x,y,width,height;
! if(out.y%cellSizeY>0){
! out.y=out.y+cellSizeY-(out.y%cellSizeY);
! out.height+=cellSizeY;
! }
! // out.x=out.x-(out.x%cellSizeX);
! x=(int)Math.floor(((out.x-me.x)/cellSizeX));
! y=(int)Math.ceil(((me.y-out.y+me.height-out.height)/cellSizeY));
! width=(int)Math.ceil((out.width/cellSizeX));
! height=(int)Math.ceil(((out.height)/cellSizeY));
! // out.x=out.x-(out.x%cellSizeX);
! x=(int)Math.floor(((out.x-me.x)/cellSizeX));
! //y=(int)Math.ceil(((out.y-me.y+out.height)/cellSizeY));
! //h=(int)Math.ceil(((out.height)/cellsize));
! //mh=(int)Math.ceil(((me.height)/cellsize));
! //gh=(int)Math.ceil(((gr.height)/cellsize));
! //top=(int)Math.ceil(((out.y)/cellsize))+h;
! //mtop=(int)Math.ceil(((me.y)/cellsize))+mh;
! //y=(int)(Math.max(Math.ceil(out.y),Math.ceil(me.y))/cellSizeY);
! y=(int)Math.ceil(((me.y-out.y+me.height-out.height)/cellSizeY));
! // if(DEBUG)System.out.println("IL-->start "+x+" "+y);
! width=(int)Math.ceil((out.width/cellSizeX));
! height=(int)Math.ceil(((out.height)/cellSizeY));
! //if(DEBUG)System.out.println("IL-->w/h "+width+" "+height);
! y=Math.max(y,0);
! int[] data = new int[(height*width)];
! PixelGrabber pg = new PixelGrabber(
! this.image,
! x,
! y,
! width,
! height,
! data,
! 0,
! width);
! //if(DEBUG)System.out.println("IL-->about to grab");
! try {
! pg.grabPixels();
! } catch (InterruptedException e) {
! System.err.println("IL-->interrupted waiting for pixels!");
! return;
! }
! if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
! System.err.println("IL-->image fetch aborted or errored, status="+pg.getStatus());
! return ;
! }
! source = new MemoryImageSource(width,height,data,0,width);
! Image image2 = obs.createImage(source);
! int origin[]=scale.toGraphics(out.x,out.y);
! gh=scale.toGraphics(out.height);
! gw=scale.toGraphics(out.width);
! drawn=g.drawImage(image2,origin[0],origin[1]-gh,gw,gh,obs);
! try {
! tracker.waitForID(myID);
! } catch (InterruptedException e) {
! System.out.println("IL-->Interupted while drawing");
! setStatus(Layer.ERRORED);
! return;
! }
! if(DEBUG)System.out.println("IL ("+this+") -->5.1 drawn="+drawn);
! image2=null;
! if((this.getStatus()&Layer.COMPLETED)!=Layer.COMPLETED){
! if(DEBUG)System.out.println("IL ("+this+") -->6 ");
! g.setColor(Color.red);
! g.drawRect(origin[0],origin[1]-gh,gw,gh);
! }
! }
! }
! }
! protected byte[] getImageData(java.io.InputStream instr)
! {
! byte[] res = null;
! try {
! java.io.ByteArrayOutputStream outstr = new java.io.ByteArrayOutputStream();
! byte[] buff = new byte[16000];
! int cnt = instr.read(buff);
! while (cnt != -1) {
! outstr.write(buff, 0, cnt);
! cnt = instr.read(buff);
! } // end of while (cnt != -1)
! // instr.close();
! res = outstr.toByteArray();
! outstr.close();
! } catch (java.io.IOException e) {
! res = null;
! } // end of try-catch
!
! return res;
! }
! public void run() {
! setStatus(Layer.PENDING);
! if(DEBUG) System.out.println(
! "IL--> Request image " + this.src + " " + bbox);
! // Start getting the image. If the image is .gif or .jpg then
! // use default java tools otherwise use Jimi class
! //String type="";
! //try{
! // URLConnection con = this.src.openConnection();
! // type = con.getContentType();
! //}catch(java.io.IOException ioe){
! // System.err.println("IL--> problem opening connection");
! //}
! //if((type!=null) && type.startsWith("image")){
! Frame dummy = new Frame();
! Toolkit tk = Toolkit.getDefaultToolkit();
! // if(type.trim().endsWith("gif")
! // || type.trim().endsWith("jpeg")){
! // If a previous image was being tracked, then remove it.
! if(tracker!=null){
! tracker.removeImage(this.image);
! this.image=null;
! }
! if (src != null) {
! this.image = tk.getImage(this.src);
! } // end of if (src != null)
! if (src_stream != null) {
! this.image = tk.createImage(getImageData(src_stream));
! } // end of if (src_stream != null)
!
!
! // }else{
! // this.image = Jimi.getImage(this.src,type);
! // }
! // if(DEBUG)System.out.println(
! // "IL--> Image Width="+this.image.getWidth(dummy));
!
! if(tracker==null)tracker = new MediaTracker(dummy);
! tracker.addImage(this.image,++myID);
! try {
! if(DEBUG)System.out.println("IL ("+this+")-->Waiting ");
! while((tracker.statusID(myID,true)&tracker.LOADING)!=0){
! if(getStatus()==Layer.ABORTED){
! tracker.removeImage(this.image,myID);
! break;
}
! tracker.waitForID(myID,500);
! //if(DEBUG)System.out.println("IL ("+this+")-->status loop, status="+tracker.statusID(myID,true)+" myID="+myID);
!
! }
! int state=tracker.statusID(myID,true);
! if((state&tracker.COMPLETE) == tracker.COMPLETE){
! if(DEBUG)System.out.println("IL ("+this+")-->Image Ready ");
! setStatus(Layer.COMPLETED);
! //setStatus() triggers a LayerChangedEvent.
! }else if(state == tracker.ABORTED){
! setStatus(Layer.ABORTED);
! if(DEBUG)System.out.println("IL ("+this+")-->Image Aborted ");
! //}else if(state == tracker.ERRORED){
! // setStatus(Layer.ERRORED);
! // if(DEBUG)System.out.println("IL ("+this+")-->Image Error ");
! }else {
! setStatus(Layer.ERRORED);
! if(DEBUG)System.out.println("IL ("+this+")-->Image Error ");
! }
!
! } catch (InterruptedException e) {
! System.out.println("IL ("+this+")-->Interupted ");
! setStatus(Layer.ERRORED);
! return;
! }
! //} else { // not image
! // if (DEBUG) System.out.println("Image unavailable, con type= "+type);
//}
//setStatus(Layer.ERRORED);
! }
}
+ /*
+ * Changes in file:
+ *
+ * $Log$
+ * Revision 1.28 2001/11/21 13:48:19 kobit
+ * Added support for creating ImageLayer with InputStream as image data source and full support for downaloding map data from WMS with jprotocols package
+ *
+ *
+ */
|
|
From: Artur H. <ko...@us...> - 2001-11-21 13:48:23
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools
In directory usw-pr-cvs1:/tmp/cvs-serv13012/uk/ac/leeds/ccg/geotools
Modified Files:
SimpleLayer.java
Log Message:
Added support for creating ImageLayer with InputStream as image data source and full support for downaloding map data from WMS with jprotocols package
Index: SimpleLayer.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/SimpleLayer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** SimpleLayer.java 2001/11/15 13:49:07 1.6
--- SimpleLayer.java 2001/11/21 13:48:19 1.7
***************
*** 8,74 ****
public abstract class SimpleLayer extends java.lang.Object implements uk.ac.leeds.ccg.geotools.Layer
{
! int status = Layer.COMPLETED;
! Vector listeners = new Vector();
! protected String name = "Unknown";
! public void removeLayerChangedListener(LayerChangedListener lcl)
! {
! listeners.removeElement(lcl);
! }
! public void addLayerChangedListener(LayerChangedListener lcl)
! {
! listeners.addElement(lcl);
! }
! public void notifyLayerChangedListeners(int reason){
Vector l;
! LayerChangedEvent lce = new LayerChangedEvent(this,reason);
! synchronized(this) {l = (Vector)listeners.clone(); }
! for (int i = 0; i < l.size();i++) {
! ((LayerChangedListener)l.elementAt(i)).layerChanged(lce);
! }
! }
! public int[] getIDs(GeoRectangle box,int mode){
! return new int[0];
! }
! public int getStatus(){
! return status;
! }
! public void setStatus(int stat){
! System.out.println(this+" status changed to "+stat);
! if(status != Layer.COMPLETED&&stat==Layer.COMPLETED){
! status=stat;
! System.out.println("Notifing listeners of change");
! notifyLayerChangedListeners(LayerChangedEvent.GEOGRAPHY);
! } else {
! status=stat;
! }
! }
! /*public void paintScaled(GeoGraphics g){
! paintScaled(g.getGraphics(),g.getScale(),g.getShade(),g.getData(),g.getStyle());
}*/
! //Rough implementation, you should write your own!
! public void paintSelection(Graphics g,Scaler scale,int ids[],ShadeStyle style){
! for(int i=0;i<ids.length;i++){
! paintHighlight(g,scale,ids[i],style);
! }
}
! public void setName(String n){
! name = n;
! }
! public String getName(){
! return name;
! }
! public String toString() {
! return name;
! }
}
--- 8,74 ----
public abstract class SimpleLayer extends java.lang.Object implements uk.ac.leeds.ccg.geotools.Layer
{
! int status = Layer.COMPLETED;
! Vector listeners = new Vector();
! protected String name = "Unknown";
! public void removeLayerChangedListener(LayerChangedListener lcl)
! {
! listeners.removeElement(lcl);
! }
! public void addLayerChangedListener(LayerChangedListener lcl)
! {
! listeners.addElement(lcl);
! }
! public void notifyLayerChangedListeners(int reason){
Vector l;
! LayerChangedEvent lce = new LayerChangedEvent(this,reason);
! synchronized(this) {l = (Vector)listeners.clone(); }
! for (int i = 0; i < l.size();i++) {
! ((LayerChangedListener)l.elementAt(i)).layerChanged(lce);
! }
! }
! public int[] getIDs(GeoRectangle box,int mode){
! return new int[0];
! }
! public int getStatus(){
! return status;
! }
! public void setStatus(int stat){
! System.out.println(this+" status changed to "+stat);
! if(status != Layer.COMPLETED&&stat==Layer.COMPLETED){
! status=stat;
! System.out.println("Notifing listeners of change");
! notifyLayerChangedListeners(LayerChangedEvent.GEOGRAPHY);
! } else {
! status=stat;
! }
! }
! /*public void paintScaled(GeoGraphics g){
! paintScaled(g.getGraphics(),g.getScale(),g.getShade(),g.getData(),g.getStyle());
}*/
! //Rough implementation, you should write your own!
! public void paintSelection(Graphics g,Scaler scale,int ids[],ShadeStyle style){
! for(int i=0;i<ids.length;i++){
! paintHighlight(g,scale,ids[i],style);
}
+ }
! public void setName(String n){
! name = n;
! }
! public String getName(){
! return name;
! }
! public String toString() {
! return name;
! }
}
|
|
From: James M. <jma...@us...> - 2001-11-21 13:37:31
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools
In directory usw-pr-cvs1:/tmp/cvs-serv10594/uk/ac/leeds/ccg/geotools
Modified Files:
ShapefileReader.java
Log Message:
Threaded loading has been disabled as it is causing too many problems
Index: ShapefileReader.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/ShapefileReader.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -d -r1.31 -r1.32
*** ShapefileReader.java 2001/11/19 18:17:07 1.31
--- ShapefileReader.java 2001/11/21 13:37:28 1.32
***************
*** 87,90 ****
--- 87,98 ----
loader.start();
+ //the following block of code effectivly dissables the threaded loading system for now
+ try{
+ loader.join();
+ }
+ catch(InterruptedException ie){
+ System.err.println("Shapefile not loaded by loader "+ie);
+ }
+ System.out.println("Shapefile Constructor Finished - tread loading disabled");
}
***************
*** 234,241 ****
--- 242,254 ----
SimpleGeoData data;
String colName;
+ int col;
public AddDataWhenReady(SimpleGeoData data,String colName){
this.data = data;
this.colName = colName;
}
+ public AddDataWhenReady(SimpleGeoData data,int col){
+ this.data = data;
+ this.colName = colName;
+ }
public void run(){
System.out.println("Waiting for data loader to finish");
***************
*** 249,255 ****
System.out.println("Apparently data loader has now finished");
if(colName !=null){
! int col = dbf.getFieldNumber(colName);
if(col>=0){
! readData(data,col);
}
else{
--- 262,269 ----
System.out.println("Apparently data loader has now finished");
if(colName !=null){
! col = dbf.getFieldNumber(colName);
! }
if(col>=0){
! readDataNow(data,col);
}
else{
***************
*** 258,262 ****
map.notifyLayerChangedListeners(LayerChangedEvent.DATA);
! }
}
}
--- 272,276 ----
map.notifyLayerChangedListeners(LayerChangedEvent.DATA);
!
}
}
***************
*** 462,467 ****
}
-
public GeoData readData(SimpleGeoData data,int col){
if(dbf.getFieldType(col)=='C'){
--- 476,486 ----
}
public GeoData readData(SimpleGeoData data,int col){
+ AddDataWhenReady dataWatch = new AddDataWhenReady(data,col);
+ dataWatch.start();
+ return data;
+ }
+
+ private GeoData readDataNow(SimpleGeoData data,int col){
if(dbf.getFieldType(col)=='C'){
|
|
From: Ian T. <ian...@us...> - 2001-11-21 09:48:24
|
Update of /cvsroot/geotools/geotools/src/utils
In directory usw-pr-cvs1:/tmp/cvs-serv24114
Modified Files:
ExtractBoundingBox.java ExtractContiguity.java ImageMaker.java
LODSet.java ShfFixer.java
Log Message:
added code to wait for the theme to finish loading before continuing
Index: ExtractBoundingBox.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/utils/ExtractBoundingBox.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ExtractBoundingBox.java 2001/07/27 10:35:40 1.2
--- ExtractBoundingBox.java 2001/11/21 09:48:21 1.3
***************
*** 15,20 ****
String out = args[1];
System.out.println("reading "+base);
! ShapefileReader sfr = new ShapefileReader(new URL("file://"+base));
Theme t = sfr.getTheme();
GeoRectangle box = t.getBounds();
PolygonLayer pl = new PolygonLayer();
--- 15,25 ----
String out = args[1];
System.out.println("reading "+base);
! ShapefileReader sfr = new ShapefileReader(new URL("file:///"+System.getProperty("user.dir")+"/"+base));
Theme t = sfr.getTheme();
+ try{
+ while(t.getLayer().getStatus()!=Layer.COMPLETED)
+ /* wait */ Thread.sleep(3000);
+ }catch(InterruptedException e){}
+
GeoRectangle box = t.getBounds();
PolygonLayer pl = new PolygonLayer();
Index: ExtractContiguity.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/utils/ExtractContiguity.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ExtractContiguity.java 2001/06/15 16:04:15 1.2
--- ExtractContiguity.java 2001/11/21 09:48:21 1.3
***************
*** 47,50 ****
--- 47,55 ----
System.out.println("Using "+sfr.dbf.getFieldName(sfr.getIdCol())+" as ID column");
Theme t = sfr.getTheme();
+ try{
+ while(t.getLayer().getStatus()!=Layer.COMPLETED)
+ /* wait */ Thread.sleep(3000);
+ }catch(InterruptedException e){}
+
PolygonLayer pl = (PolygonLayer)t.getLayer();
System.out.println("Building Matrix");
Index: ImageMaker.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/utils/ImageMaker.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ImageMaker.java 2001/08/20 16:44:45 1.1
--- ImageMaker.java 2001/11/21 09:48:21 1.2
***************
*** 18,21 ****
--- 18,25 ----
ShapefileReader sfr = new ShapefileReader(url);
Theme t=sfr.getTheme();
+ try{
+ while(t.getLayer().getStatus()!=Layer.COMPLETED)
+ /* wait */ Thread.sleep(3000);
+ }catch(InterruptedException e){}
view.addTheme(t);
Index: LODSet.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/utils/LODSet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** LODSet.java 2001/04/02 13:02:42 1.1
--- LODSet.java 2001/11/21 09:48:21 1.2
***************
*** 26,29 ****
--- 26,34 ----
ShapefileReader read = new ShapefileReader(url);
Theme t = read.getTheme();
+ try{
+ while(t.getLayer().getStatus()!=Layer.COMPLETED)
+ /* wait */ Thread.sleep(3000);
+ }catch(InterruptedException e){}
+
SimpleGeoData[] dbs = new SimpleGeoData[read.dbf.getNumFields()+1];
for(int i=0;i<read.dbf.getNumFields();i++){
Index: ShfFixer.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/utils/ShfFixer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ShfFixer.java 2001/08/22 10:57:09 1.3
--- ShfFixer.java 2001/11/21 09:48:21 1.4
***************
*** 18,21 ****
--- 18,26 ----
ShapefileReader sfr = new ShapefileReader(url);
Theme t = sfr.getTheme();
+ try{
+ while(t.getLayer().getStatus()!=Layer.COMPLETED)
+ /* wait */ Thread.sleep(3000);
+ }catch(InterruptedException e){}
+
GeoData [] dbs = sfr.readData();
if(dbs!=null&&dbs[0]!=null){
|
|
From: Ian T. <ian...@us...> - 2001-11-21 08:50:49
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/misc
In directory usw-pr-cvs1:/tmp/cvs-serv11020/uk/ac/leeds/ccg/geotools/misc
Modified Files:
DotFill.java
Log Message:
added some code to the class
Index: DotFill.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/misc/DotFill.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** DotFill.java 2001/11/20 18:03:17 1.1
--- DotFill.java 2001/11/21 08:50:33 1.2
***************
*** 2,20 ****
* DotFill.java
*
! * Created on November 20, 2001, 12:16 PM
*/
package uk.ac.leeds.ccg.geotools.misc;
!
/**
*
! * @author jamesm
! * @version
*/
public class DotFill {
!
/** Creates new DotFill */
public DotFill() {
}
}
--- 2,85 ----
* DotFill.java
*
! * Created on 26 October 2001, 20:16
*/
package uk.ac.leeds.ccg.geotools.misc;
! import java.awt.*;
/**
*
! * @author Ian Turton
! * @version
*/
public class DotFill {
!
/** Creates new DotFill */
public DotFill() {
}
+
+ public static void fillPolygon(Graphics g,Polygon poly,int diameter,int distance){
+ int x[] = poly.xpoints;
+ int y[] = poly.ypoints;
+ int n = poly.npoints;
+
+
+ double p;//cos/sine of angle offset of tmp polygon
+ int k;
+
+ double HI =-Double.MAX_VALUE;
+ double LO =Double.MAX_VALUE;
+
+ //rotate the polygon so that hatch lines are horezontal
+ for(int i=0;i<n;i++){
+ LO = Math.min(y[i],LO);
+ HI = Math.max(y[i],HI);
+ }
+ p=((y[0]-LO)%distance)+LO;
+ if(p>LO) p=p-distance;
+ k = (int)((HI-p)/distance);
+ if(k<=0 && distance<=0){
+ System.err.println("No hatching possible");
+ return;
+ }
+ double[] ord = new double[k];
+ //k is the number of hatches to draw
+ for(int i=0;i<k;i++){
+ int m=0;
+ p+=distance;
+ for(int l=0;l<n;l++){
+ int j = (l+1)%n; // index of "next" point
+ if(y[l]<=p&&y[j]<=p) continue;
+ if(y[l]>p&&y[j]>p) continue;
+ ord[m]=x[l]+(x[j]-x[l])*(p-y[l])/(y[j]-y[l]);
+ m++;
+ }
+ if(m%2!=0){System.err.println("Rounding error in DotFill hatch");}
+ if(m==0)continue;
+ //sort ord
+ for(int j=1;j<m;j++){
+ int ns = m+1-j;
+ for(int l=1;l<ns;l++){
+ if(ord[l-1]>ord[l]){
+ double q = ord[l];
+ ord[l]=ord[l-1];
+ ord[l-1]=q;
+ }
+ }
+ }
+ int ns=0;
+ int xh[] = new int[n];
+ for(int j=1;j<m;j=j+2){
+ for(int jj=0;jj<2;jj++){
+ xh[jj]=(int)(ord[ns]);
+ ns++;
+ }
+ for(int tx=(int)(xh[0]+(distance/2.0));
+ tx<xh[1]-distance/2+diameter/2;
+ tx+=distance)
+ g.fillOval((int)(tx-diameter/2),(int)(p-diameter/2),
+ diameter,diameter);
+ }
+ }
+ }
}
|
|
From: Cameron S. <cam...@us...> - 2001-11-21 03:09:24
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools
In directory usw-pr-cvs1:/tmp/cvs-serv22670
Modified Files:
ImageMarker.java
Log Message:
Provide an interface which allows ImageMarker to handle it's own ImageObserver events and send notifyLayerChangedListeners instead
Index: ImageMarker.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/ImageMarker.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ImageMarker.java 2001/02/21 15:02:15 1.1
--- ImageMarker.java 2001/11/21 03:09:21 1.2
***************
*** 4,41 ****
import java.awt.image.*;
/**
! * ImageMarker
* @author Pet...@co...
**/
! public class ImageMarker implements uk.ac.leeds.ccg.geotools.Marker
{
! Image mkOffImage,mkOnImage;
ImageObserver imgObserver;
! public ImageMarker(Image mkOffImg, Image mkOnImg, ImageObserver imgOb){
! this.mkOffImage=mkOffImg;
! this.mkOnImage=mkOnImg;
this.imgObserver=imgOb;
}
public void paintScaled(GeoGraphics gg,GeoPoint p,int size) {
Scaler s = gg.getScale();
- ShadeStyle st = gg.getStyle();
int mid[] = s.toGraphics(p);
Graphics g = gg.getGraphics();
! int h = mkOffImage.getHeight(imgObserver);
! int w = mkOffImage.getWidth(imgObserver);
int x = mid[0]-w/2;
int y = mid[1]-h/2;
! g.drawImage(mkOffImage,x,y,imgObserver);
}
public void paintHighlight(Graphics g,GeoPoint p,int size,Scaler scale,ShadeStyle style) {
int mid[] = scale.toGraphics(p);
! int h = mkOnImage.getHeight(imgObserver);
! int w = mkOnImage.getWidth(imgObserver);
int x = mid[0]-w/2;
int y = mid[1]-h/2;
! g.drawImage(mkOnImage,x,y,imgObserver);
! }
! }
\ No newline at end of file
--- 4,106 ----
import java.awt.image.*;
/**
! * ImageMarker creates a marker icon out of images passed in as parameters.
! * The (x,y) point provided is used as the center point of the icon.
* @author Pet...@co...
+ * @author <a href="mailto:ca...@sh...">Cameron Shorter</a>
**/
! public class ImageMarker implements
! uk.ac.leeds.ccg.geotools.Marker,
! ImageObserver
{
! boolean DEBUG=true;
! // image[0] = normal image
! // image[1] = highlighted image
! Image marker[]=new Image[2];
ImageObserver imgObserver;
+ Layer layer=null;
+ boolean layerNotified[]={false,false};
! /**
! * Initialise the class, providing an ImageObserver to notify if the icons
! * have not been loaded when we first try to draw it.
! * @param normalImage Icon to use normally
! * @param highlightedImage Icon to use during hover-over mode
! */
! public ImageMarker(Image normalImage, Image highlightedImage, ImageObserver imgOb){
! this.marker[0]=normalImage;
! this.marker[1]=highlightedImage;
this.imgObserver=imgOb;
+ if(DEBUG)System.out.println("ImageMarker1 created");
+ }
+
+ /**
+ * Initialise the class, if the icons are not ready to be drawn when first
+ * called, a notifyLayerChangedListeners event is sent when the icons are
+ * loaded.
+ * @param normalImage Icon to use normally
+ * @param highlightedImage Icon to use during hover-over mode
+ */
+ public ImageMarker(Image normalImage, Image highlightedImage, Layer layer){
+ this.marker[0]=normalImage;
+ this.marker[1]=highlightedImage;
+ this.imgObserver=this;
+ this.layer=layer;
+ if(DEBUG)System.out.println("ImageMarker2 created for layer="+layer);
}
+ /**
+ * Draw the normal icon at the location specified.
+ */
public void paintScaled(GeoGraphics gg,GeoPoint p,int size) {
Scaler s = gg.getScale();
int mid[] = s.toGraphics(p);
Graphics g = gg.getGraphics();
! int h = marker[0].getHeight(imgObserver);
! int w = marker[0].getWidth(imgObserver);
int x = mid[0]-w/2;
int y = mid[1]-h/2;
! g.drawImage(marker[0],x,y,imgObserver);
}
+ /**
+ * Draw the highlighted icon at the location specified.
+ */
public void paintHighlight(Graphics g,GeoPoint p,int size,Scaler scale,ShadeStyle style) {
int mid[] = scale.toGraphics(p);
! int h = marker[1].getHeight(imgObserver);
! int w = marker[1].getWidth(imgObserver);
int x = mid[0]-w/2;
int y = mid[1]-h/2;
! g.drawImage(marker[1],x,y,imgObserver);
! }
! /**
! * If we requested to draw this image and it was not ready, then this method
! * will be called - sends a LayerChangedEvent if layer has been initialised.
! */
! public boolean imageUpdate(
! Image img,
! int infoflags,
! int x,
! int y,
! int width,
! int height)
! {
! int imageId=0;
! for (int i=0;i<=1;i++){
! if(img==marker[i]){
! imageId=i;
! break;
! }
! }
!
! boolean done = ((infoflags & (ERROR | FRAMEBITS | ALLBITS)) != 0);
! if (done && (layer!=null)&&(!layerNotified[imageId])){
! if(DEBUG)System.out.println(
! "ImageMarker: Send notifyLayerChangedListeners for layer="+layer);
! layerNotified[imageId]=true;
! layer.notifyLayerChangedListeners(LayerChangedEvent.DATA);
! }
! return !layerNotified[imageId];
! }
! }
|
|
From: James M. <jma...@us...> - 2001-11-20 18:03:20
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/misc
In directory usw-pr-cvs1:/tmp/cvs-serv8315/uk/ac/leeds/ccg/geotools/misc
Added Files:
DotFill.java HatchFill.java
Log Message:
First compilable, but untested versions.
Not yet used by any other classes in GeoTools
--- NEW FILE: DotFill.java ---
/*
* DotFill.java
*
* Created on November 20, 2001, 12:16 PM
*/
package uk.ac.leeds.ccg.geotools.misc;
/**
*
* @author jamesm
* @version
*/
public class DotFill {
/** Creates new DotFill */
public DotFill() {
}
}
--- NEW FILE: HatchFill.java ---
/*
* HatchFill.java
*
* Created on November 20, 2001, 12:16 PM
*/
package uk.ac.leeds.ccg.geotools.misc;
import java.awt.*;
/**
*
* @author jamesm
* @version
*/
public class HatchFill {
/** Creates new CrossHatch */
public HatchFill() {
}
public static void hatchPolygon(Graphics g,Polygon poly,int angle,int distance){
int x[] = poly.xpoints;
int y[] = poly.ypoints;
int n = poly.npoints;
double slope;
double px[] = new double[n];
double py[] = new double[n];
double c,s,p;//cos/sine of angle offset of tmp polygon
int k;
c= Math.cos(angle*Math.PI/180.0d);
s= Math.sin(angle*Math.PI/180.0d);
double HI =-Double.MAX_VALUE;
double LO =Double.MAX_VALUE;
//rotate the polygon so that hatch lines are horezontal
for(int i=0;i<n;i++){
px[i]=(x[i]*c+y[i]*s);
p=-x[i]*s+y[i]*c;
LO = Math.min(p,LO);
HI = Math.max(p,HI);
py[i] = p;
}
p = amod(py[0]-LO,distance)+LO;
if(p>LO) p=p-distance;
k = (int)((HI-p)/distance);
if(k<=0 && distance<=0){
//System.err.println("No hatching possible");
return;
}
else {
double[] ord = new double[k];
//k is the number of hatches to draw
for(int i=0;i<k;i++){
int m=0;
p+=distance;
for(int l=0;l<n;l++){
int j = (l+1)%n; // index of "next" point
if(py[l]<=p&&py[j]<=p) continue;
if(py[l]>p&&py[j]>p) continue;
ord[m]=px[l]+(px[j]-px[l])*(p-py[l])/(py[j]-py[l]);
m++;
}
if(m%2!=0){System.err.println("Rounding error in cross hatch");}
if(m==0)continue;
//sort ord
for(int j=1;j<m;j++){
int ns = m+1-j;
for(int l=1;l<ns;l++){
if(ord[l-1]>ord[l]){
double q = ord[l];
ord[l]=ord[l-1];
ord[l-1]=q;
}
}
}
int ns=0;
int xh[] = new int[n];
int yh[] = new int[n];
for(int j=1;j<m;j=j+2){
for(int jj=0;jj<2;jj++){
xh[jj]=(int)(ord[ns]*c-p*s);
yh[jj]=(int)(ord[ns]*s+p*c);
ns++;
}
g.drawLine(xh[0],yh[0],xh[1],yh[1]);
}
}
}
}
public static double amod(double a,double b){
int first = (int)(a/b);
double second = first*b;
double third = a-second;
return third;
}
}
|
|
From: James M. <jma...@us...> - 2001-11-20 18:01:30
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools
In directory usw-pr-cvs1:/tmp/cvs-serv7794/uk/ac/leeds/ccg/geotools
Modified Files:
LODFilter.java
Log Message:
Fixed small bug when useing viewer directly
Added more percentage levels to the list of levels at which new features appear
Index: LODFilter.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/LODFilter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** LODFilter.java 2001/11/20 14:50:40 1.4
--- LODFilter.java 2001/11/20 18:01:27 1.5
***************
*** 29,36 ****
view=v;
}
! static final double levels[] = {100,150,200,400,1000,2000,4000};
public final boolean isVisible(int id){
lod = data.getValue(id);
! if(lod==0) return true;
if(scale!=null){
lod = (10-lod)*10;
--- 29,36 ----
view=v;
}
! static final double levels[] = {100,120,150,170,200,300,400,500,1000,2000,4000};
public final boolean isVisible(int id){
lod = data.getValue(id);
! if(lod<=0) return true;
if(scale!=null){
lod = (10-lod)*10;
***************
*** 41,46 ****
if(view!=null){
double perc = view.getZoomAsPercent();
! if(lod+1>levels.length) return perc>lod*1000.0;
! return perc > levels[(int)lod+1];
}
return false;
--- 41,47 ----
if(view!=null){
double perc = view.getZoomAsPercent();
! //System.out.println("lod "+lod+" per "+perc);
! if(lod>=levels.length) return perc>4000+lod*100.0;
! return perc > levels[(int)lod];
}
return false;
|
|
From: James M. <jma...@us...> - 2001-11-20 17:59:32
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools
In directory usw-pr-cvs1:/tmp/cvs-serv7147/uk/ac/leeds/ccg/geotools
Modified Files:
MarkerLayer.java
Log Message:
Made sure paintScaled takes filters into account
Index: MarkerLayer.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/MarkerLayer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** MarkerLayer.java 2001/07/31 10:37:24 1.6
--- MarkerLayer.java 2001/11/20 17:59:29 1.7
***************
*** 14,18 ****
public void addMarker(GeoPoint p){
addGeoPoint(p);
!
markers.put(new Integer(p.getID()),defaultMarker);
}
--- 14,18 ----
public void addMarker(GeoPoint p){
addGeoPoint(p);
!
markers.put(new Integer(p.getID()),defaultMarker);
}
***************
*** 26,63 ****
defaultMarker = m;
}
! public void setDefaultSize(int i){
! defaultSize=i;
! }
!
! public void paintScaled(GeoGraphics gg)
! {
GeoPoint temp;
for(int i = 0;i < shapeList.size() ;i++) {
! temp = (GeoPoint)shapeList.elementAt(i);
! Integer id = new Integer(temp.getID());
! Marker m = (Marker)markers.get(id);
! if(m==null) m=defaultMarker;
! m.paintScaled(gg,temp,defaultSize);
! }
}
! public void paintHighlight(Graphics g, Scaler scale, int id, ShadeStyle style)
! {
int p[],r;
r = style.getLineWidth();
! for(int i = 0;i < shapeList.size();i++) {
! GeoPoint temp = (GeoPoint)shapeList.elementAt(i);
! if(temp.getID()==id){
! Integer idObj = new Integer(temp.getID());
! Marker m = (Marker)markers.get(idObj);
! if(m==null) m=defaultMarker;
! m.paintHighlight(g,temp,defaultSize,scale,style);
! }
! }
}
!
}
--- 26,64 ----
defaultMarker = m;
}
! public void setDefaultSize(int i){
! defaultSize=i;
! }
!
! public void paintScaled(GeoGraphics gg) {
GeoPoint temp;
+ Filter filter= gg.getFilter();
for(int i = 0;i < shapeList.size() ;i++) {
! temp = (GeoPoint)shapeList.elementAt(i);
! Integer id = new Integer(temp.getID());
! if(filter==null || filter.isVisible(id.intValue())){
! Marker m = (Marker)markers.get(id);
! if(m==null) m=defaultMarker;
! m.paintScaled(gg,temp,defaultSize);
! }
! }
}
! public void paintHighlight(Graphics g, Scaler scale, int id, ShadeStyle style) {
int p[],r;
r = style.getLineWidth();
! for(int i = 0;i < shapeList.size();i++) {
! GeoPoint temp = (GeoPoint)shapeList.elementAt(i);
! if(temp.getID()==id){
! Integer idObj = new Integer(temp.getID());
! Marker m = (Marker)markers.get(idObj);
! if(m==null) m=defaultMarker;
! m.paintHighlight(g,temp,defaultSize,scale,style);
! }
! }
}
!
}
|
|
From: James M. <jma...@us...> - 2001-11-20 17:58:08
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools
In directory usw-pr-cvs1:/tmp/cvs-serv6619/uk/ac/leeds/ccg/geotools
Modified Files:
MixedLayer.java
Log Message:
point layer now defaults to a marker layer (a subclass of pointlayer with more featrues)
Index: MixedLayer.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/MixedLayer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** MixedLayer.java 2001/11/19 18:17:07 1.3
--- MixedLayer.java 2001/11/20 17:58:05 1.4
***************
*** 54,58 ****
public void addGeoPoint(GeoPoint p,boolean quiet) {
if(!hasPoints){
! points = new PointLayer();
super.addLayer(points);
hasPoints = true;
--- 54,58 ----
public void addGeoPoint(GeoPoint p,boolean quiet) {
if(!hasPoints){
! points = new MarkerLayer();
super.addLayer(points);
hasPoints = true;
|
|
From: Artur H. <ko...@us...> - 2001-11-20 17:01:48
|
Update of /cvsroot/geotools/geotools/src/demonstrations/jars In directory usw-pr-cvs1:/tmp/cvs-serv21444/demonstrations/jars Modified Files: simple-jprotocols1.1.jar simple-jprotocols.jar Log Message: Added byte[] getContentData() support Index: simple-jprotocols1.1.jar =================================================================== RCS file: /cvsroot/geotools/geotools/src/demonstrations/jars/simple-jprotocols1.1.jar,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsw3kAYd and /tmp/cvsec6zKh differ Index: simple-jprotocols.jar =================================================================== RCS file: /cvsroot/geotools/geotools/src/demonstrations/jars/simple-jprotocols.jar,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 Binary files /tmp/cvsW5Zfyf and /tmp/cvsMZTWzk differ |
|
From: Artur H. <ko...@us...> - 2001-11-20 17:01:48
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/ogc
In directory usw-pr-cvs1:/tmp/cvs-serv21444/uk/ac/leeds/ccg/ogc
Modified Files:
WMSLayer.java RemoteOGC.java RemoteConnection.java
Log Message:
Added byte[] getContentData() support
Index: WMSLayer.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/ogc/WMSLayer.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -d -r1.24 -r1.25
*** WMSLayer.java 2001/10/24 09:40:18 1.24
--- WMSLayer.java 2001/11/20 17:01:45 1.25
***************
*** 121,125 ****
GeoGraphics gg)
{
! ImageLayer imageLayer;
URL url;
GeoRectangle extent = gg.getScale().getMapExtent();
--- 121,125 ----
GeoGraphics gg)
{
! // ImageLayer imageLayer;
URL url;
GeoRectangle extent = gg.getScale().getMapExtent();
***************
*** 137,143 ****
"EXCEPTIONS",this.exceptionFormat
};
! url = this.remoteWMS.getURL(params);
! imageLayer = new ImageLayer(url,extent);
! return imageLayer;
}
--- 137,153 ----
"EXCEPTIONS",this.exceptionFormat
};
! byte[] imageData = remoteWMS.getImageData(params);
! if (imageData != null) {
! System.out.println("Image data size is: "+imageData.length);
! Image img = Toolkit.getDefaultToolkit().createImage(imageData);
! return new ImageLayer(img, extent);
! } // end of if (imageData != null)
! else {
! return null;
! } // end of if (imageData != null)else
! // Image img = Toolkit.getDefaultToolkit().createImage(remoteWMS.getURL(params));
! // return new ImageLayer(img, extent);
! // url = this.remoteWMS.getURL(params);
! // return new ImageLayer(url,extent);
}
***************
*** 158,164 ****
*
* $Log$
* Revision 1.24 2001/10/24 09:40:18 kobit
* Added LOG cvs keyword to the end of file
- *
*
*/
--- 168,176 ----
*
* $Log$
+ * Revision 1.25 2001/11/20 17:01:45 kobit
+ * Added byte[] getContentData() support
+ *
* Revision 1.24 2001/10/24 09:40:18 kobit
* Added LOG cvs keyword to the end of file
*
*/
Index: RemoteOGC.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/ogc/RemoteOGC.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** RemoteOGC.java 2001/11/19 10:03:33 1.14
--- RemoteOGC.java 2001/11/20 17:01:45 1.15
***************
*** 130,133 ****
--- 130,141 ----
}
+ protected void initConnection()
+ {
+ if(proxy!=null)
+ remoteConnection = new RemoteConnection(server.toString(), proxy.toString());
+ else
+ remoteConnection = new RemoteConnection(server.toString(), null);
+ }
+
/**
* <code>getURL</code> method builds a URL based on the proxy, the OGC
***************
*** 170,173 ****
--- 178,198 ----
}
+ public byte[] getImageData(String[] params)
+ {
+ URL url = this.getURL(params);
+ byte[] data = null;
+ try {
+ if (remoteConnection == null) {
+ initConnection();
+ } // end of if (remoteConnection == null)
+
+ int res = remoteConnection.sendRequest(url);
+ data = remoteConnection.getByteData();
+ } catch (IOException e) {
+ data = null;
+ } // end of try-catch
+ return data;
+ }
+
/* ********* <code>WebMapService</code> proxy methods START *********** */
***************
*** 239,248 ****
if(capabilities == null) {
if(remoteConnection == null)
! if(proxy!=null)
! remoteConnection = new RemoteConnection(
! server.toString(), proxy.toString());
! else
! remoteConnection = new RemoteConnection(
! server.toString(), null);
try {
query_result =
--- 264,268 ----
if(capabilities == null) {
if(remoteConnection == null)
! initConnection();
try {
query_result =
***************
*** 336,339 ****
--- 356,362 ----
*
* $Log$
+ * Revision 1.15 2001/11/20 17:01:45 kobit
+ * Added byte[] getContentData() support
+ *
* Revision 1.14 2001/11/19 10:03:33 kobit
* *** empty log message ***
Index: RemoteConnection.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/ogc/RemoteConnection.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** RemoteConnection.java 2001/11/18 15:57:54 1.7
--- RemoteConnection.java 2001/11/20 17:01:45 1.8
***************
*** 100,103 ****
--- 100,111 ----
}
+ protected void initConnection(URI uri)
+ throws IOException
+ {
+ url = uri;
+ connection = ProtocolFactory.createProtocol(uri, DEBUG);
+ connection.setStreamReadTimeout(60*1000);
+ }
+
public int sendQuery(String query)
throws IOException, MalformedURLException
***************
*** 107,118 ****
else
url = new URI(server+"&"+query);
prln("URL="+url.toString());
! connection = ProtocolFactory.createProtocol(url, DEBUG);
! connection.setStreamReadTimeout(60*1000);
return identifyResponse(connection);
}
! public InputStream getInputStream()
! throws IOException
{
if(connection != null)
--- 115,134 ----
else
url = new URI(server+"&"+query);
+ return sendRequest(new URL(url.toString()));
+ }
+
+ public int sendRequest(URL url) throws IOException
+ {
prln("URL="+url.toString());
! if (connection == null) {
! initConnection(new URI(url));
! } // end of if (connection == null)
! else {
! connection.setURI(new URI(url));
! } // end of else of if (connection == null)
return identifyResponse(connection);
}
! public InputStream getInputStream() throws IOException
{
if(connection != null)
***************
*** 121,124 ****
--- 137,150 ----
}
+ public byte[] getByteData() throws IOException
+ {
+ if (connection != null) {
+ return connection.getContentData();
+ } // end of if (connection != null)
+ else {
+ return null;
+ } // end of if (connection != null)else
+ }
+
public void saveContent(String fileName)
throws IOException
***************
*** 178,181 ****
--- 204,210 ----
*
* $Log$
+ * Revision 1.8 2001/11/20 17:01:45 kobit
+ * Added byte[] getContentData() support
+ *
* Revision 1.7 2001/11/18 15:57:54 kobit
* Use of simple-jprotocols package instead of java.net, DTD validating switched OFF, default version if WMS implementation is set to 1.0.0
|
|
From: Artur H. <ko...@us...> - 2001-11-20 17:01:48
|
Update of /cvsroot/geotools/geotools/src/utils
In directory usw-pr-cvs1:/tmp/cvs-serv21444/utils
Modified Files:
WMSExample.java
Log Message:
Added byte[] getContentData() support
Index: WMSExample.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/utils/WMSExample.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** WMSExample.java 2001/11/10 12:14:41 1.11
--- WMSExample.java 2001/11/20 17:01:45 1.12
***************
*** 25,465 ****
implements ActionListener, ScaleChangedListener
{
! /** WMS server list for testing purpose.
! * Because of applet security restrctions you can use it only
! * when you run this class from command line as standalone application */
! String[] serverList = {
! "file:capabilities_1_1_0.xml",
! "http://usl.cubewerx.com/gfst/cubeserv/cubeserv.cgi",
! "http://usl.cubewerx.com/cubestor/cubeserv/cubeserv.cgi",
! "http://edcnts1.cr.usgs.gov:8080/servlet/com.esri.wms.Esrimap?servicename=USGSnhd",
! "http://edcnts1.cr.usgs.gov:8080/servlet/com.esri.wms.Esrimap?servicename=USGSned",
! "http://globe.digitalearth.gov/cgi-bin/wmt.cgi",
! "http://alpha.skylinesoft.com/services/ogc/wms/wms3d.asp",
! "http://wmt.laser-scan.com/servlets/WestminsterMapServlet",
! "http://wmt.laser-scan.com/servlets/GIJEMapServlet",
! "http://wmt.laser-scan.com/servlets/SLDMapServlet",
! "http://ogc.intergraph.com/mobile/request.asp",
! "http://maps.intergraph.com/wms/london/Request.asp",
! "http://www2.dmsolutions.ca:8099/cgi-bin/mswms_mpp1"
! };
! /** Mapping WMS addreses to shorter names */
! String[] serverNames = {
! "file:capabilities_1_1_0.xml",
! "usl.cubewerx.com 1",
! "usl.cubewerx.com 2",
! "edcnts1.cr.usgs.gov:8080 1",
! "edcnts1.cr.usgs.gov:8080 2",
! "globe.digitalearth.gov",
! "alpha.skylinesoft.com",
! "wmt.laser-scan.com 1",
! "wmt.laser-scan.com 2",
! "wmt.laser-scan.com 3",
! "ogc.intergraph.com",
! "maps.intergraph.com",
! "www2.dmsolutions.ca:8099"
! };
!
! private final static boolean DEBUG=true;
! /** Visual component displaing WMS Server list */
! Choice serverChoice = new Choice();
! /** After presing this button, capabilities from the server will be downloaded */
! Button bGetLayers = new Button("Connect");
! Button bGetMap = new Button("Get Map");
! ImageLayer imgLayer;
! URL currentUrl;
! String layers =null;
! /** Tool bar containing all controls */
! ToolBar tools = null;
! /** Right side panel with services list and layers list */
! Panel sideBar = null;
! /** Panel keeping layerList */
! Panel layerNames = new Panel();
! /** List with available layers on remote WMS server */
! List layerList = new List(12, true);
! /** Panel keeping WMS layers list title */
! Panel lay_tit_pan = new Panel();
! /** Title of list with WMS layers */
! TextField lay_tit_tex = new TextField(" Layer names: ");
! /** Panel keeping formatList */
! Panel formatNames = new Panel();
! /** List with available formats on remote WMS server */
! List formatList = new List(6, false);
! /** Panel keeping WMS formats list title */
! Panel for_tit_pan = new Panel();
! /** Title of list with WMS formats */
! TextField for_tit_tex = new TextField(" Available formats: ");
! /** Text with layer name info */
! TextField lay_name = new TextField(" No layers downloaded ");
! /** Text with layer title info */
! TextField lay_title = new TextField(" No layers downloaded ");
! /** Text with layer abstract info */
! TextField lay_abstract = new TextField(" No layers downloaded ");
! /** Text with layer name info */
! TextField lay_latlon = new TextField(" No layers downloaded ");
! Viewer view = new Viewer();
! /** List with WMS external layers */
! java.util.ArrayList ext_layers = null;
! /** Not used yet. */
! WMSLayer layer = null;
! Theme th;
! /** it is something similiar to geotools-ShapefileReader */
! RemoteWMS remoteWMS = null;
! String server_url = null;
! String proxy_url = null;
- /**
- * <code>init</code> method initalizes all needed graphics
- *
- */
- public void init(){
- for(int i = 0; i < serverNames.length; i++)
- serverChoice.addItem(serverNames[i]);
- serverChoice.addItemListener(new BGetLayers());
! this.setBackground(Color.white);
! setLayout(new BorderLayout(5,5));
! sideBar = new Panel();
! GridBagLayout gbl = new GridBagLayout();
! GridBagConstraints gbc = new GridBagConstraints();
! sideBar.setLayout(gbl);
! add(view,"Center");
! //view.getScale().addScaleChangedListener(this);
! tools = new ToolBar(view);
! tools.add(new ZoomLevelPicker(view));
! //bGetLayers.addActionListener(new BGetLayers());
! tools.add(serverChoice);
! //tools.add(bGetLayers);
! tools.add(bGetMap);
! bGetMap.addActionListener(this);
! add(tools, "South");
! lay_tit_tex.setEditable(false);
! layerList.addItemListener(new LayerListListener());
! layerList.add(" No layers downloaded yet ");
! for_tit_tex.setEditable(false);
! formatList.add(" No formats downloaded yet ");
! for_tit_pan.add(for_tit_tex);
! formatNames.add(formatList);
! lay_tit_pan.add(lay_tit_tex);
! layerNames.add(layerList);
! gbc.fill = GridBagConstraints.VERTICAL;
! // gbc.weightx = 1.0;
! gbc.gridwidth = GridBagConstraints.REMAINDER;
! gbl.setConstraints(lay_tit_pan, gbc);
! sideBar.add(lay_tit_pan);
! gbl.setConstraints(layerNames, gbc);
! sideBar.add(layerNames);
! gbl.setConstraints(for_tit_pan, gbc);
! sideBar.add(for_tit_pan);
! gbl.setConstraints(formatNames, gbc);
! sideBar.add(formatNames);
! gbl.setConstraints(lay_name, gbc);
! sideBar.add(lay_name);
! gbl.setConstraints(lay_title, gbc);
! sideBar.add(lay_title);
! gbl.setConstraints(lay_abstract, gbc);
! sideBar.add(lay_abstract);
! gbl.setConstraints(lay_latlon, gbc);
! sideBar.add(lay_latlon);
! add(sideBar, "East");
! }
! public void start(){
! }
! /**
! * Fill the display with a list of options provided by the capabilities
! * document of the WMS.
! * @exception Exception if an error occurs
! */
! public void loadCapabilities() throws Exception
! {
! String url = server_url;
! String proxy = null;
! /*
! try {
! url = getParameter("sampleurl");
! proxy = getParameter("proxyurl");
! } catch(NullPointerException npe) {
! url = server_url;
! }
! */
! deb("Sample url is: "+url);
! if (server_url==null) {
! System.out.println("server_url not defined yet");
! return;
! }
! if (remoteWMS==null) {
! deb("Creating WMSLayer...");
! // Create the 'interface' to WMS server and trigger getCapabilities
! // To do: SRS and version should be extracted from the
! // capabilities document. -Cameron.
! remoteWMS = new RemoteWMS(
! new URL(url), // WMS url
! null, // null proxy URL
! "EPSG:4326", // SRS
! "1.0.0"); // version
! }
! // Get all available layers on WMS - can take long time
! ext_layers = remoteWMS.getExternalLayers();
! if(ext_layers != null && ext_layers.size() > 0) {
! layerList.removeAll();
! for(int i = 0; i < ext_layers.size(); i++) {
! deb(""+(i+1)+". Layer: "+ext_layers.get(i));
! layerList.add(((ExternalWMSLayer)ext_layers.get(i)).toString());
! }
! }
! // Get formats available on WMS
! java.util.ArrayList formats = remoteWMS.getAvailableFormats("GetMap");
! if(formats != null && formats.size() > 0) {
! formatList.removeAll();
! for(int i = 0; i < formats.size(); i++) {
! deb(""+(i+1)+". Format: "+formats.get(i).toString());
! formatList.add(formats.get(i).toString());
! }
! }
}
! /**
! * Extract the options selected by the user and load a map from the WMS.
! */
! public void loadMap()
! {
! if (remoteWMS==null) {
! deb("remoteWMS not defined when calling loadMap()");
! } else {
! // build the layers string in the format:
! // "layer1,layer2,layer3"
! String layers="";
! // To do: Need to set extent to the aggregate extent of the
! // layers.
! GeoRectangle extent=new GeoRectangle(0,0,80,80);
! String[] selectedLayers = layerList.getSelectedItems();
! for(int i =0;i<selectedLayers.length;i++){
! layers=layers.concat(selectedLayers[i]);
! if (i<selectedLayers.length-1) {
! layers=layers.concat(",");
! }
! }
! WMSLayer wmsLayer=new WMSLayer(
! remoteWMS,
! layers,
! "", // style
! extent,
! OGCConstants.GIF,
! true,
! "0xFFFFFF",
! "INIMAGE");
! Theme wmsTheme= new Theme(wmsLayer);
! view.addTheme(wmsTheme);
! view.setMapExtent(extent);
}
}
! /**
! * Class <code>LayerListListener</code> event listener displays
! * <code>ExternalWMSLayer</code> details.
! *
! * @author <a href="mailto:art...@nu...">Artur Hefczyc</a>
! */
! class LayerListListener implements ItemListener {
! public void itemStateChanged(ItemEvent ie) {
! if(ext_layers != null) {
! int i = ((Integer)ie.getItem()).intValue();
! ExternalWMSLayer ewmsl = (ExternalWMSLayer)ext_layers.get(i);
! lay_name.setText(ewmsl.getLayerName());
! lay_title.setText(ewmsl.getLayerTitle());
! lay_abstract.setText(ewmsl.getLayerAbstract());
! lay_latlon.setText(ewmsl.llBBToString());
! }
! layer=null; // we need to fetch a new map
! }
}
! public void actionPerformed(ActionEvent ae)
! {
! String cmd = ae.getActionCommand();
! if(cmd.equalsIgnoreCase("get map")){
! if(ext_layers != null){
! loadMap();
! /*
! GeoRectangle b= new GeoRectangle();
! int[] idx = layerList.getSelectedIndexes();
! ExternalWMSLayer [] layers = new ExternalWMSLayer[idx.length];
! for(int i =0;i<idx.length;i++){
! layers[i] = (ExternalWMSLayer)ext_layers.get(idx[i]);
! b.add(layers[i].getBounds());
! }
! int i = formatList.getSelectedIndex();
! String imgType;
! if(i== -1){
! System.out.println("No Image format Selected - chosing gif");
! imgType ="image/gif";
! }else{
! imgType=formatList.getItem(i);
! //int k = imgType.lastIndexOf("/");
! //imgType = imgType.substring(k+1);
! }
! if(layer==null){ // new map
! layer=remoteWMS.getWMSLayer(layers,new
! WMSFormat(imgType),b.x,b.y,b.width,b.height);
! System.out.println("layer "+layer);
! if(th==null){
! th = new Theme(layer);
! view.addTheme(th);
! }else{
! th.setLayer(layer);
! }
! */
! }
! }
! }
! public void scaleChanged(ScaleChangedEvent sce){
! if(ext_layers != null) {
! try{
! int w,h;
! GeoRectangle b=view.scale.getMapExtent();
! w=view.getScale().toGraphics(b.width);
! h=view.getScale().toGraphics(b.height);
! String imgType;
! int i = formatList.getSelectedIndex();
! if(i== -1){
! System.out.println("No Image format Selected - chosing gif");
! imgType ="gif";
! }else{
! imgType=formatList.getItem(i);
! int k = imgType.lastIndexOf("/");
! imgType = imgType.substring(k+1);
! }
! currentUrl = new URL(server_url+"?WMTVER=1.0&REQUEST=map&SRS=EPSG%3A4326&format="+imgType+"&BBOX="+b.x+","+b.y+","+(b.x+b.width)+","+(b.y+b.height)+"&WIDTH="+w+"&HEIGHT="+h+"&LAYERS="+layers);
! imgLayer.changeImage(currentUrl,b);
! if(th==null){
! th = new Theme(imgLayer);
! view.addTheme(th);
! }
! }catch(MalformedURLException e){
! System.out.println("Whoops error building url");
! return;
! }
! }
! }
! /**
! * Class <code>BGetLayers</code> start connection to new remote WMS.
! *
! * @author <a href="mailto:art...@nu...">Artur Hefczyc</a>
! */
! class BGetLayers implements ActionListener,ItemListener {
! public void itemStateChanged(ItemEvent e){
! actionPerformed(new ActionEvent(e.getSource(),e.getID(),"Item"));
! }
! public void actionPerformed(ActionEvent ae) {
! int idx = serverChoice.getSelectedIndex();
! server_url = serverList[idx];
! try {
! loadCapabilities();
! layer=null; // need to fetch new map
! } catch(Exception e) {
! e.printStackTrace();
! }
! }
}
!
! /**
! * A Standard Applet method
! * @return String description of applet perameters.
! */
! public String getAppletInfo()
! {
! String info = "WMSLayer sample - Artur Hefczyc";
! return info;
}
! /**
! * A Standard Applet method
! * @return String description of applet perameters.
! */
! public String[][] getParameterInfo()
! {
! String pinfo[][] = {
! {"sampleurl", "relative url",
! "location of WMS Server or capabilities file."},
! {"proxyurl", "relative url",
! "not required and not used and sample, WMSLayer require two parameters"}
! };
! return pinfo;
! }
! public static void main(String[] argc)
! {
! WMSExample sample = new WMSExample();
! Frame frame = new Frame("WMS Example");
! frame.addWindowListener(new
! WindowAdapter() {
! public void windowClosing(WindowEvent we) {
! System.exit(0);
! }
! });
! frame.add(sample, BorderLayout.CENTER);
! frame.setSize(800, 600);
! sample.init();
! sample.start();
! frame.setVisible(true);
! }
! protected void deb(String str)
! {
! if (DEBUG)System.err.println("WMSExample-->"+str);
! }
! }
! /*
! * Changes in file:
! *
! * $Log$
! * Revision 1.11 2001/11/10 12:14:41 camerons
! * clean up formatting
! *
! * Revision 1.10 2001/11/10 12:05:51 camerons
! * Have got a WMSExample working, gets capabilities, and now gets maps using WMSLayer
! *
! * Revision 1.9 2001/10/28 21:43:41 camerons
! * Changed default tabspace from 2 to 4, only effects formatting
! *
! * Revision 1.8 2001/10/28 21:42:22 camerons
! * Added some more functionality to build a map (using WMSLayer) but it does not have all params yet
! *
! * Revision 1.7 2001/10/24 09:43:32 kobit
! * Some changes to work with OGC in new ogc-design, now again parse capabilities and displays capabilities info
! *
! *
! */
--- 25,468 ----
implements ActionListener, ScaleChangedListener
{
! /** WMS server list for testing purpose.
! * Because of applet security restrctions you can use it only
! * when you run this class from command line as standalone application */
! String[] serverList = {
! "file:capabilities_1_1_0.xml",
! "http://usl.cubewerx.com/gfst/cubeserv/cubeserv.cgi",
! "http://usl.cubewerx.com/cubestor/cubeserv/cubeserv.cgi",
! "http://edcnts1.cr.usgs.gov:8080/servlet/com.esri.wms.Esrimap?servicename=USGSnhd",
! "http://edcnts1.cr.usgs.gov:8080/servlet/com.esri.wms.Esrimap?servicename=USGSned",
! "http://globe.digitalearth.gov/cgi-bin/wmt.cgi",
! "http://alpha.skylinesoft.com/services/ogc/wms/wms3d.asp",
! "http://wmt.laser-scan.com/servlets/WestminsterMapServlet",
! "http://wmt.laser-scan.com/servlets/GIJEMapServlet",
! "http://wmt.laser-scan.com/servlets/SLDMapServlet",
! "http://ogc.intergraph.com/mobile/request.asp",
! "http://maps.intergraph.com/wms/london/Request.asp",
! "http://www2.dmsolutions.ca:8099/cgi-bin/mswms_mpp1"
! };
! /** Mapping WMS addreses to shorter names */
! String[] serverNames = {
! "file:capabilities_1_1_0.xml",
! "usl.cubewerx.com 1",
! "usl.cubewerx.com 2",
! "edcnts1.cr.usgs.gov:8080 1",
! "edcnts1.cr.usgs.gov:8080 2",
! "globe.digitalearth.gov",
! "alpha.skylinesoft.com",
! "wmt.laser-scan.com 1",
! "wmt.laser-scan.com 2",
! "wmt.laser-scan.com 3",
! "ogc.intergraph.com",
! "maps.intergraph.com",
! "www2.dmsolutions.ca:8099"
! };
! private final static boolean DEBUG=true;
! /** Visual component displaing WMS Server list */
! Choice serverChoice = new Choice();
! /** After presing this button, capabilities from the server will be downloaded */
! Button bGetLayers = new Button("Connect");
! Button bGetMap = new Button("Get Map");
! ImageLayer imgLayer;
! URL currentUrl;
! String layers =null;
! /** Tool bar containing all controls */
! ToolBar tools = null;
! /** Right side panel with services list and layers list */
! Panel sideBar = null;
! /** Panel keeping layerList */
! Panel layerNames = new Panel();
! /** List with available layers on remote WMS server */
! List layerList = new List(12, true);
! /** Panel keeping WMS layers list title */
! Panel lay_tit_pan = new Panel();
! /** Title of list with WMS layers */
! TextField lay_tit_tex = new TextField(" Layer names: ");
! /** Panel keeping formatList */
! Panel formatNames = new Panel();
! /** List with available formats on remote WMS server */
! List formatList = new List(6, false);
! /** Panel keeping WMS formats list title */
! Panel for_tit_pan = new Panel();
! /** Title of list with WMS formats */
! TextField for_tit_tex = new TextField(" Available formats: ");
! /** Text with layer name info */
! TextField lay_name = new TextField(" No layers downloaded ");
! /** Text with layer title info */
! TextField lay_title = new TextField(" No layers downloaded ");
! /** Text with layer abstract info */
! TextField lay_abstract = new TextField(" No layers downloaded ");
! /** Text with layer name info */
! TextField lay_latlon = new TextField(" No layers downloaded ");
! Viewer view = new Viewer();
+ /** List with WMS external layers */
+ java.util.ArrayList ext_layers = null;
+ /** Not used yet. */
+ WMSLayer layer = null;
+ Theme th;
+ /** it is something similiar to geotools-ShapefileReader */
+ RemoteWMS remoteWMS = null;
+ String server_url = null;
+ String proxy_url = null;
! /**
! * <code>init</code> method initalizes all needed graphics
! *
! */
! public void init(){
! for(int i = 0; i < serverNames.length; i++)
! serverChoice.addItem(serverNames[i]);
! serverChoice.addItemListener(new BGetLayers());
! this.setBackground(Color.white);
! setLayout(new BorderLayout(5,5));
! sideBar = new Panel();
! GridBagLayout gbl = new GridBagLayout();
! GridBagConstraints gbc = new GridBagConstraints();
! sideBar.setLayout(gbl);
! add(view,"Center");
! //view.getScale().addScaleChangedListener(this);
! tools = new ToolBar(view);
! tools.add(new ZoomLevelPicker(view));
! //bGetLayers.addActionListener(new BGetLayers());
! tools.add(serverChoice);
! //tools.add(bGetLayers);
! tools.add(bGetMap);
! bGetMap.addActionListener(this);
! add(tools, "South");
! lay_tit_tex.setEditable(false);
! layerList.addItemListener(new LayerListListener());
! layerList.add(" No layers downloaded yet ");
! for_tit_tex.setEditable(false);
! formatList.add(" No formats downloaded yet ");
! for_tit_pan.add(for_tit_tex);
! formatNames.add(formatList);
! lay_tit_pan.add(lay_tit_tex);
! layerNames.add(layerList);
! gbc.fill = GridBagConstraints.VERTICAL;
! // gbc.weightx = 1.0;
! gbc.gridwidth = GridBagConstraints.REMAINDER;
! gbl.setConstraints(lay_tit_pan, gbc);
! sideBar.add(lay_tit_pan);
! gbl.setConstraints(layerNames, gbc);
! sideBar.add(layerNames);
! gbl.setConstraints(for_tit_pan, gbc);
! sideBar.add(for_tit_pan);
! gbl.setConstraints(formatNames, gbc);
! sideBar.add(formatNames);
! gbl.setConstraints(lay_name, gbc);
! sideBar.add(lay_name);
! gbl.setConstraints(lay_title, gbc);
! sideBar.add(lay_title);
! gbl.setConstraints(lay_abstract, gbc);
! sideBar.add(lay_abstract);
! gbl.setConstraints(lay_latlon, gbc);
! sideBar.add(lay_latlon);
! add(sideBar, "East");
! }
! public void start(){
! }
! /**
! * Fill the display with a list of options provided by the capabilities
! * document of the WMS.
! * @exception Exception if an error occurs
! */
! public void loadCapabilities() throws Exception
! {
! String url = server_url;
! String proxy = null;
! /*
! try {
! url = getParameter("sampleurl");
! proxy = getParameter("proxyurl");
! } catch(NullPointerException npe) {
! url = server_url;
! }
! */
! deb("Sample url is: "+url);
! if (server_url==null) {
! System.out.println("server_url not defined yet");
! return;
! }
! if (remoteWMS==null) {
! deb("Creating WMSLayer...");
! // Create the 'interface' to WMS server and trigger getCapabilities
! // To do: SRS and version should be extracted from the
! // capabilities document. -Cameron.
! remoteWMS = new RemoteWMS(
! new URL(url), // WMS url
! null, // null proxy URL
! "EPSG:4326", // SRS
! "1.0.0"); // version
}
! // Get all available layers on WMS - can take long time
! ext_layers = remoteWMS.getExternalLayers();
! if(ext_layers != null && ext_layers.size() > 0) {
! layerList.removeAll();
! for(int i = 0; i < ext_layers.size(); i++) {
! deb(""+(i+1)+". Layer: "+ext_layers.get(i));
! layerList.add(((ExternalWMSLayer)ext_layers.get(i)).toString());
! }
! }
! // Get formats available on WMS
! java.util.ArrayList formats = remoteWMS.getAvailableFormats("GetMap");
! if(formats != null && formats.size() > 0) {
! formatList.removeAll();
! for(int i = 0; i < formats.size(); i++) {
! deb(""+(i+1)+". Format: "+formats.get(i).toString());
! formatList.add(formats.get(i).toString());
! }
! }
! }
! /**
! * Extract the options selected by the user and load a map from the WMS.
! */
! public void loadMap()
! {
! if (remoteWMS==null) {
! deb("remoteWMS not defined when calling loadMap()");
! } else {
! // build the layers string in the format:
! // "layer1,layer2,layer3"
! String layers="";
! // To do: Need to set extent to the aggregate extent of the
! // layers.
! GeoRectangle extent=new GeoRectangle(0,0,80,80);
! String[] selectedLayers = layerList.getSelectedItems();
! for(int i =0;i<selectedLayers.length;i++){
! layers=layers.concat(selectedLayers[i]);
! if (i<selectedLayers.length-1) {
! layers=layers.concat(",");
}
+ }
+
+ WMSLayer wmsLayer=new WMSLayer(
+ remoteWMS,
+ layers,
+ "", // style
+ extent,
+ OGCConstants.GIF,
+ true,
+ "0xFFFFFF",
+ "INIMAGE");
+ Theme wmsTheme= new Theme(wmsLayer);
+ view.addTheme(wmsTheme);
+ view.setMapExtent(extent);
}
+ }
! /**
! * Class <code>LayerListListener</code> event listener displays
! * <code>ExternalWMSLayer</code> details.
! *
! * @author <a href="mailto:art...@nu...">Artur Hefczyc</a>
! */
! class LayerListListener implements ItemListener {
! public void itemStateChanged(ItemEvent ie) {
! if(ext_layers != null) {
! int i = ((Integer)ie.getItem()).intValue();
! ExternalWMSLayer ewmsl = (ExternalWMSLayer)ext_layers.get(i);
! lay_name.setText(ewmsl.getLayerName());
! lay_title.setText(ewmsl.getLayerTitle());
! lay_abstract.setText(ewmsl.getLayerAbstract());
! lay_latlon.setText(ewmsl.llBBToString());
! }
! layer=null; // we need to fetch a new map
}
+ }
! public void actionPerformed(ActionEvent ae)
! {
! String cmd = ae.getActionCommand();
! if(cmd.equalsIgnoreCase("get map")){
! if(ext_layers != null){
! loadMap();
! /*
! GeoRectangle b= new GeoRectangle();
! int[] idx = layerList.getSelectedIndexes();
! ExternalWMSLayer [] layers = new ExternalWMSLayer[idx.length];
! for(int i =0;i<idx.length;i++){
! layers[i] = (ExternalWMSLayer)ext_layers.get(idx[i]);
! b.add(layers[i].getBounds());
! }
! int i = formatList.getSelectedIndex();
! String imgType;
! if(i== -1){
! System.out.println("No Image format Selected - chosing gif");
! imgType ="image/gif";
! }else{
! imgType=formatList.getItem(i);
! //int k = imgType.lastIndexOf("/");
! //imgType = imgType.substring(k+1);
! }
! if(layer==null){ // new map
! layer=remoteWMS.getWMSLayer(layers,new
! WMSFormat(imgType),b.x,b.y,b.width,b.height);
! System.out.println("layer "+layer);
! if(th==null){
! th = new Theme(layer);
! view.addTheme(th);
! }else{
! th.setLayer(layer);
! }
! */
! }
! }
! }
! public void scaleChanged(ScaleChangedEvent sce){
! if(ext_layers != null) {
! try{
! int w,h;
! GeoRectangle b=view.scale.getMapExtent();
! w=view.getScale().toGraphics(b.width);
! h=view.getScale().toGraphics(b.height);
! String imgType;
! int i = formatList.getSelectedIndex();
! if(i== -1){
! System.out.println("No Image format Selected - chosing gif");
! imgType ="gif";
! }else{
! imgType=formatList.getItem(i);
! int k = imgType.lastIndexOf("/");
! imgType = imgType.substring(k+1);
}
! currentUrl = new URL(server_url+"?WMTVER=1.0&REQUEST=map&SRS=EPSG%3A4326&format="+imgType+"&BBOX="+b.x+","+b.y+","+(b.x+b.width)+","+(b.y+b.height)+"&WIDTH="+w+"&HEIGHT="+h+"&LAYERS="+layers);
! imgLayer.changeImage(currentUrl,b);
! if(th==null){
! th = new Theme(imgLayer);
! view.addTheme(th);
}
+ }catch(MalformedURLException e){
+ System.out.println("Whoops error building url");
+ return;
+ }
+ }
+ }
+ /**
+ * Class <code>BGetLayers</code> start connection to new remote WMS.
+ *
+ * @author <a href="mailto:art...@nu...">Artur Hefczyc</a>
+ */
+ class BGetLayers implements ActionListener,ItemListener {
+ public void itemStateChanged(ItemEvent e){
+ actionPerformed(new ActionEvent(e.getSource(),e.getID(),"Item"));
+ }
+ public void actionPerformed(ActionEvent ae) {
+ int idx = serverChoice.getSelectedIndex();
+ server_url = serverList[idx];
+ try {
+ loadCapabilities();
+ layer=null; // need to fetch new map
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
! /**
! * A Standard Applet method
! * @return String description of applet perameters.
! */
! public String getAppletInfo()
! {
! String info = "WMSLayer sample - Artur Hefczyc";
! return info;
! }
! /**
! * A Standard Applet method
! * @return String description of applet perameters.
! */
! public String[][] getParameterInfo()
! {
! String pinfo[][] = {
! {"sampleurl", "relative url",
! "location of WMS Server or capabilities file."},
! {"proxyurl", "relative url",
! "not required and not used and sample, WMSLayer require two parameters"}
! };
! return pinfo;
! }
! public static void main(String[] argc)
! {
! WMSExample sample = new WMSExample();
! Frame frame = new Frame("WMS Example");
! frame.addWindowListener(new
! WindowAdapter() {
! public void windowClosing(WindowEvent we) {
! System.exit(0);
! }
! });
! frame.add(sample, BorderLayout.CENTER);
! frame.setSize(800, 600);
! sample.init();
! sample.start();
! frame.setVisible(true);
! }
! protected void deb(String str)
! {
! if (DEBUG)System.err.println("WMSExample-->"+str);
! }
!
! }
! /*
! * Changes in file:
! *
! * $Log$
! * Revision 1.12 2001/11/20 17:01:45 kobit
! * Added byte[] getContentData() support
! *
! * Revision 1.11 2001/11/10 12:14:41 camerons
! * clean up formatting
! *
! * Revision 1.10 2001/11/10 12:05:51 camerons
! * Have got a WMSExample working, gets capabilities, and now gets maps using WMSLayer
! *
! * Revision 1.9 2001/10/28 21:43:41 camerons
! * Changed default tabspace from 2 to 4, only effects formatting
! *
! * Revision 1.8 2001/10/28 21:42:22 camerons
! * Added some more functionality to build a map (using WMSLayer) but it does not have all params yet
! *
! * Revision 1.7 2001/10/24 09:43:32 kobit
! * Some changes to work with OGC in new ogc-design, now again parse capabilities and displays capabilities info
! *
! *
! */
|
|
From: Artur H. <ko...@us...> - 2001-11-20 17:01:48
|
Update of /cvsroot/geotools/geotools/src/utils/jars In directory usw-pr-cvs1:/tmp/cvs-serv21444/utils/jars Modified Files: simple-jprotocols1.1.jar simple-jprotocols.jar Log Message: Added byte[] getContentData() support Index: simple-jprotocols1.1.jar =================================================================== RCS file: /cvsroot/geotools/geotools/src/utils/jars/simple-jprotocols1.1.jar,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvs3jhBFW and /tmp/cvs8ryj8I differ Index: simple-jprotocols.jar =================================================================== RCS file: /cvsroot/geotools/geotools/src/utils/jars/simple-jprotocols.jar,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 Binary files /tmp/cvsz9O4cY and /tmp/cvswULcUL differ |
|
From: Ian T. <ian...@us...> - 2001-11-20 14:50:44
|
Update of /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools
In directory usw-pr-cvs1:/tmp/cvs-serv7682/uk/ac/leeds/ccg/geotools
Modified Files:
LODFilter.java
Log Message:
added a constructor that uses a viewer, when this is used the level of
details are set from the percentageZoom as returned by
viewer.getZoomAsPercentage.
Index: LODFilter.java
===================================================================
RCS file: /cvsroot/geotools/geotools/src/uk/ac/leeds/ccg/geotools/LODFilter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** LODFilter.java 2001/09/05 07:44:20 1.3
--- LODFilter.java 2001/11/20 14:50:40 1.4
***************
*** 15,18 ****
--- 15,19 ----
GeoData data;
Scaler scale;
+ Viewer view;
double lod,len,ratio;
int den;
***************
*** 24,34 ****
scale=s;
}
public final boolean isVisible(int id){
lod = data.getValue(id);
if(lod==0) return true;
! lod = (10-lod)*10;
! len = scale.toGraphics(lod);
! //System.out.println("lod "+lod+"-> "+len+" "+(len >= 1.0));
! return (len >= 1.0);
}
--- 25,49 ----
scale=s;
}
+ public LODFilter(GeoData g,Viewer v){
+ data=g;
+ view=v;
+ }
+ static final double levels[] = {100,150,200,400,1000,2000,4000};
public final boolean isVisible(int id){
lod = data.getValue(id);
if(lod==0) return true;
! if(scale!=null){
! lod = (10-lod)*10;
! len = scale.toGraphics(lod);
! //System.out.println("lod "+lod+"-> "+len+" "+(len >= 1.0));
! return (len >= 1.0);
! }
! if(view!=null){
! double perc = view.getZoomAsPercent();
! if(lod+1>levels.length) return perc>lod*1000.0;
! return perc > levels[(int)lod+1];
! }
! return false;
!
}
|
|
From: <geo...@li...> - 2001-11-20 10:28:53
|
Update of /cvsroot/geotools/geotools/src
In directory usw-pr-cvs1:/tmp/cvs-serv12777
Modified Files:
README-JARS
Log Message:
Added commenst about new JAR files
Index: README-JARS
===================================================================
RCS file: /cvsroot/geotools/geotools/src/README-JARS,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** README-JARS 2001/11/18 15:54:07 1.1
--- README-JARS 2001/11/20 10:28:49 1.2
***************
*** 18,19 ****
--- 18,22 ----
image data over the network.
Comes from WTTools project.
+
+ simple-jprotocols1.1.jar Artur Hefczyc The same as above but for JDK1.1
+ ko...@us...
|
|
From: <geo...@li...> - 2001-11-20 10:26:49
|
Update of /cvsroot/geotools/geotools/src/utils/jars
In directory usw-pr-cvs1:/tmp/cvs-serv12324/utils/jars
Added Files:
simple-jprotocols1.1.jar
Log Message:
Protocols jars supporting JDK version 1.1
--- NEW FILE: simple-jprotocols1.1.jar ---
PK
û4;oP/Þoæ¶SÕªÛ:È©ÄK<u²UÚT°w
,980 ;°a7e^#7´·®Mõ§uà ÖF¬WÐ!É&t*Ø,Éld+¶)èd;v(Ø õnÃí1üHÁ±GÁ:)yE®>"ÉO°'*¸ ´Îî~íd&fâGTcÊÛé{ °>ÍÅX¦4ð25VsL·R},ghcF'[e°=ó§-S|9äç¸SÁñ!wã=1üBÁ«xMÁi<ì¬Æ¦ÎÎUí
rèáº_âW
ÞÄðk¿yi¡¼¡¾Ó´ÆTg:$¸+ß*ø^çä
67¬JIoà÷
þ?Æð'ÆÞÃd²¡AÁ_dRßTðqùì¤ëÏk¼aËfÓ3©©3éámºY÷U¥.tyW¶0ÔcþP÷åa®x1s@ò5¦v`4ù£@hÆ0mØâ[!£Áhãmrò×MCn[ºCÕÒîk ²`«Û~TäTËÖ¼u±§lG#B©f1ºéÜKï7¸LÍå´,ýhù¿ÆWiùã¾^67cºB*TD^j½·c¹cN%±&Ä-ªæä,ã7Ú¬
¼²
:¤í4¾z»±Çwc1¹t#|KÓe®p/i7z|Õå(á÷Íô³`>îJ ìžYúHPÿõ捻w
¸{:àÊ=¤}áÐåAhÐÃôB¡GIBU˪6éþp/Ê^ÜG/î§äÀt®×úе®¼Æ²]"©Ä-
ÔW²13ñU¡àAJ 2hñ!Z|wZ¬ö,VûAçhñ<->Fé¡pÕAhñIJ¦/Lßs¤GÂÓ
B_!ôUJø
®B¿Bzï
®B¿FèëÜ
B¿NªCÇÐoú-JC/Xiðý4ëÒ ô?ýOJØß³¡«Ðÿ"ÆJÕm,±YDMó$j'Qws¯ þPbÞeÌY¬*Lp@ðe J0_a±(Ç1w èüÒiyeûÔ\ÁCͱ°'Ù2EüÝK BÔ² Q?î8éJ¦c{qfLb©kyÌ·üo&$F~1-î!Yrµ|o˪I,½=¬à¤¨³òìy´%Ë&±ü4¯*LbEòñë"¨ÔóÏÔEJ¸ñ·ØY±.zmõQ¹½.Z¬9uº>*±Ï>¸vZPá¢\+ÞÇQѨh"V¡F´2£)¬mhíh«±V¬Á±¢íèëÑ/6àØ£¢£b,ÑûÅf¡üÑ5#uY~>VËJT&Yàw¼w^ìaôÝtVðoeq;c_RD~¿ùEèõ»¥A½ëEã4ºdÐ-2êV®))DÛ$ÚQ»#EFLAJ¥ô^X>ºJ.ý¼-Ò¹è)È×}¸qãí7Èø»îqqÖçÿ¼´³&Òykár.dS@¢DdÄch:Ú
5ÂNj¨ypù¸{!§Ã¥ä$_Árç´Û{Å;÷ÍÒ½ïHø}ð9 ù°û²/%á\/pgQqa?Êu ü/PKÖEÝ
,=_Oy<ùDÌp_ôÒa̯E<6bÈKüHÅ˾ Á\vu.¥km*ÓaH6î2]="e©§BÙM2ºµFî@Ï"_^)TCò1òÅ´ìÖQb8ùçb\<x(0>£uó§HíÛÈ·3øßIåÄ7á¿NÈ¡æ)¨Wëú½èùôÇ; ö\LÑ¡ ËõIɰæ'R÷¤ßY
ÙU¸öôWkȶɵE^ç¨ãGèÐíÕSØüPKbKÇÈI
IÙVý¤©É*YìÖwéË'ÜIUµÔ.cv5jƾÚá
éT¦ãéàà*F0ê`ã&Là
e+XupEÑ~kF8)0Õµa[cÙê1Zü¬u
ï$tä'ßÌ÷.\ô´~{p¬|ͳèvª8að¥sM´ZqÀßcU׿½Â0èl½"?}Üþ¸@ämO³¬ã6×Õx³RÄ%÷ÂgH¹¹3¤Mȸé3dÝYÃýÀaÛq3ä¿Q$pÑå=<(#Çl³9Çö¸
%LcÌ
³U*nàf2z(9÷;,÷©¯-í¶§ÇlùÌÛt$stk$£Fò{Fv\¿rÊgdnãÎÿv¢êW®SYá÷ Q.'ÊBwû½Sd3z`5À&,¼ä©¿"{y
÷ÿPK£>
YÛ¿Ý Ôk>Á~í ¡UÑä¶i¦ó%ÅlÄZs2\Ù^]uR<À¼rÃ078o-â+Ù;~
BvbwTòúwTÙ¾[Û¹Ê[B:fH©ÚoKîlêMÔØù7Ú¶u)m§ìrïÉ8Ë|ÏkàV þþªÙÍäîÑi!ã
¹#@Ѷßj&Bv÷Ù¨TUÜó¸tuWîhÏANÈDZnØXÌàµPA·²Ûs¾*ÔÙÄѵ,5[æêÛ
ÑÄ
Rѹã¨n/\èr3:󨧨¿º£ýRmµ':76MÀTÀ~Ñ00(
ÑØüOÄæÙ?x#L
\NîÝgÀ>z÷pÞ¡Èý¸æ+ýPK4S4.
ïéHLÊ6µ}-O
|
Î/-JNuËqòKòós<srô²ËyXXÊKJòósõ
õÓJ
ôcUäT\R\SÈ¢ÈÀt%0!Ðl ÉäÉù¬ZÛ7¥Ù$XP Hr
¥]K+{ËjWì®ìÚ
Ù^ÛJÉä´¥÷}qß$ÐÞ
´uZ(ô¦
ùR9/e§g½ZWÓvu76¨m¹VÌ2¤'(Zӱβ;-cVlMuµ¸¸«Î¼i©`ä
µÓ23jÚ´lÝU]}HËèfÂz-çzþ4ÓcwZU³5Gsùð=ÖÔSªíêªÁî´¶¦L®2àÿ ¥Ç4b« #5¤Å3)ÍNª&0F¤J¯ ÎJÂJrb nJ
¡r5[õ ZÉ·äbá¸ÐýÀãê&¦MF»oêøºãqµdʲU{;ë¶{'ZQÓéWã=;9þà
uÓfòs*/ªGJIbþt¬îk\\ç[²ûõx\3åÐ%uCrSÕP\ZçvR͸¯¡5\Yù2A«ë§WEí749~¹ co2"~ÂÀC=AþpG¯¨;ú WOjVÚÄu0ôJ
ý¼A²èþ¢aTÂÇÂäqÍÐ\M¡_m6»¶øW
.#óLBãÀzRè×aÓ¬ ÑñTÛ®ÿ&,C6¨n
~»À¨J«pãwasñGÎâgB¿çTòI¡?à
ª
¶Tè\4èGèOᦥHOd*.%
þ6«P´Ð£2(áÞ`7ÎýkÃ~(ôDõ8m6.ú·0W¥FRÝ.[à°jÇ
äkýÅàïacÉIáË´fk¶BÿÔ^Ê*<a)À`gqÁyºæH°ô3á=íIɳµà:ÍUq¢ÏÕ"ád+¸ú|xíIñ¼f¥þÞÊRÁÖ\\Bj¾ÿ»vÒNÐú·<+K¡ÿE+EÃÃÃ
^£U(ô¿0Ê8¸Ìk9/
5ªy*D9~SWÄ¢[!%Ô ¨¦pc
cÍa
5ËNð Q
.G
«ªSûlPöÉð.5'!ûp50µËçÊglÚ<$¨)VÇ×\§Ë{æìÎQ¯èfG§!iÉKÞ ÷¸86Íï|Ï/òãÞ(r!}ks
³Å1/&üþ~¶É Qú6}'*ÚD;¢që)QK¢¢Ct¶¥Q±Lt¡Æûg'&¤×u6DE·X+ÄÊV±**VËOÖ»ËåBaºÔ7S,còmª\é«Yç5ºÃ+jÞ
t|DR¶xü=24q»Òµ5ûm¾!ulÌÁ:ÞØ8@ËÆýmög³Ýu¶<U(æÎÏs
<VÓöÌø^5%
ÒB ¤è½Élyl
$_±ÞDÎïurù1¹
df!ï
:RÝ
uã5ßÙ0!ÌîéM»³ÅqD¥;U,ìÙÛÛàKs°D«íáä9,!hK¼b¯:éåáX4ØQ Qå³Is³ØbÆ¥ºj0-±ÌLÛ+!(˵[¯¸K¾4
e{qRè#
ÕééÂná@˳ÈVEµÐvTE^~²<Åuª~µ"T{å7OÁn¢!»{gdp6¹¢x-1²¥rõp&n1/!HÌ£éÀ,ê¿ÏZsùqo5ñ"%Å¥ÙÑRP+7éúæ
ª×ÒÞRÙCD¼"¢¶¢¢+ô¥ ZÆ/»Z²33^>n]Èì<Q¥â0O)Âb]¾iAWº0}ÎHÎÓQÔ»DôÒ2´ò.Ð"ê/g¼¼ñ*ðjÆkðo-ã#À믿ñà
ÍøðFÆ/¿ñ±àM7{ooeÜÞÆ¸|ããÁ/g|øOÄøà¿
|
ãSÁ§1>|ã3Á¯f¬ûÇÀqÆ8Áx
ÇãiÇÌÆ§=ø¯Ï0ù,책 ÷à
Nâñ¬,üfç¼/1ûE^âõË|Å3üÆY¾ÊB/[¯xð5_Ç«
Îá¼ßPð^grAÆE7Ú{v¶¶í
NöD<eiqkKëNÐÂbm¡õ;»#rí¤ºq³®¨Þî'+ûÊ£¥mGQ#ÞNêò®Eu3%P×ISéxð°6¤ÓF±±z<Ø¡¥¶jÉ"t¶1´Ä¦Ü¹mØÒéìIÄõ^Ú8ö·tüHOÊx8
_¤zX\À½ÖV«ÀÜú.ûE#ì'ÓÖ.[öHí(éuq=ìÕͰÖ#µá¬oèdEô¤í¥Ërýþ6æË´vvÚ¶F\3 $>´³[:¨àSH?fÙ]¶%ýºµ>ëÈCÓPßð±ÁqÞÞ\L1-Þ¤o; §©%ÇÔlV(
ö%Ìf¿wT|_³SèÆõAJ7t³YXü±r'
ùPFÖga|4ÆçaqdÞCiÐ@§÷øåæÜ˳3PÖV_Â{çªQÇèýJòB¢ÇÈöqì´ãØe[ç,. [,
4:ïdP<iÄM+pzâîâ+t/ÓÚ}ꣳÉM^8ßýç·mÀ6<+ÐXSAI{jv_JÂÝ7à"ÍÙ~º
Üh¦qà;Ix{L²äÎêÊ»g6¢ù6â¸bcظk6ú´yר©Ô¤Wð*ãÝZ8[q¼¸±!MdãSðØ"ΣÇu*wtd´ÕbgxIÂMÚjMetÝɸã:Ú¶ïóË·ÛH##p~ÂÏçeF7'×>ìé×î]Kì
Ç'qWI˲ñ\ë6$6llbËF?nÈÚØÆc9;Èðm1ðÄF
Ë
XB·Cõl ç˸ÄÏ1/ØÆ/ñ_ñsÿßྥ<,-ª_êÎVÛ2èpþ9úCO5!%\¬:XKýÒaÊ6Ù&þSô¿~ØÎR{%°ÅÀÑ[Oþä¨ÿLô
ÚMxó?PK·ø"
Ã)Ó¯2¼Æð:Ã7Þdxám³ï0¼ËðÃûç>`øá#>aøá3ÏÎéB¾Ó
Õ9N6É
µ%&Dz;ÍYä>íp¿â£É.
j×ë¦îܯÐöa
jºP¨1¡¢7¹AmÄ¥ÖÎP\¡Övu1ÓÅôÈæ©¤È:ºeÚaú
ë¤
37x(uZÚ;ãÚ343prºF³á7³y¡eZ0í§[± ¸Î
k·e"É:ýÂÎN!|N'IJ·KMJܵªéÇ$Vçqp4'o[¡åpOZ7cZÞÑÒ2v,¡Û pé3S6$vÆ
ÁnU¨"7!rñT1Æ-BK2Ö¼`Qy¯|·¯LKçGì,øn0¢;2ë¸nf[4{l»í*æ2ÓL{af
HréAy¤ÝòXÕüë £º
Á ûÆ7\ܲW8Å£ïGÀzFXyhM{}[Ò¾³Í¶[Mó£©~ûÑö1ªðÜ&Dv¡O^vW!Ý®0"Ã]¼6!Üsä4KÕÙwÊåÉlB8ë\âÜlëÕ2¢cù«ÑÛ¡Ùö¤Kï×RMb$Fë¶;Z`Òd_¼Èi
#Sh¾nûO4OS
r/VrÃtQ¥¯éRTQcERI±J:F¹ÎJýÉw [¿P©Ö«ô
.Z|
)xëP`\5DÔ1x¾öâÙá·³ó
)Êjñ#Õ$:¦;¯P-çñªá³õø¼f=µÒb
ct/¸TBa%fVS#4C«£
kÀ/k5t~O¡W)¢Ëø,.)LmÄo7ÝQ
ì÷ãµãº¿
{2ý*5(ôm][I
]¬bx(h¹ÜËHØ¢ÝÄnÙ`OzظBþû3GÎ÷·Íß¿Iö? ÄÅôßfÙÿ'2Üæ3TÉ« yç<ÌÞ ÍYó¾á2Ûªm^H¢~ç¡¢ÛPç¤x¯y¨èQþñ.ãýÅÃDcó?ºTÅü
èï¿PVúvéúW_¾Vùòýß?aÙtåÉ"ÑýD]¥e¿ñû,èÜþ"åÛöp_ ÈMRG¥ýA"7K"JïGÈ-²H+DÁ÷Æ_d,ÒÄÓÐÊ"« õµ
ÁX`-åâãö¢UÐr©~àx È
Yd7DöÀr H¤]á2·CÉ@Ä%t¸òáN
¹Má
Y%È XDenü¹À3É"§ r;èLnÏäÿ[¹þmU¬IQNà+DÿPKÝIÄí(
dQºØ×é´Ûíf1þÁcó)ÇhqdSÀD¥'?Û£CÁ³`ÛPÛNb÷âÐýnH1»Jµuß;ò´Ð|ÍáIùk¦å#¬TZÇÇqÈ´¡rdZÖª»¨òj£á<b¨zÐ}ÊÅíD¨?¯ZD4RïЦ^ß
ibQChý±Ö2:Ñ0åëé`@'øë+ûcÈ+¨Ü¦tX#*ÂîÉ#±{n ²ñqÑÄ8M<Ùf×6ÞP¹à¿zPó¤Ôyn
6ý&¥7<î!árÀô$öâ#Üa?¤Y0³R/;s)f?ÝØ)5ü#CÁ±ât²±f¥{5Oö}vÔÃGêr¥Ml8v'ò)!°:î8Ç
Ô³¡Þ¡ÿ
-¼©¾ì`&ÇFU1¥^|¨±4Ò¤CÊPógZÓc;Þp-«G
øüÑ¢Ïdö²ÉÀù 1¡v/bbVö¥z#O&x
b>ÎÝ9#ÄÅdíßG#&´tNêp§LþêÿÕ
W÷GéÒ,34§lm±ã8ég7ü<s5
ºâ§¡0õkÚÓ¤G71Qó£'Áôn\ܼxAOË ÑX-¾E§c¾<SøKøa¿TB\ÊáËÍáiÄ39|ñÕE<ÃórXìw°ßb/!¾Ã7?ÃËø·Ã#~"DüT?ø¾øÙ~ñó9üâÕ~**PEæ%dåedná×p½
ZÁò*¼&-¯Ãr}S)ß·åúÆë
ßUø=Xëûð\?Tø#
?V¸¦ðº_Wñ Ëu65/0ú³
³f± ]`î]`Ìï<ãB§Àì"#r¿ÈõÓ>{ð´|_ÈõKU}WUÿÂÂûª[=Ñ-ѧIÿPKêi
¨à/lX`À;ãÕîcP¬ QÍ
àC9Þ¶wd!Yô»99·9¹ß?_P!ô<8ñàAÅéÈXM´ûÛ9å~ÂÕÔÏÕõ©t¡ÑN0¨â.3ù"xX¬4äáÖ®´çú¶.w§U2¨]½ ¹p±VÖnî
µAW±?hÏÝ3au¿æAÄK5&¥%¸Ò*<?dî?ëÿϽù)c9áË®íljà U»½ÑóôÒy'8úè!&â<u2è®Ó:±þfýx"üÜù×ÿ»{KAz¤¤óGêYéJoÿV¤«QÂaA
Î/-JNuËqòKòós<srô²ËyXXËKJòósõ
õóòJ
ôÕ32(aªrL*.)JL.)dQd`:h8dòdÁ|VíÁÒì@
,¨$94'
XðqÞðé¸X° ÏñÁwaMB-'B;Z¶¡¿e¹ÙQz£¢tWϽçÍS!7¶
}·Þ/î2¥oR»(6Y!ÄIÞÔL5O]æßâ¹\Vµ,CÈ¿Ú^8j¡Îµ¤{ê(ÁWÍV3úϺ c§©×פ±u¼X+!§)¹Dj§.d;¦î&´
=ãéõ:Fá£×éÿuñ¤qv£43À¾Ó*M£Ã'ÐCmzAÍBAû!lûmÜi;Úà®·æñcØß +
¡Û=8SÓ5¡#8míß 7<îÍKYBcÎÔ'ïcô´+IYܦo
%i<HZ\©Þ`
}4yÜ4ÔÐK\ç{è³4Zi&C¿1|®xýaaI3 }îwtú*ÿé³Á²ÄÌs/±W(ÅuâÚ0þPKÝ9_ëÏ
Î/-JNuËq<BBóóKóJõ²ËyXX´ËKJòósõòKòA¬âÌÜTý}}*ª11(20]@´H²y²`>«ÖvÆ`iv ÉT@
wã´/(XÄÂϲÈù¢çð%f?ïÆ¼~Ù¯¸qß8çÆWYèÅbrë%7¾¦àëxYÁy\pã
^Á«L.ʸ$ã²@ɦ`GßàÖàö}AÑ-PÚ%--fíÕ¢)ÝúPX¬½;¸qW/sDV±£T7u2«HÀÑûSde¿@ED³´M±p<bÄC£ ]@Òµn&ê{Âñá@2ÑF´@Ê2¢p<ÕÃAº´äÐ6-Ñ*PlÎ6#jØ=·Z:ÝñÞ×O{¢íäcx(;Ú4&ÂÉ>p7bÕ&0¿¡Ç~ѺcµÛ"áÖÆ½RG<Bzå=FL¦ûu3¤õG#el8»ãa=a{)ã
Üp ù2Ýݶí¡ÓÌQìN&*ùÔ[6g·ígé nmF»rÐ464~dp·'ST
( ÂÛÈajÇÈ1#ÙÉ
@yq'u+Ëö³²;2ÃúfÓ
í(f%VÑm*>*Ú±NE:UlÂfO0éB·-|±ÉìñMßÂUû°GÅ^&Ob'ßíqMÅk£Bé<¿öm¯«xo
ÌyßÐM'Nx'Þg$[|*¾ï2ù븡â
,2Éïæ¸9¬Yù
,ØdqÓÐÌ$½Shu n¶ød¼¥âûüê¼]zX7FXhÀûº9¢-ÀÒ;°{7UÂA*ÒTq?(£ö³ôµ¢G
ZC*ÞÆm*©Å÷\OQ*ÉÖ¨;ø¡@u§nÑCzħgeO OÅ]üÄïqOÅñ?Uñ3Ü "ðû}Ù;*îã 3R+YV<MfÜy4Q=0dYÀðæzjÈÒÍiwÕù~Û^taÒGNáiR<!cX§·;JvKÎ-Ü1¤
hò°1
;°£» © +§ä» ÊAvsRu:RAÍÒ/¶z´]Z"¡Ç¨[ÏÖW°2ÕHÍXÓÐý!·n+áPÉ6<(×:-ÊÐ?>å º&0µðQª°Îït|È;KL]>g¹¹NÀØpdãÙ"=0ʬÀc
òÛûPѵ>Èi|EhÜ ,ÅÀ¬â.ý©MÎr9
gݤ
ùPNÖç`'¼4Í`KqdÞA
¢ÿ3åý/T¯%ùw§yúd®2D¡Ã¾Q¹ãîqlðO¢²mÜáµ\_Pw®¢âª.}ð÷1T4Õ*ugCùû²ÜýåÞ½ÃöÅmT÷69j'1§Eò{%ðp5߯ÜÞIÌ«NãciÔ¤Q;úg¦âs2HÆ+ÉHxi,dq¡Ïà$EA"H
®[XÖâô:ï£B¼NÇj¯SZFý>Ç1Ùè{¤³!G[|Ôå'=áÿ|fbUC÷ L)Ç ªk¼êñ*¯³ª)åHÂÉ9oWdòâÈç
u¯çKn ¨KÔ¢RÔaX
sEN N¿=ÃÿPKîQø¦§
¹¤Ì[pËVpßÀ|dàc¬*±¦a]ÃCØL³bM ºå¡@Çü¶³ëØ9'µCßÍgÇZKYHåÜ]I½H?y:kn0UI¨Þ]Úçݼ\(¿â¤sDô@UÏhbmà@ó-7ïããJF׳a¡2«tvÆNcí$¤"ñå¢ÂÏÎôîDc_cúó,®4|"ÐvÈrBGàT ó÷* Àa°¾³Ç$Ë^ÑÏÈWUÞ=»²²t´°Å7ÇCøÔÄU\3ѧÌë¸ÆþÌN§¦L¼×ïöôÀÙúÅÍMé+ú#Çq=®RÙ£#£û;ËëLnRVk*£êNÆ-ÛR¶y8\¾ÅdÜDó^>/3ª9ɸºðaGݸrïZfW8zqw¥4oÀÖ°aBbÓD[&úqCkb5äLì ¯Á3Q@FÃ>ll½0ô¼\`|/ô2JÜBNÚ[aX°ë»&p¡6%ìk(ýãµÍ;7,Ðó?£U¾°Dy
B¥ 5P¥ñü ôЫ ìMâ¤=N×c$ee8ñ4úÖ'øýíùnÈ!%Ö'Ôq¡deéû¢B«VÇ1ÂbzWÉ2sfé<v´2HN{ÄÏgGéã4Ü/(+ÇÆÊ®ðu¹ ʹ¬qËk_Õ¾^¶u5 Z½\×õįT(ËàMJU׫hâ{ÖÅ}ß|2DcDøVüÓÄc\-kð¬IØGÄî#ª´5¤Ì^eöÆìç3
¾1f7B;fÐ
9ô`
®±uú=¤÷læQùúø«èVGó` Zý 7¡a¯[!0ÊÿÍF\½×'7<ÆåkPåþCnë÷¡eõòOuCJiU¢
(½]ÓJ© ±ZBÇíès«V[Õ£Ø{ìè"0\K趨-áÜaX
m¥UÛ´-XXiÅn`é¾h÷]k·ÿúë?m¶ßyï%øåÜíï{î9ß}sé§A1ð Úq°m¸SÄÛDÜ%ân÷8ä;ÞÛ˨|oñïñ.xw«ï bÞ+sïÞûøLÐû¤ý#">ÄýxÀ£~|$Z|TÄÇçAéó㸴b.>!ÓÞC~éOȨ́ÅXGD<TF
GE|Æ·æ Äg1ÄçDÔ8ÏÞD<&h'ÅÇE<ÀÅßS"Nx2/ágÈÈf£<%_ài?Îùñ
r3LÛ½vÊÐ"ûl;Yd*a'ú¥gÃɲídd}__w4k°RAK¤í
++Å<¸v¿tóã«Ä4ìnO«ï@8ÓB
îcz|0ÂñAú_AÅèÄ[1¦g&"¹ÑJÕöñÓõV:f;îÓ9¿wlz2`ZãÊh|g"ß®»¸HôêÕ^[·ÓÁ«¨§ú«_Fi ìµÞ¹@z¼Y¥
1¾üÌÃ0ƱØú±hxÍ]³)L$x¯WSÔ{Ûﻼ?°1µ \¾©ÇÌôÒÊV&õe0®Iân>T:@ÔÝѲ¸ÝaÄí!g
î}zî½s¢×Hí5RQúRídbL·óöìM¤SýÆ:S2¯r,¢,©fqCCz5¬ÁZ
ëð
ëÕ°7iè@§èÒÐMÁy?Õð5lÓðußÀ6ã
º`|ßÒp5<os)X
q0Ajò*s<µ5lÓ]"ÑëÇ%
ßÁwü±
=Ñg|%I³2t2®¤6>Y9Z5¡d/x~ÓZcìH:ÌÂóhéMøB[EC®¹fÂã÷òÖMl{ù@Ìd¢ %UâãU¡Â8ën-|=eTh;`Ëâô;ÍÉþÌ1XrMNøô8Í6W'÷Î˪ÛCñMi#u<b*Í"?*²skt[hÆý];ÎÌYi©³¦¢Ñ¯Sev.Êr8¯_>½¯`ÚnÀ<~µðÃ'4ÎOÜiIæNK>wZRºÓÕÄÎv¼}é(bhB
ÕY(áQ.>RþpUà,ÊNSYáfÊz~!7³w=*°SѺXGæÓÿ+y5¸lwm Û½ªSmÒ½Ä>àÌ&òN·Õ6ºí$®7¢ÂUûNÐ&/ÎZ,Î`Ê1W£)ÊÌlºj3UÇ]çYßÛ0
r3½¹
þß
3ôüÊ)ƽª$'6»Y:î´9sn]`K{n³¸ª)'ápTöDn°Tüj2êäÉðxxxÝ.ÞÜ+âeÐ,ç¹ÀâcADNîkòx0{Þff#Tw¿»ÏÁ5êj\§ê±\-ÂjÆZÕ
j1ºTsÎUòÓØóó(Ï W~Ôiíc=Ü¿©N¬K¸6ëFäÉN\vð&agI%å¦f7´Ã³3XCuΩ¥ð©e¨Q+P¯V¢Aµ`©Z6ÕÕmª=ÇW~¤zwt;=¶hh¬ZÁ²§Y¾ªx¯q¶o{]+ÂÊ%¾V-ñUûn*qª'ÒêdÐ6¢Bu£Rõ`ê£#©å
eW*|hZ2Xõxnªí9Ydp/3{s«óÊ[9féBfÌR9ñà÷º([¹»º¢çæ¦{wöÔ¸¯e%µ-³O¹gßGÚÙiê ¦«;1SÝ
Zuû
pàÿPKOoé
´ °)¤~Ô¶P¨ ©òÑT©Úº$Ø6ì¦ÙMg¼ðÂ/zã×L§Îè
½À
ñãóf·6
.xÎ9ïûó¼_YþýïïÐlÄÑ©ftãÀ´ÀËq4á}Y9âôæ¸"¶Å6'° Ç«²[¸¦b)aYÖÙVã¸*>Rñ±r© ±pǸo¤lÓKeVÆ«fKA»o.öFjÕ+Yö]Q«xÛ.oq3aÙ7© cèEÞð
©àøeåu³tÝX/Ðý"k=˱]k
Ú×ËÑ
ÓËH'
£
þ¥ã9Y 4ó´Ý4·øºÊý¼ãz¾Uvé%7yt}ÒS"©ah8í3®Y
6\wÛ)åámúö9«`."ãi¹lv_@¶s¥%gær!8°<lͶc[Y£`}iú§¢}|Õ)²¦ÄÃîZ[ÅYI
UÃ >ÑÐ>
¯¢_Ã
Þ¨
ElR"6pXDOV ÒR/4Y'4E¡KÌf¬aèÁó½\®MúhØ
VWÉÚPc¤F*Õ³×g̾E9Ý\ÏÎGÉö0ÆU¬Ýd7î£M×+ÿ
4©
µû ¶ØdI,tànXåÿβ¥¾þ`P娴±VÊxÕZäÿ{´ð7ð'~ï±È¯Ð$DÇ'z/´S
(#û8mtb·ÃÌ»Ì#J}Î_ß9ïkâ¹Ã*ÙZÏþøîÙßÏ!Ä!¯ôgõhÛçã´ï
ì£û N¬íád{GâæRÁK»YH´Ô{CµNvøÝü~àXÿHÕèå§8P
zH¶wUðòCD[Gjñ'â?ó_hg?kFÌð7â{âÁäÿPKR¬
E®µM[R{S*µ°-¨iºm·»!»áæ]@g|õßxj0#^_ß}×á/ÐñQüÍvÓ¤a0;9{Îwù}ó}ßþúï7ßÃ>|ÂVVcÉå¸\NñR1^MöD'1B§är:3
Qð¬Ü½Â9¼"w¯ñ|'ÜÚ©*ÌH*Ù æBhǨD#g>
ç«ðºdê³ wFfi_6£çQCµ£'Ç¡ijÊÖLC ;äq(W£é¬=ngÔä@s^P3£ñR1ÍÐìçh«{RÀ?dΨµ ÍPe¦ÕÌDrZ'¥qNµðcªÕmG)N_N©iI·xxZR×®R+LøJ7Z»ºãHÐ
3åêìÆYS iDOsÑãÓçÉ$Bs踴³J:)2¢VÖ:jY[Ó£)S×óV4¡Y °UøVK
ÑUÍ£\]A.¡sö¼#L¦¥Ú'Çö®Ä%Û6Mݦ3¦m¦äãZªp©y;p"4¬Y53VÕpwHƸ¹¨fâ3ù\¨É
ÙɤUep«=,ëtA9nØ®rs9eƱ²u=/Îv?1#Ik~4å9nf3)uXUS¿g|!oª
zЫ`:<.Ý0_^Øvº¨\@¿²²Îd`a+È"&/*¸ËA\Qð,v*xFÚØ
Þ ®*xCc{¥wÜ+YèW°[
½)
*ó Wð¼w¶ý¯àÙ=óô>w¼÷ÄF rMÁuÜPð® lY]ÄMGWæI`ój©ÓI¦¼ÂÉû0MÔ|×r`hl±Ç¯»,C Ê6óÿ`ÍÍ´j<íËQnô´ç¬¼C!ÒMKÍW{!¾°W°Ãª¿C`ÓRãr&Õy±ê
lR·JtÇG÷¤Ç˶¾
ì-£U§Üd*ñü¨zøØ
ðcÙ?öófKp½Âµ§*¸"w!"â*äâÿ+Ò¶smáçÔöóT(ÂèG#Ïû~"H¤,O|úb¯á¿*_ìú¹÷ýÀMtÊÝäPù¹ô¦ÕAðßà§h "¶î¶g²ýà.FÐç±ØTCØÃäÅJù©SÏíé:sÚ¡Á1OWz"÷<Ã}UÕwaòTCVzR&äIùÆZâmå'4³+ì 9\{Ûxöª#9¬6< J³EÊ»<g{]eÅU¦/á#aç.ÓÔ»XE»=½Þ=ÒøÏ¨¯_Å÷Ø@Mp9?ÂA(+ñö'_í®O¢I¥Cùë>^Ìä>æÊéèÊíq«£¶cÝRJNà|êÂý.}Jêg¤â9DVi(4ÜXL4¡qÑÁYçç6qIýÔ¬|²".N8Í;¨*M÷·Ôûu÷CQzzáìpî5u±/®¥ Ìõ/úÔC,Û¬Õ|Qµß¹¾àÙç:Z¿pCkm^ÞÂ|ãý¾þÉýCRcØ
Å!¹uË0=eÔEYµ¿ò7©ÿú"F¼Qás¸M
ûgíÅQ/ÿµ|~@Çiø²ÏI¤{h?së¾Á|G®oèÈaÃM4õ4<%ð7æ°é_ò}ësØ|ì:zúä©qHÜ_¯³ïþ£=^¦ø,»´!A4Ñ¥f(¢aÑÑ^±ÛÅ:ìë±_t`DlÀ÷§ÅFLÍÔ>*ï
ÿ
,
qBÃý°ù¬Ãq4äñW¿L©8©â/§UæùK*¾Ìó¬ø!óæòü>üª3¼9ËÇT<Î'<©â/âáiÏ(xV ~§³üÛÂí[DúhLY99XÈIwijé$5Àö{R'Ì)3n¹ø°ïZ¹^Ô37HÏï·-ó·1·=èØv²q¯
¾eÇÓmË´o99/¾ÇuÍéåù7Mú~>ÛNÚ´'ϬöIé}ãtÁ¶I?kº2:¾ç|]Çóøoâ/êø^"¨qöÆÇ¥+°j¯+Lô
ß1tǾãe¼¢àUßÁk¬¾ Ð0êÚóñ@6ÔÈYY¡2ÁWðºïâ{ço/ùqÀq³¦Ç©´Ì³¹M#I;¿É÷uü
.ëøú¼¥ã(R@5Ã0:è1FRÆ.2¶µßÉåJ3\élu\ÁLæSì
:/àaÚU¾¯J³en¬Ðfñ6?GÃÒn2cTfx
Wí±mcRéz Mǯp¥~Mf¸fΣð^^ÊLYè]üéïQzcÓ?qO¦u¼Ïá-n9ñäÁ ´ô1qNælîÉz~Ëè~Ç)|ËRÿÏçú;Aî¡Lۣе§S{·£T?í#ÕÒ$ÊiäAJ´ÍíËÔ[jH¯>VZfÑ -L¡iÏY"H -U±ÿéôI³4³¤¥ÞÌçe.#Ðù?.®)»¹ýØ
TÕw*ÜÚ¾¯·&5pÈyÞÙ¹EÞ«é;a3YàÃ$¥×¹7]O&9,Ë
'trÐÏ:]r$±'d h@9¦Å¡òjÀLû;Mý+då\`W{jÙjî%O.%XãéªÎäx.
Sï 3 X¿mza-\[ã¢#ò*RëZPý#®s²Ôëó¥éû©¬ÒrYûá¡Ì¡6FèÖÝÈ.Wö¡ soJ§ÜF¨gPÞΤFÄa?lÿ
!k ±Jÿ vA;êûJ
C`ùgåWÐ>Ó<`æ{¥¥Zo|1ã´ aî@ÞÆ;°^Ïe;IÉ4íòÁp~ZÆòÒ%avÓw?!~§ÒØO»M4ë:®@\¢
À^ùغÅ(±GèDÂëæ:záTy>Ð÷DëuMzêÃ=ÊþÖѦt7סGgÇEÐö*Ô"¢=ËÐæÐ@zóª"V·Eh,¢©¡æ@¨£,4XÃÝBÜ]ô+1o¥eë@¤-é*$êjdÖ¬®*ÔÉë²ÔÚ@ª»î#=õ3&T6¢FÃ:ÆHÜ\Òpw\»øck·\@´C$ÔpOtFü}k[´õïbÃ`ge¨©¿Gß6íº£-rêe|´rÅÇ$9çÖ">^
:tBiEl&Ý3âLL(E{3ØÐþoMXCEåm5ü[ø¶Ð(ÅVªjÈerJo+ãLÞ¾|[ܽ¼ô'ËäO1ùÓKÈ=eò&¦ù³U15V7;I+û°FlgYl×òn¨õLT´E9è?\S¯£¹èxþK¨Çðü1±CSâ¬xæsbV¼Có¡7Bo¢7¬ÃÍè-×Ü? q'TìBnGì*ÚuT®¨ún¥:ÜN¸wÒ¿$$ö#»ðRxxþw\Ä!Ìán¼aB1J(àÄýoô÷Õ8.Z1&Ö"-ÖCÍÝ;` ´9#<äÅ
ú8iq§ ùCâ}<,®ãñàñÀ!çB»ñTè8 =gCô©KÖ=z/þCÿB:Æ
°ÉÚWÃ1¼Nß´¢}ÿPK.ÿ¹
â\F«@§SÃH±mßÖTd¾`£`)e¬È'
~LÉ2w@c©ÅRÕ3{i-º^0N|Õ
ÇNè8éB9:u¡!5gXÇ|Ã
çðÍBZ¾åÂ)Õ·Q
1e8aªmO»àÁ¸2Oèê8#P4Nmû&ÂÉ@ÁH¯@qÒ¼`&SfïÊ/®h,î°ÕÔÐöÅ#¦ÀºhÌÌ5Áðè$-Ú¹p4&°¡fdàLøB¸q2o<NFcãÊÑaÆÆ,×í5«LxÜ$оÊįéêê3éh<Òq×ôÖª#6æÖÆûcLfø\gÞ8I?´[qGÌlÜ.Ú"ÙÔT¬¾Îpm¿³kl23×±x&9fªe£AÝ4hA«
x×Ày$u¤¤1p
L)ïò>dzyÓfÌk
®FÞHÜLycñ´÷b<y¶Á»ß:V$àÝÁù'ÝØÀ%L«ÛU°Ï«áª÷mÏòÙ{/¥Í½ÉdøÒ$T=öyeZÕÕº%ù$åoÌÀÖqÅÀKxÙ@|:^1pU9T0t¨S s,mF¼ÙäzǨÚ0
ÉWåìUµSÔ.Òét<>j̤£äò]®8ùÐè®&°m9®ã±T&'¹Ãrjó~1gRig·Å3ô/Ë«ã(S¹¬)H±@ý×*ìÝÓÏg-<Dͪ/YeC=¡Fµlµ
²< O¦ÍCgí0d&`ÜL«ÛäDƪ$»*©ªàWYXM(çÕ÷ÔjúUSç²R
+¥¤©¢³ÞVéjUÊH.&£iÖËþ¿¢o_->{¥!¶m,Fðqà¨`k¯ø1;M¤7¡áû;Ñþ!-Ûçm]³HÖ¹Pp¤~¶Á;ÐaÍÃAëôb'Q¯:
5ÓÆÎ\s(ò[s¨¿59·âµÙyÊeáWw¹*»îÞÛÞxä8É»|ïïñT÷ùÓñSôàg8óÁ¸i|BõæäßÁ/uÖuXªCñJæQz;¿ Ãúü;Ëi3 jy^õoeôòÍcãnG©±¿ÛZ =·ëÜÕÁ¶kå!fyã@ݽ*G"Ô}
UOäTO>áìYDE¨jÍW¡Ùà
=`¯ÐæPukÕñZyÙ=·sà3ò_<û¿Qÿ ÿ
£á´
6á°"éÈEe¦T$:\¶6ÍÖfÅ_c*6
ùíVã»Í~[}ºe^¿ÖP0HΦOɦË4éÓW¬võÑg}ÔìS²ë2MÒýj9ÜsYfѳr5Av
aËÊ
~Ëϸªië()ÓäÀÛ0|rð2ü2û
¬óÛTØ#C7t<TÆiþ§
nÂ^pË}w°Õs
ã^ôÎ Ë#]3hóÈ53hòÈÂÔy¤1mÙ=Mðßm|<sxoÁ<¶ßÏ.Ä¥g|ßs+ MÐÙ}vñ.}=b!ñCïÃ<r]¹²Àoi³³½¢gË>,ÏvùÙÖ§Jb*«ý¼ô|Ê0Å=ku(k©Ïª)®XÊ74µ¤,Ón UKR±3¬½ÜàæÊ-µìÞ§|?¦|Aù~bñk&þ÷¨@ø{Äp@ü'Å_ðø+ÏøK¼(þ¶âNt/?óâYu%ùä3d{!MöCv¹/rÈýÁ.û!§<I|ÔåAÒ)ûÉBytÉÃd
y\#ɵr\'R>M®ÏÅòY"d©<NÉäy,Ïe¬Ãd¥n9JzäY%#ä&iåiÒ+ÇÉj9AnQr«<CngÉ'ä$¹]#wÈY#ãdLuò<éI²^¦H¿L
2C6Êd¼HîSd³¼D¶Èi²U6»äN²M6»eÙ.[ɹÈ6²Sî&»d;Ù-;Èé#÷ÈÆàGؼa«Ò +W!*ÙãÛgêgµ}>îwкÖåæßþñPÙÇÿ-ä,Ëï}ßâ{lgøP½ÛâGlY?ê_=ÿPK´Ys*Ð
|
|
From: <geo...@li...> - 2001-11-20 10:26:49
|
Update of /cvsroot/geotools/geotools/src/demonstrations/jars
In directory usw-pr-cvs1:/tmp/cvs-serv12324/demonstrations/jars
Added Files:
simple-jprotocols1.1.jar
Log Message:
Protocols jars supporting JDK version 1.1
--- NEW FILE: simple-jprotocols1.1.jar ---
PK
û4;oP/Þoæ¶SÕªÛ:È©ÄK<u²UÚT°w
,980 ;°a7e^#7´·®Mõ§uà ÖF¬WÐ!É&t*Ø,Éld+¶)èd;v(Ø õnÃí1üHÁ±GÁ:)yE®>"ÉO°'*¸ ´Îî~íd&fâGTcÊÛé{ °>ÍÅX¦4ð25VsL·R},ghcF'[e°=ó§-S|9äç¸SÁñ!wã=1üBÁ«xMÁi<ì¬Æ¦ÎÎUí
rèáº_âW
ÞÄðk¿yi¡¼¡¾Ó´ÆTg:$¸+ß*ø^çä
67¬JIoà÷
þ?Æð'ÆÞÃd²¡AÁ_dRßTðqùì¤ëÏk¼aËfÓ3©©3éámºY÷U¥.tyW¶0ÔcþP÷åa®x1s@ò5¦v`4ù£@hÆ0mØâ[!£Áhãmrò×MCn[ºCÕÒîk ²`«Û~TäTËÖ¼u±§lG#B©f1ºéÜKï7¸LÍå´,ýhù¿ÆWiùã¾^67cºB*TD^j½·c¹cN%±&Ä-ªæä,ã7Ú¬
¼²
:¤í4¾z»±Çwc1¹t#|KÓe®p/i7z|Õå(á÷Íô³`>îJ ìžYúHPÿõ捻w
¸{:àÊ=¤}áÐåAhÐÃôB¡GIBU˪6éþp/Ê^ÜG/î§äÀt®×úе®¼Æ²]"©Ä-
ÔW²13ñU¡àAJ 2hñ!Z|wZ¬ö,VûAçhñ<->Fé¡pÕAhñIJ¦/Lßs¤GÂÓ
B_!ôUJø
®B¿Bzï
®B¿FèëÜ
B¿NªCÇÐoú-JC/Xiðý4ëÒ ô?ýOJØß³¡«Ðÿ"ÆJÕm,±YDMó$j'Qws¯ þPbÞeÌY¬*Lp@ðe J0_a±(Ç1w èüÒiyeûÔ\ÁCͱ°'Ù2EüÝK BÔ² Q?î8éJ¦c{qfLb©kyÌ·üo&$F~1-î!Yrµ|o˪I,½=¬à¤¨³òìy´%Ë&±ü4¯*LbEòñë"¨ÔóÏÔEJ¸ñ·ØY±.zmõQ¹½.Z¬9uº>*±Ï>¸vZPá¢\+ÞÇQѨh"V¡F´2£)¬mhíh«±V¬Á±¢íèëÑ/6àØ£¢£b,ÑûÅf¡üÑ5#uY~>VËJT&Yàw¼w^ìaôÝtVðoeq;c_RD~¿ùEèõ»¥A½ëEã4ºdÐ-2êV®))DÛ$ÚQ»#EFLAJ¥ô^X>ºJ.ý¼-Ò¹è)È×}¸qãí7Èø»îqqÖçÿ¼´³&Òykár.dS@¢DdÄch:Ú
5ÂNj¨ypù¸{!§Ã¥ä$_Árç´Û{Å;÷ÍÒ½ïHø}ð9 ù°û²/%á\/pgQqa?Êu ü/PKÖEÝ
,=_Oy<ùDÌp_ôÒa̯E<6bÈKüHÅ˾ Á\vu.¥km*ÓaH6î2]="e©§BÙM2ºµFî@Ï"_^)TCò1òÅ´ìÖQb8ùçb\<x(0>£uó§HíÛÈ·3øßIåÄ7á¿NÈ¡æ)¨Wëú½èùôÇ; ö\LÑ¡ ËõIɰæ'R÷¤ßY
ÙU¸öôWkȶɵE^ç¨ãGèÐíÕSØüPKbKÇÈI
IÙVý¤©É*YìÖwéË'ÜIUµÔ.cv5jƾÚá
éT¦ãéàà*F0ê`ã&Là
e+XupEÑ~kF8)0Õµa[cÙê1Zü¬u
ï$tä'ßÌ÷.\ô´~{p¬|ͳèvª8að¥sM´ZqÀßcU׿½Â0èl½"?}Üþ¸@ämO³¬ã6×Õx³RÄ%÷ÂgH¹¹3¤Mȸé3dÝYÃýÀaÛq3ä¿Q$pÑå=<(#Çl³9Çö¸
%LcÌ
³U*nàf2z(9÷;,÷©¯-í¶§ÇlùÌÛt$stk$£Fò{Fv\¿rÊgdnãÎÿv¢êW®SYá÷ Q.'ÊBwû½Sd3z`5À&,¼ä©¿"{y
÷ÿPK£>
YÛ¿Ý Ôk>Á~í ¡UÑä¶i¦ó%ÅlÄZs2\Ù^]uR<À¼rÃ078o-â+Ù;~
BvbwTòúwTÙ¾[Û¹Ê[B:fH©ÚoKîlêMÔØù7Ú¶u)m§ìrïÉ8Ë|ÏkàV þþªÙÍäîÑi!ã
¹#@Ѷßj&Bv÷Ù¨TUÜó¸tuWîhÏANÈDZnØXÌàµPA·²Ûs¾*ÔÙÄѵ,5[æêÛ
ÑÄ
Rѹã¨n/\èr3:󨧨¿º£ýRmµ':76MÀTÀ~Ñ00(
ÑØüOÄæÙ?x#L
\NîÝgÀ>z÷pÞ¡Èý¸æ+ýPK4S4.
ïéHLÊ6µ}-O
|
Î/-JNuËqòKòós<srô²ËyXXÊKJòósõ
õÓJ
ôcUäT\R\SÈ¢ÈÀt%0!Ðl ÉäÉù¬ZÛ7¥Ù$XP Hr
¥]K+{ËjWì®ìÚ
Ù^ÛJÉä´¥÷}qß$ÐÞ
´uZ(ô¦
ùR9/e§g½ZWÓvu76¨m¹VÌ2¤'(Zӱβ;-cVlMuµ¸¸«Î¼i©`ä
µÓ23jÚ´lÝU]}HËèfÂz-çzþ4ÓcwZU³5Gsùð=ÖÔSªíêªÁî´¶¦L®2àÿ ¥Ç4b« #5¤Å3)ÍNª&0F¤J¯ ÎJÂJrb nJ
¡r5[õ ZÉ·äbá¸ÐýÀãê&¦MF»oêøºãqµdʲU{;ë¶{'ZQÓéWã=;9þà
uÓfòs*/ªGJIbþt¬îk\\ç[²ûõx\3åÐ%uCrSÕP\ZçvR͸¯¡5\Yù2A«ë§WEí749~¹ co2"~ÂÀC=AþpG¯¨;ú WOjVÚÄu0ôJ
ý¼A²èþ¢aTÂÇÂäqÍÐ\M¡_m6»¶øW
.#óLBãÀzRè×aÓ¬ ÑñTÛ®ÿ&,C6¨n
~»À¨J«pãwasñGÎâgB¿çTòI¡?à
ª
¶Tè\4èGèOᦥHOd*.%
þ6«P´Ð£2(áÞ`7ÎýkÃ~(ôDõ8m6.ú·0W¥FRÝ.[à°jÇ
äkýÅàïacÉIáË´fk¶BÿÔ^Ê*<a)À`gqÁyºæH°ô3á=íIɳµà:ÍUq¢ÏÕ"ád+¸ú|xíIñ¼f¥þÞÊRÁÖ\\Bj¾ÿ»vÒNÐú·<+K¡ÿE+EÃÃÃ
^£U(ô¿0Ê8¸Ìk9/
5ªy*D9~SWÄ¢[!%Ô ¨¦pc
cÍa
5ËNð Q
.G
«ªSûlPöÉð.5'!ûp50µËçÊglÚ<$¨)VÇ×\§Ë{æìÎQ¯èfG§!iÉKÞ ÷¸86Íï|Ï/òãÞ(r!}ks
³Å1/&üþ~¶É Qú6}'*ÚD;¢që)QK¢¢Ct¶¥Q±Lt¡Æûg'&¤×u6DE·X+ÄÊV±**VËOÖ»ËåBaºÔ7S,còmª\é«Yç5ºÃ+jÞ
t|DR¶xü=24q»Òµ5ûm¾!ulÌÁ:ÞØ8@ËÆýmög³Ýu¶<U(æÎÏs
<VÓöÌø^5%
ÒB ¤è½Élyl
$_±ÞDÎïurù1¹
df!ï
:RÝ
uã5ßÙ0!ÌîéM»³ÅqD¥;U,ìÙÛÛàKs°D«íáä9,!hK¼b¯:éåáX4ØQ Qå³Is³ØbÆ¥ºj0-±ÌLÛ+!(˵[¯¸K¾4
e{qRè#
ÕééÂná@˳ÈVEµÐvTE^~²<Åuª~µ"T{å7OÁn¢!»{gdp6¹¢x-1²¥rõp&n1/!HÌ£éÀ,ê¿ÏZsùqo5ñ"%Å¥ÙÑRP+7éúæ
ª×ÒÞRÙCD¼"¢¶¢¢+ô¥ ZÆ/»Z²33^>n]Èì<Q¥â0O)Âb]¾iAWº0}ÎHÎÓQÔ»DôÒ2´ò.Ð"ê/g¼¼ñ*ðjÆkðo-ã#À믿ñà
ÍøðFÆ/¿ñ±àM7{ooeÜÞÆ¸|ããÁ/g|øOÄøà¿
|
ãSÁ§1>|ã3Á¯f¬ûÇÀqÆ8Áx
ÇãiÇÌÆ§=ø¯Ï0ù,책 ÷à
Nâñ¬,üfç¼/1ûE^âõË|Å3üÆY¾ÊB/[¯xð5_Ç«
Îá¼ßPð^grAÆE7Ú{v¶¶í
NöD<eiqkKëNÐÂbm¡õ;»#rí¤ºq³®¨Þî'+ûÊ£¥mGQ#ÞNêò®Eu3%P×ISéxð°6¤ÓF±±z<Ø¡¥¶jÉ"t¶1´Ä¦Ü¹mØÒéìIÄõ^Ú8ö·tüHOÊx8
_¤zX\À½ÖV«ÀÜú.ûE#ì'ÓÖ.[öHí(éuq=ìÕͰÖ#µá¬oèdEô¤í¥Ërýþ6æË´vvÚ¶F\3 $>´³[:¨àSH?fÙ]¶%ýºµ>ëÈCÓPßð±ÁqÞÞ\L1-Þ¤o; §©%ÇÔlV(
ö%Ìf¿wT|_³SèÆõAJ7t³YXü±r'
ùPFÖga|4ÆçaqdÞCiÐ@§÷øåæÜ˳3PÖV_Â{çªQÇèýJòB¢ÇÈöqì´ãØe[ç,. [,
4:ïdP<iÄM+pzâîâ+t/ÓÚ}ꣳÉM^8ßýç·mÀ6<+ÐXSAI{jv_JÂÝ7à"ÍÙ~º
Üh¦qà;Ix{L²äÎêÊ»g6¢ù6â¸bcظk6ú´yר©Ô¤Wð*ãÝZ8[q¼¸±!MdãSðØ"ΣÇu*wtd´ÕbgxIÂMÚjMetÝɸã:Ú¶ïóË·ÛH##p~ÂÏçeF7'×>ìé×î]Kì
Ç'qWI˲ñ\ë6$6llbËF?nÈÚØÆc9;Èðm1ðÄF
Ë
XB·Cõl ç˸ÄÏ1/ØÆ/ñ_ñsÿßྥ<,-ª_êÎVÛ2èpþ9úCO5!%\¬:XKýÒaÊ6Ù&þSô¿~ØÎR{%°ÅÀÑ[Oþä¨ÿLô
ÚMxó?PK·ø"
Ã)Ó¯2¼Æð:Ã7Þdxám³ï0¼ËðÃûç>`øá#>aøá3ÏÎéB¾Ó
Õ9N6É
µ%&Dz;ÍYä>íp¿â£É.
j×ë¦îܯÐöa
jºP¨1¡¢7¹AmÄ¥ÖÎP\¡Övu1ÓÅôÈæ©¤È:ºeÚaú
ë¤
37x(uZÚ;ãÚ343prºF³á7³y¡eZ0í§[± ¸Î
k·e"É:ýÂÎN!|N'IJ·KMJܵªéÇ$Vçqp4'o[¡åpOZ7cZÞÑÒ2v,¡Û pé3S6$vÆ
ÁnU¨"7!rñT1Æ-BK2Ö¼`Qy¯|·¯LKçGì,øn0¢;2ë¸nf[4{l»í*æ2ÓL{af
HréAy¤ÝòXÕüë £º
Á ûÆ7\ܲW8Å£ïGÀzFXyhM{}[Ò¾³Í¶[Mó£©~ûÑö1ªðÜ&Dv¡O^vW!Ý®0"Ã]¼6!Üsä4KÕÙwÊåÉlB8ë\âÜlëÕ2¢cù«ÑÛ¡Ùö¤Kï×RMb$Fë¶;Z`Òd_¼Èi
#Sh¾nûO4OS
r/VrÃtQ¥¯éRTQcERI±J:F¹ÎJýÉw [¿P©Ö«ô
.Z|
)xëP`\5DÔ1x¾öâÙá·³ó
)Êjñ#Õ$:¦;¯P-çñªá³õø¼f=µÒb
ct/¸TBa%fVS#4C«£
kÀ/k5t~O¡W)¢Ëø,.)LmÄo7ÝQ
ì÷ãµãº¿
{2ý*5(ôm][I
]¬bx(h¹ÜËHØ¢ÝÄnÙ`OzظBþû3GÎ÷·Íß¿Iö? ÄÅôßfÙÿ'2Üæ3TÉ« yç<ÌÞ ÍYó¾á2Ûªm^H¢~ç¡¢ÛPç¤x¯y¨èQþñ.ãýÅÃDcó?ºTÅü
èï¿PVúvéúW_¾Vùòýß?aÙtåÉ"ÑýD]¥e¿ñû,èÜþ"åÛöp_ ÈMRG¥ýA"7K"JïGÈ-²H+DÁ÷Æ_d,ÒÄÓÐÊ"« õµ
ÁX`-åâãö¢UÐr©~àx È
Yd7DöÀr H¤]á2·CÉ@Ä%t¸òáN
¹Má
Y%È XDenü¹À3É"§ r;èLnÏäÿ[¹þmU¬IQNà+DÿPKÝIÄí(
dQºØ×é´Ûíf1þÁcó)ÇhqdSÀD¥'?Û£CÁ³`ÛPÛNb÷âÐýnH1»Jµuß;ò´Ð|ÍáIùk¦å#¬TZÇÇqÈ´¡rdZÖª»¨òj£á<b¨zÐ}ÊÅíD¨?¯ZD4RïЦ^ß
ibQChý±Ö2:Ñ0åëé`@'øë+ûcÈ+¨Ü¦tX#*ÂîÉ#±{n ²ñqÑÄ8M<Ùf×6ÞP¹à¿zPó¤Ôyn
6ý&¥7<î!árÀô$öâ#Üa?¤Y0³R/;s)f?ÝØ)5ü#CÁ±ât²±f¥{5Oö}vÔÃGêr¥Ml8v'ò)!°:î8Ç
Ô³¡Þ¡ÿ
-¼©¾ì`&ÇFU1¥^|¨±4Ò¤CÊPógZÓc;Þp-«G
øüÑ¢Ïdö²ÉÀù 1¡v/bbVö¥z#O&x
b>ÎÝ9#ÄÅdíßG#&´tNêp§LþêÿÕ
W÷GéÒ,34§lm±ã8ég7ü<s5
ºâ§¡0õkÚÓ¤G71Qó£'Áôn\ܼxAOË ÑX-¾E§c¾<SøKøa¿TB\ÊáËÍáiÄ39|ñÕE<ÃórXìw°ßb/!¾Ã7?ÃËø·Ã#~"DüT?ø¾øÙ~ñó9üâÕ~**PEæ%dåedná×p½
ZÁò*¼&-¯Ãr}S)ß·åúÆë
ßUø=Xëûð\?Tø#
?V¸¦ðº_Wñ Ëu65/0ú³
³f± ]`î]`Ìï<ãB§Àì"#r¿ÈõÓ>{ð´|_ÈõKU}WUÿÂÂûª[=Ñ-ѧIÿPKêi
¨à/lX`À;ãÕîcP¬ QÍ
àC9Þ¶wd!Yô»99·9¹ß?_P!ô<8ñàAÅéÈXM´ûÛ9å~ÂÕÔÏÕõ©t¡ÑN0¨â.3ù"xX¬4äáÖ®´çú¶.w§U2¨]½ ¹p±VÖnî
µAW±?hÏÝ3au¿æAÄK5&¥%¸Ò*<?dî?ëÿϽù)c9áË®íljà U»½ÑóôÒy'8úè!&â<u2è®Ó:±þfýx"üÜù×ÿ»{KAz¤¤óGêYéJoÿV¤«QÂaA
Î/-JNuËqòKòós<srô²ËyXXËKJòósõ
õóòJ
ôÕ32(aªrL*.)JL.)dQd`:h8dòdÁ|VíÁÒì@
,¨$94'
XðqÞðé¸X° ÏñÁwaMB-'B;Z¶¡¿e¹ÙQz£¢tWϽçÍS!7¶
}·Þ/î2¥oR»(6Y!ÄIÞÔL5O]æßâ¹\Vµ,CÈ¿Ú^8j¡Îµ¤{ê(ÁWÍV3úϺ c§©×פ±u¼X+!§)¹Dj§.d;¦î&´
=ãéõ:Fá£×éÿuñ¤qv£43À¾Ó*M£Ã'ÐCmzAÍBAû!lûmÜi;Úà®·æñcØß +
¡Û=8SÓ5¡#8míß 7<îÍKYBcÎÔ'ïcô´+IYܦo
%i<HZ\©Þ`
}4yÜ4ÔÐK\ç{è³4Zi&C¿1|®xýaaI3 }îwtú*ÿé³Á²ÄÌs/±W(ÅuâÚ0þPKÝ9_ëÏ
Î/-JNuËq<BBóóKóJõ²ËyXX´ËKJòósõòKòA¬âÌÜTý}}*ª11(20]@´H²y²`>«ÖvÆ`iv ÉT@
wã´/(XÄÂϲÈù¢çð%f?ïÆ¼~Ù¯¸qß8çÆWYèÅbrë%7¾¦àëxYÁy\pã
^Á«L.ʸ$ã²@ɦ`GßàÖàö}AÑ-PÚ%--fíÕ¢)ÝúPX¬½;¸qW/sDV±£T7u2«HÀÑûSde¿@ED³´M±p<bÄC£ ]@Òµn&ê{Âñá@2ÑF´@Ê2¢p<ÕÃAº´äÐ6-Ñ*PlÎ6#jØ=·Z:ÝñÞ×O{¢íäcx(;Ú4&ÂÉ>p7bÕ&0¿¡Ç~ѺcµÛ"áÖÆ½RG<Bzå=FL¦ûu3¤õG#el8»ãa=a{)ã
Üp ù2Ýݶí¡ÓÌQìN&*ùÔ[6g·ígé nmF»rÐ464~dp·'ST
( ÂÛÈajÇÈ1#ÙÉ
@yq'u+Ëö³²;2ÃúfÓ
í(f%VÑm*>*Ú±NE:UlÂfO0éB·-|±ÉìñMßÂUû°GÅ^&Ob'ßíqMÅk£Bé<¿öm¯«xo
ÌyßÐM'Nx'Þg$[|*¾ï2ù븡â
,2Éïæ¸9¬Yù
,ØdqÓÐÌ$½Shu n¶ød¼¥âûüê¼]zX7FXhÀûº9¢-ÀÒ;°{7UÂA*ÒTq?(£ö³ôµ¢G
ZC*ÞÆm*©Å÷\OQ*ÉÖ¨;ø¡@u§nÑCzħgeO OÅ]üÄïqOÅñ?Uñ3Ü "ðû}Ù;*îã 3R+YV<MfÜy4Q=0dYÀðæzjÈÒÍiwÕù~Û^taÒGNáiR<!cX§·;JvKÎ-Ü1¤
hò°1
;°£» © +§ä» ÊAvsRu:RAÍÒ/¶z´]Z"¡Ç¨[ÏÖW°2ÕHÍXÓÐý!·n+áPÉ6<(×:-ÊÐ?>å º&0µðQª°Îït|È;KL]>g¹¹NÀØpdãÙ"=0ʬÀc
òÛûPѵ>Èi|EhÜ ,ÅÀ¬â.ý©MÎr9
gݤ
ùPNÖç`'¼4Í`KqdÞA
¢ÿ3åý/T¯%ùw§yúd®2D¡Ã¾Q¹ãîqlðO¢²mÜáµ\_Pw®¢âª.}ð÷1T4Õ*ugCùû²ÜýåÞ½ÃöÅmT÷69j'1§Eò{%ðp5߯ÜÞIÌ«NãciÔ¤Q;úg¦âs2HÆ+ÉHxi,dq¡Ïà$EA"H
®[XÖâô:ï£B¼NÇj¯SZFý>Ç1Ùè{¤³!G[|Ôå'=áÿ|fbUC÷ L)Ç ªk¼êñ*¯³ª)åHÂÉ9oWdòâÈç
u¯çKn ¨KÔ¢RÔaX
sEN N¿=ÃÿPKîQø¦§
¹¤Ì[pËVpßÀ|dàc¬*±¦a]ÃCØL³bM ºå¡@Çü¶³ëØ9'µCßÍgÇZKYHåÜ]I½H?y:kn0UI¨Þ]Úçݼ\(¿â¤sDô@UÏhbmà@ó-7ïããJF׳a¡2«tvÆNcí$¤"ñå¢ÂÏÎôîDc_cúó,®4|"ÐvÈrBGàT ó÷* Àa°¾³Ç$Ë^ÑÏÈWUÞ=»²²t´°Å7ÇCøÔÄU\3ѧÌë¸ÆþÌN§¦L¼×ïöôÀÙúÅÍMé+ú#Çq=®RÙ£#£û;ËëLnRVk*£êNÆ-ÛR¶y8\¾ÅdÜDó^>/3ª9ɸºðaGݸrïZfW8zqw¥4oÀÖ°aBbÓD[&úqCkb5äLì ¯Á3Q@FÃ>ll½0ô¼\`|/ô2JÜBNÚ[aX°ë»&p¡6%ìk(ýãµÍ;7,Ðó?£U¾°Dy
B¥ 5P¥ñü ôЫ ìMâ¤=N×c$ee8ñ4úÖ'øýíùnÈ!%Ö'Ôq¡deéû¢B«VÇ1ÂbzWÉ2sfé<v´2HN{ÄÏgGéã4Ü/(+ÇÆÊ®ðu¹ ʹ¬qËk_Õ¾^¶u5 Z½\×õįT(ËàMJU׫hâ{ÖÅ}ß|2DcDøVüÓÄc\-kð¬IØGÄî#ª´5¤Ì^eöÆìç3
¾1f7B;fÐ
9ô`
®±uú=¤÷læQùúø«èVGó` Zý 7¡a¯[!0ÊÿÍF\½×'7<ÆåkPåþCnë÷¡eõòOuCJiU¢
(½]ÓJ© ±ZBÇíès«V[Õ£Ø{ìè"0\K趨-áÜaX
m¥UÛ´-XXiÅn`é¾h÷]k·ÿúë?m¶ßyï%øåÜíï{î9ß}sé§A1ð Úq°m¸SÄÛDÜ%ân÷8ä;ÞÛ˨|oñïñ.xw«ï bÞ+sïÞûøLÐû¤ý#">ÄýxÀ£~|$Z|TÄÇçAéó㸴b.>!ÓÞC~éOȨ́ÅXGD<TF
GE|Æ·æ Äg1ÄçDÔ8ÏÞD<&h'ÅÇE<ÀÅßS"Nx2/ágÈÈf£<%_ài?Îùñ
r3LÛ½vÊÐ"ûl;Yd*a'ú¥gÃɲídd}__w4k°RAK¤í
++Å<¸v¿tóã«Ä4ìnO«ï@8ÓB
îcz|0ÂñAú_AÅèÄ[1¦g&"¹ÑJÕöñÓõV:f;îÓ9¿wlz2`ZãÊh|g"ß®»¸HôêÕ^[·ÓÁ«¨§ú«_Fi ìµÞ¹@z¼Y¥
1¾üÌÃ0ƱØú±hxÍ]³)L$x¯WSÔ{Ûﻼ?°1µ \¾©ÇÌôÒÊV&õe0®Iân>T:@ÔÝѲ¸ÝaÄí!g
î}zî½s¢×Hí5RQúRídbL·óöìM¤SýÆ:S2¯r,¢,©fqCCz5¬ÁZ
ëð
ëÕ°7iè@§èÒÐMÁy?Õð5lÓðußÀ6ã
º`|ßÒp5<os)X
q0Ajò*s<µ5lÓ]"ÑëÇ%
ßÁwü±
=Ñg|%I³2t2®¤6>Y9Z5¡d/x~ÓZcìH:ÌÂóhéMøB[EC®¹fÂã÷òÖMl{ù@Ìd¢ %UâãU¡Â8ën-|=eTh;`Ëâô;ÍÉþÌ1XrMNøô8Í6W'÷Î˪ÛCñMi#u<b*Í"?*²skt[hÆý];ÎÌYi©³¦¢Ñ¯Sev.Êr8¯_>½¯`ÚnÀ<~µðÃ'4ÎOÜiIæNK>wZRºÓÕÄÎv¼}é(bhB
ÕY(áQ.>RþpUà,ÊNSYáfÊz~!7³w=*°SѺXGæÓÿ+y5¸lwm Û½ªSmÒ½Ä>àÌ&òN·Õ6ºí$®7¢ÂUûNÐ&/ÎZ,Î`Ê1W£)ÊÌlºj3UÇ]çYßÛ0
r3½¹
þß
3ôüÊ)ƽª$'6»Y:î´9sn]`K{n³¸ª)'ápTöDn°Tüj2êäÉðxxxÝ.ÞÜ+âeÐ,ç¹ÀâcADNîkòx0{Þff#Tw¿»ÏÁ5êj\§ê±\-ÂjÆZÕ
j1ºTsÎUòÓØóó(Ï W~Ôiíc=Ü¿©N¬K¸6ëFäÉN\vð&agI%å¦f7´Ã³3XCuΩ¥ð©e¨Q+P¯V¢Aµ`©Z6ÕÕmª=ÇW~¤zwt;=¶hh¬ZÁ²§Y¾ªx¯q¶o{]+ÂÊ%¾V-ñUûn*qª'ÒêdÐ6¢Bu£Rõ`ê£#©å
eW*|hZ2Xõxnªí9Ydp/3{s«óÊ[9féBfÌR9ñà÷º([¹»º¢çæ¦{wöÔ¸¯e%µ-³O¹gßGÚÙiê ¦«;1SÝ
Zuû
pàÿPKOoé
´ °)¤~Ô¶P¨ ©òÑT©Úº$Ø6ì¦ÙMg¼ðÂ/zã×L§Îè
½À
ñãóf·6
.xÎ9ïûó¼_YþýïïÐlÄÑ©ftãÀ´ÀËq4á}Y9âôæ¸"¶Å6'° Ç«²[¸¦b)aYÖÙVã¸*>Rñ±r© ±pǸo¤lÓKeVÆ«fKA»o.öFjÕ+Yö]Q«xÛ.oq3aÙ7© cèEÞð
©àøeåu³tÝX/Ðý"k=˱]k
Ú×ËÑ
ÓËH'
£
þ¥ã9Y 4ó´Ý4·øºÊý¼ãz¾Uvé%7yt}ÒS"©ah8í3®Y
6\wÛ)åámúö9«`."ãi¹lv_@¶s¥%gær!8°<lͶc[Y£`}iú§¢}|Õ)²¦ÄÃîZ[ÅYI
UÃ >ÑÐ>
¯¢_Ã
Þ¨
ElR"6pXDOV ÒR/4Y'4E¡KÌf¬aèÁó½\®MúhØ
VWÉÚPc¤F*Õ³×g̾E9Ý\ÏÎGÉö0ÆU¬Ýd7î£M×+ÿ
4©
µû ¶ØdI,tànXåÿβ¥¾þ`P娴±VÊxÕZäÿ{´ð7ð'~ï±È¯Ð$DÇ'z/´S
(#û8mtb·ÃÌ»Ì#J}Î_ß9ïkâ¹Ã*ÙZÏþøîÙßÏ!Ä!¯ôgõhÛçã´ï
ì£û N¬íád{GâæRÁK»YH´Ô{CµNvøÝü~àXÿHÕèå§8P
zH¶wUðòCD[Gjñ'â?ó_hg?kFÌð7â{âÁäÿPKR¬
E®µM[R{S*µ°-¨iºm·»!»áæ]@g|õßxj0#^_ß}×á/ÐñQüÍvÓ¤a0;9{Îwù}ó}ßþúï7ßÃ>|ÂVVcÉå¸\NñR1^MöD'1B§är:3
Qð¬Ü½Â9¼"w¯ñ|'ÜÚ©*ÌH*Ù æBhǨD#g>
ç«ðºdê³ wFfi_6£çQCµ£'Ç¡ijÊÖLC ;äq(W£é¬=ngÔä@s^P3£ñR1ÍÐìçh«{RÀ?dΨµ ÍPe¦ÕÌDrZ'¥qNµðcªÕmG)N_N©iI·xxZR×®R+LøJ7Z»ºãHÐ
3åêìÆYS iDOsÑãÓçÉ$Bs踴³J:)2¢VÖ:jY[Ó£)S×óV4¡Y °UøVK
ÑUÍ£\]A.¡sö¼#L¦¥Ú'Çö®Ä%Û6Mݦ3¦m¦äãZªp©y;p"4¬Y53VÕpwHƸ¹¨fâ3ù\¨É
ÙɤUep«=,ëtA9nØ®rs9eƱ²u=/Îv?1#Ik~4å9nf3)uXUS¿g|!oª
zЫ`:<.Ý0_^Øvº¨\@¿²²Îd`a+È"&/*¸ËA\Qð,v*xFÚØ
Þ ®*xCc{¥wÜ+YèW°[
½)
*ó Wð¼w¶ý¯àÙ=óô>w¼÷ÄF rMÁuÜPð® lY]ÄMGWæI`ój©ÓI¦¼ÂÉû0MÔ|×r`hl±Ç¯»,C Ê6óÿ`ÍÍ´j<íËQnô´ç¬¼C!ÒMKÍW{!¾°W°Ãª¿C`ÓRãr&Õy±ê
lR·JtÇG÷¤Ç˶¾
ì-£U§Üd*ñü¨zøØ
ðcÙ?öófKp½Âµ§*¸"w!"â*äâÿ+Ò¶smáçÔöóT(ÂèG#Ïû~"H¤,O|úb¯á¿*_ìú¹÷ýÀMtÊÝäPù¹ô¦ÕAðßà§h "¶î¶g²ýà.FÐç±ØTCØÃäÅJù©SÏíé:sÚ¡Á1OWz"÷<Ã}UÕwaòTCVzR&äIùÆZâmå'4³+ì 9\{Ûxöª#9¬6< J³EÊ»<g{]eÅU¦/á#aç.ÓÔ»XE»=½Þ=ÒøÏ¨¯_Å÷Ø@Mp9?ÂA(+ñö'_í®O¢I¥Cùë>^Ìä>æÊéèÊíq«£¶cÝRJNà|êÂý.}Jêg¤â9DVi(4ÜXL4¡qÑÁYçç6qIýÔ¬|²".N8Í;¨*M÷·Ôûu÷CQzzáìpî5u±/®¥ Ìõ/úÔC,Û¬Õ|Qµß¹¾àÙç:Z¿pCkm^ÞÂ|ãý¾þÉýCRcØ
Å!¹uË0=eÔEYµ¿ò7©ÿú"F¼Qás¸M
ûgíÅQ/ÿµ|~@Çiø²ÏI¤{h?së¾Á|G®oèÈaÃM4õ4<%ð7æ°é_ò}ësØ|ì:zúä©qHÜ_¯³ïþ£=^¦ø,»´!A4Ñ¥f(¢aÑÑ^±ÛÅ:ìë±_t`DlÀ÷§ÅFLÍÔ>*ï
ÿ
,
qBÃý°ù¬Ãq4äñW¿L©8©â/§UæùK*¾Ìó¬ø!óæòü>üª3¼9ËÇT<Î'<©â/âáiÏ(xV ~§³üÛÂí[DúhLY99XÈIwijé$5Àö{R'Ì)3n¹ø°ïZ¹^Ô37HÏï·-ó·1·=èØv²q¯
¾eÇÓmË´o99/¾ÇuÍéåù7Mú~>ÛNÚ´'ϬöIé}ãtÁ¶I?kº2:¾ç|]Çóøoâ/êø^"¨qöÆÇ¥+°j¯+Lô
ß1tǾãe¼¢àUßÁk¬¾ Ð0êÚóñ@6ÔÈYY¡2ÁWðºïâ{ço/ùqÀq³¦Ç©´Ì³¹M#I;¿É÷uü
.ëøú¼¥ã(R@5Ã0:è1FRÆ.2¶µßÉåJ3\élu\ÁLæSì
:/àaÚU¾¯J³en¬Ðfñ6?GÃÒn2cTfx
Wí±mcRéz Mǯp¥~Mf¸fΣð^^ÊLYè]üéïQzcÓ?qO¦u¼Ïá-n9ñäÁ ´ô1qNælîÉz~Ëè~Ç)|ËRÿÏçú;Aî¡Lۣе§S{·£T?í#ÕÒ$ÊiäAJ´ÍíËÔ[jH¯>VZfÑ -L¡iÏY"H -U±ÿéôI³4³¤¥ÞÌçe.#Ðù?.®)»¹ýØ
TÕw*ÜÚ¾¯·&5pÈyÞÙ¹EÞ«é;a3YàÃ$¥×¹7]O&9,Ë
'trÐÏ:]r$±'d h@9¦Å¡òjÀLû;Mý+då\`W{jÙjî%O.%XãéªÎäx.
Sï 3 X¿mza-\[ã¢#ò*RëZPý#®s²Ôëó¥éû©¬ÒrYûá¡Ì¡6FèÖÝÈ.Wö¡ soJ§ÜF¨gPÞΤFÄa?lÿ
!k ±Jÿ vA;êûJ
C`ùgåWÐ>Ó<`æ{¥¥Zo|1ã´ aî@ÞÆ;°^Ïe;IÉ4íòÁp~ZÆòÒ%avÓw?!~§ÒØO»M4ë:®@\¢
À^ùغÅ(±GèDÂëæ:záTy>Ð÷DëuMzêÃ=ÊþÖѦt7סGgÇEÐö*Ô"¢=ËÐæÐ@zóª"V·Eh,¢©¡æ@¨£,4XÃÝBÜ]ô+1o¥eë@¤-é*$êjdÖ¬®*ÔÉë²ÔÚ@ª»î#=õ3&T6¢FÃ:ÆHÜ\Òpw\»øck·\@´C$ÔpOtFü}k[´õïbÃ`ge¨©¿Gß6íº£-rêe|´rÅÇ$9çÖ">^
:tBiEl&Ý3âLL(E{3ØÐþoMXCEåm5ü[ø¶Ð(ÅVªjÈerJo+ãLÞ¾|[ܽ¼ô'ËäO1ùÓKÈ=eò&¦ù³U15V7;I+û°FlgYl×òn¨õLT´E9è?\S¯£¹èxþK¨Çðü1±CSâ¬xæsbV¼Có¡7Bo¢7¬ÃÍè-×Ü? q'TìBnGì*ÚuT®¨ún¥:ÜN¸wÒ¿$$ö#»ðRxxþw\Ä!Ìán¼aB1J(àÄýoô÷Õ8.Z1&Ö"-ÖCÍÝ;` ´9#<äÅ
ú8iq§ ùCâ}<,®ãñàñÀ!çB»ñTè8 =gCô©KÖ=z/þCÿB:Æ
°ÉÚWÃ1¼Nß´¢}ÿPK.ÿ¹
â\F«@§SÃH±mßÖTd¾`£`)e¬È'
~LÉ2w@c©ÅRÕ3{i-º^0N|Õ
ÇNè8éB9:u¡!5gXÇ|Ã
çðÍBZ¾åÂ)Õ·Q
1e8aªmO»àÁ¸2Oèê8#P4Nmû&ÂÉ@ÁH¯@qÒ¼`&SfïÊ/®h,î°ÕÔÐöÅ#¦ÀºhÌÌ5Áðè$-Ú¹p4&°¡fdàLøB¸q2o<NFcãÊÑaÆÆ,×í5«LxÜ$оÊįéêê3éh<Òq×ôÖª#6æÖÆûcLfø\gÞ8I?´[qGÌlÜ.Ú"ÙÔT¬¾Îpm¿³kl23×±x&9fªe£AÝ4hA«
x×Ày$u¤¤1p
L)ïò>dzyÓfÌk
®FÞHÜLycñ´÷b<y¶Á»ß:V$àÝÁù'ÝØÀ%L«ÛU°Ï«áª÷mÏòÙ{/¥Í½ÉdøÒ$T=öyeZÕÕº%ù$åoÌÀÖqÅÀKxÙ@|:^1pU9T0t¨S s,mF¼ÙäzǨÚ0
ÉWåìUµSÔ.Òét<>j̤£äò]®8ùÐè®&°m9®ã±T&'¹Ãrjó~1gRig·Å3ô/Ë«ã(S¹¬)H±@ý×*ìÝÓÏg-<Dͪ/YeC=¡Fµlµ
²< O¦ÍCgí0d&`ÜL«ÛäDƪ$»*©ªàWYXM(çÕ÷ÔjúUSç²R
+¥¤©¢³ÞVéjUÊH.&£iÖËþ¿¢o_->{¥!¶m,Fðqà¨`k¯ø1;M¤7¡áû;Ñþ!-Ûçm]³HÖ¹Pp¤~¶Á;ÐaÍÃAëôb'Q¯:
5ÓÆÎ\s(ò[s¨¿59·âµÙyÊeáWw¹*»îÞÛÞxä8É»|ïïñT÷ùÓñSôàg8óÁ¸i|BõæäßÁ/uÖuXªCñJæQz;¿ Ãúü;Ëi3 jy^õoeôòÍcãnG©±¿ÛZ =·ëÜÕÁ¶kå!fyã@ݽ*G"Ô}
UOäTO>áìYDE¨jÍW¡Ùà
=`¯ÐæPukÕñZyÙ=·sà3ò_<û¿Qÿ ÿ
£á´
6á°"éÈEe¦T$:\¶6ÍÖfÅ_c*6
ùíVã»Í~[}ºe^¿ÖP0HΦOɦË4éÓW¬võÑg}ÔìS²ë2MÒýj9ÜsYfѳr5Av
aËÊ
~Ëϸªië()ÓäÀÛ0|rð2ü2û
¬óÛTØ#C7t<TÆiþ§
nÂ^pË}w°Õs
ã^ôÎ Ë#]3hóÈ53hòÈÂÔy¤1mÙ=Mðßm|<sxoÁ<¶ßÏ.Ä¥g|ßs+ MÐÙ}vñ.}=b!ñCïÃ<r]¹²Àoi³³½¢gË>,ÏvùÙÖ§Jb*«ý¼ô|Ê0Å=ku(k©Ïª)®XÊ74µ¤,Ón UKR±3¬½ÜàæÊ-µìÞ§|?¦|Aù~bñk&þ÷¨@ø{Äp@ü'Å_ðø+ÏøK¼(þ¶âNt/?óâYu%ùä3d{!MöCv¹/rÈýÁ.û!§<I|ÔåAÒ)ûÉBytÉÃd
y\#ɵr\'R>M®ÏÅòY"d©<NÉäy,Ïe¬Ãd¥n9JzäY%#ä&iåiÒ+ÇÉj9AnQr«<CngÉ'ä$¹]#wÈY#ãdLuò<éI²^¦H¿L
2C6Êd¼HîSd³¼D¶Èi²U6»äN²M6»eÙ.[ɹÈ6²Sî&»d;Ù-;Èé#÷ÈÆàGؼa«Ò +W!*ÙãÛgêgµ}>îwкÖåæßþñPÙÇÿ-ä,Ëï}ßâ{lgøP½ÛâGlY?ê_=ÿPK´Ys*Ð
|
|
From: <geo...@li...> - 2001-11-20 10:16:49
|
Update of /cvsroot/geotools/geotools/src
In directory usw-pr-cvs1:/tmp/cvs-serv10369
Modified Files:
deploy.xml
Log Message:
Added simple-jprotocols.jar to classpath for java2 build
Index: deploy.xml
===================================================================
RCS file: /cvsroot/geotools/geotools/src/deploy.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** deploy.xml 2001/10/18 11:50:21 1.7
--- deploy.xml 2001/11/20 10:16:46 1.8
***************
*** 23,26 ****
--- 23,27 ----
<pathelement location="${jars}/dxflib.jar"/>
<pathelement location="${jars}/gml4j.jar"/>
+ <pathelement location="${jars}/simple-jprotocols.jar"/>
</classpath>
</javac>
|