GL_CMD(glUseProgram(program->id()));
float r, g, b, a;
- color.getRGBA(r, g, b, a);
+ Color(premultipliedARGBFromColor(color)).getRGBA(r, g, b, a);
GL_CMD(glUniform4f(program->colorLocation(), r, g, b, a));
#if ENABLE(TIZEN_WEBKIT2_TILED_AC_SHARED_PLATFORM_SURFACE)
- drawQuad(rect, matrix, program.get(), GL_TRIANGLE_FAN, a < 1, false);
+ drawQuad(rect, matrix, program.get(), GL_TRIANGLE_FAN, a < 1, true);
#else
drawQuad(rect, matrix, program.get(), GL_TRIANGLE_FAN, a < 1);
#endif
paintRecursive(options);
}
+static Color blendWithOpacity(const Color& color, float opacity)
+{
+ RGBA32 rgba = color.rgb();
+ // See Color::getRGBA() to know how to extract alpha from color.
+ float alpha = alphaChannel(rgba) / 255.;
+ float effectiveAlpha = alpha * opacity;
+ return Color(colorWithOverrideAlpha(rgba, effectiveAlpha));
+}
+
void TextureMapperLayer::paintSelf(const TextureMapperPaintOptions& options)
{
if (!m_state.visible || !m_state.contentsVisible)
float opacity = options.opacity;
if (m_state.backgroundColor.alpha() && !m_state.contentsRect.isEmpty()) {
- Color color = m_state.backgroundColor;
- float r, g, b, a;
- color.getRGBA(r, g, b, a);
- color = Color(r * opacity, g * opacity, b * opacity, a * opacity);
- options.textureMapper->drawSolidColor(m_state.contentsRect, transform, color);
+ options.textureMapper->drawSolidColor(m_state.contentsRect, transform, blendWithOpacity(m_state.backgroundColor, opacity));
}
#if ENABLE(TIZEN_TEXTURE_MAPPER_CULLER)