From 4893b809b08e6406b051fdd36e636852b24f3b51 Mon Sep 17 00:00:00 2001 From: gewlitys Date: Sun, 6 Apr 2003 22:30:54 +0000 Subject: [PATCH] Fix for load/save screen glitches (bug #163), from chmmravatar git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@903 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/content/lbm/playmenu.60.SAFEX=16.png | Bin 0 -> 1396 bytes sc2/content/lbm/playmenu.60.png | Bin 1396 -> 1414 bytes sc2/content/lbm/playmenu.63.SAFEX=16.png | Bin 0 -> 2156 bytes sc2/content/lbm/playmenu.63.png | Bin 2156 -> 2240 bytes sc2/src/sc2code/gameopt.c | 49 ++++++++++++++--------- 5 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 sc2/content/lbm/playmenu.60.SAFEX=16.png create mode 100644 sc2/content/lbm/playmenu.63.SAFEX=16.png diff --git a/sc2/content/lbm/playmenu.60.SAFEX=16.png b/sc2/content/lbm/playmenu.60.SAFEX=16.png new file mode 100644 index 0000000000000000000000000000000000000000..23f630e78fe63e81fff2516f2697d78e41905ea8 GIT binary patch literal 1396 zcmbu;|8Em@7{Kv|c57?tx-VQAD{T)QvZLZ;1#2mnTNrEi1uVBwDRes}S{J$uoUBTf zTMak`Y6%+~9oZ4wfGwRuH|D105YT}GEsJq1OAk;m@}&gDkw82a1wa1-KYX4iuOHsO zJ)d2)qa;nKRRTa-S!r=4+T-X26;d>BHnkl?OWIIW=2R#YSAJi09SP`_PFr?%Hl7Ab zB`(R9802^=X25YJo{}<6g3q3f%jI$Q)S$+(96e|>cuvl=G);bfKBWZ=qf+uyNHwJ-NQ%NJg+h`-naz}1t;P^7Kw;Qi zpytj)peUfg0#>V)0-y+jqUIVYf_e@Xpw22IbrfN;g3(BsOcJfpX0tJQU@$N;o6N0Y z(n&YN7#NjGDq|`t7>!0_Ky(6QFqnZcFF{}!V8973mx}>lNRna9g$&6of+Ezpo^cx) za)k>D3z-!wq9>R;SYui1ok{L@BVPD-l>0 zSf~e|&&L9=G|jT5PL^hiVJ+%>D!+xLJw9+cS&t`Wv9qC}fm;S96Q^uYhI6?bPnhFO z9EPPTxg9&W+}vCfVhA{s$qk(Q4Frw@4nok<(!v379uLR4y_|=84K|^!B|U8CJdG{j z^>U4ksmr{(c!)qW z8s!0azn|yp0=%EEfhN>Nvj&~KKOBWXfDeadjzCvemrwxxJ7cHN!a}B$zgIsJ}f6()I&X3P#9=)}3{iTeWBl=0{-TSBUzVl0e z-F@bETKC=~L}_sQ(~YC;10z)JwoG3;Gc3OT!{+(%v@7;C(ut4FFa6v!ey07n`=`y` z8yg=CMb2uu_L8E}wY5WQYqx&4>TuoRKAV0b@hzEEJ5u?jqIbRGv8bKznRUkPBSX?)&0q&*!`E)Z}g*T3z35<|=Etr%o>q%e|B7^ zZej7p&q~T4jlOvDy|=P6KOMh$U?AWa&HLx}*wmuhyx8IXUn<0z-aWDVm*u6~PF*{m zJutCwDABdf%|5{`dCiYqJ@9$mI zzdE)dJaLWsaOz?C=)H)%=BvSjiQU65&v-=l?kv=`_LqOqdxD?pkd*&-H5r`lc7E*K zb*!y$@4)n)h^#m3>z@2~+!s@;%9~dwww}4W^!W1ro~Ely?z}xuURKeJr9RzA969*S b9}m;htJ+Hbt@zuEZUxG0j^b$1`tAP%*#Q%0 literal 0 HcmV?d00001 diff --git a/sc2/content/lbm/playmenu.60.png b/sc2/content/lbm/playmenu.60.png index 23f630e78fe63e81fff2516f2697d78e41905ea8..65bd7eae153692cb50ae2dfd747024f04a825486 100644 GIT binary patch delta 646 zcmeyu)y5s!8Q|y6%O%Cdz`(%k>ERLtq(1?17Y8$tTz>qy6_8>t@$_|Nzs$lW#>n~M zXSNhjh_k>WvY3H^?+6GpPSxg<1`4vIJNh~@Fl_AS{*%bM(SVP+o{7`b#WAGf*4r6p zHy$$JVY4g_)|AsK)Scp_TJpo`&vF%+`KHa^Z+pw!Y}YB$nRvVV*ynG%4p(?cHca94 zm`NG&Uw(CcjhpF(=Db_FFRsgnZVTC%o1&Van~_|lvt#?~ey!+JQ@8Y%9XHb1Xn0qA zim372=UVyw|JOaq-C{j0v9tH(z6EP$yp&lGGkM1DG{4CdO z$JBZS_3!&`xfZiN^^V;ZHoblN`oovAiyA(y{JrU3?a#E&!iA4d9!s?SwsEyd@&02o ze4mE@EPeWDF5m6nBGy~xc5CeZbm#o?;FERzL3^7%Ee)C3Klj!-(@iyb9x?2fZlAqZ z=2t)KLGRs7Howk@N#s74I`y`GMNx0KRf^>U{p1Zr){|nZ=kmY*RCFqy|M{CHu`5}} zH0yN_o@9ORxHfIUr;IHz%&(eCJ$nkTl)rf$e#d!(PN(6u<<%@fY6_`Ly?D;t75iqSVc)I$ztaD0e0sv{s6?*^x delta 628 zcmZqU{=#L@8Q|y6%O%Cdz`(%k>ERLtq^|&R7Y8$teA+T)Es$a^cJd72;NZCZ(Eq{4 zNIvFz2F8*gzu^D5Pt0F4Ffa*wx;TbZ%y~Ow_r${nJglGqeYshd2hRgF<)yo(?8#GW&iYzQKyPBpX7eoy5g|Z?CI`KXCtz zc)hFawHteEgtCqWt>#!6)?uXM#a&lF{hxOD?5}=>K|95k*7ybO-2FvrZF$%1y8BX7 zS3O-;Kfm{7nsW8l;DV)QvxCx>{@Q0?!*uPk-xfN@(175pON*wlrinveY>h(U%k%0 zTfv^TdCR;Ty@yPNe+I1Vu$P&&r)w%+KxVOh%^%a^HY?4E%WL|6$BRs_`CSTb+>~9u&K{t~wsOys6qhU)B5XRsFiVK3)CoKf1cR z5Dg13V_UNU0A@jft0S4Qk7@T<225{LmkV22>6vle+}sdr06~bMo1v70u!T|tfe;o;-w^TgLO2`_#83hd z2yz67<3a`q0uUep-rn8_0EkeCAdVtLh}Z)cCg*J|B^Mwpk z0WK5<0z5E;0geM4qyn{CjRSzAD2@jza1>t+)-yS^X{H26RcfG6;3}2j5=DA?I^he% zVuGE{u5uu(R8<5aCLqX&P2}ej4h{}th8jSK#W8@0iDN(zfB+g$R#rv;K&Vs%5tB%$ zh$yg)$(7Bkk`t<|GLV=^WMvuoCKeSHkzqh8B~6P=n?7RBJ2c;o%`?*aj%MJR4Bi`xsCZpggu8Zpfnna z%C4X^)DCc%$#rpi<0;LBE>KZHUASNpThY?eLMH$erOjK+XC$<+c7~==+Rlz;PCtH3 zOC%DM;V7U{^Z=j_)G(lFK!Z^*F)={{K-bpN^Z^}ROBaA9CO2U@lSRmW&9)lLpw>qJW=EDnHJQndAnycr|2P zzZ+gsp114Vr1#q1m|!yF^4LJBFyyxDWS@H9aY56_Cg-gs^$ulsPwDFH_ifx|Z?y4i z-5xoXA3XUeE(X#|9J(W}eAlmR$}iL#rb;!PTW z?<8C->g!2*ToPlpf9T!@3!6~)$eaC5>i4lp^Vhx}uh%%D$~Jv=cL(R>nabK@ZmwIh zJ5D=YDbGnOdMwQiJ$ak6aD6IrWu&=nT|DZxy`;~ldf=nw;U%t=c!<2-3@ zvvpa3ZgE1D%x?c(mDbSq-wu*+^7n@dlh@{?Jw0*i*N$yh*crcB;+Ka%kH*_v5Fx8VCY(w`n+jB$z z$BAE)9i*5$Lwu=p?pwL6e$OvEcg&8shiA=&=Ffq6OgZbucWmoS`!)KtB(!tE&~)~w!OVSIOmH~B%Pr?nokWUP$S>08{v5w|Ei{*#!2lKF8gV4e9OqZcT?N! zefyW$>U{Gj*OhX1pWp1-W9z#3Q`D3tv&0?g^Ygi`m%U26L9lyhB+`Zx)w5SLjvmx) zanEay>fIzXRqP+GY4-$a(`su@6esl2gMcXWzRbY-RXeqx;&QAFq8@13KQv73I%ijV zn-?;hlI-AD?~qhe+TgDH_r(u#wtVW0{i%|fbuV;icj5CTl|j(G!$Kw6UFuh_9G>KB zkDXTDsQ!~BJlY!|tm!>}ZgbWe)%)1%1>1i=${l;T!ZG#tVy|0PBbCQ1ENT|MTCNS9 zjV?`J^QF3NJUM!>Q9#C08$&z8*bO5M-)=op%UUJKkDK~)< zzSr~*6a@S;w%peDgh=+*LzkCR*RjX2$o<%dAit$^WJe3K-78;A?HH}`Hj3KHIbJlW zWACdI_s7eF<~+Odqec~ct+~ZZ> WQ*%zwu7LR?L6Cpg>PFc&IsXC05PO{f literal 0 HcmV?d00001 diff --git a/sc2/content/lbm/playmenu.63.png b/sc2/content/lbm/playmenu.63.png index 309926d3dd678ab741eb381a931e3a10466ec7b4..158ebf587665231fff7f013d8ff66a399a6f4cb2 100644 GIT binary patch delta 1478 zcma)+eKga19LHD5Lu_)p>B`FO$;I>>U2-w@U^L9b7@cyP_mBI>=kqz=*B_tH=ll75zwepN?FNJ_ zPj@tU)Amgu5D1KML3pX-yxQJqZ&3T|cDxF8(7K4hBDDk>nuZ|D5?MA>jdU)!5Mn_f z$kWfZjt+wutD(kuI2H~9)#d1_&TOnZ1ld5@=!`+YeJ;P6W&A|0I`l0nh~MWWas-69 z+Em({7?BX&nV0=s(|;53_6N(SIh@DeoNm{oj2BS%hd2(vQ9UAqau~FH+K6g=pX?;f z?i^qtTmqZ7CgV)S_|97l1}lJmNgC*Z>!HOjdXsa?QZ$Ma!0LP--~AJx2=exMxG@^KJ1dk8?Cq4<4Dw~ zpn~WI#Yfirpi%&BPm0mH|DgXHngNr4jq@p)QTbD`!I7(!kwWusnb54Pzu`l8X*^(< zB+FQKSO_^PcoqlbDy;6dwcpz|R&7}2!L4f~W5bfclq73Sp2Wb@RIJ@!g9}@T=vl%S zg`SNd-n3VG7TxIcx~OqE_;aUFJVB3qeyJ$YuQekq6Oqc3UV$*7hyu|pHb7hu<~|7_ zXU6s_psqGgm5=7zHjjPpM@?JR8EfFlmN`&ng#Y2DQQ9^8>iIXGYi~#SIteJ8ph!g- zP?vh09ONQCc@bs)Y2Qo-33G0Y5sJPV{b1Kw;33R(lo6Ua)wJVfw9h0*9u@O=TBI95 zh_9nar*3(vOh_70o=2AE_MX_CU~Il>Z$2;CcZ9#ktVVCm#Mf4D_o2AA_jm}QU>B*b zVUx1%3J?APO$2?}(IKG8!4lLh(vhU(0oSy;IW^VPC8iBA#v^s#TG89= zr`sF36k(QwiQVSu$jb4eqUvgHcYXW~^70vD9=A_*=2dyaA3_U^l*P23##aq?jRBj~{he$T4N_wKTzaeZx90KZ)99MS(qb!kBq`<{=&COTV& z1Xi5I$H+ds(Tw?)+!xrR2fh2bGp&xeIEtisIr{M;8<4qh?v}8K2+4@T=K|A^4o}x6s{Q$T-H@woqEc9e-HRB(>U1KMo3%8q|+x6EKV3iyP5Rn0VC$+dGyue zag{Yjw$&&trz!}tEay94sr-#^;q->5kwyolg53 D0y@s1 delta 1394 zcmX>g_(s5>Gr-TCmrII^fq{Y7)59eQNM8Zsqa4gYQo2h=1V}L#J9&n1aB$py=>K42 zBp-7<17k^$U-19jC+4pi7+ASIT^vIy=DeM2Shm@K=eYIeXBsgJ9&a}+XzaVW)1^#r z;`QF^+yx@XRg`EncXCTr&QtyG?PXz7YYO098K zO003(E9%{1+r3|1jE@pw%)EWjXv){CF&o-D8SmWe?>QxUb3MbykE!+_+UyJGopNG2 z>WV=1$Q)|0*|>CPL|>27HT{xwRX$QuOmDNwv^d_|va#aTrW_)onlkg_cv*CJ018~r?YqIUXOzr8@sNY%ev7Q#oK-RXrz#|uR+khs~bwbMP~^IKYPBiMAxk*=;j?eS(^bvUvG!Z8;*VBNmXZ8W00CO{E?}A(2z0L<-+e-6fx$KeIDCxT)yg z;-&A7=WXLEdoNM5_0I1HNzxld*X~U&&|0*esZI6Oq4_%%R?Jpq6BW_?propC-}cto zzY)im9emPvFuZ$@`|ERc-qJtLZBY{SMFcuhIM+i&cREeI2~0S%|4h-mVr#y#{&Hpc z|GNhMwcH}YoFd{tq`BgGdETj_cj3=0d{2qJI;wf?s&jdEQ|e?`G86A)v^rgVnrn3LlvRqv#5+eCS9zz-Tz9vH$9=b^)7>MDmzp)(jdCnb z`PSR_{93g*fYq^fkAGX)h3Pl%#oH*TnIFFXJpC^J*VlPUj#tfPS2(u63hU>qUYn+S zPF7d{SLkaApb`VSE6(=28S5MtM#@#+z8fUX7kaKy>v_P`73l_T$3ib9Yw(10-UpOdZZyiz%9 zM*k{<6)!h_cjIz}jcV5XXoVP4y&-A|> z8gnnXYs|Q`c1>EXSIW2O-5rIW=88UiVy#l}sn=}3obM?=u2pweCFagqz!7%s*q?=~PG!ZM6;EDWo6H(}=GfOHJ(EY@ zqwT(y#;;a=)nVXQ%VgYUG=0+BeJ2kng)8@otG ze$Ulw9qtX$lVlwiYdL*3T+!CF=y*L#m%+U6p3bJ6PIEiz45mDOU0?oSh81gQF5mpF zS1Y($7a3hma`WW8zim@biuat$3X{!$3u-=95t+I7yz|}fpKF+nPfVQh&uWT(aOmtn zNpbeRDR0AP{qX2qFMsi3rpAlsCEpZ!pIm(Yw)XsThq<2n?KFPB-tHNH?q26){fD2Q zoc#X7roF|=?zB>Mzp?KvpNzc$7PIH%#8gC2vh00zclITI|BPO*YsYdHNeX!>G^!EI%1MUHx3vIVCg!0Q`%Ci~s-t diff --git a/sc2/src/sc2code/gameopt.c b/sc2/src/sc2code/gameopt.c index c227ce58a..51489f04a 100644 --- a/sc2/src/sc2code/gameopt.c +++ b/sc2/src/sc2code/gameopt.c @@ -29,6 +29,8 @@ BOOLEAN SaveProblem (void); //End Added by Chris #define MAX_SAVED_GAMES 10 +#define SUMMARY_X_OFFS 14 +#define SUMMARY_SIDE_OFFS 7 static PMENU_STATE pLocMenuState; @@ -532,7 +534,7 @@ DrawCargo (COUNT redraw_state) if (redraw_state == 2) { SetContextForeGroundColor (BLACK_COLOR); - r.corner.x = 1; + r.corner.x = 1 + SUMMARY_X_OFFS; r.corner.y = 12; r.extent.width = ((SIS_SCREEN_WIDTH - STATUS_WIDTH) >> 1) - r.corner.x; r.extent.height = 62 - r.corner.y; @@ -540,16 +542,19 @@ DrawCargo (COUNT redraw_state) GetFrameRect (SetRelFrameIndex ( pLocMenuState->ModuleFrame, MAX_SAVED_GAMES * 2 + 1 ), &r); + r.extent.width += SUMMARY_X_OFFS + SUMMARY_SIDE_OFFS; DrawFilledRectangle (&r); } else { - s.origin.x = s.origin.y = 0; + s.origin.x = 0; + s.origin.y = 0; s.frame = SetAbsFrameIndex (pLocMenuState->ModuleFrame, GetFrameCount (pLocMenuState->ModuleFrame) - 1); if (!pLocMenuState->Initialized) { DrawStamp (&s); + s.origin.x = SUMMARY_X_OFFS + 1; s.frame = DecFrameIndex (s.frame); if (pLocMenuState->delta_item == SAVE_GAME) s.frame = DecFrameIndex (s.frame); @@ -575,10 +580,10 @@ DrawCargo (COUNT redraw_state) ); if (redraw_state == 2 || (redraw_state == 1 - && !(((SUMMARY_DESC *)pLocMenuState->CurString) - [pLocMenuState->CurState].Flags & AFTER_BOMB_INSTALLED))) + /*&& !(((SUMMARY_DESC *)pLocMenuState->CurString) + [pLocMenuState->CurState].Flags & AFTER_BOMB_INSTALLED)*/)) { - s.origin.x = 7; + s.origin.x = 7 + SUMMARY_X_OFFS - SUMMARY_SIDE_OFFS + 3; s.origin.y = 17; for (i = 0; i < NUM_ELEMENT_CATEGORIES; ++i) { @@ -592,7 +597,7 @@ DrawCargo (COUNT redraw_state) s.origin.y += 12; } } - s.origin.x = 24; + s.origin.x = 24 + SUMMARY_X_OFFS - SUMMARY_SIDE_OFFS; s.origin.y = 68; s.frame = SetAbsFrameIndex (s.frame, 68); DrawStamp (&s); @@ -617,7 +622,7 @@ DrawCargo (COUNT redraw_state) r.extent.width = 23; r.extent.height = SHIP_NAME_HEIGHT; SetContextFont (StarConFont); - t.baseline.x = 33; + t.baseline.x = 33 + SUMMARY_X_OFFS - SUMMARY_SIDE_OFFS + 3; t.baseline.y = 20; t.align = ALIGN_RIGHT; t.pStr = buf; @@ -638,7 +643,7 @@ DrawCargo (COUNT redraw_state) font_DrawText (&t); t.baseline.y += 12; } - t.baseline.x = 50; + t.baseline.x = 50 + SUMMARY_X_OFFS; t.baseline.y = 71; SetContextForeGroundColor (BLACK_COLOR); r.corner.x = t.baseline.x - r.extent.width + 1; @@ -689,7 +694,7 @@ ShowSummary (SUMMARY_DESC *pSD) GetContextClipRect (&OldRect); r.corner.x = SIS_ORG_X + ((SIS_SCREEN_WIDTH - STATUS_WIDTH) >> 1) + - SAFE_X - 16; + SAFE_X - 16 + SUMMARY_X_OFFS; // r.corner.x = SIS_ORG_X + ((SIS_SCREEN_WIDTH - STATUS_WIDTH) >> 1); r.corner.y = SIS_ORG_Y; r.extent.width = STATUS_WIDTH; @@ -717,7 +722,7 @@ ShowSummary (SUMMARY_DESC *pSD) { BYTE j; - s.origin.x = 140; + s.origin.x = 140 + SUMMARY_X_OFFS + SUMMARY_SIDE_OFFS; for (j = 0; j < 4; ++j) { if ((i << 2) + j >= pSD->NumDevices) @@ -741,17 +746,19 @@ ShowSummary (SUMMARY_DESC *pSD) UnbatchGraphics (); SetContextFont (StarConFont); - t.baseline.x = 173; + t.baseline.x = 173 + SUMMARY_X_OFFS + SUMMARY_SIDE_OFFS; t.align = ALIGN_CENTER; t.CharCount = (COUNT)~0; t.pStr = buf; if (pSD->Flags & AFTER_BOMB_INSTALLED) { - s.origin.x = s.origin.y = 0; + s.origin.x = SUMMARY_X_OFFS - SUMMARY_SIDE_OFFS + 6; + s.origin.y = 0; s.frame = SetRelFrameIndex ( pLocMenuState->ModuleFrame, MAX_SAVED_GAMES * 2 ); DrawStamp (&s); + s.origin.x = SUMMARY_X_OFFS + SUMMARY_SIDE_OFFS; s.frame = IncFrameIndex (s.frame); DrawStamp (&s); } @@ -759,7 +766,7 @@ ShowSummary (SUMMARY_DESC *pSD) { SetContext (RadarContext); GetContextClipRect (&OldRect); - r.corner.x = SIS_ORG_X + 10; + r.corner.x = SIS_ORG_X + 10 + SUMMARY_X_OFFS - SUMMARY_SIDE_OFFS; r.corner.y = SIS_ORG_Y + 84; r.extent = OldRect.extent; SetContextClipRect (&r); @@ -798,9 +805,9 @@ ShowSummary (SUMMARY_DESC *pSD) r.extent.height = 7; SetContextForeGroundColor (BUILD_COLOR (MAKE_RGB15 (0x00, 0x00, 0x14), 0x01)); DrawFilledRectangle (&r); - t.baseline.x = r.corner.x + (SIS_MESSAGE_WIDTH >> 1); + t.baseline.x = /*r.corner.x + (SIS_MESSAGE_WIDTH >> 1)*/ 6; t.baseline.y = r.corner.y + (r.extent.height - 1); - t.align = ALIGN_CENTER; + t.align = ALIGN_LEFT; t.pStr = buf; r.corner.x = LOGX_TO_UNIVERSE (GLOBAL_SIS (log_x)); r.corner.y = LOGY_TO_UNIVERSE (GLOBAL_SIS (log_y)); @@ -840,6 +847,7 @@ ShowSummary (SUMMARY_DESC *pSD) SetContextForeGroundColor (BUILD_COLOR (MAKE_RGB15 (0x1B, 0x00, 0x1B), 0x33)); t.CharCount = (COUNT)~0; font_DrawText (&t); + t.align = ALIGN_CENTER; t.baseline.x = SIS_SCREEN_WIDTH - 57 + 1 + (SIS_TITLE_WIDTH >> 1); if (pSD->Activity == IN_STARBASE) wstrcpy (buf, GAME_STRING (STARBASE_STRING_BASE)); @@ -922,7 +930,8 @@ Restart: { SetSemaphore (GraphicsSem); SetFlashRect (NULL_PTR, (FRAME)0); - s.origin.x = s.origin.y = 0; + s.origin.x = SUMMARY_X_OFFS; + s.origin.y = 0; s.frame = SetRelFrameIndex (pMS->ModuleFrame, pMS->CurState); DrawStamp (&s); SetFlashRect ((PRECT)~0L, (FRAME)0); @@ -1045,13 +1054,15 @@ RetrySave: } SetFlashRect (NULL_PTR, (FRAME)0); - s.origin.x = s.origin.y = 0; + s.origin.x = SUMMARY_X_OFFS; + s.origin.y = 0; s.frame = SetRelFrameIndex (pMS->ModuleFrame, pMS->CurState); DrawStamp (&s); ChangeGameSelection: pMS->CurState = NewState; ShowSummary (&((SUMMARY_DESC *)pMS->CurString)[pMS->CurState]); - s.origin.x = s.origin.y = 0; + s.origin.x = SUMMARY_X_OFFS; + s.origin.y = 0; s.frame = SetRelFrameIndex (pMS->ModuleFrame, pMS->CurState + MAX_SAVED_GAMES); DrawStamp (&s); @@ -1078,7 +1089,7 @@ ChangeGameSelection: UnbatchGraphics (); } - r.corner.x = 3 + (NewState * 21); + r.corner.x = 3 + (NewState * 21) + SUMMARY_X_OFFS; r.corner.y = 176; r.extent.width = 18; r.extent.height = 18;