From ed7b139e08946d93fd3caf56dbc38e709b381094 Mon Sep 17 00:00:00 2001 From: Julian Harnath Date: Sat, 15 Aug 2015 12:54:36 +0200 Subject: [PATCH] app_server: fix direct assignment in alpha pixel composite * 'alpha' is 16 bit (alpha * cover) in blend_hline_alpha_pc(), so compare with 255 * 255 --- .../Painter/drawing_modes/DrawingModeAlphaPC.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/servers/app/drawing/Painter/drawing_modes/DrawingModeAlphaPC.h b/src/servers/app/drawing/Painter/drawing_modes/DrawingModeAlphaPC.h index 0313d3a00e..07a92b8703 100644 --- a/src/servers/app/drawing/Painter/drawing_modes/DrawingModeAlphaPC.h +++ b/src/servers/app/drawing/Painter/drawing_modes/DrawingModeAlphaPC.h @@ -43,7 +43,7 @@ blend_pixel_alpha_pc(int x, int y, const color_type& c, uint8 cover, // blend_hline_alpha_pc void -blend_hline_alpha_pc(int x, int y, unsigned len, +blend_hline_alpha_pc(int x, int y, unsigned len, const color_type& c, uint8 cover, agg_buffer* buffer, const PatternHandler* pattern) { @@ -52,7 +52,7 @@ blend_hline_alpha_pc(int x, int y, unsigned len, rgb_color color = pattern->ColorAt(x, y); uint16 alpha = color.alpha * cover; if (alpha) { - if (alpha == 255) { + if (alpha == 255 * 255) { ASSIGN_ALPHA_PC(p, color.red, color.green, color.blue); } else { BLEND_ALPHA_PC(p, color.red, color.green, color.blue, alpha); @@ -65,7 +65,7 @@ blend_hline_alpha_pc(int x, int y, unsigned len, // blend_solid_hspan_alpha_pc void -blend_solid_hspan_alpha_pc(int x, int y, unsigned len, +blend_solid_hspan_alpha_pc(int x, int y, unsigned len, const color_type& c, const uint8* covers, agg_buffer* buffer, const PatternHandler* pattern) { @@ -88,7 +88,7 @@ blend_solid_hspan_alpha_pc(int x, int y, unsigned len, // blend_solid_vspan_alpha_pc void -blend_solid_vspan_alpha_pc(int x, int y, unsigned len, +blend_solid_vspan_alpha_pc(int x, int y, unsigned len, const color_type& c, const uint8* covers, agg_buffer* buffer, const PatternHandler* pattern) { @@ -112,8 +112,8 @@ blend_solid_vspan_alpha_pc(int x, int y, unsigned len, // blend_color_hspan_alpha_pc void -blend_color_hspan_alpha_pc(int x, int y, unsigned len, - const color_type* colors, +blend_color_hspan_alpha_pc(int x, int y, unsigned len, + const color_type* colors, const uint8* covers, uint8 cover, agg_buffer* buffer, const PatternHandler* pattern) {