Adding point, line, polygon, text, and raster symbolizer constructors. This paves the way for rendering multiple symbolizers per rule. The SLD parser now successfully round-trips documents with multiple symbolizers and multiple FeatureTypeStyle elements (through the symbolizer zIndex property). The Style2 (yes, ack) constructor is used to represent a collection of rules with multiple symbolizers. Style2 objects are currently only used by the SLD parser if the multipleSymbolizer property is set to true. Future enhancements to the renderers can be made to account for multiple symbolizers. r=ahocevar (closes #2760).

git-svn-id: http://svn.openlayers.org/trunk/openlayers@10560 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2010-08-02 19:49:52 +00:00
parent 9fd7463680
commit 6c0952934f
21 changed files with 1498 additions and 55 deletions

View File

@@ -0,0 +1,64 @@
/**
* @requires OpenLayers/Symbolizer.js
*/
/**
* Class: OpenLayers.Symbolizer.Line
* A symbolizer used to render line features.
*/
OpenLayers.Symbolizer.Line = OpenLayers.Class(OpenLayers.Symbolizer, {
/**
* APIProperty: strokeColor
* {String} Color for line stroke. This is a RGB hex value (e.g. "#ff0000"
* for red).
*/
strokeColor: null,
/**
* APIProperty: strokeOpacity
* {Number} Stroke opacity (0-1).
*/
strokeOpacity: null,
/**
* APIProperty: strokeWidth
* {Number} Pixel stroke width.
*/
strokeWidth: null,
/**
* APIProperty: strokeLinecap
* {String} Stroke cap type ("butt", "round", or "square").
*/
strokeLinecap: null,
/**
* Property: strokeDashstyle
* {String} Stroke dash style according to the SLD spec. Note that the
* OpenLayers values for strokeDashstyle ("dot", "dash", "dashdot",
* "longdash", "longdashdot", or "solid") will not work in SLD, but
* most SLD patterns will render correctly in OpenLayers.
*/
strokeDashstyle: "solid",
/**
* Constructor: OpenLayers.Symbolizer.Line
* Create a symbolizer for rendering lines.
*
* Parameters:
* config - {Object} An object containing properties to be set on the
* symbolizer. Any documented symbolizer property can be set at
* construction.
*
* Returns:
* A new line symbolizer.
*/
initialize: function(config) {
OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
},
CLASS_NAME: "OpenLayers.Symbolizer.Line"
});

View File

@@ -0,0 +1,136 @@
/**
* @requires OpenLayers/Symbolizer.js
*/
/**
* Class: OpenLayers.Symbolizer.Point
* A symbolizer used to render point features.
*/
OpenLayers.Symbolizer.Point = OpenLayers.Class(OpenLayers.Symbolizer, {
/**
* APIProperty: strokeColor
* {String} Color for line stroke. This is a RGB hex value (e.g. "#ff0000"
* for red).
*/
strokeColor: null,
/**
* APIProperty: strokeOpacity
* {Number} Stroke opacity (0-1).
*/
strokeOpacity: null,
/**
* APIProperty: strokeWidth
* {Number} Pixel stroke width.
*/
strokeWidth: null,
/**
* APIProperty: strokeLinecap
* {String} Stroke cap type ("butt", "round", or "square").
*/
strokeLinecap: null,
/**
* Property: strokeDashstyle
* {String} Stroke dash style according to the SLD spec. Note that the
* OpenLayers values for strokeDashstyle ("dot", "dash", "dashdot",
* "longdash", "longdashdot", or "solid") will not work in SLD, but
* most SLD patterns will render correctly in OpenLayers.
*/
strokeDashstyle: "solid",
/**
* APIProperty: fillColor
* {String} RGB hex fill color (e.g. "#ff0000" for red).
*/
fillColor: null,
/**
* APIProperty: fillOpacity
* {Number} Fill opacity (0-1).
*/
fillOpacity: null,
/**
* APIProperty: pointRadius
* {Number} Pixel point radius.
*/
pointRadius: null,
/**
* APIProperty: externalGraphic
* {String} Url to an external graphic that will be used for rendering
* points.
*/
externalGraphic: null,
/**
* APIProperty: graphicWidth
* {Number} Pixel width for sizing an external graphic.
*/
graphicWidth: null,
/**
* APIProperty: graphicHeight
* {Number} Pixel height for sizing an external graphic.
*/
graphicHeight: null,
/**
* APIProperty: graphicOpacity
* {Number} Opacity (0-1) for an external graphic.
*/
graphicOpacity: null,
/**
* APIProperty: graphicXOffset
* {Number} Pixel offset along the positive x axis for displacing an
* external graphic.
*/
graphicXOffset: null,
/**
* APIProperty: graphicYOffset
* {Number} Pixel offset along the positive y axis for displacing an
* external graphic.
*/
graphicYOffset: null,
/**
* APIProperty: rotation
* {Number} The rotation of a graphic in the clockwise direction about its
* center point (or any point off center as specified by
* <graphicXOffset> and <graphicYOffset>).
*/
rotation: null,
/**
* APIProperty: graphicName
* {String} Named graphic to use when rendering points. Supported values
* include "circle", "square", "star", "x", "cross", and "triangle".
*/
graphicName: null,
/**
* Constructor: OpenLayers.Symbolizer.Point
* Create a symbolizer for rendering points.
*
* Parameters:
* config - {Object} An object containing properties to be set on the
* symbolizer. Any documented symbolizer property can be set at
* construction.
*
* Returns:
* A new point symbolizer.
*/
initialize: function(config) {
OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
},
CLASS_NAME: "OpenLayers.Symbolizer.Point"
});

View File

@@ -0,0 +1,76 @@
/**
* @requires OpenLayers/Symbolizer.js
*/
/**
* Class: OpenLayers.Symbolizer.Polygon
* A symbolizer used to render line features.
*/
OpenLayers.Symbolizer.Polygon = OpenLayers.Class(OpenLayers.Symbolizer, {
/**
* APIProperty: strokeColor
* {String} Color for line stroke. This is a RGB hex value (e.g. "#ff0000"
* for red).
*/
strokeColor: null,
/**
* APIProperty: strokeOpacity
* {Number} Stroke opacity (0-1).
*/
strokeOpacity: null,
/**
* APIProperty: strokeWidth
* {Number} Pixel stroke width.
*/
strokeWidth: null,
/**
* APIProperty: strokeLinecap
* {String} Stroke cap type ("butt", "round", or "square").
*/
strokeLinecap: null,
/**
* Property: strokeDashstyle
* {String} Stroke dash style according to the SLD spec. Note that the
* OpenLayers values for strokeDashstyle ("dot", "dash", "dashdot",
* "longdash", "longdashdot", or "solid") will not work in SLD, but
* most SLD patterns will render correctly in OpenLayers.
*/
strokeDashstyle: "solid",
/**
* APIProperty: fillColor
* {String} RGB hex fill color (e.g. "#ff0000" for red).
*/
fillColor: null,
/**
* APIProperty: fillOpacity
* {Number} Fill opacity (0-1).
*/
fillOpacity: null,
/**
* Constructor: OpenLayers.Symbolizer.Polygon
* Create a symbolizer for rendering polygons.
*
* Parameters:
* config - {Object} An object containing properties to be set on the
* symbolizer. Any documented symbolizer property can be set at
* construction.
*
* Returns:
* A new polygon symbolizer.
*/
initialize: function(config) {
OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
},
CLASS_NAME: "OpenLayers.Symbolizer.Polygon"
});

View File

@@ -0,0 +1,29 @@
/**
* @requires OpenLayers/Symbolizer.js
*/
/**
* Class: OpenLayers.Symbolizer.Raster
* A symbolizer used to render raster images.
*/
OpenLayers.Symbolizer.Raster = OpenLayers.Class(OpenLayers.Symbolizer, {
/**
* Constructor: OpenLayers.Symbolizer.Raster
* Create a symbolizer for rendering rasters.
*
* Parameters:
* config - {Object} An object containing properties to be set on the
* symbolizer. Any documented symbolizer property can be set at
* construction.
*
* Returns:
* A new raster symbolizer.
*/
initialize: function(config) {
OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
},
CLASS_NAME: "OpenLayers.Symbolizer.Raster"
});

View File

@@ -0,0 +1,60 @@
/**
* @requires OpenLayers/Symbolizer.js
*/
/**
* Class: OpenLayers.Symbolizer.Text
* A symbolizer used to render text labels for features.
*/
OpenLayers.Symbolizer.Text = OpenLayers.Class(OpenLayers.Symbolizer, {
/**
* APIProperty: label
* {String} The text for the label.
*/
label: null,
/**
* APIProperty: fontFamily
* {String} The font family for the label.
*/
fontFamily: null,
/**
* APIProperty: fontSize
* {String} The font size for the label.
*/
fontSize: null,
/**
* APIProperty: fontWeight
* {String} The font weight for the label.
*/
fontWeight: null,
/**
* Property: fontStyle
* {String} The font style for the label.
*/
fontStyle: null,
/**
* Constructor: OpenLayers.Symbolizer.Text
* Create a symbolizer for rendering text labels.
*
* Parameters:
* config - {Object} An object containing properties to be set on the
* symbolizer. Any documented symbolizer property can be set at
* construction.
*
* Returns:
* A new text symbolizer.
*/
initialize: function(config) {
OpenLayers.Symbolizer.prototype.initialize.apply(this, arguments);
},
CLASS_NAME: "OpenLayers.Symbolizer.Text"
});