[core] Move fill-outline special case to FillLayer::Impl::evaluate

This commit is contained in:
John Firebaugh
2016-12-09 11:30:01 -08:00
parent 01b557aeb3
commit 67e157e8b4
2 changed files with 5 additions and 5 deletions

View File

@@ -85,7 +85,6 @@ void Painter::renderFill(PaintParameters& parameters,
} else {
auto draw = [&] (uint8_t sublayer,
auto& program,
Color outlineColor,
const auto& drawMode,
const auto& vertexBuffer,
const auto& indexBuffer,
@@ -102,7 +101,7 @@ void Painter::renderFill(PaintParameters& parameters,
state) },
uniforms::u_opacity::Value{ properties.get<FillOpacity>() },
uniforms::u_color::Value{ properties.get<FillColor>() },
uniforms::u_outline_color::Value{ outlineColor },
uniforms::u_outline_color::Value{ properties.get<FillOutlineColor>() },
uniforms::u_world::Value{ context.viewport.getCurrentValue().size },
},
vertexBuffer,
@@ -114,7 +113,6 @@ void Painter::renderFill(PaintParameters& parameters,
if (properties.get<FillAntialias>() && !layer.impl->paint.unevaluated.get<FillOutlineColor>().isUndefined() && pass == RenderPass::Translucent) {
draw(2,
parameters.programs.fillOutline,
properties.get<FillOutlineColor>(),
gl::Lines { 2.0f },
*bucket.vertexBuffer,
*bucket.lineIndexBuffer,
@@ -126,7 +124,6 @@ void Painter::renderFill(PaintParameters& parameters,
if ((properties.get<FillColor>().a >= 1.0f && properties.get<FillOpacity>() >= 1.0f) == (pass == RenderPass::Opaque)) {
draw(1,
parameters.programs.fill,
properties.get<FillOutlineColor>(),
gl::Triangles(),
*bucket.vertexBuffer,
*bucket.triangleIndexBuffer,
@@ -136,7 +133,6 @@ void Painter::renderFill(PaintParameters& parameters,
if (properties.get<FillAntialias>() && layer.impl->paint.unevaluated.get<FillOutlineColor>().isUndefined() && pass == RenderPass::Translucent) {
draw(2,
parameters.programs.fillOutline,
properties.get<FillColor>(),
gl::Lines { 2.0f },
*bucket.vertexBuffer,
*bucket.lineIndexBuffer,

View File

@@ -15,6 +15,10 @@ void FillLayer::Impl::cascade(const CascadeParameters& parameters) {
bool FillLayer::Impl::evaluate(const PropertyEvaluationParameters& parameters) {
paint.evaluate(parameters);
if (paint.unevaluated.get<FillOutlineColor>().isUndefined()) {
paint.evaluated.get<FillOutlineColor>() = paint.evaluated.get<FillColor>();
}
passes = RenderPass::None;
if (paint.evaluated.get<FillAntialias>()) {