From 2ec1b8df07ff7e5b640fce29b2f1fed0523d4618 Mon Sep 17 00:00:00 2001 From: Ged Murphy Date: Wed, 24 Jan 2007 15:25:43 +0000 Subject: [PATCH] merge new icon/cursor selection code, cursors and radio button drawing code from head svn path=/branches/ros-branch-0_3_1/; revision=25615 --- .../user32/resources/ocr_appstarting.cur | Bin 326 -> 4606 bytes .../user32/resources/ocr_cdautostart.cur | Bin 766 -> 4606 bytes .../dll/win32/user32/resources/ocr_cross.cur | Bin 326 -> 4606 bytes .../win32/user32/resources/ocr_dragobject.cur | Bin 326 -> 4606 bytes .../dll/win32/user32/resources/ocr_hand.cur | Bin 326 -> 4606 bytes .../dll/win32/user32/resources/ocr_help.cur | Bin 326 -> 4606 bytes .../dll/win32/user32/resources/ocr_ibeam.cur | Bin 326 -> 4606 bytes .../dll/win32/user32/resources/ocr_icon.cur | Bin 326 -> 4606 bytes reactos/dll/win32/user32/resources/ocr_no.cur | Bin 326 -> 4606 bytes .../dll/win32/user32/resources/ocr_normal.cur | Bin 518 -> 4606 bytes .../dll/win32/user32/resources/ocr_pen.cur | Bin 326 -> 4606 bytes .../dll/win32/user32/resources/ocr_size.cur | Bin 326 -> 4606 bytes .../win32/user32/resources/ocr_sizeall.cur | Bin 326 -> 4286 bytes .../win32/user32/resources/ocr_sizenesw.cur | Bin 326 -> 4606 bytes .../dll/win32/user32/resources/ocr_sizens.cur | Bin 326 -> 4606 bytes .../win32/user32/resources/ocr_sizenwse.cur | Bin 326 -> 4606 bytes .../dll/win32/user32/resources/ocr_sizewe.cur | Bin 326 -> 4606 bytes reactos/dll/win32/user32/resources/ocr_up.cur | Bin 326 -> 4606 bytes .../dll/win32/user32/resources/ocr_wait.cur | Bin 326 -> 4606 bytes reactos/dll/win32/user32/windows/draw.c | 148 +++----- reactos/dll/win32/user32/windows/icon.c | 330 +++++++++++------- 21 files changed, 262 insertions(+), 216 deletions(-) diff --git a/reactos/dll/win32/user32/resources/ocr_appstarting.cur b/reactos/dll/win32/user32/resources/ocr_appstarting.cur index 9824325bc4137d634ae89f5bd72797341ffa09ee..ed13fd9780139c282eb3ad4dd086ab46ea869c62 100644 GIT binary patch literal 4606 zcmchbT}+!*7{^Zm?F3z?^J~`FQl}F!d>9u{H``zgF$TY*#+XQ=i+bUOTxtj}NihPM z@gtCM!!E#RcEJVVMoCB;W9Eh6jfuT5!i8Zs1U8~5Lf_->U;56jw4)u2r}^!?=k)FQ zKj(R#bIyV>6@0>B{aaz0e8${w41JU7e{;x~R~UOhV-N!$pNwT2Jy&GWv$a-Di54=Z zGt0t3V-i)yC!B-kuoE&t6WaPL7!yi>1I&C6+zodEE^ae?D8Ujv_6!8Ja03h04PCUq z!B5czn}{ZQG9SKAh>&FrdVtxJ@I9P^pJ5(6yF6aujDJocN4I&t>j5tn`E5?NcCArp z0_j!34R8}^wITpF!u3!I*UFFUvO2fYsyyz4V-SJ6Kz|viMhEsySln+H#Rox z;^Lx>$K!wU-6^Pp+dz3L$5b`u-QnS3+tSkVE8|hn zv34`4MoTqmE3S&0j+!H&HB>|XJX+U@v9U4l2(amN+BP;e{=oR7pqkV^DAh7C<>foz zUZ{tMvd_2E%7@%I==o4{bMwsd@^Z$9p`oEo#y)@+Q2mvYd#y+7eipuhQ*aVg+hI^F z^^Rv5eL9b{wY8-tCnqzT&Q!eH)EN*K2EQ(>%|^+n`+D0=fEnJ`Am~ zSS&RIcOy}ezr{|p|3Fevu>*AG?tf;={ zhuUmz{$@tSLHauD^7j%$W!sMWIoj_tdmS8sV)t;l4qQ>ch_>>++qipv7S-PeZTV18 zf1k7q>hGiWHvN6p_VjiBdwWc0@O$9Z`CitV^zu#l*WIAA_b=MlLHDojt81-|M8>3} zv+g<2xhD2%e>2sNrWoih(f?_M&b7VT-%M4q$&Y>2we~`Yzb5#%a4M~J{B|BH6Mom1 z2yB}FSuhE|V;sNZbNt5VR2tqfj2UwwWK0kDlh7Yuzz57`nArpX6%&OX6s)zqa31~x DSh;(a literal 326 zcmb8pF$%&k6vpv?bPzT%VV>n5-UdBU21l{Zfgn9r64^Vu5)k0T& zk6*szK|-L1BTZqb&KyjDg=oY|ocdF3d=K4fX5E2I`^L6WLx3o(ndJxO`3;}%@Xri? zkMKd6Z}2=wsEK8&YmxHL(jQc%6s-|f$u-8#iLhlQE1UUVUe1nkska#(bhZEh diff --git a/reactos/dll/win32/user32/resources/ocr_cdautostart.cur b/reactos/dll/win32/user32/resources/ocr_cdautostart.cur index 53a8a448925d3cb36c0e84c0b8c5dd27dad1bedc..1c8966ed02b7f03413c1ccd619458d977a2cf7e4 100644 GIT binary patch literal 4606 zcmeI0Sxj7I6vr>1MWM;y232TTY^n*-)@Wkl3w23}4?Gx`Cu4Y!l%}@bDGkU(Gx7AP?H`2SyL2-TvjO-y>okMFy8zWe>p zIp2136~z;OAtC(lsT}c8ltYSwYem2Q*-ueE!o3%H4;%#^_|wf*ufQ)Z{S2apc#9ehR4=Ikb-)7JY~C^q#DT^u5pr+7LUfcpqE=pMhiGb#M?o4cKP4d|-UfgKH5H5qCpFL!GGK1Sdf_ zcm_~^CynFHcvv#Nw|snjmS$#VWOjCzhuU56F?bnJpL1X*jC$o z^7HelZw2pwL%;xbD)*10FP=^uZ})uTI8U^+v^X_Qlko8HWn7;JZvY<4d}b$%u~VD6 zjOz$^6I_gniqaT+VPPT1z8|~`UINSy_l2D>=AG;57KjDM0LR!?R8+J={m95j=Kg!| zHaG~F`<*iC^A$&YeSH^DegksD!or*|>F(}c!Sx)VZ&AQK_n3d?Zo9UsUsY8_AMi4z zj2ewbCu5I`i_>sj3r>L#z-xfx&oSe(+qG4F>d}Y5z(D8J)RfH6&x^reVEmWBSKvdy z`Nw&}xytpj-5lJbPaoV?Q&Yov$M`w^ZtSSP0Nnc9U4!fDyZvC<(b1vL5C4FG)K6n# zaxSE&|86py7cw%A{t83eyJYyYY5(q0S=3(GK?Ol9@g8y4(#yEZvF zDWjvK^i3-%D_t^XWE8*$uFuWn{SDK0IM z^73+NYHE`5-^%YKCMSKlQE{}pul`zXv^k7%ZpJyZ=x{h>aCk`i2l};YRb8&AtX!z8 zuh-~9V`HPVwYM#&n~aw2=>J_CeeKW6$)1C06B85C+TJduWu?x^uRa7ij zR8>lAYpeA2^=auQ(;r*acWHAUJPQs}8~9}AWX~dY=kV~bG+3_7F9ii!d_qDxe2A~A zuGTOorL(hBY&M(IXwKk%xlv>OdG@&1*gWcIz^XRt9*DnoY;0^6`?1v4)#>}x<)1Fg zuUD^X-90_h0qw!TL9$>nXEflMjT-fz09@a9P<{gVzNg2HQeR6+sVQd~o0{ysy}g>M zs#081B3N@$Q&%e;U7d0hYhikNS}ZqiOkw_gj^{RGe7ELa_Z|pv!SiKx9dmE__F`^U ze}8`u=DCKoCKiiD+A$Z9bHRSCVQfb7E`9gI7WN_LU=MJ=|9G#}MqM}VE%X5~jtvY9 zOk(d@!9L_1A0MA?YHl9S&CAPk?LY2EHe1q<)tK-1Fk?$fNj{yKomHKclQTwc(Z*zD3~I6`fSQw4t6xJn(^qpbe&ti&T`v0KC@csF$SSd&PNttFYr+ F#h-xnd&B?$ literal 766 zcmcJLv1-FG5Qcvz1w$#QQ`dOxTQrZ#ML88Q?FaL)BL1FisEQ!HUgWjNyw7<$LU(4=EbcW`G)8F=q$ zNc%w~W)xQ}#qGZ_ZJn?R<3Up%wX5zqzc*AEw=0>ljK(Xzd^j+2fc~2oZEf8{s?ZO) zweIn$E0D2jtgGst16FJ6o^8)ydqXyDfv+KNV0#AHZFSFV%I&5uo8-q!ciTg`PV-u> ztI{?x>mompO;0>^RSuB_eLJvEl*T_PvZL;k_;dEu$3oEn0|y@@x_oy+#Wkb+ET24`BUMY@_# zs%nz_%J0eyj9ITIrQS~UY&x?WGsTwU=L@qZTN&{C0{n3t85T9wu%Eqa z`VPF=`OeSt+KO>ouavbIq~&U>0;>Y60y7jinz44yQh32h8Kdif7o3$5Kgu{Oyx_9( zqcngAUVd1wiccKL4=?=J0zO!RKmBulG;KkzqdWSi;uDi^=N|e_Sm*bP-tu?M2-lqe z|9$a^>t0}<-wm%zsc+ko{8QYVEmh#$oc}?<2dRQPyDsD->@V?qpQAzK`MFo<4=+B5DPimV}lPn9$&1>7}THclW*td J*!N;z*%w!(8?FEV literal 326 zcmZQzU}9ioP*7lC-~vJeMg|5k1_lNVAO;FCH~=vt5Q0Dhn8YOh|NoCENQ{UAP!S$% T|NjAAd9Yrf5g-6`!+-(++G>bI diff --git a/reactos/dll/win32/user32/resources/ocr_dragobject.cur b/reactos/dll/win32/user32/resources/ocr_dragobject.cur index 45f593fb3e615e9372a3a4c67e8687ec69be3bb6..2bf0c732f200dfc50ea16328e0859b7d14d869cb 100644 GIT binary patch literal 4606 zcmeI0Z)ntY9LK+#=ASLP%+l(t+m?v3+-?{Z5nO-F(StpRG9jehvxF3Dg83k}8zMBK zCke_T=z-8bYDHUQH0PZ{`Cubq#U!;R1|<%Mlg`xLeR{or`~Aip+suo*qX&MD*L}ag z@BQxk{(L^)e?NZCRr0B+(RZbbRyeoHIj)^|{qgP2y-3??wZRim!N)VdP`%Pebu&|O z;}+*uF$zig7o7>W6v7KfT|}HoxJU{T&PAMa_rnUf8*p)k;lqvD2iz8#B1@T#n4MY? zv%$w>mW+lh`5HJM+LLPUFiY~66dZ*g;79lk0?W@=jptutHb-Z8ezW0b2L6{B&=SvC z@n!RI9!iU#%13qiQVyGs$gQv(wB6hX+H%x(3zRY+>RUSZg0_<;Sm)R8q111s)L%gV z%iwwV1h&Bjcm!6$ouGS4<%8mT0KSXGVpnQwYctf(z^hOXcY*YaX&P_Eqf+rbRaI4W zb$oo>CMG6ys9k~0&;Zic94LlKPkmMU+(B6b-SK$*n$DE&?r!N1!g^Q*At+Yv7t@zc zCyjS7-!#sD4h;=uve~TF*VkX;x)UCQFz7$UFvTuy=_;-$JPCVST3WJ-y{D%~V}BB! zg|(pkXkRFXDeqcOzrz;T02<@b-rn9x={GkwEBE{1X?PS?Ha0e1Zfa^WLH#^!4}u;` z3N`8Lk;ba4t1naThIi}g>N1#(jEqcjeF@}S3p@i4N%zhExV_T1Ui$j|VUQ1n+O+<_ zz<_-Cn-0!)b#-MFds|yumg^(16<%m)Xt)5Eq`&uQhwVPJ#iG$@RzCQ7;I@KnT3>qd zAsh~8#>U1holaXQ6jJ>A;0@R)-M*hcx6h6rumgkpZ2$Lr?5)GE+s=cVys;=qdFtjo zefbbrDwWc_Q~Vl#59uE|dC}^{>VNYde7cJ_O`uqWLMGk13y#_4-b3uqrJU7 z6XgHf6Mgp8PoD<)pCJF|ra~&{d(QX+eP3JiVn=Ih>r0etm51c%e(V3`Yt6rlwCQYI z0)^Uj^>el9xDnRC5;W8DK~Vpdw%cGK6l!zo&!VjurK9H$?LXSPbOs64|I2g9ton0k z>lr9lL;HU&To!CI^sl2WtzuiAzOSu)a0h6-m2<^i3T?Xe&Rv~7!5T|b-wx%_M#j_E zy3zXni}GdA^IoarMq=8O-wZql%YAgdmn!FUooAW@T0_C}kJfRyv~wMiA7#}I_Sn2q sFB9hRE`m2HlO7#jIZ8btDtN&ncrWpfPn17$&)NScF|as<|^n&TbX-F6#3ZymxAeM~Wyl1xe?j<}=3rO7*~*kUQI td0(MG`HSf1;CvQ;_^z6G#R+G--rKi>U2QM|6IDQp9_Z;`GiDYj?FYCLbh7{e diff --git a/reactos/dll/win32/user32/resources/ocr_hand.cur b/reactos/dll/win32/user32/resources/ocr_hand.cur index cea3d766b2c7fad18c815551fd0187f99c4fcc9d..9815d03bcc3d19da1ea6d53126ee04eeb8d7424f 100644 GIT binary patch literal 4606 zcmeI0O-!6c7{_P9-KDxxD1u+$E>KEETm+(#fOOqjA*<3tOYzpm_RuEE!2}M5WJ!>- z7jGQ!WVRkeLP$*bDu*7R;ex1FLWDpFWNFgUlJ5KT{~z{MP#5Q=+d~r{@?++motgi9 zJoC((SE&sA1p*oB2-3G)N}W&&&q_bXa+JD=vXd+WA>hKFwq(M5MiS;lgvr4cy{VLD z5e;^6AI?E6P)c0`m;Z$j%Jvw>klK3v7~xTkg_Jzhc;&v@1tSo$ z2)2M-UsO~i6J4YEKG3C1fu!wUuYev|FV^yZdn#9ep8kv>>6{>S-QanU2VMfNrr<@C z9|O+NviyK^Slijsk|| z!x(+;1rW*0%S&u;Z>Q9?f9UG!qW%zQ25*9VK>u-S_S^$#c%!?!+m<*m9UdO0{;z<0 zKp%Yta1Wgt+i>imtgNhi%gf6L>e@f9t*uf2F1P^R1@wUd%8SfciYcCi<*H{jXYDTK?2-YipCj z!omafEz6RHg#}$_e0-exJcFl!z5XWp_WXb38g6ZENo{Q{`?_6TUatGztFt%H^I1?( zpz90`4e2&$*9b}h&ywl>yHWR=-|x4$|Hyw2u2)xA>%Q05*CjVMSLat&RwO?^U*~6M zXQig5M(6wb`q=IVPy={pa!pOoAM1Gm*X|R*_;IDazFzk|KR+)O6%{%^Gc%*thYxde zb5dDZDe-t*N=iz2{;mM}5q*!b%!zRf+%Lv~TyQBI4r|Tn>1kOYL*<~z)1kw`@A^M3Jqy*!T(QT{XF9t8p8CD)33&HZ~E zT{PE5ea53p&CShPe{yn?>%0i~J`x7>Z+ouXvveER@M0(w()!$gJpT?D+o}NHjSh3a zqnVM>ch6K+RcZZ^krDd#ZNR(jIB;^ept@sYJSff1&bAVXgz!GXa}03qPR}-)I5zqK z-}`?X7#NVEq9V@!QxE{W*Eqf>ZPfS(`~sqYzD{lWImh>;jT-bZo<*K7Lcd7I8ACV5 z#&PhBrCnD$xBah|-y$-B3*RG%!uN<>;z-FN_JQ0?(u>q4S;jhO=SqIdIE8-XFI*xP K;WvzLL>>V+;jTjf literal 326 zcma*hF%H5o429u8WI$qJW2GZwC)RMYnu%l48^FlO5g0ol%yWZO2^i|=vlT0G0t*sN z11qgI!3NlgS{x*4Mc9~sleGb>S_m4%swqC|BM?n7CT(V}zu)8@nIto6+9qH5^_+Xox#$0V z-}%lRNEB`2UpBib(mLy+Xb){R8fYb}~sa3rP~s50v7? zOeyY)7h785BQ2S@&?Q}QAqVlUOd&1|6f#Lt$iV=x%@}+FpTZ&d4uUPuSGMe5zM7+} zJU``ut-QG%+MokW&4u8YbL(mKY<>Z#eLZxiTu$qlbFNu0JDZI!f=6HhPNe;AT65u? zYu3wxzS8m zUshUJ=UHD0ej+Y`bKz8L@2vFwowR;#n!$VJo}PKNd^9rdO}FNaJ%-J&R&#H4jHMl} zgS}}##I;i2IL(vV`mDcM2tKdH57(N@eef1P+2Zy9K)8X1EGG zM{`uo2mLo5TjRT}p`qc#%*;$OJ3H&Wvaa`o@tD)|!Tqu+_Rae%;M!yG5!?s&!mSYA zH4nkmv!1LS@%*wd)YsR?k5rNj4GpRPIottzpb6A77dNEXH}8(W3ce$Mz%V=nU9cPU zJ>)=Ntl4mPtT)g3=kf9JVyRS0IyyQ|@_YcyWBB>?e8=H1+zrk-W^Sz8&mj2V`|m+7 zm;<$pThw;Fadm=udcC)|w`AMk8hd|#e~IUh;YoN9{7tdG)c68^g7?8Q^RBtKXW%&=grIBtBXof| z4E6VqzIyu5)YMd*o}NzT=H`+(j*b5fcpj`@Ys@-P{{{FGJZI~|*qyW83*%6!{}#{I zp66}NYs>WYA=ud1m~~fz%00Z(*7#2FoL`1-U<6(S>&vzP;XTjkZP3SNXn=6{YU&3+ zY$qlrLVY~VyXt#>TfsP<1<&X=2%4Vbx9|Zx1{v_3N^Kr%#~<`lZTEW)JYQo_w+^(; zunj!Z9bkQ$V{6W+3{LdQ-6)xwf6t7@v8b8 zq^)nO^fyp@m42%2cd)Y7YMr<5pRO5y`CFc9&++^WggReOZGBhYd*l87llD<)hwz=K zR_9EgQ8UIO+z;MYsl4AjuB({?zYUEkTWB{TZe*63er%}j(q9zvnIx&;5PxN;FXT$m u@43Zj${)absGEX34oVf%Z{b^)k6E3I>iI*=7Kj0bCZ>w8^9?zPmjYfI149$10XY>>w!=efvURM_(h}l zWGI5;+!*XQd19m+3Q2j zAG&fMaINj9Ua4rYmX_VR0$qWwKv&>b1x__$aFSzuOJn}Ia8Yq7ec_Co-}Ud$-*oTaRQnI_J=|06zhi#yzux=FTkikn_BYo2EAb|Q z++%3O`G+>FW$j7uOYoau}~FS8h>Bd zNR)ut#P%suK6bP0&Tn>hn~7OPzjnJ~>$YaS!0gOS&lWvDZkpX_tizb-i$K4~TtmO& zpdW@IO(DAupQYEg%dl^q!11Q`)3*Kt(M=ipxwxXi~ygMOD;1VGV2XfiGWU9hw_rTQtQ^ zMwrVQ*5U(SK1RI6&ia-(73UebaPwGmAn<`NpByl^I-AWt;%^7vb~>GY$_Fu!2hPG* zzlLTI1i4_XG|3rf!5QS%$Cr;0GbT;Wf;&@KUp~5myU-Bvo!nC&;=9&BH=)n||4W~} z?25V|hJA7DpwC!+f%@zv(jSk<_tKfea5#L@_>tIJmOi@8W-|o(OVa<&e~SJx^8bDR zCX>k>F~DdvdeHutasPVKIT8E^xby6pKG0{ZrI;3V|F7hq7{~)>kw!N~Kkxgen)F3K zt0n&bMc%)w=oNhb=B+=fo^{W^=TW=lBX9jhpL#*vrgl=le7`}8et$?ZGU6zL cbCbRKoy)(TU+pj)SS`YAMRm`gcs;(p011(`pa1{> literal 326 zcmZQzU}9ioP*7lC-~vJeMg|5k1_lNVAO;FCH~=vt5Q0Dhn8YOh|NoCENQMae{{{v& XM%)-Aj|%|ZKsGqQ!2h3AjBXhK-Bxam diff --git a/reactos/dll/win32/user32/resources/ocr_no.cur b/reactos/dll/win32/user32/resources/ocr_no.cur index e636302d3ae21c235fd76f533d517a4b67caf276..41de76c6da9c06f5e5036c6a06575ecb7a05d72a 100644 GIT binary patch literal 4606 zcmeI0O-S5F7{64$o&1C6Qnr6%)WAtp?^LH;9^N!YzuqM1Ir0L^E{EPXvIG9^&`Pz8Y zM~sQajK`Fk?G-_j9&R$;OXoCh%Lp>}q<&_=1OwxAdfB zFFPG{O*Cpu#nbL|hV@3h+l=VT?6XT|r+sX8*vBt>?Cht)<1`zaO|xUM{dO!Gwqubo zJC-(PW1e5^><(e)CCN%&I_O$cVQth|T>0~Kyz<@QB8ugU@gf5M(+JS*9wB`dSW998 zJ#Fp4zE|)I0U<{S#=)F5_K-n#s|N3cO}Z9;`vuy%SPb z*c&%)SjF9ec_b3C>`BMTqQe>VOdQAs^?=P(`obr<;MJ>FKau|x-)GOBwbRqnOSf;| z?rCjp4TnOZijtC&x9aNZK8nR+w-l%4y?ghroPn6db3r{&lhp7=F(60&;^N}N^YinQ zWo2c~-nnzTOTix)3`rgif8x)56Hz40x6_?&v6CMD{1dxW;_vEjadGkYaN&#Q=H_oV@a^i7 z-b{`^TrJ-xg;eU#_210Q%#ZTvVo3d|ria(^O}=H9o}ec2e-wUzqcnG1&3&PHs{JQX zaS=vjLeVZEJ z{Nwlg-B}X8o0^)wkz81yCdusy_yLZBC-v;^3+^oLO+6nFQsrNX8sF&XsN-MNuCvD( z6w76DK|N5D^aZ^MKfqD&q;wr;!@t~{dWI)c;a-WY3|9xLooG)_k4>C`Tu={i0)0Vm zGG~oFX|LQrs)HZ&OwH#BnF2O9Gdx8_McJHzdnl0$8E}5q`bLKL=HBG)mJGiA!e;;f zkcu1hqn}(*57Z=mL2r7!UJFMthpV|SxU;x7r9-}nIq&_vzNP90ar04=^aZ^MKfqBy z=Njj};LhUSlq`O!HLtMQm`mlEgIM?k;u(M^;cCr6^8eq+Ap36(-U<8ZtH9b;zOT&v zcVp!TgXBrHLcb~O)NczO{l<`HXI1+#W9mUv|678HG5gj-LM|59!v?mniEWDyjlTh1 CF?{#{ literal 326 zcma)$Jqm+R5QN7lC~2NHX?+BXl(~Tx5?*d(l^=vWOOK@FA|Amqg)rH*6+&j2Er$Ju z1$GEvEwGn42fzWqNh}d6aUi35tb4miZo^;60)!zDNn_Gf$X*u5C`FOeNMt(%_(j#WjPN3}Tl;F<>;-yyx$q=1o(R*h1b!hd$w#`^cO7-#yQBcOk~~^9qOc z-fxEcj5%ZsZBuQ(+-l5K`i`g%&O#rrs?`eB`)jCftyQslOY*2Fz%=8Fj4?wHG{%HP z0j43d*ginte%J#{vB{Xj>g+j>1r~8AoshL3;eFiNX^{r{tI%KXv({$e4ZMX9kO$Y6 z`zu_XU#8VWn`XY&vF3sQ(gWJ!|H1|k9fXZFRBt$WXm!t|?S~zpqh>Gc1Rtz}ZkpC8 z?cHz?VsN}x-$ki8bkh&(8DHzZ2ru9^jKDC2VH@a~Zkg7uWBye<9xq2CkqY%Z+yY%u z+revn#Z*33sr8Nce7^Gh{Jbp|i@Maxa0PU{OW&&;&^TJlrWyfCU2o5l$>dMnDdXeg z(tihMAPSqotN3egZ2`qwxutwloM&fdW-5;3*jOyKK>I$N1nmXwLoZBgm$vde0>|JK zJQ*Dwb+q=0i3!C%2XQzI@{d>Nk@U6Z&u|lzr670l*xIr;r7T!(Yu=AL4v?{;c+{i&%b&EW?F=EugyDq4Fgm2zmm zh8u7mPJrUCn0c}P>iW{t9D>1MWo~ZHmP#cX2n4kL$8ZNOfbvgyqFmK}>C~3#YYwhu zvsvYx*01=xe4(!W=jwO52ixkq^H5of&3AO=2k8&N2I$mQ)NjzfhuBfjJ?Pav{8#-p z+KPLperJfPwbk!|wkFV0zen0F^?Rt@q~Bw0S6}D9yT^0}-vu|%z05V~{b`E7?lYae z-zcwv?%#dTZEYl~CLNu1mq6#5@M?cE)QTn_=q}N3TA_2ztNqPTt2WJ}r@D=2e7&Bh uHo$)oeb)Zs-xQYu^^Bn32%aHr8b~kI-OmU4oc}LO2;z|D`wagOX5lx`vN?LGYs{JX3|{N7G>!Jre|94BDmq3ZEV0HOF@b#O=R5KSE40wi zPjtAlu_1d{n9z&5Dc2mi!~_)r^t?4%JkOgL55@a=ht_}9Y~ml#yDqRrR2Q6(^8EXK iImI7wiy~df=8VVS@q~vE9wg^L?(3E{hY~DHg@8L(N0VXz diff --git a/reactos/dll/win32/user32/resources/ocr_pen.cur b/reactos/dll/win32/user32/resources/ocr_pen.cur index 92e7f5b6253ead34f561364b8cb4bfae3e95f0a4..b180f3d97d03d8c1113071aa6b68e3aba779a160 100644 GIT binary patch literal 4606 zcmc(j%TF6u6vnS@j9aKNFFBM)ZJeaRJgufL3My2JP`3!m1|mf~R#l`(*_aJBUC=Io zApQWlLUe&z9t*lC!hnR>6sfEbD=&By2?+>|QtInW5`r|tZU$M$o0EF%26&K}@o9Prz) zC=P&);E+#B1MdKcQ`O(7R5+?s0v^C|sFW+NlqaT?FA9`WUxLqpVQ9lu`w=HRA_;H^ z;y#fWh&G_P4RQufR74VJ{-F&x;NpS{T%&NK3r?TlbONW7Pr%)=2wX&@AAApJm-FS< z&5AOd|HqhECY3P3|CLcU9b^GUPdvZ{c+kQErKKeq9UbMw@C^t8EA=mGSK`?tX=!QV^?GGsU_i#k#^mVeNH#V$ zsNW4(3+x|`hg9t)ZI{a>Sy@?i;9YL9s+>?^Zp(91QY{~k5ufnv@N+=S?V>jIab0F+W@K}7lgAx^v2!joJLaj)xrN#s-y^TmX5O2dn|16}RaK1rBfxpV zZ0v?M#|^cgFy|a&SL0^A*VNQ#?cUzrKjF(cm*d^+d~0YI;u*~057+g#(dTx%U27xv zC-7|noNK+n3EtF<{$||Net1>8q@*NSZw?1GC$QPsS!&-0cR&F!)8~e^?r-GvA; zI=@bPVq)Ss^x6UArnZ@N*3f3nROaXB_f=O{3-yiuzNqbVI(6LPaCjH~_W=8wIX4@( zQRkJIH%EGUdSq^HPVjswFE1BEyP%*z=i~JBRNC6w{(v6mw^G2h&1`?ai+gpQQ@gvn zTc)O_WMN@J4h{}va&l72%F2Y=@LO43T|M&q{o^?1-iG<+{>tp!&U|t25QO${S67$T zj>TfKwY8;l%s+j7eOz09gCEzj5O^POkH@^3-CwfJoSSdw<>fu@?CfM6>$tbKx0BjD zz+UEe_}vA}HSb}KnbpOudN1n6w-0sx0DY>%F2rD?(SaF#yYwTKh~KaSe0`;N}KL?tkG-K-rwI(YO@`| zVDM*najoUr&9P-w+<25WcXoF67u*{kA0H>R$H&KyG4DNs#~r}&#kDh)8prL|nj7=k zFZ1*BS{pTgg5L{MSZCPRoPU{b?$=l+mK*xrTTxNLdG#sU5yhT@zn8e?u)Z0y*|`k2 zzLq&LmsVoW!g-IsPYL%}X6A3)_GX5p)w-2QR#!6jlmMQ~bhr{FG8J`fRsp!^Mj{hxjS literal 326 zcmZ9Gv1$TQ5Jk^hSBxZ(6~V?Li-n|2Ved961^;NbPLz_i`Tt8HuulvHg)?0lbS6l_dMW9^?M#&xq(B{jD`wLRLV&ho^6tIakh4^{w9=@vjgC5Q dXeaHZwvo2hjtHf0WP0-W!NgVjtaXuL{Q-(Jcjf>9 diff --git a/reactos/dll/win32/user32/resources/ocr_size.cur b/reactos/dll/win32/user32/resources/ocr_size.cur index 7ac3c07043fd9e7dc33d5c490b667c81d0e63a58..d7610fa922795efc917beb579a0ba74a9d10a036 100644 GIT binary patch literal 4606 zcmeI0Jxg3c6o$uD{D_5uMKB;rkf23~DHMZCb`b;-5=aceDqt5vQU$_FAlbr1uopq> zP2)dEAtG4%7ldGn6uJuPimQ|N8E52r*N8dd1fiW5zH~!IR%xmd7&`Hvg3VmGj9lsM^_-(DFD{jnBWR0mx8&lh6OrwlH%^TA{ zZp`9$Q_=s;B>Km*RbL9}TEWpXM$dCMkNK=)J$4dV2o*JPC~k*R6~0=VPg$F5wRW|^ z+Jzcxe}1+$Ic5)&8CytZz6v3gGp3cEF?yc6dCX@W>#>79?8e$jf3-P&S<(K-8lJC` zoN@v;x>N9~C3htCzGr+JJiw@tG)bBz_k7P7{Y`SfcAdv-SN~A**!PU#!}FWq5XJ7C zo}PZcySw{ma&q#M@CGD(l1|A@Z~zl!`j?U<&n3*e z&a=SQUCI5~+1a;Xr&1}3oK2_Gc71(4aCjzN5A!6KavCvtS25y&5I~@C+Dp=$7ZjjTf+JFfvMg>s~?dJp_lZ) z!TW);V19_ni#PZ( zVV^@W{Gw;9i{&Q1p+;dJoOomJ)br-Kxw%nc?_fjYfd5gy!NJ!fG5k}X#c~thQ7`c= zIN(Ja_gMYn;^HfEEMQAl6k}kEpW{X!Zy`2W8~otwB(<9Rf;$VmXmk576bft9H9fdC z!5+0*HqYBXT&h=AR-SAB+tC^m&#`j$j~(KOc#{3|&L4byP_wkOG#upsp7dqKzvkP3 z&3&P9$ia*51vu12Ie7e%^Pl-(6GzmK2=+z!uc@vbbJ*J2+V=R=GwK>OXu#{}@Xe@% z+$6@k(Sgl

etOPfJ{LXR*Az{9=E9|Ccn>b2#9KL61uZe#k%0sFzypvAKgTQ~$Nh zHOE1}n&9BT{8z}acx?Jw4cDvQe@6_CzH9IUXTiBjRV3s&aqiFiy6*qL!TBK?lTi)< zyUaKbwoC2da3U|@;IVgneuo?@HO@=L4)acMpso?;+!vZaZ7JuT4>rr~-C0m4sny&U z9=A#TMYW||th46Bfjg9Y?6&{^iE@Gm_Za>Eb_ox-a(0-~y9C}T@NS_}?<6X$&Fb$S q$sz9`j^0Hy6&%avx>@RyV`36SU Bc76Z= diff --git a/reactos/dll/win32/user32/resources/ocr_sizeall.cur b/reactos/dll/win32/user32/resources/ocr_sizeall.cur index 7ac3c07043fd9e7dc33d5c490b667c81d0e63a58..eab28d08f1d255b4923c8c9c967de578ff8be317 100644 GIT binary patch literal 4286 zcmeI0ze`*}5XaXTJdA|_A;Ew|f`wOvB!!ZoaMuVTB#@ZGDqt5vQU!wP><;Wj5PQ@3 zKZppH{tH4dMG8Fyy%SG2-_N>pJfG2f=dU7UWo~@4`{w)I*_qi>=kB-`*W2q{r+$9i zckY36u3sXPD@ru0Pv@pJ_m7Ph?dPrpeVYTkHpx9nN7Ovu1`jZDk}gTNDQebP@QFQVodKFr?)ha`4>Zf@>#rBeAlGc)r|cq5V_NnUaj9Ka^F_|DJH&VDJE z%ay6ADZjnFU6n4${!TK?yo7bvc^3G3D0#B5u<#M=LZRUG?2E;s-`d(T4zFb!WSxZd zymysh`zE(~mX?-2?Ck998@6n94#c5UDt(vjm4x=wBe_aW8aDel7h7|64#Z`Ce*Tke z&n3pe;())bgSD3D#Ipb3;9%1yhW2|TJLi9tF#Bq?`b+j_663)8xmTpU*}S_N$lvC#1u*ENML#K!3ChuAtVxOc} zb6;?0ftMU%|Fv3elfI^jYZLs@tL5{e{llegeSQ6n_P>|xG3gp>X8-shkH{zazv%qI zCkDCI)z$GN2k>NXD*v_K8#ecao~;HO-3xGNPjZO(nd_hRV3SAmj|6t3`q$Dh>Kt}= zclRPb{fxdw4;qO!6tS6FZA4O|I;gBgtJ&%TYGzWc=%Hm`Z*kk!)U}s zfp7K48NH-eM{Mq(%k+P}7DnKp-@4!sz~YD1SUNXjuZHVY@4piUC!aauz*%svGMy3X zoIH=`eO>pzaR_lp=46tCVKPJ}L&V;X^=&nlHP5qR+qzR6=xgLT_k|YF zTbjA&&1bVZoCST7Ud??Gal51&^_FI_&RY)$?ojTr+y46}$q63ZW9a|m5)laP?6}~4 zwNqaza^7#WdcWM_{j|RKNRFK=)SP=<)xQ_Y%C8OQT9IYN+{A3mvySz=XFh^I{Nf)R H@Z$IbpZezc literal 326 zcma)1F%H5o5OZ3jB7_73VkH9uBR`-UD}50inZl#^2O0VVR)n#Gm?|Oe6&%avx>@RyV`36SU Bc76Z= diff --git a/reactos/dll/win32/user32/resources/ocr_sizenesw.cur b/reactos/dll/win32/user32/resources/ocr_sizenesw.cur index edd4bb9416bde6fd525b5f039ecc4143d3956945..301adb607444c65d09116446e45f70cce95e16bf 100644 GIT binary patch literal 4606 zcmeI0O-NKx6vwYKI%ot6ew0x-CR88{mP#v|kQS+6E-YNQsK`KRE#n7h5iO*3v~{J4 zi`E4S*4E7k+A{HDrQm>qqocR~@Acj=nknjYA$W!#_r5#ty>srl=VKUS0{Vo*0h6y! zRhBWgjM24mu15=ud8V~HtciyrOCLwvfqB4%xwV$zXyLYZ;=TANK8f#QdeE2;Q^o{e zOW8Lq#KlWdFZ4jxuExVfHXJQjnk9lR%vq}%ur^j_ZK~ATT^8Z3i{{RnE)S8t{t7$B z4$7Aoa^Zn<<^i%iM}+>XJ>6&TiatvYcv{tURPK5s=mJdMN3P|(}sqI2fC+RU?V;V3cn=O z*Vk8>N~PA8mX?x>i;LSDw;5r5eSJ&(E-fvk)Oq?dI>M>V2=({(S1&IwCv$UiZ7>*2 zqrKaWjg9qKEcQlPBBEIM?f+0uPtQH=c?;coze7_~({3V>*y!l!7}Q#$s1_x{Pv7fx z#?i0+@6kUxI=VAAH#e>C+r<-cUxWqSB_KTEEKXxnsJFK_y?^#SHa50XTwH7?CMN96 z%*=$|kN!u3TqqORfKJYWcm(Dr$<5Hv&`?DF-*nGAF+V^5V{&rRdN#-p{90%ho(*Bm zISb-}n51ra^+D5PNzTZ~$Zf^hW-^&v8y+5R(bJKIg@vz~Hq6e>@&m=QfwLeUB5q!k zYkuPTFg`whP5Jk0YHErfKJ15mm8`6+eDQ2xbZy`)ppm>FH{JSBp*89x_4~Mz-PP6Q zouhY_oNvME>T22s;vpW76A$g=1-VImXl`z9)f%xutv-o|HkA8ZV*65q$fS>-y_j%+6xygBF_6Pcf{GX(6>OOim zb->sDKwglW)CX#m*rHauB2 z>>J&_?tP!-yqmK<2)^@s-}}^GTwZwK{CeQPzYxrT-8E%4<&dutyz9%Fo2W~fimrqG WoW7yVZfXvHAByTvje!I8Xz>rcgGFBe literal 326 zcmbV`F$%&!5Jg|aLQ<)q*d=93Z{Qxm8<`t;1&@->YXloxOS|!HR20&Pe|YoxA7)vY zP*B%UI@R_Ivg@rdueP!O940~z1XHh1Y%1rV>KKzn@ f_)GmRV&I_rLa$%!u9e{^XG1P-a)0^zC_Z`s__Ke{ diff --git a/reactos/dll/win32/user32/resources/ocr_sizens.cur b/reactos/dll/win32/user32/resources/ocr_sizens.cur index eb754e3d376815cb99765047a53be747fe192176..d227473dd1280e9c63f2c24643a3923ad1aa53d0 100644 GIT binary patch literal 4606 zcmeI0KWmdw6vl62+cXNcU_rElQA#m`s18(w2tgx*-hp73yT&pr1%=l;LE#>DkYrQ&8nziTmL zW{pwV1m*XW#ypknGBzPA#Pka!RQ!*J;J>vNHCSj9Uo~bVYs`4cm`M@bYwy{x9|ZjH zrycF_jpSe=q8tXxuFRbkYug!X8yBqoIAQIF#GVcNLBJ1x+R+|g;th~r$14?NwyM;R z#p?(#`y;|WtH3K)G#Gqi!b#y&s44%AJm5$OXM}UY`A}2FKFl15oecSAq^}6qLrs}{ zs2@fSQSNl1PipAnfxHFjyhpf$Jv$j^Nxf~wKb_+iNf7%^Z+_+Db%jM@=TU*Tg#;ng4FozO%FQMfS78X<=0GA@pHfAm+3%2d8vEE&WVj56lVFm zh{v3!`uG=QyNz9--Z!s8_Jr8e1Nd)X7lz4A68|$leLsr%hxaJgKl_+H#lD^u?)R;~ zCD|6ShxI=9zZ-MTGtRZE!h9e98`;QVKCH*j*ZCJytYoLt`3$F%{m#F3yZuf6KF@!J zGh@|ib>UCWf9}VS-`D*IKVy*C*w|Rq{rB4)#2w7t!@EF!X~FmXuaH3w$^INd?rq*f z5pMPL}j-(R|2*^8tM<|KJF?^VIHU^i6?p3w&cZp>Gl~YghHY1IDZbaAoT8bD-?%`hAJx K{D}`wM1BH`$u7bG literal 326 zcma)$u?@m76hxmLBqRo)cA1h97=e)}>9QeN1aY}DP(`xv*Zaluon@#LT7#44Qs4~C z#)_*co}7E%`z2{FN2dAmW*&a~0JXyO{JQu7$t9m&`aRpgfB65bjxOdXy(j5aK6Dp9 M;FnD={hnQ=4N)CP&7e^klvYs9n9~OZVp&;%jHVENEF>X_P%NT9AW;3J~6W!`e`=wEz6=wZmxCBc`fdXXX2X{|7eW+ zg)whNjrkHXW=O+5;;rZuO#g@F6+?1ccWDm1vQeM0wKJC0Tx41K9omUK#jO^Y&R7!L zs+V6u8xxY22X>&qK2yM>{djkP?-FhaM|XZmt7V8xaY~#O=Mp%r{t0nd5Qo#on)t>~ zuE-a+Y;LN(CN7ARf*73C!L9W&+S=Lz&CShsYin!E%FD}Zg27;YQBl$Jl9H0ArKP1c znnN7KfDTS-;Hs*sI=Z^LI=Qs86q%i!U74AgSy8*H7FHsW$b#Z{D8J}{M&yW-<{2Iy zE(?dlzpAUNEw|gfNqTy^MGWX5hiE`vIPIS^$nNUuda}5|*Oi^j&rI~pVRxhGgJ74tSU zG+b64{pjxQeykVoi3g%$Vq#*5{h~Q7I%pi7{UV#XP;Gv1Z*LFi`Itb*RLvU-g$mfm z^78WhOPLm^8yg!NP1M}pH@?XS@`C*Ea6hPx=L~t2s(D*mTMIZx&U0a5VR3wX{A;3b zbkL%O!Y}YmUBu0$4zcXkye%y)H|FN%R>)`ay0^DC8rK{hv~YzWAIQnQ_|oft*cSi# zHdfozIXdXMPLL1eBz2K$e(9CJnzysFGcUe>&5Zd+2hPII2Xd0Spf)*cG7ddjs{eXWb&%iY}IOvN;qd$oO9YFaA5$Zy9K4sqz)R@!yYf0l7 z7#KK@4xB|(Q`2>FlDeQaxgRu#yM?{)rpEMIQsYe78~5jS{EvMn4eDURfdczMf$jf| qU^=Wd6BIrxY(pR38K3^pjIpLx1UEPm`+8$qruyKs)`g|zcCz2B{X|*- literal 326 zcmbV`F%E)I5JcZM7KBPoBz90zasxSnH0b@^*k4zOz>Gh36Jqp1hDz^VVnLkD|&YLD}Hwv_+y bpT@Hkyv%#{hy8AD(zBEzj#s1EBb%i@&69u6 diff --git a/reactos/dll/win32/user32/resources/ocr_sizewe.cur b/reactos/dll/win32/user32/resources/ocr_sizewe.cur index a121b0ca847a63cf94acc0244701a279ef9911b4..c5e3a15f83f2e3bc8d18b57de14118e3e677a305 100644 GIT binary patch literal 4606 zcmeI0O>0v@6ow~>_QQ%56r^_1REpSzs1=IGrzyoj>DUTK&0f@&E{T!FX( z|78W}c4|wJ1YTQrjARo=!cUK&M(A)-V^|*OS@&G*j*|zry}~)+e1J0=!x}Mq);$+H z?2nQIHtb_axD;Si;{|~j2W!9_J?rqi4fgoyCWrRe<0~sGFYERCclo#`@Oc~-@JUP$ z=EJ+YyI)sVS6}G)mT+4b7rM!T*whT0@uj7u*Of}eeRwo~Alw%wgtR~&9?U2BJi*WB z^K+U%6z&N=hbU*ko#EWZmY0`b;VYZXy04yev%<76Dclimwt@L1MEF}BZE9nFFSU_rBtDMle-eWg^;586 ROv=OSSceB6JB$4x@(0v|E1CcR literal 326 zcmbu4Ar62r3`Ku25JCciV3|N5xdC$=i`|W*a0L9y@9Z)IziFGkFWLeX1kM31V-sKk zuri6@nZhuIRP&;$Is8C62^hs=5r;zu?rT!F*|_;7@rK`e;;DDs^@_6w^n9vL-DczF Gm-GUoDSXHP diff --git a/reactos/dll/win32/user32/resources/ocr_up.cur b/reactos/dll/win32/user32/resources/ocr_up.cur index 072e6d859b0ac16cf166e90a1b0f4fd1ad605afa..c5940471efd90eced8c240c87e01f59b4d83c64e 100644 GIT binary patch literal 4606 zcmeHLJ#QL85FIc9JCv$ON&Wru28h%eO80_N-3(6p_%jBa-vx<0CmpM3BR3nVu=N zE;ihl`PabNtkAOF{1DoJKAUC+Es6PWG-~hM}{t9?M zr2J|9)Ag6={^Q=}8SChMZ}va;-$&X3_S-%K7;hVR1n`V0#rVI$c0#-Eryu=oUu(ci{gWEf{Uo&F9d zTmKA)L%w$ub<`dN!C%-90mIMnca?m<->;0v;|tey!}ksXE@;p5_%6I`wOZfNNB$>3 z9;XK51(A<+|v-tyFhMV(llY5@Q zJm!wcp;oIY)ML_aw@=~l65w+u#U0I|!1aJN`KR0Me$l*~Z`(CDoN>+Ca&0{XcC}_Z ziJBwqQXwDDhfVV?O(^YHuL9AtGrXU<__ly=41|yG4Y$EyOQ|~kixVPeAxyiI!8Z%^ LGY(@ienhSTI^^bM literal 326 zcmZQzU}9ioP*7lC-~vJeMg|5k1_lNVAO;FCH~=vt5Q0Dhn8YOh|NoCFSODY(kcOG> vF)%PO0qtS|>g#~&RRGdN0-zfZpdZL25&vQQ{~v_^F$49oL-pSW(nJCP3fX`G diff --git a/reactos/dll/win32/user32/resources/ocr_wait.cur b/reactos/dll/win32/user32/resources/ocr_wait.cur index 46c7fdee3f7e1fa8ee8b20b01a52c69955d50914..2be0cbb1ac1c792d217229da7ab5e1c7b8009b17 100644 GIT binary patch literal 4606 zcmeI0-%C_M6vszRw`~iJh;VmJNvI%*!Xhw2p%=lR=oj=BNIgbDC_<1BJ_t$l(sQ6t zPm#U2K1d5jB=qB@NcTnm0nsd6lifRgKi9p{u50XiuT;=kKF*yp=giDKJ9B1MV=DD& zYN|AK`W&e+X1_728@K+n&X~*69YiPEMTI`Dm)z-HP&sA5Asd;Wp^|@6Wd=TvEYaP)X)=IL%T9~cMXCY)QEZ16_X|&eKkx?C; z*Iwx7^|y8;n;)+xcb0v1>rD3FQE$;y%O!}nW6ZGFDfWn131Ejke)#*5t#YQXs5l^w zik9C%J9gOPhyO-}x$hA5f<8}(4sl*wC<1!gvBMre{5Kkds+>QYx?B#+hwqB<>1U%7 zk>g~4e}9pkwpN9m>_3U)Vz0p8k5tQfpLpNf+iNE#ChYX|v|U_WwApOdEvciYU3MvP zQLsi>hxq#uVn_D47mLMgYip}*Zf>^WaM+Q~p`?zUcIh6A)8df8&rj^-?xy$cDqjo_ z59bBkah$yR(9jU$zY?beF~g7J!LMvn2M>CBdh*6AtaNvGGyW67cOMt{1tB%+q`je` z!LF>V6b|dw(Z}O)#=j7_^{vXo3F-8oRI&c)!4I4O8{KRH+K>k9qS z|BYxgnx31Rvnm<;z99E*=J>>uxDwx+-uU(P^^E^e5c@W<8S(elAMbu$@lKD8joCyZ zkrl-MyYvI1Qydf61-bs%N9?B#t+TJJx0#t4+ttvbzxPjd;pTFyvRs0=e=|NY z_>;dsm;=H*%Efj3|L5NDwxe`%O^)|R(V`#B$Wgv>wu bvJJfic8J6rM&xu{l|ATLwYX33VUOkuicHeader.biHeight /= 2; @@ -326,7 +326,7 @@ CreateIconIndirect(PICONINFO IconInfo) return (HICON)0; } /* FIXME - does there really *have* to be a color bitmap? monochrome cursors don't have one */ - if(IconInfo->hbmColor && !GetObjectW(IconInfo->hbmColor, sizeof(BITMAP), &ColorBitmap)) + if(/*IconInfo->hbmColor &&*/ !GetObjectW(IconInfo->hbmColor, sizeof(BITMAP), &ColorBitmap)) { return (HICON)0; } @@ -440,35 +440,47 @@ LookupIconIdFromDirectory( PBYTE presbits, BOOL fIcon) { - return LookupIconIdFromDirectoryEx( presbits, fIcon, - fIcon ? GetSystemMetrics(SM_CXICON) : GetSystemMetrics(SM_CXCURSOR), - fIcon ? GetSystemMetrics(SM_CYICON) : GetSystemMetrics(SM_CYCURSOR), LR_DEFAULTCOLOR ); + return LookupIconIdFromDirectoryEx(presbits, + fIcon, + fIcon ? GetSystemMetrics(SM_CXICON) : GetSystemMetrics(SM_CXCURSOR), + fIcon ? GetSystemMetrics(SM_CYICON) : GetSystemMetrics(SM_CYCURSOR), + LR_DEFAULTCOLOR); } -/* Ported from WINE20030408 */ -GRPCURSORICONDIRENTRY* -CURSORICON_FindBestCursor( GRPCURSORICONDIR *dir, int width, int height, int colors) + + + + +/* + * The following macro function accounts for the irregularities of + * accessing cursor and icon resources in files and resource entries. + */ +typedef BOOL +(*fnGetCIEntry)(LPVOID dir, int n, int *width, int *height, int *bits ); + +/********************************************************************** + * CURSORICON_FindBestIcon + * + * Find the icon closest to the requested size and number of colors. + */ +static int +CURSORICON_FindBestIcon(LPVOID dir, + fnGetCIEntry get_entry, + int Width, + int Height, + int ColorBits) { - int i; - GRPCURSORICONDIRENTRY *entry, *bestEntry = NULL; + int i, cx, cy, Bits, BestBits = 0, BestEntry = -1; UINT iTotalDiff, iXDiff=0, iYDiff=0, iColorDiff; UINT iTempXDiff, iTempYDiff, iTempColorDiff; - if (dir->idCount < 1) - { - DPRINT("Empty directory!\n"); - return NULL; - } - if (dir->idCount == 1) - return &dir->idEntries[0]; /* No choice... */ - /* Find Best Fit */ iTotalDiff = 0xFFFFFFFF; iColorDiff = 0xFFFFFFFF; - for (i = 0, entry = &dir->idEntries[0]; i < dir->idCount; i++,entry++) + for (i = 0; get_entry(dir, i, &cx, &cy, &Bits); i++ ) { - iTempXDiff = abs(width - entry->ResInfo.icon.bWidth); - iTempYDiff = abs(height - entry->ResInfo.icon.bHeight); + iTempXDiff = abs(Width - cx); + iTempYDiff = abs(Height - cy); if(iTotalDiff > (iTempXDiff + iTempYDiff)) { @@ -479,118 +491,194 @@ CURSORICON_FindBestCursor( GRPCURSORICONDIR *dir, int width, int height, int col } /* Find Best Colors for Best Fit */ - for (i = 0, entry = &dir->idEntries[0]; i < dir->idCount; i++,entry++) + for (i = 0; get_entry(dir, i, &cx, &cy, &Bits); i++ ) { - if(abs(width - entry->ResInfo.icon.bWidth) == (int) iXDiff && - abs(height - entry->ResInfo.icon.bHeight) == (int) iYDiff) + if(abs(Width - cx) == iXDiff && abs(Height - cy) == iYDiff) { - iTempColorDiff = abs(colors - entry->ResInfo.icon.bColorCount); - - if(iColorDiff > iTempColorDiff) - { - bestEntry = entry; - iColorDiff = iTempColorDiff; - } - } - } - - return bestEntry; -} - -/* Ported from WINE20030408 */ -GRPCURSORICONDIRENTRY* -CURSORICON_FindBestIcon( GRPCURSORICONDIR *dir, int width, int height, int colorbits) -{ - int i; - GRPCURSORICONDIRENTRY *entry, *bestEntry = NULL; - UINT iTotalDiff, iXDiff=0, iYDiff=0, iColorDiff; - UINT iTempXDiff, iTempYDiff, iTempColorDiff; - - if (dir->idCount < 1) - { - DPRINT("Empty directory!\n"); - return NULL; - } - if (dir->idCount == 1) - return &dir->idEntries[0]; /* No choice... */ - - /* Find Best Fit */ - iTotalDiff = 0xFFFFFFFF; - iColorDiff = 0xFFFFFFFF; - for (i = 0, entry = &dir->idEntries[0]; i < dir->idCount; i++,entry++) - { - iTempXDiff = abs(width - entry->ResInfo.icon.bWidth); - - iTempYDiff = abs(height - entry->ResInfo.icon.bHeight); - - if(iTotalDiff > (iTempXDiff + iTempYDiff)) - { - iXDiff = iTempXDiff; - iYDiff = iTempYDiff; - iTotalDiff = iXDiff + iYDiff; - } - } - - /* Find Best Colors for Best Fit */ - for (i = 0, entry = &dir->idEntries[0]; i < dir->idCount; i++,entry++) - { - if(abs(width - entry->ResInfo.icon.bWidth) == (int) iXDiff && - abs(height - entry->ResInfo.icon.bHeight) == (int) iYDiff) - { - iTempColorDiff = abs(colorbits - entry->wBitCount); + iTempColorDiff = abs(ColorBits - Bits); if(iColorDiff > iTempColorDiff) { - bestEntry = entry; + BestEntry = i; + BestBits = Bits; iColorDiff = iTempColorDiff; } } } - return bestEntry; + DPRINT("Best Icon: ResId: %d, bits : %d\n", BestEntry, BestBits); + + return BestEntry; } -/* Ported from WINE20030408 */ -/* - * @implemented + + +/********************************************************************** + * CURSORICON_FindBestCursor + * + * Find the cursor closest to the requested size. + * FIXME: parameter 'color' ignored and entries with more than 1 bpp + * ignored too */ -INT STDCALL -LookupIconIdFromDirectoryEx( - PBYTE presbits, - BOOL fIcon, - int cxDesired, - int cyDesired, - UINT Flags) +static int +CURSORICON_FindBestCursor(LPVOID dir, + fnGetCIEntry get_entry, + int Width, + int Height, + int ColorBits) { - GRPCURSORICONDIR *dir = (GRPCURSORICONDIR*)presbits; - UINT retVal = 0; + int i, cx, cy, Bits, BestBits = 0, BestEntry = -1; + UINT iTotalDiff, iXDiff=0, iYDiff=0, iColorDiff; + UINT iTempXDiff, iTempYDiff, iTempColorDiff; - if (dir && !dir->idReserved && (IMAGE_ICON == dir->idType || IMAGE_CURSOR == dir->idType)) - { - GRPCURSORICONDIRENTRY *entry; - HDC hdc; - int ColorBits; + /* Find Best Fit */ + iTotalDiff = 0xFFFFFFFF; + iColorDiff = 0xFFFFFFFF; + for (i = 0; get_entry(dir, i, &cx, &cy, &Bits); i++ ) + { + iTempXDiff = abs(Width - cx); + iTempYDiff = abs(Height - cy); - hdc = CreateICW(NULL, NULL, NULL, NULL); - if (Flags & LR_MONOCHROME) - { - ColorBits = 1; - } - else - { - ColorBits = GetDeviceCaps(hdc, BITSPIXEL); - if (ColorBits > 8) - ColorBits = 8; - } - DeleteDC(hdc); + if(iTotalDiff > (iTempXDiff + iTempYDiff)) + { + iXDiff = iTempXDiff; + iYDiff = iTempYDiff; + iTotalDiff = iXDiff + iYDiff; + } + } - entry = CURSORICON_FindBestIcon( dir, cxDesired, cyDesired, ColorBits ); + /* Find Best Colors for Best Fit */ + for (i = 0; get_entry(dir, i, &cx, &cy, &Bits); i++ ) + { + if(abs(Width - cx) == iXDiff && abs(Height - cy) == iYDiff) + { + iTempColorDiff = abs(ColorBits - Bits); + if(iColorDiff > iTempColorDiff) + { + BestEntry = i; + BestBits = Bits; + iColorDiff = iTempColorDiff; + } + } + } - if (entry) - retVal = entry->nID; - } - else - { - DbgPrint("invalid resource directory\n"); - } - return retVal; + DPRINT("Best Cursor: ResId: %d, bits : %d\n", BestEntry, BestBits); + + return BestEntry; +} + + +static BOOL +CURSORICON_GetResIconEntry(LPVOID dir, + int n, + int *Width, + int *Height, + int *Bits) +{ + GRPCURSORICONDIR *ResDir = dir; + ICONRESDIR *Icon; + + if (ResDir->idCount <= n) + return FALSE; + + Icon = &ResDir->idEntries[n].ResInfo.icon; + *Width = Icon->bWidth; + *Height = Icon->bHeight; + *Bits = ResDir->idEntries[n].wBitCount; + return TRUE; +} + +static BOOL +CURSORICON_GetResCursorEntry(LPVOID dir, + int n, + int *Width, + int *Height, + int *Bits) +{ + GRPCURSORICONDIR *ResDir = dir; + CURSORRESDIR *Cursor; + + if (ResDir->idCount <= n) + return FALSE; + + Cursor = &ResDir->idEntries[n].ResInfo.cursor; + *Width = Cursor->wWidth; + *Height = Cursor->wHeight; + *Bits = ResDir->idEntries[n].wBitCount; + return TRUE; +} + +static GRPCURSORICONDIRENTRY * +CURSORICON_FindBestIconRes(GRPCURSORICONDIR * dir, + int Width, + int Height, + int ColorBits) +{ + int n; + n = CURSORICON_FindBestIcon(dir, + CURSORICON_GetResIconEntry, + Width, + Height, + ColorBits); + if (n < 0) + return NULL; + + return &dir->idEntries[n]; +} + +static GRPCURSORICONDIRENTRY * +CURSORICON_FindBestCursorRes(GRPCURSORICONDIR *dir, + int Width, + int Height, + int ColorBits) +{ + int n; + n = CURSORICON_FindBestCursor(dir, + CURSORICON_GetResCursorEntry, + Width, + Height, + ColorBits); + if (n < 0) + return NULL; + + return &dir->idEntries[n]; +} + + +INT WINAPI +LookupIconIdFromDirectoryEx(PBYTE xdir, + BOOL bIcon, + INT width, + INT height, + UINT cFlag) +{ + GRPCURSORICONDIR *dir = (GRPCURSORICONDIR*)xdir; + UINT retVal = 0; + if(dir && !dir->idReserved && (IMAGE_ICON == dir->idType || IMAGE_CURSOR == dir->idType)) + { + GRPCURSORICONDIRENTRY *entry = NULL; + int ColorBits; + + if (cFlag & LR_MONOCHROME) + { + ColorBits = 1; + } + else + { + HDC hdc = CreateICW(NULL, NULL, NULL, NULL); + ColorBits = GetDeviceCaps(hdc, BITSPIXEL); + DeleteDC(hdc); + } + + if(bIcon) + entry = CURSORICON_FindBestIconRes(dir, width, height, ColorBits); + else + entry = CURSORICON_FindBestCursorRes(dir, width, height, 1); + + if (entry) + retVal = entry->nID; + } + else + DPRINT1("%s() : Invalid resource directory\n", __FUNCTION__); + + return retVal; }