Hi Mateus,

You are correct - there is an issue with the documentation. Originally SCALEBAR 
TRANSPARENT was marked for removal in the RFC as it had been marked as 
deprecated since MapServer 4.6. However when testing I ran into the same issue 
as you, so the TRANSPARENT keyword was reinstated. This is the same with LEGEND 
TRANSPARENT. See discussion at https://github.com/MapServer/MapServer/pull/6342

I've created a pull request for the docs at 
https://github.com/MapServer/MapServer-documentation/pull/860

Thanks for reporting,

Seth

--
web:https://geographika.net & https://mapserverstudio.net
twitter: @geographika

On Sat, Oct 21, 2023, at 10:42 PM, Mateus Medeiros via MapServer-dev wrote:
> Hello!
> 
> I've been configuring a bunch of Mapserver 8.0 mapfiles for a WMS server that 
> was served with GeoServer before. I had almost equivalent configurations but 
> for the past two days struggled quite a bit to find a way to have an embedded 
> scalebar box in the corner of the output of a GetMap request.
> 
> Generating the scale itself on top was super easy, but it was always floating 
> on top of the layers, making it quite hard to read in some cases.
> 
> The OUTPUTFORMAT was configured to be a PNG with IMAGEMODE set to RGBA and 
> TRANSPARENT set to ON. This is because I have a raster layer and a bunch of 
> vector layers on top of it, but either of them can contain some holes and the 
> vector styles are mostly outline colors, so I need the GetMap to output an 
> image that can potentially have transparent areas.
> 
> I saw a TRANSPARENT option in the SCALEBAR section in the docs that said 
> "Should the background color for the scalebar be transparent." which sounds 
> like just what I needed, but it said "Removed in version 8.0." and "This flag 
> is now deprecated in favor of declaring transparency within OUTPUTFORMAT 
> declarations. Default is off.". Unfortunately, setting transparency to OFF 
> within the OUTPUTFORMAT declaration didn't work because then the resulting 
> PNG had no transparency at all, including in the layers.
> 
> I tried a bunch of different things with IMAGECOLOR and BACKGROUNDCOLOR, 
> including setting different "alpha" values in the colors ("#FFFFFFDD"), but 
> it seemed to make no difference. I was already accepting that I would have to 
> render the box and then the label as separate repeated layers or maybe 
> overlay that from outside Mapserver, but decided to take a look at the source 
> code (which was surprisingly easy thankfully because the codebase is quite 
> well-organized for a project this size made mostly in C) to see why 
> IMAGECOLOR was not working the way I expected and/or if I could find anything 
> useful in there about how to achieve what I wanted now that the TRANSPARENT 
> option was removed.
> 
> Then I found the function `msDrawScalebar` in the file `src/mapscale.c`, and 
> in there I realized that the TRANSPARENT option seemed to still be accounted 
> (https://github.com/MapServer/MapServer/blob/24d36f842c243f96eba88ff896db1bf34d8a687a/src/mapscale.c#L240-L248).
>  To my surprise, after simply setting "TRANSPARENT" to "OFF" in my SCALEBAR 
> section, lo and behold, it worked flawlessly (I could even control the 
> opacity by including a color with the alpha part as IMAGECOLOR).
> 
> So I went to the documentation repo and tried to find when the "Removed in 
> 8.0" part was added and found the original change referencing RFC #133 
> (https://mapserver.org/development/rfc/ms-rfc-133.html). It seems the RFC 
> explicitly lists the TRANSPARENT option of SCALEBAR as one that needed to be 
> removed.
> 
> For me it seemed like an error in the documentation, as I couldn't easily 
> find a way to add a non-transparent background box on my SCALEBAR only and 
> therefore it made more sense to me that the setting still existed instead of 
> being removed or deprecated. Unfortunately I ended up using all the time I 
> had to spare trying to identify if the intention was to keep the TRANSPARENT 
> option and adding the removal comment was a mistake or if the comment was ok 
> and the option should have been removed, but couldn't reach a conclusion.
> 
> So I think there's either a bug in the documentation or a bug in Mapserver 
> itself. If indeed the TRANSPARENT option inside the SCALEBAR section was 
> supposed to be removed, then how would I go about achieving this 
> non-transparent scalebar box within a transparent output in a GetMap WMS 
> request? And if it's just the documentation that is wrong, should I just open 
> a PR correcting that in the Mapserver docs repo? Or are there other steps I 
> should take before as part of the process of contributing a change like that 
> in the docs?
> 
> Thanks for the help!
> Mateus Medeiros
> 
> _______________________________________________
> MapServer-dev mailing list
> [email protected]
> https://lists.osgeo.org/mailman/listinfo/mapserver-dev
> 
_______________________________________________
MapServer-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/mapserver-dev

Reply via email to