On 2018-12-27 08:58-0000 António Rodrigues Tomé wrote:

[...]
Hi Alan.
Let start by saying that my English sucks.  I've never learn it when I was
young only latter on on life I've learned some english reading math and
physics text books.

Hi António:

Actually, I admire your ability to pick up completely understandable
written English later on in life since even as a young man I had
trouble with attempting to learn even one non-English language, and my
own written English is the result of hard work and lots of re-editing
even the most trivial e-mails and not something that is easy for me.

Anyhow, your explanation about what is going on with Qt (including
your additional P.S. post) gave me enough clues to find further
documentation and articles.  So using "git commit --amend" simply to
modify the commit message for your commit according to that new
knowledge, here is how that message reads now:

-----------------------------8<---------------------------
software@merlin> git log --name-status -1 |cat -
commit 8612dc30bdd6aa5bf3026c5b130206efb5df895c
Author: António R. Tomé <antoniort...@users.sourceforge.net>
Date:   Mon Dec 24 14:58:00 2018 +0000

    Fix background transparency bug in the qt raster devices

    We found experimentally that QtRasterDevice::QtRasterDevice required
    the following two changes to solve a long-standing bug where the alpha
    value of the background was being completely ignored by qt raster
    devices (so semi-transparent backgrounds were being rendered as
    completely opaque):

    1. Change the QImage format of results for raster devices from
    QImage::Format_RGB32 to QImage::Format_ARGB32.  This change (or
    possibly changing to the QImage::Format_ARGB32_Premultiplied format in
    the future for efficiency reasons) is required because the
    QImage::Format_RGB32 documentation at
    <http://doc.qt.io/qt-5/qimage.html#Format-enum> states "The image is
    stored using a 32-bit RGB format (0xffRRGGBB)" i.e., the alpha channel
    is completely fixed at opaque. So this previously adopted opaque
    format was not correct.

    2. Insert a transparent fill canvas (with color Qt::transparent which
    is transparent black according to
    <http://doc.qt.io/qt-5/qt.html#GlobalColor-enum> as the first layer of
    the image.  Transparent black is essential since the normal "over"
    compositing rule (see the compositing formula in
    <https://en.wikipedia.org/wiki/Alpha_compositing> which composites the
    semi-transparent PLplot background on top of that transparent black
    canvas gives a result which is exactly the PLplot background, with
    unchanged ARGB values.

    Tested by: António R. Tomé <antoniort...@users.sourceforge.net> on Linux
    (openSUSE leap 15.0) by ???

    Tested by: Alan W. Irwin <air...@users.sourceforge.net> on Linux
    (Debian Testing) by building the x30c and qt targets and running

    valgrind examples/c/x30c -dev pngqt -o test3_qt.png -fam -bg 00F_0.3

    The valgrind report showed "ERROR SUMMARY: 0 errors from 0 contexts
    (suppressed: 64975 from 1)" which is a good memory management report
    aside from the memory leaks which were also mentioned (which should be
    looked at in detail later to make sure those are due to Qt library
    issues rather than qt device driver issues).

    When test3_qt.png was viewed with either the "display" or "pqiv" image
    viewer applications the results showed the above blue background with
    30 per cent opacity (or 70 per cent transparency) composited with a
    black and white checkerboard canvas.  Those canvases were rendered by
    the two different applications (as proved by the different sized
    squares in the two cases) as the traditional means of marking a
    semitransparent background.  Previous to this fix, the checkerboards
    were not present indicating an incorrect opaque blue background.

M       bindings/qt_gui/plqt.cpp
-----------------------------8<---------------------------

So assuming you like what I have written above and also just as soon
as you let me know how you tested this commit (see the ??? above in
this commit message that still needs to be filled in by you), I will
push it.

Alan
__________________________
Alan W. Irwin

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________


_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to