From d04870e7f0c1af0f7c81be6c79d24fe5e26f4b95 Mon Sep 17 00:00:00 2001 From: Nicolas Silva Date: Wed, 13 May 2020 19:30:21 +0000 Subject: [PATCH] Bug 1637440 - Fix non-repeated border-image fill area. r=gw The fill area is a bit special because its repetition parameters depend on the top-left corner dimensions, but the stretch size in the shader must only be modified to account for this if the image is repeated. Differential Revision: https://phabricator.services.mozilla.com/D75117 --- gfx/wr/webrender/res/brush_image.glsl | 16 +++++--- .../reftests/border/border-image-fill-ref.png | Bin 3799 -> 28383 bytes .../reftests/border/border-image-fill.yaml | 36 ++++++++++++++++++ 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/gfx/wr/webrender/res/brush_image.glsl b/gfx/wr/webrender/res/brush_image.glsl index 79bcebe523d8..ac61148b33cb 100644 --- a/gfx/wr/webrender/res/brush_image.glsl +++ b/gfx/wr/webrender/res/brush_image.glsl @@ -103,8 +103,12 @@ void image_brush_vs( // the repetitions. In most case it is the current segment, but for the // middle area we look at the border size instead. vec2 segment_uv_size = uv1 - uv0; - #ifdef WR_FEATURE_REPETITION + // Value of the stretch size with repetition. We have to compute it for + // both axis even if we only repeat on one axis because the value for + // each axis depends on what the repeated value would have been for the + // other axis. + vec2 repeated_stretch_size = stretch_size; // The repetition parameters for the middle area of a nine-patch are based // on the size of the border segments rather than the middle segment itself, // taking top and left by default, falling back to bottom and right when a @@ -113,14 +117,15 @@ void image_brush_vs( // branchiness in this shader. if ((brush_flags & BRUSH_FLAG_SEGMENT_NINEPATCH_MIDDLE) != 0) { segment_uv_size = uv0 - res.uv_rect.p0; - stretch_size.x = segment_rect.p0.x - prim_rect.p0.x; - stretch_size.y = segment_rect.p0.y - prim_rect.p0.y; + repeated_stretch_size = segment_rect.p0 - prim_rect.p0; float epsilon = 0.001; + if (segment_uv_size.x < epsilon || stretch_size.x < epsilon) { segment_uv_size.x = res.uv_rect.p1.x - uv1.x; stretch_size.x = prim_rect.p0.x + prim_rect.size.x - segment_rect.p0.x - segment_rect.size.x; } + if (segment_uv_size.y < epsilon || stretch_size.y < epsilon) { segment_uv_size.y = res.uv_rect.p1.y - uv1.y; stretch_size.y = prim_rect.p0.y + prim_rect.size.y @@ -128,12 +133,11 @@ void image_brush_vs( } } - vec2 original_stretch_size = stretch_size; if ((brush_flags & BRUSH_FLAG_SEGMENT_REPEAT_X) != 0) { - stretch_size.x = original_stretch_size.y / segment_uv_size.y * segment_uv_size.x; + stretch_size.x = repeated_stretch_size.y / segment_uv_size.y * segment_uv_size.x; } if ((brush_flags & BRUSH_FLAG_SEGMENT_REPEAT_Y) != 0) { - stretch_size.y = original_stretch_size.x / segment_uv_size.x * segment_uv_size.y; + stretch_size.y = repeated_stretch_size.x / segment_uv_size.x * segment_uv_size.y; } #endif diff --git a/gfx/wr/wrench/reftests/border/border-image-fill-ref.png b/gfx/wr/wrench/reftests/border/border-image-fill-ref.png index 3dcd4aaf3bcef9b23aa1423c99855423a441a0f4..41627d9455727fb6d3f3b22197092ebb354c8926 100644 GIT binary patch literal 28383 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 X)f(mfx_x=T>>sd(cua=Dg**QPp_mo+ literal 3799 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 I4ceUkAHu<#xBvhE diff --git a/gfx/wr/wrench/reftests/border/border-image-fill.yaml b/gfx/wr/wrench/reftests/border/border-image-fill.yaml index ef65c9783c1a..0e27b993c528 100644 --- a/gfx/wr/wrench/reftests/border/border-image-fill.yaml +++ b/gfx/wr/wrench/reftests/border/border-image-fill.yaml @@ -16,3 +16,39 @@ root: repeat-vertical: repeat repeat-horizontal: repeat fill: true + - type: border + bounds: [ 300, 100, 192, 192 ] + width: 32 + border-type: image + image-source: "border-image-src.png" + image-width: 96 + image-height: 96 + slice: [ 32 ] + outset: 0 + repeat-vertical: stretch + repeat-horizontal: repeat + fill: true + - type: border + bounds: [ 100, 300, 192, 192 ] + width: 32 + border-type: image + image-source: "border-image-src.png" + image-width: 96 + image-height: 96 + slice: [ 32 ] + outset: 0 + repeat-vertical: repeat + repeat-horizontal: stretch + fill: true + - type: border + bounds: [ 300, 300, 192, 192 ] + width: 32 + border-type: image + image-source: "border-image-src.png" + image-width: 96 + image-height: 96 + slice: [ 32 ] + outset: 0 + repeat-vertical: stretch + repeat-horizontal: stretch + fill: true