From 24c21d366b90761d5dce5f8f5775ba67e64a7e0f Mon Sep 17 00:00:00 2001 From: Kevin Reid Date: Sun, 28 Jul 2024 21:49:30 -0700 Subject: [PATCH] ui: Improve dialog backgrounds. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Primarily, they now actually meet their contents, by being on the front faces of their blocks; previously there was 15/16ths of a block of gap. I also redrew the theme image. The new design has much less empty space between the border and the content, is more rectangular, and has a faint checkerboard pattern in the background. This checkerboard is not necessarily the direction I want the art style to go, but as a temporary measure, it will help when we’re debugging UI layout and want to count how many cubes a widget is occupying, and it also adds some distraction from widgets’ blocks’ shadows against the background. In the future, I hope the dialog background will be able to be not just 2D, and will incorporate more shades of color. (Perhaps we will have a complementary theme color that isn’t also the logo color.) --- all-is-cubes-ui/src/vui/widgets/theme.rs | 6 ++++-- .../vui/widgets/theme/dialog-background.png | Bin 704 -> 705 bytes .../expected/ui/session_modal-all.png | Bin 11003 -> 11126 bytes .../expected/ui/session_page_pause-all.png | Bin 12635 -> 13732 bytes .../expected/ui/session_page_progress-all.png | Bin 10170 -> 10382 bytes 5 files changed, 4 insertions(+), 2 deletions(-) diff --git a/all-is-cubes-ui/src/vui/widgets/theme.rs b/all-is-cubes-ui/src/vui/widgets/theme.rs index 8f1d4feda..bc9669b0b 100644 --- a/all-is-cubes-ui/src/vui/widgets/theme.rs +++ b/all-is-cubes-ui/src/vui/widgets/theme.rs @@ -192,8 +192,10 @@ impl WidgetBlocks { R64, // 16 res × 4 tiles txn.insert_anonymous(space_from_image( include_image!("theme/dialog-background.png"), - GridRotation::IDENTITY, - &default_srgb, + GridRotation::RXYZ, + // place image on the front face (of the R16 individual blocks!) + // so it meets the back of the widgets in the dialog. + &|color| default_srgb(color).translate([0, 0, 15]), )?), ) .build() diff --git a/all-is-cubes-ui/src/vui/widgets/theme/dialog-background.png b/all-is-cubes-ui/src/vui/widgets/theme/dialog-background.png index 909b2119691020870dc8c91f63dbbceeb9dfa64b..c686c77d25afdf9c87eff6ef50b55ae974786f24 100644 GIT binary patch delta 278 zcmV+x0qOq01;GWdwE=$>P)t-s00030|NlKbJ-ocU$1`}ixVXT;z>Qv3`9v4{{NGeo9?z_QY?`~IWH!FM^kXB zbCVZA3FRD-Tu$o_a>TJT#~1$(6#*M86Kw)Pt6*iQ1?K~q091br6){=m`yW!dn3pRH zyblFm2tg}IV1ayHcxqy~es8RztIg$O{RGQS6vXRS1!H#s9;C+wwRp9dUlfemg`5%a zAn5`nM;aD1Wa9l$HOIQWv2<%~j?pGSVNc5T4qL^=9PEvg$vZHA3;lk!&4FT$w85D; cBW(;DiPRHmiq{S&!vFvP07*qoM6N<$g5j`vWdHyG delta 277 zcmV+w0qXw21;7QcwE=$*P)t-s00030|NlKbJ-ocU$1`|ar>rjk000GaQchC<|NsC0 z9MC3G0002WNklrP3Q&Lod=|j|+P?pH<_!jIac(eKLfSmqX!2HCwzM9Fc027kRDlit;<_UxT* z-+LV2m+yPu=Y8Ji`9073d){x)i^K)`|LnV>8Z|osHbJeeS9Sug{(NZtcp9@2#Adu`Vfe z#>C--Zv8-YPtpqE+lOVz)2(k#*q;hv%sIWrmBhqnwx|O?Z`Vbu$EBY({ zk~ad61U?*q0p19_5pHdFkT+=EmTF2H|GG&3neN5u+;w#*cX=p|yZrb9ce&SJR&=Tp zy^mtEO#GxwD4k|~<$r2*WbYS+p%v3Mv`u2eq6 zSj}_rb4@Hg?o9NKsed$aRjPUrkA8P2{BLbaPfMG@SmzeTjQjE(mUJ=A?YQQ2!V6E} zX_027NCf8MoVXiYVSV#I;8|z~E+?wy8;?3I)uXn!31`1r(c0@7PE%>J+DBjniA4 z$91vAj~YaS`Vm?~3bzJYD=5DCjlvQD)lFK>TWSC{8}YwLQ;=qOb5byu%$n^U~{i=o6VWnphOZpOW6S){tEs_FsA z{S^scMGBSnkAc-09T(vjU(T`!c)+7Y0x-T>T>oTa|4*VK<`gTlNPSvMRn?hUm|v0Y zpTv~4Y(Sncw7aaV46DfeoGBL(+KMXrpik6_h&e7JdZdsu>RigUSwf+3OPORjJ$Jd{ zne_yCU0g?UHF$r2z#wCqr_ z%Lr_zB$ua%PGU$&|JZ^0J_=X`T_IqCyH>YFKken#{7)e1(5wAx)LK^iyY$n1$7rj#^`yg37Ou%fuTr)MS>`!TKM5+3+1 zDaz$?iairm;lTCl%Q3faE8~jNkfPW9%7w!k@rRNLAf1@Cf|4%gQD#v-c@Q2~?AkTy zLZldED7y)gCf(oA(6E+#UdQ2NZ;*AwgdlPUY`>ujTF$~elu}TgIweS9R)IfB3ApjF z7l*n1uq_PhYiG)}DtDJ*8k2NUl;^@?;av8_vW~MFGO)PY zU@*)4wnQG*rP`?Ubv^m=PspRjI4d4MZu=V6z3 zb&_nU(pO)tTu=OhV@KwMgoJ?xup?M?<5^B=&Mbxlqbm7+y}~!XM4vy0Mg8*yXiQOJCr1uzi5J!$=P2QMdZK*;A&$m>lj4oQBjGD4 z8G!i4WQ#txOA>jpH)Y0r2=XC#iy?S@=&2C#5uvnq;Dpwl^?k~P*<3X+Ro5UTkmA0Vi_J@LX}G41~kPOI4JS@&xzOPi8LTd zBZ1u>i~N?K@O05KOq_TgwN{D$yHe%_2;;sq8II$W!t-8aR1{`2ycWQq^EvM9f;q?U zgbLqY`R`_A&2J0^j&#UoowxR_mAVFVcKp0&HV9P2jZrETmAa@tL`aDIpLa(*+`ASf zG~7G>=e6Za9Krx!=lx$9p~%+}88IJAeuBk1RUb$Ho-n{7{O2H9U;t>kUtrrud)|K* ebH`quW1(-AE&lNA!>37l(%R%TAFbN-+J6DHV+ZE| literal 11003 zcmeHNe^8U>9e<#-pw&^Q*Pl?<(zUnUYU-4N@*`cfhn!Q|x?Ou`CEmFmTiF^gY7z+~ zo4a!B?$SA2BO=M%uE#9b($2fFjF80AU2GBJwszEcBtbNh@*}T=Gzo;T&-cljyV&iI zdTqDPzWF0B@IKG?$LIU&^FA*>e|%fz@}+k!WsEJa+PvvW#%}yAV_6q+Zo*$S|Kafc zjD7vhs!iYejwWOB)SBm>Zu!ZBXS;5`bzRRU!`6pSm491ic(1=J=XFbY{mLKa)Nff< zs$Ua(Cnxd3N_XVf-wPcJ-NS>4>0zm@d<4lLk_hQ0S%NJHr-}vKoKUQ)xG_K~veN3k+E-oIO*B&^qlzBZZ z)tSP!B0_*YH2Vb@xvMi73!WJq+-h&>?CfOB*_iU$pbmEH7wTS0%$OWmtU~u?gZhnh= zStiEoGrh?*vG@~B(O4_<{snb%I5@7<&+qV@%(cWL`o)MF=tOTyOgIt~{cg*}{Q2=t z%S`#glv01Q(6o;4f9Nwc@qYn}q!WRaK#)L?DjO410^z>~!fhFzSKHg$ZJf8n50zI` z_}!Bqe)upGD)*~YD}7CMeB$f^t7Ag;m1y*cA|&kTkhi}0lv^9Zuie(ZKFrVf3UM^; zU4ij+stj_5%WTgC$~7A6(6G*SV5r^Ya_I)Arhbg0hswWksm`;H;TJAdR*uCzQBC-m zytTzNp&RTU*k|{Ty{Gb!sMNNzY1>L0b-FXAyK7zx)m7A#2g+%0x0bY#-a%Jaz^28D z_Vee@qqRoFoDwy{h3*(OEWXu{7hAjDy;c#r^1*t=0c__YNi*4*t}r`HOH_H4o`Yj0 zGerTde@j8PIpiO`v;o)@irkn3)j>x0lo$)|b2VHX)S6?}XI>g#O^O7{_uDu=zjJw;Gbl+`9dFl@+DH9rht1Cd=Fu1ya(GhaW8YWS+*o zI#cK{X3!JYVu{~eXXShIqgm6W=W_Q;|~S;K#?g0F4JORcr3)M~ZWW;;`h9F5d#wQaq< zy;L1Zi%=biGjbSaHIJ7V<4RtOnr=L~`?`{)ve=!$;4ONSwYPWR(xvYw7d}%{mK;G*~BN7tKnz*DRhHz%v{BsCY*=L zGK)t{eBbV#o*tqlx7$0!xi3!e|1>mDat;G3P@F3p))E1r$hXrRMu$j}0Sw}76kQgI z4xeRw*tSA6=N73Z7(^Av9(+!zMCp0A;|rgS$T~y8yEMaz{m|q?!W@#fV!ByCioS%3 zKAmQI{41%MZ=Z!pvLVWOAh9YNF&Xk9c9c^mP@i}k5eLqv zWFsCAs_7~hnr{(tI>JdnQEIO(n{cm7dLsW7w&C+U9q!1Fz-is!*w}9F4(C|zi(pC3 zBH?)PH)5#iY^LBX@I1T!%9S;o$+#~QqeNx=g9`-hGpHxV$G^se+WN-EyO_@vo}E2h zEMJ)2Zit+?_LTWJ$C94{p-G}4#!S-5nDn*~DItL%fgtsS&+mT_@UCr;zw-He7r>7{ z431u__3hv|jYIaxjQFkyZ%tyc^~5|g47rvpUk9-po2t7TOq}ii#OXG73+Q~HI@8&! zQmI;lqomxXD5zNCEDe7_-d1_v#}P!dnV!}`+MX0iTS2B^+*wnT0I@VEec^BzFPE1pPk`?k1{{ z^~g}-_|{RJgH$F5Lte7&)r+UwPb7!uwcK3yqyA^#Zk%5iqvEN0Y}=;S9^LiRe*qJa Bh1UQ8 diff --git a/test-renderers/expected/ui/session_page_pause-all.png b/test-renderers/expected/ui/session_page_pause-all.png index 7b829d046ed73ae6c01ca93116b88688ae46e2e3..3f3c2860de40ebe2b934200aaf77d40f9e7d59d6 100644 GIT binary patch literal 13732 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 IJiBY}-(RurJ^%m! literal 10170 zcmeHNUrbYH6h8$j%Aa8t$C#Pzh?~SL3=K08>|hQIYBDt2%wkk<;lXV#moBLVI17u?=Qfn5%!Ny-uMLM!B@bwou!hbA`5>4@-23TX!GI z?Y;fJ@1FBJzw`Uf`NAigtE;jz7H0rJ_J;M9ZvaS70i^vle;z(rfBxt)fP(!SD%ZZH zl#E|oS-yX`9N^xV5YBE5M3hgbTYlRk&7U3zsbMM*tB7##!X+;$eq_?`-kS-q9W5%=0tkQ5b-j@9Y;SK* z;X7kqGP*{KGX;GvuSmw-m3>-CzL&ekn=*m5|0)ER3JG3X-$gV~W+kI?@S>V2kk-<4GJysw(9FLTc`vp6>43o+gWwGkslSl5j4!QZbJ+QT4@NiB((> zIXE`;g{whTp2ldc4tLkk4wFMYfJ^f1)y6`h5`yL5rnDA=8--Y+;k*QE&vtw*kvoOW>o)8Jz+JiT7 zp^mL2rMiyR&tT?CQPC3i!aZ#sO8 zUaoGOoe7Zmq9tfjsDHFE1EMv?!R3Y$gFSSI*2k9tL<(Z7vlW&aQ>eJw_$DZ~Bro*IKI1r%o= zy=P#Gyk75Tmh0oWj4$*oL^S9+6crVjEzWvLFe3&J)ZS5-xhZ69-HbLGh#s_g@PY7Y zER_OxI_|7`zb|xxVgh`iq^;V##$dnyLAW4zHIAfpVEEobXhJ_d7)k)^#uyBQ++#jh zQJ)l&<3^5zo4^2I&3-w-bau4yM`uWV$%#bp2);Uy1nS1pwiMvEBn%u#7|5hIYcjP4 zVlQKgH3R%Q>IF0nG?o1hI|cUbcpf4S57`^auFaY@wBtsOd0(rhPq3GAA>1_^AtG8X zFfkr+`AhV@BnZG>`z!C!l7zCH)6Jq|wsgz)3gpB!E#%s2$}voYDv|>Tz8(uIKk#X9 zod>xeIXpL3W=9MSA1Y+2FhDT}p*dQEfC~B4f#d9$V8Gik1imU%09?_Pz%_n0E#&B= zklB>tsC{E-z=Wz*gKd{~x3Kbk;ZZ6^NW}z=nG>AixNaFHDf7@w0L@_Bpo^2rekX|m zr9EjBi4_C`Er{ww38ipwPdrx)t7ZC7f5Pxtr46^=n#=>H{HwTjZb}@A3*s%Vb$X6J zjP4_BkNIZd6^wnTzH6v;=58Td_fHT6-FrxCi8GV<)J9;v*qTkM!RN=(08{BbMJB9bFFkctJ|eiLxewkc_%V+)fe+7hMrW e>fbC<)6u6+Zgsp`eyNg}x?x>)<=NMEe*6cQES@L;