From a2967ee58517845e601ac4c530b69665a2ddd472 Mon Sep 17 00:00:00 2001 From: Nelson Carrillo Date: Wed, 6 Dec 2017 23:19:37 -0500 Subject: [PATCH] Clamp border corner radius --- webrender/src/border.rs | 51 ++++++++++++++++-- .../border/border-clamp-corner-radius-ref.png | Bin 0 -> 12077 bytes .../border/border-clamp-corner-radius.yaml | 24 +++++++++ .../border/border-no-bogus-line-ref.png | Bin 2191 -> 2237 bytes wrench/reftests/border/reftest.list | 1 + 5 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 wrench/reftests/border/border-clamp-corner-radius-ref.png create mode 100644 wrench/reftests/border/border-clamp-corner-radius.yaml diff --git a/webrender/src/border.rs b/webrender/src/border.rs index a0e627a060..c602dca110 100644 --- a/webrender/src/border.rs +++ b/webrender/src/border.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use api::{BorderSide, BorderStyle, BorderWidths, ClipAndScrollInfo, ColorF}; +use api::{BorderRadius, BorderSide, BorderStyle, BorderWidths, ClipAndScrollInfo, ColorF}; use api::{LayerPoint, LayerRect}; use api::{LayerPrimitiveInfo, LayerSize, NormalBorder, RepeatMode}; use clip::ClipSource; @@ -227,6 +227,48 @@ impl NormalBorderHelpers for NormalBorder { } } +fn ensure_no_corner_overlap(radius: &mut BorderRadius, info: &LayerPrimitiveInfo) { + let mut ratio = 1.0; + let top_left_radius = &mut radius.top_left; + let top_right_radius = &mut radius.top_right; + let bottom_right_radius = &mut radius.bottom_right; + let bottom_left_radius = &mut radius.bottom_left; + + let sum = top_left_radius.width + bottom_left_radius.width; + if info.rect.size.width < sum { + ratio = f32::min(ratio, info.rect.size.width / sum); + } + + let sum = top_right_radius.width + bottom_right_radius.width; + if info.rect.size.width < sum { + ratio = f32::min(ratio, info.rect.size.width / sum); + } + + let sum = top_left_radius.height + bottom_left_radius.height; + if info.rect.size.height < sum { + ratio = f32::min(ratio, info.rect.size.height / sum); + } + + let sum = top_right_radius.height + bottom_right_radius.height; + if info.rect.size.height < sum { + ratio = f32::min(ratio, info.rect.size.height / sum); + } + + if ratio < 1. { + top_left_radius.width *= ratio; + top_left_radius.height *= ratio; + + top_right_radius.width *= ratio; + top_right_radius.height *= ratio; + + bottom_left_radius.width *= ratio; + bottom_left_radius.height *= ratio; + + bottom_right_radius.width *= ratio; + bottom_right_radius.height *= ratio; + } +} + impl FrameBuilder { fn add_normal_border_primitive( &mut self, @@ -310,6 +352,9 @@ impl FrameBuilder { // out more often on CI (the actual cause is simply too many Servo processes and // threads being run on CI at once). + let mut border = *border; + ensure_no_corner_overlap(&mut border.radius, &info); + let radius = &border.radius; let left = &border.left; let right = &border.right; @@ -478,7 +523,7 @@ impl FrameBuilder { self.add_normal_border_primitive( info, - border, + &border, widths, clip_and_scroll, corner_instances, @@ -880,4 +925,4 @@ impl ImageBorderSegment { tile_spacing, } } -} +} \ No newline at end of file diff --git a/wrench/reftests/border/border-clamp-corner-radius-ref.png b/wrench/reftests/border/border-clamp-corner-radius-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..e87d5873e2a93de1e5ed8ff00526fb87a570fc5b GIT binary patch literal 12077 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

18dK6kDus5n_Px90Joo!YE*x^>53 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 literal 0 HcmV?d00001 diff --git a/wrench/reftests/border/border-clamp-corner-radius.yaml b/wrench/reftests/border/border-clamp-corner-radius.yaml new file mode 100644 index 0000000000..10859274c7 --- /dev/null +++ b/wrench/reftests/border/border-clamp-corner-radius.yaml @@ -0,0 +1,24 @@ +--- +root: + items: + - type: stacking-context + bounds: [0, 0, 420, 250] + items: + - type: border + bounds: [ 0, 0, 200, 200 ] + width: 10 + border-type: normal + style: solid + radius: 180 + color: blue + - type: border + bounds: [ 200, 0, 200, 200 ] + width: 10 + border-type: normal + style: solid + radius: + top-left: [180, 180] + top-right: [0, 0] + bottom-left: [0, 0] + bottom-right: [180, 180] + color: blue \ No newline at end of file diff --git a/wrench/reftests/border/border-no-bogus-line-ref.png b/wrench/reftests/border/border-no-bogus-line-ref.png index 52344a03fe08e77e29cdd3ed12919d8c622d6082..64c7a3afe5a729142d4681c71a2ae16828036a32 100644 GIT binary patch literal 2237 zcmb^zWmJ<5cQ7QTbk~H39yvtvoxmJ18cB%(Lt>OjC?PRI#)criG)PJ#AqbK$F+d3= z6_5rIreG0@#Jlg`cfQ}>kDKS-d+xb$?oGBZGhl`YKtLc6GujY!gG%pE;T|JB6{|=! zjDtXo322nAby&gf6LgA+xzKQoSS#O9o;?SzXrEg@{t{EXprq(ptUYkcuSv*IDZA$q z2TRtRBucIipKvSC{Xqf~gEE6SSr3b@8z6WnpT|ViS|Mh~$GYqeCo*yMjY?UbVvQk za&UC4e)jBP|5?K0#~hUTW~t1qtf^P&Vz_m3vbCk9Zf0htH3nlAb-d3WW1}u^OO8C+ zvvhVAo_+s*I$P0&Ec+eqJt0z4Q&UQz_~gOeAB0KFiyM&*(x8^G%u>g;fJBUQeQ(VZ zt$PaPgLT{6;jT&(yG+J zrM8xqiO=sF%By=KkLp$4E4uV>#eBcri1hXK#cd2dT!(3F+K|BvEE9W6ojY%fwAW$z zYXeEsl-XL`Y>kad^hwxvqx*lwoE5w&L>PO$DJVJmxX6cSr90`o0l#K-vGgQl#MYQs*L% z9Gl&5FEeky>)P%}C&6Kqx)@}yvEov;Z`U^&#o!oQ^Rq|g@X-{Jn zQnzp#H1`8AJ@<376=QGC?z^+8h0t=AlP zxD}fSFR_CV+}#k>+sh_NEW(eqd)WF~{Fgd1Q-w4DYQCy>&Q8MNMAk|GFf95jTp1C0 zXyR0kADEh$VC!sNhp6i|dybC;#Y&pw=%iiNu6X&F{tfEn+Zy(_%gsY`UOL8vow^z*C z{9;cgFmA4e!-##!Oh)z1U{+O1LhK8IVY#S(#Th?g$CuBI2#pqL$G13V$Y}bqSDF_U zzD@)l4b#6lVHUcU$);0(aCZ6!%f)O9lnOKjt|8$@;L4$F6O$Q{X7DHdJJg21s<~_n zu<$8~SeYRe_P?zSV96mv)J7?{+h#QNME#M}Kjb43;`UO7waC)K6KB7^Utfr<2v(Xs zJw6x}M;?A%xr}z3wKtghOot5{K4{ccK%$cFszeLHTed(mw1%%d5}Sec z=%=x&iMR{BcHeuJh2Mev`{$?W@qD#G0^){XhF#z;8Do?H96nEWT~ya{Pb(bM{rP-H9$bQ&k>%F9x0i96 zlcKTRu+(otGrfQUrYol&(+$%v zC{N}?fHp|Y?%w`?x*=R zu|TWUVq2nSg~tX|O$io*3IzU^tP(*{_wjtL*T#s2tL#xbE%1Uq>FraW%L#^hbld2U z2C$GE3vncbk`95)jQm=Y#L-;*u_g(rGYkpZso;jzHLN8;^+7onA#@#1c!(E3`z3u& zFvN?23IBjTdetsNo!c^9FdDS!@Ov_Hl8ru-n{0}T=;){ivZSugq#pCdz^&JOsKy6}OUH)=2RHjI`}_HgEiV30 zWK*4a_s-#nj4}mK*2TignMSWqC1hMKp6fQIRg#aM<77k7rKp)cd2ncGsI`mB%11~j zjjfZ74Y!S*onYI$VKi26Mt2G%$+}fvU5&N{uLicXwi-3_9ZI=|_Fc-($}(br%w`jb z5L~@m%?4zutW*SbtK)&*K8R-$Y>#4fWk-SJu_52(lzd1 DoQV!= literal 2191 zcmb_ec{me}8=o=fu;o57Z6)`eEXg%CsyT+%T($bj5e7lHm4q{%@iTEo#HD`SN&4gQRoPpPc$l~SVi*+PutdBeuX+XIy5?d?k*)o!Pv%w{$S2_ zpo~+fp8c`}`UB%F)?l2;XN7FYI-?lv=;5(i(o3A=`N3q``T1#FetAB-qO$UJZS9jV z_QF)jCq>1>qoczd0)bH8)Ret4LAOm#PG&Nhv#yvf)AxQ}UIhYTN^ADP7^hA?Q3XSl z#jZrD2qu(YFJ#4)&=h#8|HYYJsG5M{O0wM9h0b`fyIa4V&?K#5tK>k3!xHO^U1hQZ zbbWLFE7glpgr(ody}DHRvpHn2FI#Uu(`V0fnWtBU1+u z0nm`8VYBAo<>_)n?=!73ZaxviodWeo;q2~YITo8W7{N?m9&H%>l4pdpiR(n6Xz^-N zZ=ysh+A~huI=ppn-BsQ{IM~Z@uEI|__MdYat5B>fvF}%cPw#Ecdw+g%N?tExAbvsq3KgI~L21+l=H-Qz-539__fn`3Tx7Usi!^@WU z)~2{&P3riXNKN;a9{Yn%rD+a}yzs}w@s|78KUA5LA+;;jq}fNZliSOq@?96z;bEZ1 zqXBD^W+_XzI%0)W7E3VZm>GB&ZsDbIxL5B}4f!k)&gDwqxHJUL9t-g~qgvEJQL*Hb za6d7l9-I`v;D@kLiIMEcAYvKU}v`BpO5pu6u$s7|u9AxROfX@JyuwSLYh z{{mUp;E-~%Xk7H85P4%(0Bx?rQDvq6K&+6`n`|G@TgX;PKQB`0g=ZZ>E8Rz+@7l}C*QaR4FFBq0P)Mc|2h-K z+a-@X>u~AH=o0Y2`10_QVWGp#c~P`E{(Z>mc-xSmi)K}sET;2te`oMle-83k#wgEw zWZRvI3nNr-G4uz4lW=)02k`D2{coNBk` z?sP~NGU(U0t;Hdvpvm5j2K*(Xqg)_!VT{$g*VD?mG>gkaF?Yp5><7GA72ufS^j$mY zp0L=f4p+aXS*p~P)GD7+OZ1Gwaev}1;IqB?542~aMuvT)&6vBc=zHLaxt9!^)BcwT zs#bKhe)KTya~eb3Yv@~j%&8iRX~X0!qkfWEdgvvW7IS|#QMA(E+}3)*N5G1T2` zJeww^#e;?!MKL{E0PJwYnEZW^&Ctyi31w4vtJ(a%wj}-qGNPTz?E*08y0o~(LNVLE zUAzg6YAJZ@OS129=61RoVFvqV?4rr@tSs8pdDII#60PiZEhRfT!e1fPUQ@wlJ3SU9{csbkI0 zPZWcO;?z{}_{+*oen1Tgb&TW7ghpIBwh9is^N#y=U~mf-OsS)=l7=mL#<#iKeJ#WK zE4@YZx)-0kF2jqN>fWJ^By-AO(W} diff --git a/wrench/reftests/border/reftest.list b/wrench/reftests/border/reftest.list index a8e95cc59d..883176536d 100644 --- a/wrench/reftests/border/reftest.list +++ b/wrench/reftests/border/reftest.list @@ -1,3 +1,4 @@ +== border-clamp-corner-radius.yaml border-clamp-corner-radius-ref.png == border-gradient-simple.yaml border-gradient-simple-ref.yaml == border-radial-gradient-simple.yaml border-radial-gradient-simple-ref.yaml == border-radii.yaml border-radii.png