[OpenLayers-Commits] r1762 - in sandbox/bertil: examples lib lib/OpenLayers lib/OpenLayers/Control lib/OpenLayers/Renderer

commits at openlayers.org commits at openlayers.org
Mon Nov 6 08:17:04 EST 2006


Author: bertil
Date: 2006-11-06 08:17:03 -0500 (Mon, 06 Nov 2006)
New Revision: 1762

Modified:
   sandbox/bertil/examples/test.html
   sandbox/bertil/examples/vector.html
   sandbox/bertil/lib/OpenLayers.js
   sandbox/bertil/lib/OpenLayers/Control/Edition.js
   sandbox/bertil/lib/OpenLayers/Control/EditionToolbar.js
   sandbox/bertil/lib/OpenLayers/Control/MouseDefaults.js
   sandbox/bertil/lib/OpenLayers/Events.js
   sandbox/bertil/lib/OpenLayers/Feature.js
   sandbox/bertil/lib/OpenLayers/Geometry.js
   sandbox/bertil/lib/OpenLayers/Renderer/Svg.js
   sandbox/bertil/lib/OpenLayers/Renderer/Vml.js
   sandbox/bertil/lib/OpenLayers/Style.js
Log:


Modified: sandbox/bertil/examples/test.html
===================================================================
--- sandbox/bertil/examples/test.html	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/examples/test.html	2006-11-06 13:17:03 UTC (rev 1762)
@@ -2,7 +2,8 @@
 <head>
 <title>VML : Groupes et Coordonnées Locales</title>
 <style>
-  v\:* {behavior:url(#default#VML);}
+  v\:* {behavior:url(#default#VML);fill-color: blue;}
+  v\:shape {top: 200; stroke-width: blue;}
 </style>
 </head>
 <body>
@@ -10,7 +11,7 @@
 <v:group id="oGroup" style="width:100;height:100;" 
   stroked="True" coordorigin="0, 0" coordsize="300, 300"> 
   
-<v:shape style='top: 100; left: 100; width: 200; height: 200'
+<v:shape style='left: 100; width: 200; height: 200'
        stroke="true" strokecolor="red" strokeweight="2"
        coordorigin="0 0" coordsize="200 200" 
        path="m 0,0 l 0,200,200,200,200,0 x e" />

Modified: sandbox/bertil/examples/vector.html
===================================================================
--- sandbox/bertil/examples/vector.html	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/examples/vector.html	2006-11-06 13:17:03 UTC (rev 1762)
@@ -19,8 +19,8 @@
 
             toolbar = new OpenLayers.Control.EditionToolbar();
             navigation = new OpenLayers.Control.MouseDefaults();
-            selection = new OpenLayers.Control.Selection()
-            drawLinearPath = new OpenLayers.Control.DrawLinearPath();
+            selection = new OpenLayers.Control.Edition.Selection()
+            drawLinearPath = new OpenLayers.Control.Edition.DrawLinearPath();
             toolbar.addTools([navigation, selection, drawLinearPath]);
 			
             map = new OpenLayers.Map('map', {controls: [
@@ -40,28 +40,35 @@
             
             
             
-            var lineString = new OpenLayers.Geometry.LineString(
-            	[new OpenLayers.Geometry.Point(-10,-10),
-            	 new OpenLayers.Geometry.Point(-20,-20),
-            	 new OpenLayers.Geometry.Point(-30,-40)]);
+            var lineString = new OpenLayers.Feature.Geometry.LineString(
+            	[new OpenLayers.Feature.Geometry.Point(-10,-10),
+            	 new OpenLayers.Feature.Geometry.Point(-20,-20),
+            	 new OpenLayers.Feature.Geometry.Point(-30,-40)
+            	 /*
+            	 new OpenLayers.Feature.Geometry.Point(-30,-50),
+            	 new OpenLayers.Feature.Geometry.Point(-40,-40),
+            	 new OpenLayers.Feature.Geometry.Point(-10,-80),
+            	 new OpenLayers.Feature.Geometry.Point(-90,-20)
+            	 */
+            	 ]);
            	lineString.style = {
 				 fillColor: "blue",
 				 fillOpacity: 0.2,
 				 strokeColor: "red",	
-				 strokeWidth: "0.25",
+				 strokeWidth: "1",
 				 strokeUnit: "%",		
 				 strokeOpacity: 1
            		}
            	
             	 
-            var bezier = new OpenLayers.Geometry.CubicBezierSurface(
-            	[new OpenLayers.Geometry.Point(10,10),
-            	 new OpenLayers.Geometry.Point(20,20),
-            	 new OpenLayers.Geometry.Point(30,40),
-            	 new OpenLayers.Geometry.Point(50,80),
-            	 new OpenLayers.Geometry.Point(60,20),
-            	 new OpenLayers.Geometry.Point(100,60),
-            	 new OpenLayers.Geometry.Point(30,40)]);
+            var bezier = new OpenLayers.Feature.Geometry.CubicBezierSurface(
+            	[new OpenLayers.Feature.Geometry.Point(10,10),
+            	 new OpenLayers.Feature.Geometry.Point(20,20),
+            	 new OpenLayers.Feature.Geometry.Point(30,40),
+            	 new OpenLayers.Feature.Geometry.Point(50,80),
+            	 new OpenLayers.Feature.Geometry.Point(60,20),
+            	 new OpenLayers.Feature.Geometry.Point(100,60),
+            	 new OpenLayers.Feature.Geometry.Point(30,40)]);
             bezier.style = {
 				 fillColor: "blue",
 				 fillOpacity: 0.2,

Modified: sandbox/bertil/lib/OpenLayers/Control/Edition.js
===================================================================
--- sandbox/bertil/lib/OpenLayers/Control/Edition.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers/Control/Edition.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -12,6 +12,10 @@
 
     /** @type OpenLayers.Layer.Vector */
     layer: null,
+    
+    snappingMode: false,
+    
+    controllingMode: false,
 
     /**
      * @constructor
@@ -41,38 +45,132 @@
     /**
      *
      */
-    observe: function(){
+    turnOn: function(){
+        
         this.setLayer();
 
-        this.defaultEdition = this.defaultEdition.bindAsEventListener(this);
-        this.map.events.register("edition", map, this.defaultEdition);
+        this.defaultClick = this.defaultClick.bindAsEventListener(this);
+        this.defaultDblClick = this.defaultDblClick.bindAsEventListener(this);
+        this.defaultMouseDown = this.defaultMouseDown.bindAsEventListener(this);
+        this.defaultMouseUp = this.defaultMouseUp.bindAsEventListener(this);
+        this.defaultMouseMove = this.defaultMouseMove.bindAsEventListener(this);
+        this.defaultMouseOut = this.defaultMouseOut.bindAsEventListener(this);
 
+        this.map.events.register( "click", this, this.defaultClick);
+        this.map.events.register( "dblclick", this, this.defaultDblClick);
+        this.map.events.register( "mousedown", this, this.defaultMouseDown);
+        this.map.events.register( "mouseup", this, this.defaultMouseUp);
+        this.map.events.register( "mousemove", this, this.defaultMouseMove);
+        this.map.events.register( "mouseout", this, this.defaultMouseOut);
+
         this.defaultKeyDown = this.defaultKeyDown.bindAsEventListener(this);
         this.defaultKeyUp = this.defaultKeyUp.bindAsEventListener(this);
         OpenLayers.Event.observe(document, "keydown", this.defaultKeyDown);
         OpenLayers.Event.observe(document, "keyup", this.defaultKeyUp);
+
+        this.defaultEdition = this.defaultEdition.bindAsEventListener(this);
+        this.map.events.register("edition", this, this.defaultEdition);
     },
 
     /**
      *
      */
-    dispose: function(){
-        map.events.unregister("edition", map, this.defaultEdition);
-
+    turnOff: function(){
+        this.map.events.unregister( "click", this, this.defaultClick);
+        this.map.events.unregister( "dblclick", this, this.defaultDblClick);
+        this.map.events.unregister( "mousedown", this, this.defaultMouseDown);
+        this.map.events.unregister( "mouseup", this, this.defaultMouseUp);
+        this.map.events.unregister( "mousemove", this, this.defaultMouseMove);
+        this.map.events.unregister( "mouseout", this, this.defaultMouseOut);
+        
         OpenLayers.Event.stopObserving(document, "keydown", this.defaultKeyDown);
         OpenLayers.Event.stopObserving(document, "keyup", this.defaultKeyUp);
+                
+        this.map.events.unregister("edition", map, this.defaultEdition);
     },
+    
+    calculatePoint: function(px){
+        
+        
+        return point;
+    },
 
     /**
      * @param {Event} evt
      */
     defaultEdition: function (evt) {
+        this.snappingMode = true;   
+        
+        var lonlat = this.map.getLonLatFromLayerPx(evt.xy);
+        var tmpPoint = new OpenLayers.Feature.Geometry.Point(lonlat.lon, lonlat.lat);
+        
+        //calculate snapping point        
+        if(this.snappingMode && evt.geometry){
+            if (evt.geometry.isSnappingElement) {
+                    
+                    var m1 = evt.geometry.m;
+                    var p1 = evt.geometry.p;
+                    
+                    var m2 = - m1;
+                    var p2 = tmpPoint.y - m2 * tmpPoint.x;
+
+                    var x = (p2 - p1) / (2 * m1);
+                    var y = (m1 * x + p1);
+                
+            } else {
+                for (var i = 0; i < evt.geometry.path.length - 1; i++) {
+                    var segPoint1 = evt.geometry.path[i];
+                    var segPoint2 = evt.geometry.path[i + 1];
+                                   
+                    var m1 = (segPoint2.y - segPoint1.y) / (segPoint2.x - segPoint1.x);
+                    var p1 = segPoint1.y - m1 * segPoint1.x;
+    
+                    var m2 = - m1;
+                    var p2 = tmpPoint.y - m2 * tmpPoint.x;
+    
+                    var x = (p2 - p1) / (2 * m1);
+                    var y = (m1 * x + p1);
+                    
+                    var segPoint3 = new OpenLayers.Feature.Geometry.Point(x, y);
+                    
+                    var segment = new OpenLayers.Feature.Geometry.LineSegment(segPoint1, segPoint2);
+                    segment.m = m1;
+                    segment.p = p1;
+                    
+                }
+            }
+  
+        //calculate controlled point
+        } else if (this.controllingMode && this.path.length > 0) {
+            
+            var lastPoint = this.path.last();
+            
+
+            var width = tmpPoint.x-lastPoint.x;
+            var height = tmpPoint.y-lastPoint.y;
+            var hyp = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));
+            var alpha = Math.acos(width/(hyp)) * 180.0/Math.PI;
+
+            var step = 22.5;
+
+            for(var degree = 0; degree <= 180; degree += step ){
+                if((alpha > (degree-step/2)) && (alpha < (degree+step/2))){
+                    var y = (height<0)?-Math.sin(degree/180*Math.PI)*hyp+lastPoint.y:Math.sin(degree/180*Math.PI)*hyp+lastPoint.y;
+                    var x = Math.cos(degree/180*Math.PI)*hyp+lastPoint.x;
+                    var point = OpenLayers.Feature.Geometry.Point(x, y);
+                }
+            }
+        //calculate normal point
+        }else{
+            var point = new OpenLayers.Feature.Geometry.Point(lonlat.lon, lonlat.lat);
+        }
+        
         switch (evt.type){
             case "mouseout":
-                this.editionMouseOut(evt)
+                this.editionMouseOut(evt);
                 break;
             case "mousedown":
-                this.editionMouseDown(evt)
+                this.editionMouseDown(evt);
                 break;
             case "mouseup":
                 this.editionMouseUp(evt);
@@ -126,8 +224,10 @@
     /**
      * @param {Event} evt
      */
-    defaultWheelUp: function()  {},
+    defaultWheelUp: function()  {
 
+    },
+
     /**
      * @param {Event} evt
      */
@@ -150,13 +250,28 @@
             case OpenLayers.Event.KEY_DOWN:
                 this.map.pan(0, 50);
                 break;
+            case OpenLayers.Event.KEY_SHIFT:
+                this.shiftDown = true;
+                this.controlledMode = true;
+                break;
+            case OpenLayers.Event.KEY_CAPSLOCK:
+                this.capsLock = !this.capsLock;
+                this.snappingMode = !this.snappingMode;
+                break;
         }
     },
 
     /**
      * @param {Event} evt
      */
-    defaultKeyUp: function(evt){},
+    defaultKeyUp: function(evt){
+        switch (evt.keyCode){
+            case OpenLayers.Event.KEY_SHIFT:  
+                this.shiftDown = false;
+                this.controlledMode = false;
+                break;
+        }
+    },
 
     /**
      * @param {Event} evt

Modified: sandbox/bertil/lib/OpenLayers/Control/EditionToolbar.js
===================================================================
--- sandbox/bertil/lib/OpenLayers/Control/EditionToolbar.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers/Control/EditionToolbar.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -25,9 +25,11 @@
     },
     
     setTool: function(tool){
-        this.activeTool.dispose();
+        if(this.activeTool){
+            this.activeTool.turnOff();
+        }
         this.activeTool = tool;
-        this.activeTool.observe();
+        this.activeTool.turnOn();
     },
     
     addTools: function(tools) {
@@ -43,29 +45,24 @@
     },
     
     draw: function() {
-    
-        if(!this.activeTool) {
-    	   this.activeTool = this.tools[0];
-        }
-    
-        this.map.events.register( "click", this, this.defaultClick.bindAsEventListener(this));
-        this.map.events.register( "dblclick", this, this.defaultDblClick.bindAsEventListener(this));
-        this.map.events.register( "mousedown", this, this.defaultMouseDown.bindAsEventListener(this));
-        this.map.events.register( "mouseup", this, this.defaultMouseUp.bindAsEventListener(this));
-        this.map.events.register( "mousemove", this, this.defaultMouseMove.bindAsEventListener(this));
-        this.map.events.register( "mouseout", this, this.defaultMouseOut.bindAsEventListener(this));
-    
+        
         for(var i = 0; i < this.tools.length; i++) {
     	   this.tools[i].map = this.map;
+    	   console.log(this.tools[i]);
         }
-    
+   
         OpenLayers.Control.prototype.draw.apply(this);
         this.div.style.position = "absolute";
         this.div.style.top = 140;
         this.div.style.left = 16;
+        
         for(var i = 0; i < this.tools.length; i++) {
     	   this._drawTool(this.tools[i]);
         }
+        
+        if(!this.activeTool) {
+    	   //this.setTool(this.tools[0]);
+        }
     
         return this.div;
     },
@@ -93,7 +90,7 @@
     
     },
     
-    
+/*    
     defaultClick: function(evt){
         this.activeTool.defaultClick(evt);
         OpenLayers.Event.stop(evt);
@@ -175,8 +172,8 @@
     	OpenLayers.Event.stop(e);
         }
     },
+*/    
     
-    
     CLASS_NAME: "OpenLayer.Control.EditionToolbar"
     
     });

Modified: sandbox/bertil/lib/OpenLayers/Control/MouseDefaults.js
===================================================================
--- sandbox/bertil/lib/OpenLayers/Control/MouseDefaults.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers/Control/MouseDefaults.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -24,16 +24,30 @@
      */
     initialize: function() {
         OpenLayers.Control.prototype.initialize.apply(this, arguments);
-        this.observe();
     },
-    observe: function() {
+    
+    turnOn: function() {
+        this.map.events.register( "click", this, this.defaultClick );
+        this.map.events.register( "dblclick", this, this.defaultDblClick );
+        this.map.events.register( "mousedown", this, this.defaultMouseDown );
+        this.map.events.register( "mouseup", this, this.defaultMouseUp );
+        this.map.events.register( "mousemove", this, this.defaultMouseMove );
+        this.map.events.register( "mouseout", this, this.defaultMouseOut );        
+
         this.onWheelEvent = this.onWheelEvent.bindAsEventListener(this);
         OpenLayers.Event.observe(window, "DOMMouseScroll",this.onWheelEvent , false);
         OpenLayers.Event.observe(window, "mousewheel",this.onWheelEvent , false);
         OpenLayers.Event.observe(document, "mousewheel",this.onWheelEvent , false);        
     },
     
-    dispose: function() {
+    turnOff: function() {
+        this.map.events.unregister( "click", this, this.defaultClick );
+        this.map.events.unregister( "dblclick", this, this.defaultDblClick );
+        this.map.events.unregister( "mousedown", this, this.defaultMouseDown );
+        this.map.events.unregister( "mouseup", this, this.defaultMouseUp );
+        this.map.events.unregister( "mousemove", this, this.defaultMouseMove );
+        this.map.events.unregister( "mouseout", this, this.defaultMouseOut );
+
         OpenLayers.Event.stopObserving(window, "DOMMouseScroll",this.onWheelEvent , false);
         OpenLayers.Event.stopObserving(window, "mousewheel",this.onWheelEvent , false);
         OpenLayers.Event.stopObserving(document, "mousewheel",this.onWheelEvent , false);        

Modified: sandbox/bertil/lib/OpenLayers/Events.js
===================================================================
--- sandbox/bertil/lib/OpenLayers/Events.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers/Events.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -15,6 +15,7 @@
   KEY_DELETE:   46,
   KEY_SHIFT:    16,
   KEY_CAPSLOCK: 20,
+  KEY_CTRL: 16,
 
   element: function(event) {
     return event.target || event.srcElement;

Modified: sandbox/bertil/lib/OpenLayers/Feature.js
===================================================================
--- sandbox/bertil/lib/OpenLayers/Feature.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers/Feature.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -29,6 +29,8 @@
     /** @type OpenLayers.Marker */
     marker: null,
 
+    attributes: null,
+
     /** @type OpenLayers.Popup */
     popup: null,
 

Modified: sandbox/bertil/lib/OpenLayers/Geometry.js
===================================================================
--- sandbox/bertil/lib/OpenLayers/Geometry.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers/Geometry.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -1,7 +1,7 @@
 /* Copyright (c) 2006 CampToCamp SA, Bertil Chapuis, published under the BSD license. */
 
-OpenLayers.Geometry = function() {}
-OpenLayers.Geometry.prototype = {
-    CLASS_NAME: "OpenLayers.Geometry"
+OpenLayers.Feature.Geometry = function() {}
+OpenLayers.Feature.Geometry.prototype = {
+    CLASS_NAME: "OpenLayers.Feature.Geometry"
 }
 

Modified: sandbox/bertil/lib/OpenLayers/Renderer/Svg.js
===================================================================
--- sandbox/bertil/lib/OpenLayers/Renderer/Svg.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers/Renderer/Svg.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -10,12 +10,12 @@
     eventmanager: null,
 
     style: {
-    fillColor: "red",
-    fillOpacity: 0.2,
-    strokeColor: "blue",
-    strokeWidth: 0.1,
-    strokeUnit: "%",
-    strokeOpacity: 1
+        fillColor: "red",
+        fillOpacity: 0.2,
+        strokeColor: "blue",
+        strokeWidth: 0.1,
+        strokeUnit: "%",
+        strokeOpacity: 1
     },
 
     initialize: function() {},
@@ -26,14 +26,15 @@
 
     observe: function() {
         this.triggEditionEvent = this.triggEditionEvent.bindAsEventListener(this);
-
-        this.eventManager.register("mousemove", null, this.triggEditionEvent);
-        this.eventManager.register("mouseup", null, this.triggEditionEvent);
-        this.eventManager.register("mousedown", null, this.triggEditionEvent);
-    this.eventManager.register("mouseover", null, this.triggEditionEvent);
-    this.eventManager.register("mouseout", null, this.triggEditionEvent);
-    this.eventManager.register("click", null, this.triggEditionEvent);
-    this.eventManager.register("dblclick", null, this.triggEditionEvent);
+        if (this.eventManager) {
+            this.eventManager.register("mousemove", null, this.triggEditionEvent);
+            this.eventManager.register("mouseup", null, this.triggEditionEvent);
+            this.eventManager.register("mousedown", null, this.triggEditionEvent);
+            this.eventManager.register("mouseover", null, this.triggEditionEvent);
+            this.eventManager.register("mouseout", null, this.triggEditionEvent);
+            this.eventManager.register("click", null, this.triggEditionEvent);
+            this.eventManager.register("dblclick", null, this.triggEditionEvent);
+        }
     },
 
     dispose: function() {
@@ -49,55 +50,55 @@
     },
 
     triggEditionEvent: function(evt) {
-    if (Event.element(evt).geometry) {
-        evt.geometry = Event.element(evt).geometry;
-    }
-    this.eventManager.triggerEvent("edition", evt);
-    OpenLayers.Event.stop(evt);
+        if (Event.element(evt).geometry) {
+            evt.geometry = Event.element(evt).geometry;
+        }
+        this.eventManager.triggerEvent("edition", evt);
+        OpenLayers.Event.stop(evt);
     },
 
     setEventManager: function(eventManager) {
-    this.eventManager = eventManager;
+        this.eventManager = eventManager;
     },
 
     drawRoot: function(element) {
-    if (this.root == null) {
-        this.container = $(element);
-        this.root = this._nodeFactory("g", this.container.id+ "_root");
-        this.root.setAttributeNS(null, "transform", "scale(1, -1)");
-        this.svgRoot = this._nodeFactory("svg", this.container.id+ "_svgRoot");
-        this.svgRoot.appendChild(this.root);
-        this.container.appendChild(this.svgRoot);
-    }
-    return this.root;
+        if (this.root == null) {
+            this.container = $(element);
+            this.root = this._nodeFactory("g", this.container.id+ "_root");
+            this.root.setAttributeNS(null, "transform", "scale(1, -1)");
+            this.svgRoot = this._nodeFactory("svg", this.container.id+ "_svgRoot");
+            this.svgRoot.appendChild(this.root);
+            this.container.appendChild(this.svgRoot);
+        }
+        return this.root;
     },
 
     setMarker:function() {
         var def = this._nodeFactory("def");
-
-    var marker = this._nodeFactory("marker", "vertex");
-    marker.setAttributeNS(null, "viewBox", "0 0 10 10");
-    marker.setAttributeNS(null, "refX", "5");
-    marker.setAttributeNS(null, "refY", "5");
-    marker.setAttributeNS(null, "markerUnits", "strokeWidth");
-    marker.setAttributeNS(null, "markerWidth", "5");
-    marker.setAttributeNS(null, "markerHeight", "5");
-
-    var markerShape = this._nodeFactory("ellipse");
-    markerShape.setAttributeNS(null, "cx", 5);
-    markerShape.setAttributeNS(null, "cy", 5);
-    markerShape.setAttributeNS(null, "rx", 5);
-    markerShape.setAttributeNS(null, "ry", 5);
-    markerShape.setAttributeNS(null, "fill", "blue");
+    
+        var marker = this._nodeFactory("marker", "vertex");
+        marker.setAttributeNS(null, "viewBox", "0 0 10 10");
+        marker.setAttributeNS(null, "refX", "5");
+        marker.setAttributeNS(null, "refY", "5");
+        marker.setAttributeNS(null, "markerUnits", "strokeWidth");
+        marker.setAttributeNS(null, "markerWidth", "5");
+        marker.setAttributeNS(null, "markerHeight", "5");
+    
+        var markerShape = this._nodeFactory("ellipse");
+        markerShape.setAttributeNS(null, "cx", 5);
+        markerShape.setAttributeNS(null, "cy", 5);
+        markerShape.setAttributeNS(null, "rx", 5);
+        markerShape.setAttributeNS(null, "ry", 5);
+        markerShape.setAttributeNS(null, "fill", "blue");
         markerShape.setAttributeNS(null, "fill-opacity", "0.4");
-
+    
         markerShape.setAttributeNS(null, "style", ":hover{color: red;}")
-
-    marker.appendChild(markerShape);
-    def.appendChild(marker);
-    this.svgRoot.appendChild(def);
+    
+        marker.appendChild(markerShape);
+        def.appendChild(marker);
+        this.svgRoot.appendChild(def);
     },
-
+    
     clearRoot: function() {
         if (this.root != null) {
 
@@ -120,25 +121,26 @@
         geometry.id = null;
 
         for (var i = 0; i < node.childNodes.length; i++) {
-        node.removeChild(node.childNodes[i]);
+            node.removeChild(node.childNodes[i]);
         }
 
 
         if (geometry.path) {
-        for (var i = 0; i < geometry.path.length; i++) {
-        var point = this.drawGeometry(geometry.path[i], true);
-        point.geometry.isControlPoint = true;
-            node.appendChild(point);
+            for (var i = 0; i < geometry.path.length; i++) {
+                var point = this.drawGeometry(geometry.path[i], true);
+                point.geometry.isControlPoint = true;
+                node.appendChild(point);
+            }
         }
-        }
 
         var geometryNode = this.drawGeometry(geometry);
         node.appendChild(geometryNode);
 
         geometry.id = id;
 
-        if (!parent)
-    this.root.appendChild(node);
+        if (!parent){
+            this.root.appendChild(node);
+        }
 
         return node;
     },
@@ -147,65 +149,83 @@
 
         var tmpId = geometry.id;
 
-        if (id)
-    geometry.id = id;
+        if (id){
+            geometry.id = id;
+        }
 
-        if (geometry.style)
-    this.style = geometry.style;
+        if (geometry.style){
+            var tmpStyle = geometry.style;
+            this.style = geometry.style;
+        }
 
         switch (geometry.CLASS_NAME) {
-    case "OpenLayers.Geometry.Point":
-        geometry.isControlPoint = false;
-        var node = this.drawPoint(geometry, geometry.id, true);
-        break;
-    case "OpenLayers.Geometry.CubicBezierCurve":
-        var node = this.drawCubicBezierCurve(geometry.path, geometry.id, true);
-        break;
-    case "OpenLayers.Geometry.LineString":
-        var node = this.drawLineString(geometry.path, geometry.id, true);
-        break;
-    case "OpenLayers.Geometry.LinearRing":
-        var node = this.drawLinearRing(geometry.path, geometry.id, true);
-        break;
-    case "OpenLayers.Geometry.Polygon":
-        var node = this.drawPolygon(geometry.path, geometry.id, true);
-        break;
-    case "OpenLayers.Geometry.CubicBezierSurface":
-        var node = this.drawCubicBezierSurface(geometry.path, geometry.id, true);
-        break;
-    case "OpenLayers.Geometry.Rectangle":
-        var node = this.drawRectangle(geometry.x, geometry.y, geometry.width, geometry.height, geometry.id, true);
-        break;
-    default:
-        break;
+            case "OpenLayers.Feature.Geometry.Point":
+                geometry.isControlPoint = false;
+                var node = this.drawPoint(geometry, geometry.id, true);
+                break;
+            case "OpenLayers.Feature.Geometry.CubicBezierCurve":
+                var node = this.drawCubicBezierCurve(geometry.path, geometry.id, true);
+                break;
+            case "OpenLayers.Feature.Geometry.LineSegment":
+            case "OpenLayers.Feature.Geometry.LineString":
+                var node = this.drawLineString(geometry.path, geometry.id, true);
+                break;
+            case "OpenLayers.Feature.Geometry.LinearRing":
+                var node = this.drawLinearRing(geometry.path, geometry.id, true);
+                break;
+            case "OpenLayers.Feature.Geometry.Polygon":
+                var node = this.drawPolygon(geometry.path, geometry.id, true);
+                break;
+            case "OpenLayers.Feature.Geometry.CubicBezierSurface":
+                var node = this.drawCubicBezierSurface(geometry.path, geometry.id, true);
+                break;
+            case "OpenLayers.Feature.Geometry.Rectangle":
+                var node = this.drawRectangle(geometry.x, geometry.y, geometry.width, geometry.height, geometry.id, true);
+                break;
+            default:
+                break;
         }
 
         geometry.id = tmpId;
 
         node.geometry = geometry;
 
-        if (!parent)
+        if (!parent) {
             this.root.appendChild(node);
-
+        }
+         
+        this.style = tmpStyle;
+         
         return node;
     },
 
     eraseElement: function(element) {
         element = $(element);
-        if (element && element.parentNode)
-    element.parentNode.removeChild(element);
+        if (element && element.parentNode) {
+            element.parentNode.removeChild(element);
+        }
         return element;
     },
 
     drawPoint: function(point, id, parent, predecessor) {
         var node = this.drawCircle(point.x, point.y, (this.style.strokeWidth*3)+this.style.strokeUnit, id);
+
+        if (!parent) {
+            this.root.appendChild(node);
+        }
+
         return node;
     },
 
     drawControlPoint: function(point, id, parent, predecessor) {
-        var node = this.drawCircle(point.x, point.y, (this.style.strokeWidth*3)+this.style.strokeUnit, id);
+        var node = this.drawCircle(point.x, point.y, (this.style.strokeWidth*3)+this.style.strokeUnit, id, true);
         node.geometry = point;
         node.geometry.isControlPoint = true;
+        
+        if (!parent) {
+            this.root.appendChild(node);
+        }
+        
         return node;
     },
 
@@ -219,10 +239,11 @@
 
         this._setStyle(node, true, true);
 
-        if (!parent)
-    this.root.appendChild(node);
+        if (!parent) {
+            this.root.appendChild(node);
+        }
 
-    return node;
+        return node;
     },
 
     drawCircle: function(cx, cy, r, id, parent, predecessor) {
@@ -234,8 +255,9 @@
 
         this._setStyle(node, true, true);
 
-        if (!parent)
-    this.root.appendChild(node);
+        if (!parent) {
+            this.root.appendChild(node);
+        }
 
         return node;
     },
@@ -250,135 +272,136 @@
 
         this._setStyle(node, true, true);
 
-        if (!parent)
-    this.root.appendChild(node);
+        if (!parent) {
+            this.root.appendChild(node);
+        }
 
         return node;
     },
 
     drawLineString: function(points, id, parent, predecessor) {
 
-    var node = this._nodeFactory("polyline", id);
+        var node = this._nodeFactory("polyline", id);    
+        node.setAttributeNS(null, "points", points);  
+        this._setStyle(node, false, true);
 
-    node.setAttributeNS(null, "points", points);
+        if (!parent) {
+            this.root.appendChild(node);
+        }
 
-    this._setStyle(node, false, true);
-
-        if (!parent)
-    this.root.appendChild(node);
-
-    return node;
+        return node;
     },
 
     drawLinearRing: function(points, id, parent, predecessor) {
 
-    var node = this._nodeFactory("polygon", id);
-
-    node.setAttributeNS(null, "points", points);
-
-    this._setStyle(node, false, true);
-
-        if (!parent)
-    this.root.appendChild(node);
-
-    return node;
+        var node = this._nodeFactory("polygon", id);    
+        node.setAttributeNS(null, "points", points);  
+        this._setStyle(node, false, true);
+        if (!parent) {
+            this.root.appendChild(node);
+        }
+        return node;
     },
 
     drawPolygon: function(points, id, parent, predecessor) {
-    var node = this._nodeFactory("polygon", id);
-
-    node.setAttributeNS(null, "points", points);
-
+        var node = this._nodeFactory("polygon", id);
+        node.setAttributeNS(null, "points", points);   
         this._setStyle(node, true, true);
-
-        if (!parent)
-    this.root.appendChild(node);
-
-    return node;
+        if (!parent) {
+            this.root.appendChild(node);
+        }
+        return node;
     },
 
     drawCubicBezierCurve: function(points, id, parent, predecessor) {
-    var node = this._nodeFactory("path", id);
-
-    var d = null;
-    for (var i = 0; i < points.length; i++) {
-        if ((i%3)==0 && (i/3)==0)
-        d ="M " +points[i];
-        else if ((i%3)==1)
-        d = d+ " C " +points[i];
-        else
-        d = d+ " " +points[i];
-    }
-    node.setAttributeNS(null, "d", d);
-
-    this._setStyle(node, false, true);
-
-        if (!parent)
-    this.root.appendChild(node);
-
-    return node;
+        var node = this._nodeFactory("path", id);
+    
+        var d = null;
+        for (var i = 0; i < points.length; i++) {
+            if ((i%3) == 0 && (i/3) == 0) {
+                d ="M " +points[i];
+            } else if ((i%3)==1) {
+                d = d+ " C " +points[i];
+            } else {
+                d = d+ " " +points[i];
+            }
+        }
+        node.setAttributeNS(null, "d", d);
+    
+        this._setStyle(node, false, true);
+    
+        if (!parent) {
+            this.root.appendChild(node);
+        }
+    
+        return node;
     },
 
     drawCubicBezierSurface: function(points, id, parent, predecessor) {
-    var node = this._nodeFactory("path", id);
+        var node = this._nodeFactory("path", id);
+    
+        var d = null;
+        for (var i = 0; i < points.length; i++) {
+            if ((i%3)==0 && (i/3)==0) {
+                d ="M " +points[i];
+            } else if ((i%3)==1) {
+                d = d+ " C " +points[i];
+            } else {
+                d = d+ " " +points[i];
+            }
+        }
+    
+        d = d+ " Z";
+    
+        node.setAttributeNS(null, "d", d);
+    
+        this._setStyle(node, true, true);
 
-    var d = null;
-    for (var i = 0; i < points.length; i++) {
-        if ((i%3)==0 && (i/3)==0)
-        d ="M " +points[i];
-        else if ((i%3)==1)
-        d = d+ " C " +points[i];
-        else
-        d = d+ " " +points[i];
-    }
+        if (!parent) {
+            this.root.appendChild(node);
+        }
 
-    d = d+ " Z";
-
-    node.setAttributeNS(null, "d", d);
-
-    this._setStyle(node, true, true);
-
-        if (!parent)
-    this.root.appendChild(node);
-
-    return node;
+        return node;
     },
 
     _setStyle: function(node, isFilled, isStroked) {
         if (isFilled) {
-        node.setAttributeNS(null, "fill", this.style.fillColor);
-        node.setAttributeNS(null, "fill-opacity", this.style.fillOpacity);
-        } else{
+            node.setAttributeNS(null, "fill", this.style.fillColor);
+            node.setAttributeNS(null, "fill-opacity", this.style.fillOpacity);
+        } else {
             node.setAttributeNS(null, "fill", "none");
         }
 
         if (isStroked) {
-        node.setAttributeNS(null, "stroke", this.style.strokeColor);
-        node.setAttributeNS(null, "stroke-opacity", this.style.strokeOpacity);
-        node.setAttributeNS(null, "stroke-width", this.style.strokeWidth+this.style.strokeUnit);
-        } else{
+            node.setAttributeNS(null, "stroke", this.style.strokeColor);
+            node.setAttributeNS(null, "stroke-opacity", this.style.strokeOpacity);
+            node.setAttributeNS(null, "stroke-width", this.style.strokeWidth+this.style.strokeUnit);
+        } else {
             node.setAttributeNS(null, "stroke", "none");
         }
 
-        if (!parent)
-    this.root.appendChild(node);
+        if (!parent) {
+            this.root.appendChild(node);
+        }
 
         return node;
     },
 
     _nodeFactory: function(type, id, parent, predecessor) {
-    if ($(id)) {
-        var node = $(id);
-        if (type != node.nodeName) {
-        node.parentNode.removeChild(node);
-        node = this._nodeFactory(type, id);
+        if ($(id)) {
+            var node = $(id);
+            if (type != node.nodeName) {
+                node.parentNode.removeChild(node);
+                node = this._nodeFactory(type, id);
+            }
+        } else {
+            var node = document.createElementNS(this.svgns, type);
+            if (id) {
+                node.setAttributeNS(null, "id", id);
+                //node.setAttributeNS(null, "style", "");
+            }
         }
-    } else {
-        var node = document.createElementNS(this.svgns, type);
-        if (id)
-        node.setAttributeNS(null, "id", id);
-    }
-    return node;
+        return node;
     },
 
     CLASS_NAME: "OpenLayers.Renderer.Svg"

Modified: sandbox/bertil/lib/OpenLayers/Renderer/Vml.js
===================================================================
--- sandbox/bertil/lib/OpenLayers/Renderer/Vml.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers/Renderer/Vml.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -144,25 +144,25 @@
     this.style = geometry.style;
 
         switch (geometry.CLASS_NAME) {
-    case "OpenLayers.Geometry.Point":
+    case "OpenLayers.Feature.Geometry.Point":
         var node = this.drawPoint(geometry.x, geometry.y, geometry.id, true);
         break;
-    case "OpenLayers.Geometry.CubicBezierCurve":
+    case "OpenLayers.Feature.Geometry.CubicBezierCurve":
         var node = this.drawCubicBezierCurve(geometry.path, geometry.id, true);
         break;
-    case "OpenLayers.Geometry.LineString":
+    case "OpenLayers.Feature.Geometry.LineString":
         var node = this.drawLineString(geometry.path, geometry.id, true);
         break;
-    case "OpenLayers.Geometry.LinearRing":
+    case "OpenLayers.Feature.Geometry.LinearRing":
         var node = this.drawLinearRing(geometry.path, geometry.id, true);
         break;
-    case "OpenLayers.Geometry.Polygon":
+    case "OpenLayers.Feature.Geometry.Polygon":
         var node = this.drawPolygon(geometry.path, geometry.id, true);
         break;
-    case "OpenLayers.Geometry.CubicBezierSurface":
+    case "OpenLayers.Feature.Geometry.CubicBezierSurface":
         var node = this.drawCubicBezierSurface(geometry.path, geometry.id, true);
         break;
-    case "OpenLayers.Geometry.Rectangle":
+    case "OpenLayers.Feature.Geometry.Rectangle":
         var node = this.drawRectangle(geometry.x, geometry.y, geometry.width, geometry.height, geometry.id, true);
         break;
     default:

Modified: sandbox/bertil/lib/OpenLayers/Style.js
===================================================================
--- sandbox/bertil/lib/OpenLayers/Style.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers/Style.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -3,4 +3,30 @@
 OpenLayers.Style = OpenLayers.Class.create();
 OpenLayers.Style.prototype = {
     
+    fillColor: null,
+    
+    fillOpacity: null,
+    
+    strokeColor: null,
+    
+    strokeOpacity: null,
+    
+    strokeWidth: null,
+    
+    strokeWidthUnit: null,
+    
+    hoverFillColor: null,
+    
+    hoverFillOpacity: null,
+    
+    hoverStrokeColor: null,
+    
+    hoverStrokeOpacity: null,
+    
+    hoverStrokeWidth: null,
+    
+    hoverStrokeWidthUnit: null,
+    
+    initialize: function(){}
+    
 }
\ No newline at end of file

Modified: sandbox/bertil/lib/OpenLayers.js
===================================================================
--- sandbox/bertil/lib/OpenLayers.js	2006-11-04 01:15:03 UTC (rev 1761)
+++ sandbox/bertil/lib/OpenLayers.js	2006-11-06 13:17:03 UTC (rev 1762)
@@ -102,17 +102,18 @@
         "OpenLayers/Control/LayerSwitcher.js",
         "OpenLayers/Control/Edition.js",
         "OpenLayers/Control/EditionToolbar.js",
-        "OpenLayers/Control/DrawLinearPath.js",
-        "OpenLayers/Control/DrawCurvePath.js",
-        "OpenLayers/Control/Selection.js",
-        "OpenLayers/Geometry.js",
-        "OpenLayers/Geometry/Component.js",
-        "OpenLayers/Geometry/CubicBezierCurve.js",
-        "OpenLayers/Geometry/CubicBezierSurface.js",
-        "OpenLayers/Geometry/LinearRing.js",
-        "OpenLayers/Geometry/LineString.js",
-        "OpenLayers/Geometry/Point.js",
-        "OpenLayers/Geometry/Polygon.js",
+        "OpenLayers/Control/Edition/DrawLinearPath.js",
+        "OpenLayers/Control/Edition/DrawCurvePath.js",
+        "OpenLayers/Control/Edition/Selection.js",
+        "OpenLayers/Feature/Geometry.js",
+        "OpenLayers/Feature/Geometry/Component.js",
+        "OpenLayers/Feature/Geometry/CubicBezierCurve.js",
+        "OpenLayers/Feature/Geometry/CubicBezierSurface.js",
+        "OpenLayers/Feature/Geometry/LinearRing.js",
+        "OpenLayers/Feature/Geometry/LineString.js",
+        "OpenLayers/Feature/Geometry/LineSegment.js",
+        "OpenLayers/Feature/Geometry/Point.js",
+        "OpenLayers/Feature/Geometry/Polygon.js",
         "OpenLayers/Renderer.js",
         "OpenLayers/Renderer/Svg.js",
         "OpenLayers/Renderer/Vml.js",



More information about the Commits mailing list