replaced Renderer.Elements' minimumSymbolizer and Renderer.Canvas' symbolizer defaults with a new Renderer.defaultSymbolizer. r=elemoine (closes #2584)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@10316 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -303,6 +303,64 @@ OpenLayers.Renderer = OpenLayers.Class({
|
||||
getRenderLayerId: function() {
|
||||
return this.container.id;
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: applyDefaultSymbolizer
|
||||
*
|
||||
* Parameters:
|
||||
* symbolizer - {Object}
|
||||
*
|
||||
* Returns:
|
||||
* {Object}
|
||||
*/
|
||||
applyDefaultSymbolizer: function(symbolizer) {
|
||||
var result = OpenLayers.Util.extend({},
|
||||
OpenLayers.Renderer.defaultSymbolizer);
|
||||
if(symbolizer.stroke !== true &&
|
||||
symbolizer.strokeWidth === undefined &&
|
||||
symbolizer.strokeColor === undefined &&
|
||||
symbolizer.strokeOpacity === undefined) {
|
||||
delete result.strokeWidth;
|
||||
delete result.strokeColor;
|
||||
}
|
||||
if(symbolizer.fill !== true &&
|
||||
symbolizer.fillColor === undefined &&
|
||||
symbolizer.fillOpacity === undefined) {
|
||||
delete result.fillColor;
|
||||
}
|
||||
OpenLayers.Util.extend(result, symbolizer);
|
||||
return result;
|
||||
},
|
||||
|
||||
CLASS_NAME: "OpenLayers.Renderer"
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Constant: OpenLayers.Renderer.defaultSymbolizer
|
||||
* {Object} Properties from this symbolizer will be applied to symbolizers
|
||||
* with missing properties. This can also be used to set a global
|
||||
* symbolizer default in OpenLayers. To be SLD 1.x compliant, add the
|
||||
* following code before rendering any vector features:
|
||||
* (code)
|
||||
* OpenLayers.Renderer.defaultSymbolizer = {
|
||||
* fillColor: "#808080",
|
||||
* fillOpacity: 1,
|
||||
* strokeColor: "#000000",
|
||||
* strokeOpacity: 1,
|
||||
* strokeWidth: 1,
|
||||
* strokeDashstyle: "solid",
|
||||
* pointRadius: 3,
|
||||
* graphicName: "square"
|
||||
* };
|
||||
* (end)
|
||||
*/
|
||||
OpenLayers.Renderer.defaultSymbolizer = {
|
||||
fillColor: "#000000",
|
||||
strokeColor: "#000000",
|
||||
strokeWidth: 2,
|
||||
fillOpacity: 1,
|
||||
strokeOpacity: 1,
|
||||
strokeDashstyle: "solid",
|
||||
pointRadius: 0
|
||||
};
|
||||
|
||||
|
||||
@@ -118,16 +118,9 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
* style - {<Object>}
|
||||
*/
|
||||
drawFeature: function(feature, style) {
|
||||
if(style == null) {
|
||||
style = feature.style;
|
||||
}
|
||||
style = OpenLayers.Util.extend({
|
||||
'fillColor': '#000000',
|
||||
'strokeColor': '#000000',
|
||||
'strokeWidth': 2,
|
||||
'fillOpacity': 1,
|
||||
'strokeOpacity': 1
|
||||
}, style);
|
||||
style = style || feature.style;
|
||||
style = this.applyDefaultSymbolizer(style);
|
||||
|
||||
this.features[feature.id] = [feature, style];
|
||||
if (feature.geometry) {
|
||||
this.geometryMap[feature.geometry.id] = feature.id;
|
||||
|
||||
@@ -394,18 +394,6 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
*/
|
||||
LABEL_ID_SUFFIX: "_label",
|
||||
|
||||
/**
|
||||
* Property: minimumSymbolizer
|
||||
* {Object}
|
||||
*/
|
||||
minimumSymbolizer: {
|
||||
strokeLinecap: "round",
|
||||
strokeOpacity: 1,
|
||||
strokeDashstyle: "solid",
|
||||
fillOpacity: 1,
|
||||
pointRadius: 0
|
||||
},
|
||||
|
||||
/**
|
||||
* Constructor: OpenLayers.Renderer.Elements
|
||||
*
|
||||
@@ -655,7 +643,7 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
||||
*/
|
||||
drawGeometryNode: function(node, geometry, style) {
|
||||
style = style || node._style;
|
||||
OpenLayers.Util.applyDefaults(style, this.minimumSymbolizer);
|
||||
style = this.applyDefaultSymbolizer(style);
|
||||
|
||||
var options = {
|
||||
'isFilled': style.fill === undefined ?
|
||||
|
||||
@@ -367,7 +367,7 @@ OpenLayers.Renderer.SVG = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
||||
node.setAttributeNS(null, "stroke", style.strokeColor);
|
||||
node.setAttributeNS(null, "stroke-opacity", style.strokeOpacity);
|
||||
node.setAttributeNS(null, "stroke-width", style.strokeWidth * widthFactor);
|
||||
node.setAttributeNS(null, "stroke-linecap", style.strokeLinecap);
|
||||
node.setAttributeNS(null, "stroke-linecap", style.strokeLinecap || "round");
|
||||
// Hard-coded linejoin for now, to make it look the same as in VML.
|
||||
// There is no strokeLinejoin property yet for symbolizers.
|
||||
node.setAttributeNS(null, "stroke-linejoin", "round");
|
||||
|
||||
@@ -328,7 +328,8 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, {
|
||||
node.appendChild(stroke);
|
||||
}
|
||||
stroke.opacity = style.strokeOpacity;
|
||||
stroke.endcap = !style.strokeLinecap || style.strokeLinecap == 'butt' ? 'flat' : style.strokeLinecap;
|
||||
stroke.endcap = style.strokeLinecap == 'butt' ? 'flat' :
|
||||
(style.strokeLinecap || 'round');
|
||||
stroke.dashstyle = this.dashStyle(style);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user