changeset 26468:bdf03ab385c2 stable

Use facealpha for surface objects with uniform facecolor and lighting (bug #55384). * gl-render.cc (opengl_renderer::draw_surface): Apply facealpha value to all facecolor modes also with lighting.
author Markus Mützel <markus.muetzel@gmx.de>
date Sun, 06 Jan 2019 18:01:52 +0100
parents 6595716a7f33
children bf835b1d04b1
files libinterp/corefcn/gl-render.cc
diffstat 1 files changed, 2 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/gl-render.cc	Sun Jan 06 16:41:20 2019 +0100
+++ b/libinterp/corefcn/gl-render.cc	Sun Jan 06 18:01:52 2019 +0100
@@ -2489,6 +2489,7 @@
         if (fa_mode == 0)
           {
             fa = props.get_facealpha_double ();
+            cb[3] = fa;
             if (fc_mode == UNIFORM || fc_mode == TEXTURE)
               {
                 m_glfcns.glColor4d (fcolor(0), fcolor(1), fcolor(2), fa);
@@ -2562,7 +2563,6 @@
                         // FIXME: is there a smarter way to do this?
                         for (int k = 0; k < 3; k++)
                           cb[k] = c(j-1, i-1, k);
-                        cb[3] = fa;
                         m_glfcns.glColor4fv (cb);
 
                         if (fl_mode > 0)
@@ -2593,7 +2593,6 @@
                       {
                         for (int k = 0; k < 3; k++)
                           cb[k] = c(j-1, i, k);
-                        cb[3] = fa;
                         m_glfcns.glColor4fv (cb);
 
                         if (fl_mode > 0)
@@ -2624,7 +2623,6 @@
                       {
                         for (int k = 0; k < 3; k++)
                           cb[k] = c(j, i, k);
-                        cb[3] = fa;
                         m_glfcns.glColor4fv (cb);
 
                         if (fl_mode > 0)
@@ -2654,7 +2652,6 @@
                       {
                         for (int k = 0; k < 3; k++)
                           cb[k] = c(j, i-1, k);
-                        cb[3] = fa;
                         m_glfcns.glColor4fv (cb);
 
                         if (fl_mode > 0)
@@ -2698,6 +2695,7 @@
       {
         if (props.get_edgealpha_double () == 1)
           {
+            cb[3] = 1.0; // edgealpha isn't implemented yet
             if (ec_mode == UNIFORM)
               {
                 m_glfcns.glColor3dv (ecolor.data ());