[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