OpenLayers OpenLayers

Changeset 5312

Show
Ignore:
Timestamp:
12/01/07 06:04:26 (1 year ago)
Author:
ahocevar
Message:

unapplied #1172

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sandbox/ahocevar/styles/lib/OpenLayers/Renderer/Elements.js

    r5273 r5312  
    8585     * Method: getNodeType 
    8686     * This function is in charge of asking the specific renderer which type 
    87      *     of node to create for the given geometry and style. All geometries 
    88      *     in an Elements-based renderer consist of one node and som
    89      *     attributes. We have the nodeFactory() function which creates a node 
    90      *     for us, but it takes a 'type' as input, and that is precisely what 
    91      *     this function tells us.   
     87     *     of node to create for the given geometry. All geometries in an  
     88     *     Elements-based renderer consist of one node and some attributes. W
     89     *     have the nodeFactory() function which creates a node for us, but it 
     90     *     takes a 'type' as input, and that is precisely what this function  
     91     *     tells us.   
    9292     *   
    9393     * Parameters: 
    9494     * geometry - {<OpenLayers.Geometry>} 
    95      * style - {Object} 
    9695     *  
    9796     * Returns: 
    9897     * {String} The corresponding node type for the specified geometry 
    9998     */ 
    100     getNodeType: function(geometry, style) { }, 
     99    getNodeType: function(geometry) { }, 
    101100 
    102101    /**  
     
    125124        if (style.display != "none") { 
    126125            //first we create the basic node and add it to the root 
    127             var nodeType = this.getNodeType(geometry, style); 
     126            var nodeType = this.getNodeType(geometry); 
    128127            var node = this.nodeFactory(geometry.id, nodeType); 
    129128            node._featureId = featureId; 
     
    134133            node = this.drawGeometryNode(node, geometry); 
    135134            this.root.appendChild(node); 
    136             this.postDraw(node); 
    137135        } else { 
    138136            node = OpenLayers.Util.getElement(geometry.id); 
     
    192190        return this.setStyle(node, style, options, geometry); 
    193191    }, 
    194      
    195     /** 
    196      * Method: postDraw 
    197      * Things that have do be done after the geometry node is appended 
    198      * to its parent node. To be overridden by subclasses. 
    199      *  
    200      * Parameters: 
    201      * node - {DOMElement} 
    202      */ 
    203     postDraw: function(node) {}, 
    204192     
    205193    /** 
  • sandbox/ahocevar/styles/lib/OpenLayers/Renderer/SVG.js

    r5272 r5312  
    148148     * Parameters: 
    149149     * geometry - {<OpenLayers.Geometry>} 
    150      * style - {Object} 
    151150     *  
    152151     * Returns: 
    153152     * {String} The corresponding node type for the specified geometry 
    154153     */ 
    155     getNodeType: function(geometry, style) { 
     154    getNodeType: function(geometry) { 
    156155        var nodeType = null; 
    157156        switch (geometry.CLASS_NAME) { 
    158157            case "OpenLayers.Geometry.Point": 
    159                 nodeType = style.externalGraphic ? "image" : "circle"; 
     158                nodeType = "circle"; 
    160159                break; 
    161160            case "OpenLayers.Geometry.Rectangle": 
     
    198197        if (node._geometryClass == "OpenLayers.Geometry.Point") { 
    199198            if (style.externalGraphic) { 
     199                // remove old node 
     200                var id = node.getAttributeNS(null, "id"); 
    200201                var x = parseFloat(node.getAttributeNS(null, "cx")); 
    201202                var y = parseFloat(node.getAttributeNS(null, "cy")); 
     203                var _featureId = node._featureId; 
     204                var _geometryClass = node._geometryClass; 
     205                var _style = node._style; 
    202206                 
     207                // create new image node 
     208                node = this.createNode("image", id); 
     209                node._featureId = _featureId; 
     210                node._geometryClass = _geometryClass; 
     211                node._style = _style; 
     212 
     213                // now style the new node 
    203214                if (style.graphicWidth && style.graphicHeight) { 
    204215                  node.setAttributeNS(null, "preserveAspectRatio", "none"); 
     
    212223                var yOffset = (style.graphicYOffset != undefined) ? 
    213224                    style.graphicYOffset : -(0.5 * height); 
    214  
    215225                var opacity = style.graphicOpacity || style.fillOpacity; 
    216226                 
  • sandbox/ahocevar/styles/lib/OpenLayers/Renderer/VML.js

    r5278 r5312  
    106106    /** 
    107107     * Method: getNodeType 
    108      * Get the noode type for a geometry and style 
    109      * 
    110      * Parameters: 
    111      * geometry - {<OpenLayers.Geometry>} 
    112      * style - {Object} 
     108     * Get the noode type for a geometry 
     109     * 
     110     * Parameters: 
     111     * geometry - {<OpenLayers.Geometry>} 
    113112     * 
    114113     * Returns: 
    115114     * {String} The corresponding node type for the specified geometry 
    116115     */ 
    117     getNodeType: function(geometry, style) { 
     116    getNodeType: function(geometry) { 
    118117        var nodeType = null; 
    119118        switch (geometry.CLASS_NAME) { 
    120119            case "OpenLayers.Geometry.Point": 
    121                 nodeType = style.externalGraphic ? "v:rect" : "v:oval"; 
     120                nodeType = "v:oval"; 
    122121                break; 
    123122            case "OpenLayers.Geometry.Rectangle": 
     
    155154        if (node._geometryClass == "OpenLayers.Geometry.Point") { 
    156155            if (style.externalGraphic) { 
     156                // remove old node 
     157                var id = node.id; 
     158                var _featureId = node._featureId; 
     159                var _geometryClass = node._geometryClass; 
     160                var _style = node._style; 
     161                 
     162                // create new image node 
     163                node = this.createNode("v:rect", id); 
     164                var fill = this.createNode("v:fill", id+"_image"); 
     165                node.appendChild(fill); 
     166                node._featureId = _featureId; 
     167                node._geometryClass = _geometryClass; 
     168                node._style = _style; 
     169                 
     170                fill.src = style.externalGraphic; 
     171                fill.type = "frame"; 
     172                node.style.flip = "y"; 
     173                 
     174                if (!(style.graphicWidth && style.graphicHeight)) { 
     175                  fill.aspect = "atmost"; 
     176                } 
     177                 
     178                // now style the new node 
    157179                var width = style.graphicWidth || style.graphicHeight; 
    158180                var height = style.graphicHeight || style.graphicWidth; 
     
    171193                node.style.height = height;     
    172194                 
    173                 // modify style/options for fill and stroke styling below 
     195                // modify fill style for rect styling below 
    174196                style.fillColor = "none"; 
    175                 options.isStroked = false
     197                style.strokeColor = "none"
    176198                          
    177199            } else { 
     
    195217            if (!fill) { 
    196218                fill = this.createNode('v:fill', node.id + "_fill"); 
    197  
    198                 if (style.fillOpacity) { 
    199                     fill.setAttribute("opacity", style.fillOpacity); 
    200                 } 
    201  
    202                 if (node._geometryClass == "OpenLayers.Geometry.Point" && 
    203                         style.externalGraphic) { 
    204  
    205                     // override fillOpacity 
    206                     if (style.graphicOpacity) { 
    207                         fill.setAttribute("opacity", style.graphicOpacity); 
    208                     } 
    209                      
    210                     fill.setAttribute("src", style.externalGraphic); 
    211                     fill.setAttribute("type", "frame"); 
    212                     node.style.flip = "y"; 
    213                      
    214                     if (!(style.graphicWidth && style.graphicHeight)) { 
    215                       fill.aspect = "atmost"; 
    216                     } 
    217                 } 
    218219                node.appendChild(fill); 
     220            } 
     221            // if graphicOpacity is set use it in priority for external graphic 
     222            if (node._geometryClass == "OpenLayers.Geometry.Point" && 
     223                style.externalGraphic && 
     224                style.graphicOpacity) { 
     225                fill.setAttribute("opacity", style.graphicOpacity); 
     226            } else if (style.fillOpacity) { 
     227                fill.setAttribute("opacity", style.fillOpacity); 
    219228            } 
    220229        } 
     
    248257        return node; 
    249258    }, 
    250  
    251     /** 
    252      * Method: postDraw 
    253      * Some versions of Internet Explorer seem to be unable to set fillcolor 
    254      * and strokecolor to "none" correctly before the fill node is appended to 
    255      * a visible vml node. This method takes care of that and sets fillcolor 
    256      * and strokecolor again if needed. 
    257      *  
    258      * Parameters: 
    259      * node - {DOMElement} 
    260      */ 
    261     postDraw: function(node) { 
    262         var fillColor = node._style.fillColor; 
    263         var strokeColor = node._style.strokeColor; 
    264         if (fillColor == "none" && node.getAttribute("fillcolor") != "none") { 
    265             node.setAttribute("fillcolor", fillColor); 
    266         } 
    267         if (strokeColor == "none" && 
    268                 node.getAttribute("strokecolor") != "none") { 
    269             node.setAttribute("strokecolor", strokeColor) 
    270         } 
    271     }, 
    272  
    273259 
    274260    /**