OpenLayers OpenLayers

Changeset 3554

Show
Ignore:
Timestamp:
07/02/07 18:11:16 (1 year ago)
Author:
euzuro
Message:

fix for #650 - if user specifies a layer as transparent and of format image/jpg, we change it to the appropriate type (gif or png). Sure, it's somewhat magical... but it will probably help people out in the long run

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Layer/WMS.js

    r3545 r3554  
    4141    reproject: true, 
    4242  
     43    /** @type Boolean */ 
     44    isBaseLayer: true, 
     45  
    4346    /** 
    4447     * Constructor: OpenLayers.Layer.WMS 
     
    7174                       ); 
    7275 
    73         // unless explicitly set in options, if the layer is transparent,  
    74         // it will be an overlay 
    75         if (options == null || options.isBaseLayer == null) { 
    76             this.isBaseLayer = ((this.params.TRANSPARENT != "TRUE") &&  
    77                                 (this.params.TRANSPARENT != "true") &&  
    78                                 (this.params.TRANSPARENT != true)); 
     76 
     77        //layer is transparent         
     78        if (this.params.TRANSPARENT &&  
     79            this.params.TRANSPARENT.toString().toLowerCase() == "true") { 
     80             
     81            // unless explicitly set in options, make layer an overlay 
     82            if ( (options == null) || (!options.isBaseLayer) ) { 
     83                this.isBaseLayer = false; 
     84            }  
     85             
     86            // jpegs can never be transparent, so intelligently switch the  
     87            //  format, depending on teh browser's capabilities 
     88            if (this.params.FORMAT == "image/jpeg") { 
     89                this.params.FORMAT = OpenLayers.Util.alphaHack() ? "image/gif" 
     90                                                                 : "image/png"; 
     91            } 
    7992        } 
     93 
    8094    },     
    8195 
  • trunk/openlayers/lib/OpenLayers/Layer/WMS/Untiled.js

    r3545 r3554  
    7575                       ); 
    7676 
    77         // unless explicitly set in options, if the layer is transparent,  
    78         // it will be an overlay         
    79         if ((options == null) || (options.isBaseLayer == null)) { 
    80             this.isBaseLayer = ((this.params.TRANSPARENT != "TRUE") &&  
    81                                 (this.params.TRANSPARENT != "true") &&  
    82                                 (this.params.TRANSPARENT != true)); 
    83         } 
     77        //layer is transparent         
     78        if (this.params.TRANSPARENT &&  
     79            this.params.TRANSPARENT.toString().toLowerCase() == "true") { 
     80             
     81            // unless explicitly set in options, make layer an overlay 
     82            if ( (options == null) || (!options.isBaseLayer) ) { 
     83                this.isBaseLayer = false; 
     84            }  
     85             
     86            // jpegs can never be transparent, so intelligently switch the  
     87            //  format, depending on teh browser's capabilities 
     88            if (this.params.FORMAT == "image/jpeg") { 
     89                this.params.FORMAT = OpenLayers.Util.alphaHack() ? "image/gif" 
     90                                                                 : "image/png"; 
     91            } 
     92        } 
     93 
    8494    },     
    8595 
  • trunk/openlayers/tests/Layer/test_WMS.html

    r3442 r3554  
    1111    var params = { map: '/mapdata/vmap_wms.map',  
    1212                   layers: 'basic',  
    13                    format: 'image/png'}; 
     13                   format: 'image/jpeg'}; 
    1414 
    1515    function test_01_Layer_WMS_constructor (t) { 
    16         t.plan( 10 ); 
    17  
     16        t.plan( 13 ); 
     17 
     18        var trans_format = "image/png"; 
     19        if (OpenLayers.Util.alphaHack()) { trans_format = "image/gif"; }  
     20         
    1821        var url = "http://octo.metacarta.com/cgi-bin/mapserv"; 
    1922        layer = new OpenLayers.Layer.WMS(name, url, params); 
     
    3336        var layer3 = new OpenLayers.Layer.WMS(name, url, params); 
    3437        t.eq(layer3.isBaseLayer, false, "transparency == 'TRUE', wms is not baselayer"); 
     38        t.eq(layer3.params.FORMAT, trans_format, "transparent = TRUE causes non-image/jpeg format"); 
    3539 
    3640        params.TRANSPARENT = "TRuE"; 
    3741        var layer4 = new OpenLayers.Layer.WMS(name, url, params); 
    38         t.eq(layer4.isBaseLayer, true, "transparency == 'TRuE', wms is baselayer"); 
     42        t.eq(layer4.isBaseLayer, false, "transparency == 'TRuE', wms is not baselayer"); 
     43        t.eq(layer4.params.FORMAT, trans_format, "transparent = TRuE causes non-image/jpeg format"); 
    3944 
    4045        params.TRANSPARENT = true; 
    4146        var layer5 = new OpenLayers.Layer.WMS(name, url, params); 
    4247        t.eq(layer5.isBaseLayer, false, "transparency == true, wms is not baselayer"); 
     48        t.eq(layer5.params.FORMAT, trans_format, "transparent = true causes non-image/jpeg format"); 
    4349 
    4450        params.TRANSPARENT = false;