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> |