[QGIS-Developer] [Qgis-developer] Transparency/Opacity (was: Outline/border -> stroke? )

Nyall Dawson nyall.dawson at gmail.com
Thu Jun 1 18:12:35 PDT 2017


On 28 February 2017 at 15:34, Nyall Dawson <nyall.dawson at gmail.com> wrote:
> On 21 February 2017 at 00:31, Matthias Kuhn <matthias at opengis.ch> wrote:
>> I'd say in the API we should be closer to the data and hence use 0-255, in the slider we convert it to 0-100%.
>> We could possibly have a slider that allows for 255 positions but prints numbers from 0%-100%?
>>
>> Are you aware of systems where there are more values than 8 bits for the alpha channel (for which we should prepare)?
>> It wouldn't be a much bigger deal to go this road, but I think it shouldn't be purely prophylactic without real needs in mind.
>
>
> Here's the tricky bit - using 0-255 and storing as an int doesn't
> translate well to displaying in a slider with values from 0-100. You
> need to allow 0.1 steps in the slider to avoid loss of precision, but
> then you get the confusing behaviour for users where they set the
> slider to 91.2, and reopen to find it's changed to 91.3 (made up
> numbers).
>
> I'd like to avoid that, so I think in api we should always use a
> double with range 0-1 for storing opacity. This can be exposed to
> users on a 0-100 scale, but also converted to a 0-255 int for
> rendering/etc without issue.

For reference - this has been fixed in master. Now:

- all opacity/transparency/alpha related api is setOpacity()/opacity()
, using doubles from 0 (transparent) to 1 (opaque)
- all UI controls use a standard QgsOpacityWidget control which shows
the opacity from 0 -> 100% (allowing 0.1% increments)

Nyall


More information about the QGIS-Developer mailing list