Merge all changes from the naturaldocs sandbox. This brings all the work that

has been done in the NaturalDocs branch back to trunk. Thanks to everyone who
helped out in making this happen. (I could list people, but the list would
be long, and I'm already mentally on vacation.)


git-svn-id: http://svn.openlayers.org/trunk/openlayers@3545 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2007-06-29 15:59:20 +00:00
parent f1c61fd0d6
commit 3948913bfc
107 changed files with 8658 additions and 4011 deletions

View File

@@ -3,25 +3,35 @@
* for the full text of the license. */
/**
* @class
* @requires OpenLayers/Renderer/Elements.js
*
* Class: OpenLayers.Renderer.VML
* Render vector features in browsers with VML capability. Construct a new
* VML renderer with the <OpenLayers.Renderer.VML> constructor.
*
* Note that for all calculations in this class, we use toFixed() to round a
* float value to an integer. This is done because it seems that VML doesn't
* support float values.
*
* @requires OpenLayers/Renderer/Elements.js
* Inherits from:
* - <OpenLayers.Renderer.Elements>
*/
OpenLayers.Renderer.VML = OpenLayers.Class.create();
OpenLayers.Renderer.VML.prototype =
OpenLayers.Class.inherit(OpenLayers.Renderer.Elements, {
/** @type String */
/**
* Property: xmlns
* {String} XML Namespace URN
*/
xmlns: "urn:schemas-microsoft-com:vml",
/**
* @constructor
*
* @param {String} containerID
* Constructor: OpenLayers.Renderer.VML
* Create a new VML renderer.
*
* Parameters:
* containerID - {String} The id for the element that contains the renderer
*/
initialize: function(containerID) {
if (!this.supported()) {
@@ -36,15 +46,19 @@ OpenLayers.Renderer.VML.prototype =
},
/**
*
* APIMethod: destroy
* Deconstruct the renderer.
*/
destroy: function() {
OpenLayers.Renderer.Elements.prototype.destroy.apply(this, arguments);
},
/**
* @returns Whether or not the browser supports the VML renderer
* @type Boolean
* APIMethod: supported
* Determine whether a browser supports this renderer.
*
* Return:
* {Boolean} The browser supports the VML renderer
*/
supported: function() {
var supported = document.namespaces;
@@ -52,7 +66,11 @@ OpenLayers.Renderer.VML.prototype =
},
/**
* @param {OpenLayers.Bounds} extent
* Method: setExtent
* Set the renderer's extent
*
* Parameters:
* extent - {<OpenLayers.Bounds>}
*/
setExtent: function(extent) {
OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,
@@ -70,9 +88,11 @@ OpenLayers.Renderer.VML.prototype =
/**
* Method: setSize
* Set the size of the drawing surface
*
* @param size {OpenLayers.Size} the size of the drawing surface
* Parameters:
* size - {<OpenLayers.Size>} the size of the drawing surface
*/
setSize: function(size) {
OpenLayers.Renderer.prototype.setSize.apply(this, arguments);
@@ -84,12 +104,15 @@ OpenLayers.Renderer.VML.prototype =
this.root.style.height = "100%";
},
/**
* @param geometry {OpenLayers.Geometry}
*
* @returns The corresponding node type for the specified geometry
* @type String
* @private
/**
* Method: getNodeType
* Get the noode type for a geometry
*
* Parameters:
* geometry - {<OpenLayers.Geometry>}
*
* Return:
* {String} The corresponding node type for the specified geometry
*/
getNodeType: function(geometry) {
var nodeType = null;
@@ -114,15 +137,16 @@ OpenLayers.Renderer.VML.prototype =
},
/**
* Method: setStyle
* Use to set all the style attributes to a VML node.
*
* @param {DOMElement} node
* @param {Object} style
* @param {Object} options
* @option isFilled {boolean}
* @option isStroked {boolean}
* @param {OpenLayers.Geometry} geometry
* @private
* Parameters:
* node - {DOMElement}
* style - {Object}
* options - {Object}
* isFilled - {Boolean}
* isStroked - {Boolean}
* geometry - {<OpenLayers.Geometry>}
*/
setStyle: function(node, style, options, geometry) {
style = style || node._style;
@@ -175,12 +199,14 @@ OpenLayers.Renderer.VML.prototype =
},
/** Get the geometry's bounds, convert it to our vml coordinate system,
* then set the node's position, size, and local coordinate system.
/**
* Method: setNodeDimension
* Get the geometry's bounds, convert it to our vml coordinate system,
* then set the node's position, size, and local coordinate system.
*
* @param {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @private
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
*/
setNodeDimension: function(node, geometry) {
@@ -204,14 +230,16 @@ OpenLayers.Renderer.VML.prototype =
node.coordsize = scaledBox.getWidth()+ " " + scaledBox.getHeight();
},
/**
* @private
/**
* Method: createNode
* Create a new node
*
* @param {String} type Kind of node to draw
* @param {String} id Id for node
*
* @returns A new node of the given type and id
* @type DOMElement
* Parameters:
* type - {String} Kind of node to draw
* id - {String} Id for node
*
* Return:
* {DOMElement} A new node of the given type and id
*/
createNode: function(type, id) {
var node = document.createElement(type);
@@ -221,14 +249,16 @@ OpenLayers.Renderer.VML.prototype =
return node;
},
/**
* @private
/**
* Method: nodeTypeCompare
* Determine whether a node is of a given type
*
* @param {String} type Kind of node to draw
* @param {String} id Id for node
*
* @returns Whether or not the specified node is of the specified type
* @type Boolean
* Parameters:
* type - {String} Kind of node to draw
* id - {String} Id for node
*
* Return:
* {Boolean} Whether or not the specified node is of the specified type
*/
nodeTypeCompare: function(node, type) {
@@ -250,9 +280,11 @@ OpenLayers.Renderer.VML.prototype =
},
/**
* @returns The specific render engine's root element
* @type DOMElement
* @private
* Method: createRenderRoot
* Create the renderer root
*
* Return:
* {DOMElement} The specific render engine's root element
*/
createRenderRoot: function() {
var id = this.container.id + "_vmlRoot";
@@ -261,9 +293,11 @@ OpenLayers.Renderer.VML.prototype =
},
/**
* @returns The main root element to which we'll add vectors
* @type DOMElement
* @private
* Method: createRoot
* Create the main root element
*
* Return:
* {DOMElement} The main root element to which we'll add vectors
*/
createRoot: function() {
var id = this.container.id + "_root";
@@ -278,20 +312,26 @@ OpenLayers.Renderer.VML.prototype =
**************************************/
/**
* @param {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @private
* Method: drawPoint
* Render a point
*
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
*/
drawPoint: function(node, geometry) {
this.drawCircle(node, geometry, 1);
},
/** Size and Center a circle given geometry (x,y center) and radius
/**
* Method: drawCircle
* Render a circle.
* Size and Center a circle given geometry (x,y center) and radius
*
* @param {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @param {float} radius
* @private
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
* radius - {float}
*/
drawCircle: function(node, geometry, radius) {
@@ -308,28 +348,37 @@ OpenLayers.Renderer.VML.prototype =
/**
* @param {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @private
* Method: drawLineString
* Render a linestring.
*
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
*/
drawLineString: function(node, geometry) {
this.drawLine(node, geometry, false);
},
/**
* @param {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @private
* Method: drawLinearRing
* Render a linearring
*
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
*/
drawLinearRing: function(node, geometry) {
this.drawLine(node, geometry, true);
},
/**
* @param {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @param {Boolean} closeLine Close the line? (make it a ring?)
* @private
* Method: DrawLine
* Render a line.
*
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
* closeLine - {Boolean} Close the line? (make it a ring?)
*/
drawLine: function(node, geometry, closeLine) {
@@ -352,9 +401,12 @@ OpenLayers.Renderer.VML.prototype =
},
/**
* @parm {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @private
* Method: drawPolygon
* Render a polygon
*
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
*/
drawPolygon: function(node, geometry) {
this.setNodeDimension(node, geometry);
@@ -381,9 +433,12 @@ OpenLayers.Renderer.VML.prototype =
},
/**
* @parm {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @private
* Method: drawRectangle
* Render a rectangle
*
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
*/
drawRectangle: function(node, geometry) {
var resolution = this.getResolution();
@@ -397,9 +452,11 @@ OpenLayers.Renderer.VML.prototype =
/**
* @parm {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @private
* Method: drawCurve
*
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
*/
drawCurve: function(node, geometry) {
this.setNodeDimension(node, geometry);
@@ -424,9 +481,11 @@ OpenLayers.Renderer.VML.prototype =
},
/**
* @parm {DOMElement} node
* @param {OpenLayers.Geometry} geometry
* @private
* Method: drawSurface
*
* Parameters:
* node - {DOMElement}
* geometry - {<OpenLayers.Geometry>}
*/
drawSurface: function(node, geometry) {
@@ -450,5 +509,6 @@ OpenLayers.Renderer.VML.prototype =
node.path = path;
},
/** @final @type String*/
CLASS_NAME: "OpenLayers.Renderer.VML"
});