From b1f93aa36a8ca5ed49f5dcd25c677abbbcbac423 Mon Sep 17 00:00:00 2001 From: Ed Harvey Date: Sun, 3 Apr 2011 19:33:54 +1000 Subject: [PATCH 1/4] Enhanced icon set with access/static overlays. --- ILSpy/ILSpy.csproj | 27 +-- ILSpy/Images/Class.png | Bin 733 -> 470 bytes ILSpy/Images/Constructor.png | Bin 0 -> 468 bytes ILSpy/Images/Delegate.png | Bin 908 -> 1448 bytes ILSpy/Images/Enum.png | Bin 680 -> 1339 bytes ILSpy/Images/EnumValue.png | Bin 0 -> 631 bytes ILSpy/Images/Event.png | Bin 640 -> 494 bytes ILSpy/Images/ExtensionMethod.png | Bin 488 -> 567 bytes ILSpy/Images/Field.png | Bin 655 -> 411 bytes ILSpy/Images/FieldReadOnly.png | Bin 0 -> 404 bytes ILSpy/Images/Images.cs | 275 +++++++++++++++++++--- ILSpy/Images/Indexer.png | Bin 449 -> 500 bytes ILSpy/Images/Interface.png | Bin 610 -> 1332 bytes ILSpy/Images/InternalClass.png | Bin 881 -> 0 bytes ILSpy/Images/InternalDelegate.png | Bin 916 -> 0 bytes ILSpy/Images/InternalEnum.png | Bin 821 -> 0 bytes ILSpy/Images/InternalInterface.png | Bin 775 -> 0 bytes ILSpy/Images/InternalStruct.png | Bin 575 -> 0 bytes ILSpy/Images/Literal.png | Bin 416 -> 586 bytes ILSpy/Images/MemberIcon.cs | 37 +++ ILSpy/Images/Method.png | Bin 621 -> 532 bytes ILSpy/Images/Operator.png | Bin 235 -> 526 bytes ILSpy/Images/OverlayIcon.cs | 34 +++ ILSpy/Images/OverlayInternal.png | Bin 0 -> 1292 bytes ILSpy/Images/OverlayPrivate.png | Bin 0 -> 401 bytes ILSpy/Images/OverlayProtected.png | Bin 0 -> 352 bytes ILSpy/Images/OverlayProtectedInternal.png | Bin 0 -> 440 bytes ILSpy/Images/OverlayStatic.png | Bin 0 -> 312 bytes ILSpy/Images/PrivateClass.png | Bin 920 -> 0 bytes ILSpy/Images/PrivateDelegate.png | Bin 925 -> 0 bytes ILSpy/Images/PrivateEnum.png | Bin 845 -> 0 bytes ILSpy/Images/PrivateInterface.png | Bin 781 -> 0 bytes ILSpy/Images/PrivateStruct.png | Bin 642 -> 0 bytes ILSpy/Images/Property.png | Bin 900 -> 746 bytes ILSpy/Images/ProtectedClass.png | Bin 864 -> 0 bytes ILSpy/Images/ProtectedDelegate.png | Bin 937 -> 0 bytes ILSpy/Images/ProtectedEnum.png | Bin 784 -> 0 bytes ILSpy/Images/ProtectedInterface.png | Bin 753 -> 0 bytes ILSpy/Images/ProtectedStruct.png | Bin 556 -> 0 bytes ILSpy/Images/Resource.png | Bin 575 -> 562 bytes ILSpy/Images/ResourceImage.png | Bin 0 -> 803 bytes ILSpy/Images/Struct.png | Bin 422 -> 564 bytes ILSpy/Images/SubTypes.png | Bin 262 -> 1303 bytes ILSpy/Images/SuperTypes.png | Bin 267 -> 1306 bytes ILSpy/Images/TypeIcon.cs | 31 +++ ILSpy/TreeNodes/EventTreeNode.cs | 25 +- ILSpy/TreeNodes/FieldTreeNode.cs | 58 +++-- ILSpy/TreeNodes/MethodTreeNode.cs | 75 ++++-- ILSpy/TreeNodes/PropertyTreeNode.cs | 99 +++++++- ILSpy/TreeNodes/TypeTreeNode.cs | 80 +++---- 50 files changed, 581 insertions(+), 160 deletions(-) create mode 100644 ILSpy/Images/Constructor.png create mode 100644 ILSpy/Images/EnumValue.png create mode 100644 ILSpy/Images/FieldReadOnly.png delete mode 100644 ILSpy/Images/InternalClass.png delete mode 100644 ILSpy/Images/InternalDelegate.png delete mode 100644 ILSpy/Images/InternalEnum.png delete mode 100644 ILSpy/Images/InternalInterface.png delete mode 100644 ILSpy/Images/InternalStruct.png create mode 100644 ILSpy/Images/MemberIcon.cs create mode 100644 ILSpy/Images/OverlayIcon.cs create mode 100644 ILSpy/Images/OverlayInternal.png create mode 100644 ILSpy/Images/OverlayPrivate.png create mode 100644 ILSpy/Images/OverlayProtected.png create mode 100644 ILSpy/Images/OverlayProtectedInternal.png create mode 100644 ILSpy/Images/OverlayStatic.png delete mode 100644 ILSpy/Images/PrivateClass.png delete mode 100644 ILSpy/Images/PrivateDelegate.png delete mode 100644 ILSpy/Images/PrivateEnum.png delete mode 100644 ILSpy/Images/PrivateInterface.png delete mode 100644 ILSpy/Images/PrivateStruct.png delete mode 100644 ILSpy/Images/ProtectedClass.png delete mode 100644 ILSpy/Images/ProtectedDelegate.png delete mode 100644 ILSpy/Images/ProtectedEnum.png delete mode 100644 ILSpy/Images/ProtectedInterface.png delete mode 100644 ILSpy/Images/ProtectedStruct.png create mode 100644 ILSpy/Images/ResourceImage.png create mode 100644 ILSpy/Images/TypeIcon.cs diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index d0a039257..de0643562 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -110,6 +110,9 @@ + + + @@ -201,25 +204,10 @@ - - - - - - - - - - - - - - - @@ -238,6 +226,14 @@ + + + + + + + + @@ -261,6 +257,5 @@ ICSharpCode.TreeView - \ No newline at end of file diff --git a/ILSpy/Images/Class.png b/ILSpy/Images/Class.png index a8d001cba4904854ff993c15e5311461b40c8ad7..762c9f21742eb65fad8ddbbe1d3ccb40de174779 100644 GIT binary patch delta 387 zcmV-}0et@51=a(QB#}8ge*g(^NLh0L01|Ql01|QmUS(V30000MbVXQnQ*UN;cVTj6 z0B~VxZgehgWpp4kE-*Xj^=SYA0V+vEK~y+TV_-l7CuWFiKU^j9A4H?e5#+-(e|^{r zGJrHgV4A-?Z2SM^TK4~srvtDW@}>7Hrpw?qKWP2``C88ZPe9G@e-D`af4f!oe`694 z+$A8*mr^hPM==E9>^8XO4+l(vnq{zR{+ z{(rmR&i@|WUWiLTE|^!r2h{8jcJ}*y`e2*$8>YkYjhvhRv1*1z3(Syr+hqQO41+}> z$PkbkkWHIxHlx~%c`g2tHG||~2EYsfIeX#Mr~Ww81A5{?HUOjvq&a%_jsHMQTp~j@ z0Hg_|dFI*w|DB6Z5@!g^0A$TITV8@R|7S3sN!SorOu%d=Ni%Xlfm~pkyp?#Hv4t`? h;D~WHzATF^^Z{MDJwQFtv|M?kihnznVESivgYkJi@>Y}QmtS^00M|{`gEoL zOiT<6{{HtEfQB#tUBR$$AsfTjukj2lKnY$xUItl7DF$94AqLKd_Y7eV3K%{yJYsmt zaD-t!+W`iE00Nsjd9up?mKOg1=gxtg&GtVvl^t$>^W;gB!0hP)RbZRnGd%o%g<<*s zZl>)2{k#SL0RjkUHv>aX&TYp3|2cs+a{z5-V3;@W&$K^({$zvXIJvk$6vNNI-x=nJ zH8MPBIKi-o_Y?yIHzPyIx5?800th8=Qc_U;oRyWuuz2A@xYz{V!vB*6%l@}NNx7w5i~z1_&Sq kQnD^M+RDpOq8cE;0BKwCS71y{b^rhX07*qoM6N<$f+{OA6aWAK diff --git a/ILSpy/Images/Constructor.png b/ILSpy/Images/Constructor.png new file mode 100644 index 0000000000000000000000000000000000000000..0d60fe517020a0bfd9a4ae43885629a5dd184723 GIT binary patch literal 468 zcmV;_0W1EAP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 za7bBm000tl000tl0bXTW;{X5v7IZ~ebW?9;ba!ELWdLwtX>N2bZe?^JG%heZ==Es; z00AgTL_t(IPh(&p0?b=CC9Uh^l>Z(5Q_YD`j;dtKv6YP=&D-zo{oit|@BgYDo4tuP zWbe5hdqA2t-`V+p-^0WI*WBEU+mP=cR{y_xbhQPc6(+qOHrAMp}As@iy z8|GGLfeg`0F#|i@&O3A>(VAfj>u1-bf;2n$1tyTJc~k@b5C8yWrQbQ_=!|v%0000< KMNUMnLSTYM@y5vj literal 0 HcmV?d00001 diff --git a/ILSpy/Images/Delegate.png b/ILSpy/Images/Delegate.png index 05707079d5acfb6e2004e6fb59fe3538fcf7d0a7..84339edeac05dc09eda38224cbc78efd71186dbf 100644 GIT binary patch literal 1448 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6zM9{GlYxANWRDM{3Cw++s5 zjx2JCEcTAC@J^`kNvI4+sSZr52~Mwz%xQ|wYl+EkO{?fnubhxmH#N6@dRhDY^7aLj zjVDhrp1jCv(PHbxD?FE9PQH94`O4LltJhMm-N?LtJNxFH+&g!3@7~S3doTZ9_pEh& zbGP)*+cIJPmKhVbPhGrf+LBe%m#&_;VEd#6JEt$*HGSExX-oFZTe)r4irvdsu3fcb z)rw8~=B_$8Z`GlN>yIp6e{|XA<14qGT($Mo>K&(7?>Mt&$C>qe&u?9PZo{rKoA#dD zwD^gdN&(SM;j$Yk&{M!DL*Y}^geq`;9qw8)QTYvNZ)~9be z-@cjr`rpid|7ZUHKkNVBRe#T(T5<05%BR;?{d~9b*ZWmRPTxF!{?_sHw@+NSbLR5> zvsdn)z53w7%?B56KD>1E(bYRo?>~L@>ip|h7hXSj`ufqcH;>e&qL z9|`dFI3TU~U@1?^>mp^An9#-?S-uX3b-S0ZUfer%=gO7y`ue;s)wkVXQ&_Q9<7~)@ zuFr+f|D1oo`s8}J=yZ)1ZMI#zH~dR4$nNMexTZ0MpPxVU)Ar=w=O5g;5D*+ULs42r zNK7s9tLs`GJbceFBvxK!f`-nCuV ip(7_U7(VJ6F)(n)m(DpgQDzw^y?VO(xvXXDO5ir!{Zkp7%DPDr@?DL?1u^F(F(1>-S%V z-@pGbu&}U!`G5ZW$p+!yzyC9Q|M3&WnJ^as1Q6rnXK(-Cxc?k%9>{=SzkW0P{`a5Z z-`{@>KS6Au7)bKh@1G1HgFxzj|M?9L10!t(Mt}ffdHD1VgNv0mis^rUfWH0t^9Rrc zKm+f5XZSqt69aEDAH&`M?-_pl`U^I+Wzt-RO>^6)0t67#k6(XKL-7AUhQEIxHZ#Bd z57w+;tHAIDNJ~89hP(3DPl!H%0Ac|<5eS~$Sk3U_^FM~W@0b`~zh+ zpcj5Kynp$QL5NKlYKS7kso5(S{$(jJ{P_6`tPdc7Sbl<>^nMk?l{^2z0{1{Jc*DTp z<><)p8|b}{w?8p3NHZ}A3koqTUa%M(`v3m?g?kwwfLQ(mLz{n@Ka4@!;19zOU{r~J z1KJF9)rT)%8CZbUG6HpcdiIfF+s3U7$Vv6rFNg~O0*K`Ykn#859|oqc>lyArU2*ds z3&V#${}^<=bQu`8e`jE0horZUKR$xBGkyI53jzj!0Ac~!0gkROf7}_wW&Z(f{>GpM zbj>%QOMUuKzfWJVm{QU=_LHz$< zr~d|Krk8x*81CEs0NVZmtoffXD@wEj1Q6qy%lH4U-g1!P+mG+y!~@d!@)`R0c8uK!5=N+*xxZ?}_!? P00000NkvXXu0mjf`8bh@ diff --git a/ILSpy/Images/Enum.png b/ILSpy/Images/Enum.png index 3fbb2c14968912953c45298ef1cace34271d9eaf..28e989f0f8398e25a32a37264b97e3e2242f4842 100644 GIT binary patch literal 1339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6zM9{GlYxANWRDM4)1tcbCy zinFOpvad~YNUxfj*El=BaZXkD@~WO?jcLv;nXYX)?%jnx6DxyeHbl(th&!{$@X|_) z8yg(&?eM(0Kl8zMmq&a29_{siyf5JC;mD_lqn;j(d43}0<*D?Sr!!xj&wq8X==H_o z*OyA)T&a9}t>)d0`qKwCzrWr5{&ws8JFOq@bw0Yd^5cWPPY?S)J)ZdG*^DpGW`27; z|Lf}o-`_6#{`Nf3k)vQV1ZWWg;!~#FVPIfnC<*cl{y(w-L-2QYV7bA-S>O>_%)lU2 z1j3AQsnL&tf?_4E5hcO-X(i=}MX3x0iJ5sNdU>fO3MP66)-S$h0#%fIx;Tbt1SkLK zXOk%4nBnQ^+116t{qkS?stHD>hDH|x!ymSCOGpgTe~DWM4fac0Zl delta 608 zcmV-m0-yc63aAB;865@y001BJ|6u?C010qNS#tmY5_13m5_18JBDn{VAwGWs9!W$& zRCwBA{Qdqc!_$+M42+D74ASPE3_u102mty2pPsB>V1#fOK=8w-*I>Cf?_M%!I80>_ zSN38A2q4DaAI>p611e+yD`kW#25b5+ZkEZw`0FiL?Dx0NV6$2Nykz*r@SUNt=^R7f zqJz@_0*HkXrV(TZ)OMI5AkBXuv62}a4BvnJWBBpo2g9`N9}K@geub+A2p|@8%^>>y zr#B2j{Gwp??{A+N+T%ZiZT|Z44Nx=C6@T9_zyLr1v4EV4teFAo9*`k-*4H!0skt&t zKI+2o?K?Na&!5r^4Zi0XIRAcU`1a*9SS>&Rv4H$9Zl1}&@bewmk05`)3WNRnis2{Y zcZQ~>^9(KZXBd8e_`>kx!(#@r_0Z1Wc+zk=in+c!*OKm#Dn zAOH|RU>ATigAA`)ECzoJZ62Ttq=0@s&%gon>sP2>OA;Ki85#ZqA;bl#l{E}{27U|x z0mK5*2##Bzf9t)kf`gD1X!F<4-yz8YY9q)X9v&Vb>pv1^U;qdp7H0V@hUs(Wf@1*W z+$YaI!V)7`Q(85|uW6OFU`004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 za7bBm000tl000tl0bXTW;{X5v7IZ~ebW?9;ba!ELWdLwtX>N2bZe?^JG%heZ==Es; z00GNML_t(IPt}s$OH*MS$NiVODrHb=QDMF$L@C3Ib!ZJ=riPfOvPP{DjznTHNm?qt zOe}@+<)ZnLgiZsuMP|8%^Q7bKG|e?LnC#Oz+f_I7%8MTOU4A~#_xF9CoSdUP(o|WI zI%u=uDJ3*{p4HKO0`3!h=sAYlrYp*NzXtBd`q@)nkce~=mpa%DJz{(HE=r(@hc#z8 zRPbAIk=W`)Y#YFA>B1;FQ2aNLmrPi$6&@}~Y&nUC+t~?PiLKlw>Tg6|G_v_#&mF_5 zjKDqa6$Zx^a1GDm=zGiK=VREMqgb8{(PHn#GigV(_fuzimQJuaSDEfbtkPu!8k|a{ zNFE&UYwr)ySe$i9;nUi8mI5J!W;@YkGm!;Bg)7p9u1}n%xiU8+aJ_s-GO5A)i0$gG zR(01_2aADk%y>U@rS?7@E#)MppioFlA-W&B^l%=?0P=2v(RZst&98x?TSzMA}hJdPWb(!H3KymemFJ>?Ckj!vj1~}b%=8|%!aj# zI}U>aZf%po{}dlB4Wey^DFnHoCQ)QfoV$iH$(o0z1_1sa62}SGKe~zl0000R8Uhvs2p}eO z1DO7OU|J)`ED^W$XsM*Xj}4x!Q3)p8caPv0AUyavWPtO=WfHZ$U$57S{vH9hz z*9>ny{DG?n2p~pmvGDI{!+)R|3=i%KF^E3-02X_HfBQE>-kwL{Hz|X1xwU2 z+J_`E{Csluzp?ILu;#fB`xv$y{Q>sEiK_nlTH90zd!i`$Du zUJyxQxy)s==8{74irkq+%$XOGl-b10t$AT%$o7VmOKM6kZQ138f6K%sa_LasZSl3| zAZttK?9{JL&-r~n&+mCoR8-J&F>_gE8@9nRV#y3%=k)#?_O5wB5Ubjn%_&HluIAjW zBt-Ag@U8pttbSn-$E3566GECjCJ%h8e)zQC^{9GckfXulWLCr=Ucz?U4ru)=e6v5u zv>*4{2dG49umVdZf6F*)vHu}DKj`^aXe3jRC(79YqhtkVjdr-&T-a&fg^hmIK`*Zlmg)oMcg7aYV8{&APJI3kno7;-WD-TvegI_gGHjG@=CWR3Xv0>; zR!&DuCk!G(LGZWe{BcMZfr^oLZbu4*2~ej2gbHtDKpdX}DFT!Yzadv@hoI*i#r-$j zpg@>MfXs${2)fS$6Wk%I`H&Qk^Zf)PskP?F!oRx^B&Bj8Ec^vovk>4^YX-;w0000< KMNUMnLSTZhGw)mg delta 439 zcmV;o0Z9J01n2{hBnkm@Qb$4nuFf3kks%v@aR2}kaRKw(dX4}900v@9M??Vs0RI60 zpuMM)00007bV*G`2igZ37BV)-l;9`;00CG@L_t(IPo0s!O9F8i#vkt#LZYcH`YRgh zZxCuYmqP^$926XimKx-&79HHweoVntczL%3r7Z;xqIOX&Sxbv+QxG%+Pj?q}g@bp0 zewQyV-{<+f&-;D>k4J_~kJ4dT1QA|}O_nFi{vlCBd4mq0@x+$Uq7qcRL$b*70_W`G zkpm3aMVBg6CXjF;eAAtxXKFlb8eFfOIduvtZexdg*kuQ8nlRZwgH=?SLyq?Q$epZW zjT$r-P~ZuUd4PT9k!Kod2jDm zG7z5Dtcz22k_F8BG7AWHtQ01NiM9<9Jk9$fvOB~2dw>q)yY_Kr=lbD5$W7oP!|F=^ h?7(0AvAT_G`T~&B!&UgD%PRl?002ovPDHLkV1h7=zf=GK diff --git a/ILSpy/Images/Field.png b/ILSpy/Images/Field.png index 05318b85ebd88c08c6c4be99f4097885e7bee0da..603039740b97621cf0ac5267d4c2bfe199c6d01a 100644 GIT binary patch delta 328 zcmV-O0k{5-1)BqqB#}8ge*g(^NLh0L01|Ql01|QmUS(V30000MbVXQnQ*UN;cVTj6 z0B~VxZgehgWpp4kE-*Xj^=SYA0PjgeK~y+TV_+Z>Ogr)}uXfYZ|C0~CwIEUpLfL{- zpW7?eKmOmf_uc=>4UhlNKK?O;XhW8r|5{(U;mQ9AN51`^dG`PRf4)PX!G-`0tsrQ~ ziVNRrs)5e#KJW#s8H5*J`1gPA$xr_^qc;2}Xh6;8=l>@j{`i0H`F~)|^MRT--T3`q z&Tr*^2IHB84Tzq7k~A1CIreBoYa5NLh0L01|Tm01|Tnj3T)Qks&^R0tHD#K~#9!V)+06KLfFt zr@8Szx)?wJk))a7)an0hjrAyo00a=@|F3HqPGA4Sz|6?VaQQVW!-ZRH4E?!Y49Gxv z>V*G)OsyCm{rtti{pJ+||Mg1@PpcXjL2>{A#KgexABMo-|9=#{3^EhD|NpgfV0gpH z#lZ0QAH&ywcOMvDF|so-=H-G_0t65fLMhZw35I{@}Obm>FW_rvFjDMII4JH3G8fyMw>|C}U z$zed_j~r!S0NHx|Is*eU3j@pZXJF0D`}a=+2p}e)xBfHy0V-o;`2PnQzKpCuy0@2+ zlbr?VJ6ya#Lk^XE@CKmalR|FVXGfjgK17hp_I{?8yO z!@%%==sp93v@`?z^{Whjwrm4y2FU{i5aYkkYZw?gfGl8GynV*V@c8p@hO6&b7@ofT z&rlW~0*)%iq{RPVue=4?ylpF7GY9|#5F!>>7#LX?85o&?>Otw_-(LnscreVH&&bWm zfuR`$00M~dKYGNI2mk_ziGe}@5I__g01!YQ6dM2#KolDQ5MTgyff)8a+Fz0Y0000< KMNUMnLSTaL()~IB diff --git a/ILSpy/Images/FieldReadOnly.png b/ILSpy/Images/FieldReadOnly.png new file mode 100644 index 0000000000000000000000000000000000000000..3f3385220547ef149170ac75955bee0e6fabf679 GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`)Ym%P6qN7l0AZa z85pWm85kOx85n;42huMY7)lKo7+xhXFj&oCU=Yur6o1qWsFt(9BeIx*L8u6X8RJr; z9|Hx&N?apKg7ec#$`gxH8440J^GfvcQcDy}^bD+De9Z)^c;V^d7-Hf7cEWBxMn{o0 z+i3xsnG-c)oK%&xTAdbMNt){Pa+}cf9qaBU= znaob@jhdSL&zU1$YqLGRQO_Qo3nBbE>dge+}dEL;bJWKfxWiIakKJ4 z7fEA|*@ef83)#521B{|h6_h{7G5p=w$})+0F~jq_uWm8E<9)R@Dk{soj?*dThirig s=ae0@jwVi5`6krTI{UxlM{XNN2hL54=l#0*9_VKVPgg&ebxsLQ0Gk<=R{#J2 literal 0 HcmV?d00001 diff --git a/ILSpy/Images/Images.cs b/ILSpy/Images/Images.cs index dfe0f681a..0309cd82e 100644 --- a/ILSpy/Images/Images.cs +++ b/ILSpy/Images/Images.cs @@ -3,6 +3,9 @@ using System; using System.Windows.Media.Imaging; +using System.Windows.Media; +using System.Windows; +using System.Collections.Generic; namespace ICSharpCode.ILSpy { @@ -14,61 +17,58 @@ namespace ICSharpCode.ILSpy image.Freeze(); return image; } - + public static readonly BitmapImage ViewCode = LoadBitmap("ViewCode"); public static readonly BitmapImage Save = LoadBitmap("SaveFile"); public static readonly BitmapImage OK = LoadBitmap("OK"); - + + public static readonly BitmapImage Delete = LoadBitmap("Delete"); + public static readonly BitmapImage Search = LoadBitmap("Search"); + public static readonly BitmapImage Assembly = LoadBitmap("Assembly"); public static readonly BitmapImage AssemblyWarning = LoadBitmap("AssemblyWarning"); public static readonly BitmapImage AssemblyLoading = LoadBitmap("FindAssembly"); - + public static readonly BitmapImage Library = LoadBitmap("Library"); public static readonly BitmapImage Namespace = LoadBitmap("NameSpace"); - + public static readonly BitmapImage ReferenceFolderOpen = LoadBitmap("ReferenceFolder.Open"); public static readonly BitmapImage ReferenceFolderClosed = LoadBitmap("ReferenceFolder.Closed"); - + public static readonly BitmapImage SubTypes = LoadBitmap("SubTypes"); public static readonly BitmapImage SuperTypes = LoadBitmap("SuperTypes"); - + public static readonly BitmapImage Resource = LoadBitmap("Resource"); - + public static readonly BitmapImage Class = LoadBitmap("Class"); + public static readonly BitmapImage Struct = LoadBitmap("Struct"); + public static readonly BitmapImage Interface = LoadBitmap("Interface"); public static readonly BitmapImage Delegate = LoadBitmap("Delegate"); public static readonly BitmapImage Enum = LoadBitmap("Enum"); - public static readonly BitmapImage Interface = LoadBitmap("Interface"); - public static readonly BitmapImage Struct = LoadBitmap("Struct"); - public static readonly BitmapImage Field = LoadBitmap("Field"); - public static readonly BitmapImage Method = LoadBitmap("Method"); - public static readonly BitmapImage ExtensionMethod = LoadBitmap("ExtensionMethod"); - public static readonly BitmapImage Literal = LoadBitmap("Literal"); - public static readonly BitmapImage Property = LoadBitmap("Property"); - public static readonly BitmapImage Event = LoadBitmap("Event"); - public static readonly BitmapImage Indexer = LoadBitmap("Indexer"); - public static readonly BitmapImage Operator = LoadBitmap("Operator"); - - public static readonly BitmapImage InternalClass = LoadBitmap("InternalClass"); - public static readonly BitmapImage InternalDelegate = LoadBitmap("InternalDelegate"); - public static readonly BitmapImage InternalEnum = LoadBitmap("InternalEnum"); - public static readonly BitmapImage InternalInterface = LoadBitmap("InternalInterface"); - public static readonly BitmapImage InternalStruct = LoadBitmap("InternalStruct"); - - public static readonly BitmapImage PrivateClass = LoadBitmap("PrivateClass"); - public static readonly BitmapImage PrivateDelegate = LoadBitmap("PrivateDelegate"); - public static readonly BitmapImage PrivateEnum = LoadBitmap("PrivateEnum"); - public static readonly BitmapImage PrivateInterface = LoadBitmap("PrivateInterface"); - public static readonly BitmapImage PrivateStruct = LoadBitmap("PrivateStruct"); - - public static readonly BitmapImage ProtectedClass = LoadBitmap("ProtectedClass"); - public static readonly BitmapImage ProtectedDelegate = LoadBitmap("ProtectedDelegate"); - public static readonly BitmapImage ProtectedEnum = LoadBitmap("ProtectedEnum"); - public static readonly BitmapImage ProtectedInterface = LoadBitmap("ProtectedInterface"); - public static readonly BitmapImage ProtectedStruct = LoadBitmap("ProtectedStruct"); - - public static readonly BitmapImage Delete = LoadBitmap("Delete"); - public static readonly BitmapImage Search = LoadBitmap("Search"); - + + + private static readonly BitmapImage Field = LoadBitmap("Field"); + private static readonly BitmapImage FieldReadOnly = LoadBitmap("FieldReadOnly"); + private static readonly BitmapImage Literal = LoadBitmap("Literal"); + private static readonly BitmapImage EnumValue = LoadBitmap("EnumValue"); + + private static readonly BitmapImage Method = LoadBitmap("Method"); + private static readonly BitmapImage Constructor = LoadBitmap("Constructor"); + private static readonly BitmapImage Operator = LoadBitmap("Operator"); + private static readonly BitmapImage ExtensionMethod = LoadBitmap("ExtensionMethod"); + + private static readonly BitmapImage Property = LoadBitmap("Property"); + private static readonly BitmapImage Indexer = LoadBitmap("Indexer"); + + private static readonly BitmapImage Event = LoadBitmap("Event"); + + private static readonly BitmapImage OverlayProtected = LoadBitmap("OverlayProtected"); + private static readonly BitmapImage OverlayInternal = LoadBitmap("OverlayInternal"); + private static readonly BitmapImage OverlayProtectedInternal = LoadBitmap("OverlayProtectedInternal"); + private static readonly BitmapImage OverlayPrivate = LoadBitmap("OverlayPrivate"); + + private static readonly BitmapImage OverlayStatic = LoadBitmap("OverlayStatic"); + public static BitmapImage LoadImage(object part, string icon) { Uri uri; @@ -80,5 +80,202 @@ namespace ICSharpCode.ILSpy image.Freeze(); return image; } + + + private static TypeIconCache typeIconCache = new TypeIconCache(); + private static MemberIconCache memberIconCache = new MemberIconCache(); + + public static ImageSource GetIcon(TypeIcon icon, OverlayIcon overlay) + { + return typeIconCache.GetIcon(icon, overlay, false); + } + + public static ImageSource GetIcon(MemberIcon icon, OverlayIcon overlay, bool isStatic) + { + return memberIconCache.GetIcon(icon, overlay, isStatic); + } + + #region icon caches & overlay management + + private class TypeIconCache : IconCache + { + public TypeIconCache() + { + PreloadPublicIconToCache(TypeIcon.Class, Images.Class); + PreloadPublicIconToCache(TypeIcon.Enum, Images.Enum); + PreloadPublicIconToCache(TypeIcon.Struct, Images.Struct); + PreloadPublicIconToCache(TypeIcon.Interface, Images.Interface); + PreloadPublicIconToCache(TypeIcon.Delegate, Images.Delegate); + } + + protected override ImageSource GetBaseImage(TypeIcon icon) + { + ImageSource baseImage; + switch (icon) { + case TypeIcon.Class: + baseImage = Images.Class; + break; + case TypeIcon.Enum: + baseImage = Images.Enum; + break; + case TypeIcon.Struct: + baseImage = Images.Struct; + break; + case TypeIcon.Interface: + baseImage = Images.Interface; + break; + case TypeIcon.Delegate: + baseImage = Images.Delegate; + break; + default: + throw new NotSupportedException(); + } + + return baseImage; + } + } + + private class MemberIconCache : IconCache + { + public MemberIconCache() + { + PreloadPublicIconToCache(MemberIcon.Field, Images.Field); + PreloadPublicIconToCache(MemberIcon.FieldReadOnly, Images.FieldReadOnly); + PreloadPublicIconToCache(MemberIcon.Literal, Images.Literal); + PreloadPublicIconToCache(MemberIcon.EnumValue, Images.EnumValue); + PreloadPublicIconToCache(MemberIcon.Property, Images.Property); + PreloadPublicIconToCache(MemberIcon.Indexer, Images.Indexer); + PreloadPublicIconToCache(MemberIcon.Method, Images.Method); + PreloadPublicIconToCache(MemberIcon.Constructor, Images.Constructor); + PreloadPublicIconToCache(MemberIcon.Operator, Images.Operator); + PreloadPublicIconToCache(MemberIcon.ExtensionMethod, Images.ExtensionMethod); + PreloadPublicIconToCache(MemberIcon.Event, Images.Event); + } + + protected override ImageSource GetBaseImage(MemberIcon icon) + { + ImageSource baseImage; + switch (icon) { + case MemberIcon.Field: + baseImage = Images.Field; + break; + case MemberIcon.FieldReadOnly: + baseImage = Images.FieldReadOnly; + break; + case MemberIcon.Literal: + baseImage = Images.Literal; + break; + case MemberIcon.EnumValue: + baseImage = Images.Literal; + break; + case MemberIcon.Property: + baseImage = Images.Property; + break; + case MemberIcon.Indexer: + baseImage = Images.Indexer; + break; + case MemberIcon.Method: + baseImage = Images.Method; + break; + case MemberIcon.Constructor: + baseImage = Images.Constructor; + break; + case MemberIcon.Operator: + baseImage = Images.Operator; + break; + case MemberIcon.ExtensionMethod: + baseImage = Images.ExtensionMethod; + break; + case MemberIcon.Event: + baseImage = Images.Event; + break; + default: + throw new NotSupportedException(); + } + + return baseImage; + } + } + + private abstract class IconCache + { + private Dictionary, ImageSource> cache = new Dictionary, ImageSource>(); + + protected void PreloadPublicIconToCache(T icon, ImageSource image) + { + var iconKey = new Tuple(icon, OverlayIcon.Public, false); + cache.Add(iconKey, image); + } + + public ImageSource GetIcon(T icon, OverlayIcon overlay, bool isStatic) + { + var iconKey = new Tuple(icon, overlay, isStatic); + if (cache.ContainsKey(iconKey)) { + return cache[iconKey]; + } else { + ImageSource result = BuildMemberIcon(icon, overlay, isStatic); + cache.Add(iconKey, result); + return result; + } + } + + private ImageSource BuildMemberIcon(T icon, OverlayIcon overlay, bool isStatic) + { + ImageSource baseImage = GetBaseImage(icon); + ImageSource overlayImage = GetOverlayImage(overlay); + + return CreateOverlayImage(baseImage, overlayImage, isStatic); + } + + protected abstract ImageSource GetBaseImage(T icon); + + private static ImageSource GetOverlayImage(OverlayIcon overlay) + { + ImageSource overlayImage; + switch (overlay) { + case OverlayIcon.Public: + overlayImage = null; + break; + case OverlayIcon.Protected: + overlayImage = Images.OverlayProtected; + break; + case OverlayIcon.Internal: + overlayImage = Images.OverlayInternal; + break; + case OverlayIcon.ProtectedInternal: + overlayImage = Images.OverlayProtectedInternal; + break; + case OverlayIcon.Private: + overlayImage = Images.OverlayPrivate; + break; + default: + throw new NotSupportedException(); + } + return overlayImage; + } + + private static readonly Rect iconRect = new Rect(0, 0, 16, 16); + + private static ImageSource CreateOverlayImage(ImageSource baseImage, ImageSource overlay, bool isStatic) + { + var group = new DrawingGroup(); + + group.Children.Add(new ImageDrawing(baseImage, iconRect)); + + if (overlay != null) { + group.Children.Add(new ImageDrawing(overlay, iconRect)); + } + + if (isStatic) { + group.Children.Add(new ImageDrawing(Images.OverlayStatic, iconRect)); + } + + var image = new DrawingImage(group); + image.Freeze(); + return image; + } + } + + #endregion } } diff --git a/ILSpy/Images/Indexer.png b/ILSpy/Images/Indexer.png index 63cee80b14146ebb1f22f53dfe2004191e112888..86a9082cc545a0bee0ea8ac60bdb02cab5fd2bbe 100644 GIT binary patch delta 474 zcmV<00VV#y1M~xsB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000XT z000XT0n*)m`~Uy|2XskIMF-Rc1PBfl|Fm>t0000MbVXQnQ*UN;cVTj60B~VxZgehg zWpp4kE-*Xj^=SYA0aQsuK~y+TV_?7oRxRxQziMI6|5b~6|9?;Gsr)~^xAK2OLG-_A z-Bne=YaH8w_yA7rs}^?s|Np%H|Nj?_K-~2I&x5M}A1|i;zq2>we|J&f|IRs?|69+r z{>N&->V=&^&2|5?f(^k2e0@;(|Np)8|6k7q{eOGh`~R<9O8=KFivJIE0j2?~7j^(O z*Zwa}u=)Svaex2+tPtb>|1T!~|8g$)|Bs{E|6lDk{QqW!;QyWp0skH68KD}mW??%} za}CgDz5g%I)dMvf{{L_x^?y#7$^V<1O#dHSApif!WYPb9Nh1FP(;WWWPuD~kux4S~ z|5xX#{+GpDf(5gJ_5VLOl<>bi(fKe{6Fzfq3_ zstYDnx}yk`1HEx`qtSnLSzZjkYNp9l0x|YLL=M^9Py@n>@TG-Oxe*Zp0P{e-zV02} Q6aWAK07*qoM6N<$f}0-fc>n+a delta 423 zcmV;Y0a*U@1Hl83B!32COGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA z00(qQO+^RP1q28V75}t!V*mgFPDw;TRCwC$kk2c_aTv#6&ptS;v;a<%zULd{X_>Q`Ag3FRWn!H)|ftw!~RniAUq@z#G?k6=TVk+^T{fx z;r^r$Q!;rbFr*#!7*1CZfZId_^>|6jgF%jYm)42}7Nb=hwX?Y# zL*!G06TP+i{oLJJsrMJkbWv{l>s~44f2sOvkLEWz93Z71j+9dVWc@#XnTwD$aE&aE z&TEU#?MNuNFKj( z;P{n8r*59PeCN#NyBDuNx^&~=m75Q4+6=eqzW@IZbnGY?4FS4_z}i{Mf%$}y zp(MyJ7?=V_GGGY)&JHX$7&r?&B8wRqgbG2J@$;RkKA@mjiEBhjaDG}zd16s2LqTF@ zUWr~_YKel0o`Lm?ubDs<1)eUBAsWHSKl<4uGz2e9ohW|s-+%eMwsl7Q^LMQHR?jBO z%j!GfV318zRa8>Ue@T;)P}U!oGbEq>`10@d$_@Y11A?YL5Pg)EDkQ?bYC`JI^9wW& ztY*8kNLOd2#@S_k24D7@satnjP0}?G4}MazLXpA9`%w6;&kI^X>BZC4&t;ucLK6Tx C48rsP delta 537 zcmdnO^@wGHq%0c)1B3kM|A|0~v%n*=n1MkEj2U~BcCt@Yw5w;l;pyTSQgJKk&;S4S z%&H6u4KpM(SQr?Oe0p=Vx{W`6pYfiGzm1MwF%uF`&l7g|R^8_AFK4)B*1ZECUVoQg zu<8H*a+w`x4xBr8>cfYd-fYpqx)b8ud{Z^q8W@t25?W>)Il+;vu<_s{p8x%G_nt0z z^hdO$*0#It{>DezcNjiV zuQH67y~=3AMq^{0xXta2t*xnA4h)8S|Noim=;=45QTWB4v(@JtVm`>HXrBl$es99Y z80W_p7Z=B7sp-gO7dJ1nXp$4prb&l*zRTOQM6(Du=qT*3|Mg|+!*h$T*Ynu#t4|dW z6-=u*`Ju6KYOm;v^s+YT^7)1y9UTTXb^jV4exANQvVY$G^dFx;OCO$ZUw?p&fkoi) zR%`$N`8TVlJv`pOo@bw47>`<&*X0S$KY!g#k8JmkWt2L0QbAeq$cJ~2!`n<}Z#SNj za>QW9D@}i94uuJfJiA^M1t&@^)4f+XvG)7J;I`-b^9*e&{>({?i|5s7_;)^TTkk{3 zfH&XY-{%pv>~uKmb-7{P2{sM|wz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;=Sf6CRCwBA`2YVu12SH=%=kaL7(NUTKq#CwYaIUn z`NQyk?p!sZ4FL!sB+WMefBju;2%Kw%Y z{{QFBft=0uKQ)ydZu8_xlfdlh0##s}-!nY?e}!TB|8A!2|NXoL{{aFBXg32xPR?z{ z|Nl9GHgf=NW?+~%@6WV9fBs~H$+yYV z00Iala8goG{hXDR#jtqcLb%uj-opQr1lgq6h~@R$_dvG_ zF^GwZgEfK-0I?aF7#V=hV>o=|$TT2k;GQ%&>k~-xd!Tw?N@H5Pmf;UD^#KGB3(&U= zN0v-rFmVoLP?wekd7RiuhmcOQR&H8a5j7Z{Bd<&11Sz5iJ^Z)W)W z?HgD#$Y6i~Vg&h(g@t7*10Dd20T5uWsQAy=(*utcfB*vk?wIBAnKej_00000NkvXX Hu0mjfDr$=E diff --git a/ILSpy/Images/InternalDelegate.png b/ILSpy/Images/InternalDelegate.png deleted file mode 100644 index 9ee36aff7d75f26a023b1e9b8b359927eaba5681..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 916 zcmV;F18e+=P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<3Q0skRCwBAeEjSU!;Skd7<5#m85kLW08B9aKXv&& z!>`}}7`}i1!Qf`2!*KP^Gl&cjoV#+D!QNb(!9-V)0U&@_7%;*A11HWieERm6;oJA0 z49{M?W;l8NB14d;DL?1u^F(F(1>-S%V-@pGbu&}U!`G5ZW$p+!yzyC9Q|M3&WnJ^as z1Q6rnXK(-Cxc?k%9>{=SzkW0P{`a5Z-`{@>KS6Au7)bKh@1G1HgFxzj|M?9L10!t( zMt}ffdHD1VgNv0mis^rVzWw?02hasT1Mhri_&o0u18*`P!`=Vy8Giiw3pTW6(p-j3 zbK9o^1Q64YUw=?T@c%!CzkeV$Gr#>0)~sNw!0-h~OFZL-yYkmhh(3S-VgWl52%g6EaW?%^RaASDe`-VZ$RuSw4MQtU9`@8Nl@Yu63yx{%;3quBg0Al(5 z7h-^vMks^WKL!Rhpwqv8{mJnC*Ds(Kelxs(`Hn$|O&Ds3BEzZKD;WM|DKPx_`3tNM zAb?mzziePQxp^Zz3g5ha2Ml3Ga40icGBU89$zfoSW?~Q)6k=GsU@=(y-=Dv5F9QS+ z3rO+LR|^=7okJP8rDcG+1Q~ujf68!f-&%&rOaC*ly?V>gVBf&7ZR1u3>`*uGVKA!sk*8ESH6_`+d!@~d|fEc$fDENQ= z#8QT@e+?PFefh%h>iuhmcOQR&H3J>N@QGE1K}p{ZZ2!++Kf!4L1kz*t8B(KsrvU^I q~ diff --git a/ILSpy/Images/InternalEnum.png b/ILSpy/Images/InternalEnum.png deleted file mode 100644 index f5f901693eeb0663fb0c9c118f5aa95dcd3809cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51Iqk~P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;t4TybRCwBA{Qdqc!_$+M42+D74ASPE3_u102mty2 zpPsB>V1#fOK=8w-*I>Cf?_M%!I80>_SN38A2q4DaAI>p611e+yD`kW#25b5+ZkEZw z`0FiL?Dx0NV6$2Nykz*r@SUNt=^R7fqJz@_0*HkXrV(TZ)OMI5Ak84Lk{KKf-+%mL z`0?Wh!?f%l48K2qg{uV!AQp7ZAo~5MHw;4jqG0y#Z=V?2<3EFK{`&C^P&3dKf8Q{` z06+k-fSih~nE~n^kRf;0*E7hexiU;X>ca5tJ2%76pVABszULS?|9)rq_T@8JEkFRV zfc!6Rp2@)Q^BvfaAioNO{rZaGC*ya9rl#`@E%j#@et-DF@Z-Z{2FAY(C;%XUSisgn zHJ8rh0NV5qXwy%iU%xZ_0s0jL=FYjt@buXSh|_@J>*vo5X;rlh)7J(t00a;?5WzNo z|IE-H_Ze*S7bL%e)uUaey3~e5u3#5R4Jz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;eMv+?RCwBA{Qv(y10?_;fS4F41ONfV^6bTXh7Vu9 zGrV~Hfk8@KkYUT76F~NRhDT2xF|3;2!0_w$AE2`T|92d?%)rjh%JA^nO9oq0Es$PD zO=T$tfB<4*V1$^&$OvN~vBBaD|Bs!$%W&fS6^3(HZZj}5vN0Sxa|fgb?00|wVgf4t z55f#!nh}JN4g9}x_XURChfg!ahqy81Cwehho2oLfu`@F)UbBaRg@t7*Kmakl|NNan zNlui36X?9nd(VJe@E>F=$WSxyGzI})P6l3HUIsZSK?Xivo@sKDLJYE!!VLExKLlF@ z5I`&-zkmAlmEq2#*9?h%h{U{(<51m#buMEB}RtzS3O4E=-`TE^wS%*(u0UE~1 zAR{5f@b2SRhBceFGn8b+FqrBoPXh=bkO2(3>T*+I8m2AYk$v~!Q-7(vK+Q_ifUd{}2q4De8|(igLYJn@-f+p+Tu z-@Y7Xc=i4@FsgomH520kfB<3yWoPsdMhCb85Ci}M3;>`C^3?cwzn1_2002ovPDHLk FV1hZgLwf)K diff --git a/ILSpy/Images/InternalStruct.png b/ILSpy/Images/InternalStruct.png deleted file mode 100644 index e067f1b5443c73b4603bbb2ec5587fc86a160c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWV9eN~w38hu$dc~p z>&U>cv9IQL;A9|QA=x9ymw};5m4Tt5nStTwe<1ymfuYoZf#FpG1B2BJ1_tr`N%2SB z7#JA0db&7hB&YU?DJn`xw0|$nU3C3T3e0*H6ZQ(-2IDG~dfi^}N8JPs%n3$Ls zL6JT_K9L6J_SgSE5XZ!!u%@x%-=9i@zpt&cc-;lms?fmgsmN5R!TUN^y@j4$=Uv}ug5 zgi?Nd{G)kzXKl8mn*QJO2Km?B+aAp^GpQB?hQWcx4DoP|Yae7+2rj#MMYZMO+vV{* zZxmRW5?VxozB~PT`}@XiT!tN;UCpLVF)T^OMutWPj5kkD(@lujRbqFpgaK%w!+j%} zNTbGsEH79~Gb1M)m;AS<;!r`|eXF+g_4Q3Wdzg;27f6B>E;wLS@yPh_w&drM`)V!E ze0cRYyRBTlzR}d!k?FgD#s;veo(Ered_{IJ*fBFO@i2%c9CO}ru5|}6vKc&G{an^L HB{Ts5q~_v5 diff --git a/ILSpy/Images/Literal.png b/ILSpy/Images/Literal.png index 077075c13220b2780ca5064d69d2d1b40554112e..55a693d29aee3e81c6253f699f5734af4c3cb65f 100644 GIT binary patch delta 504 zcmV$SLZEI>&6L+iFhza&B$v=I5q!&c$5Vf3%oz`o4jA@%{yZ z4?LIW@N#(Gyu8c#U*OY}Tca%caR)l%9K9cG^bAe&N@u3Kf1KxUjkNcCr0unyrmg{v zkZxFk&nA0%%JIox4u56XPo|0NCfShp@UBN$^2t1IdxId*PdIaYHhT`o6BVwQxx+1g1G2*;2D5x%Xea1g7*$E5u`H>;nD0yWsr!y{selmaJ&7g!x@m_AF4 zSUnWoZxID*?bv>ba5TY>&@L_U|@2UO$?f=iu&kaRtetqHe*U!+LP2ryY%Y=0Y#$k!I+FAmSOmC@*wc(TbYgc+dHDSN z{Dg29_j-5Zn&01eS2F@_Z1NRYqG@3v@#f3<`S#7Ghxat_F)($o#wzoyiQO&sjww7m zysiHKzs95c>;85nF*qj ztE<`;($BiSd?{%=+AV(gD9|Z_mYSP4Z17RNmKI^9$H1ZB=JlD$fgw6UHAtzf-nGkfzvVi6Pcjxc<|8D8~|G#EK z4Vn4-|Fap-|4;Cn2(pBM0c7*brx4o@9s#;w>)QV_mVjNru-t#e|BJbo5QfbE{r}zE z_y4B_P5)n`R|7Ese;-&GwCexGtV{o|=3o84r(o~@yEE?n?{n+_KgVY7|2n-ogaIH| zJbkqK|Cw`Z{%_sA_Wzva5Em@w5$IgjyXbnbgmEHUn*}tpET3 delta 537 zcmV+!0_Odc1nmTnBoYa5NLh0L01|Tm01|Tnj3T)Qks&^R0pm$TK~#9!V)+06KLas1 zf+6BRjD7#teTFALo`Bf^0YsE$F9xswJDGRjDLVGU}gsD0OGgL85tgb{>^ap9Sg(L zm;V{c!a~4?#xTbGX9arUKhOw41|fz=3=bJLGH;yr=g*&PfB=F7B82>p4!c*cVR-WE z3B!_n|4SG@v3_KD&+v}nh4gc<=9`~yW`i^V1P~L<>7W1wvf&sQMU4Od0VV%2Fg*GB zgkkNkwTvL=uYR!_Y%{}Oh(>?_Vgx4!3IIR=F)>gG00M|&0{{YuVgmpIh++c(0*GP* b00ImEH9;XA&ktwB00000NkvXXu0mjf6m{vZ diff --git a/ILSpy/Images/Operator.png b/ILSpy/Images/Operator.png index fda73d0895e6edfd85722c000dac089b91a2570c..6fa32b91eba3747b3ae87d5ea0b3d227481119f7 100644 GIT binary patch delta 500 zcmV06Lfe02gnPU&TfM000SaNLh0L01|Ql01|QmUS(V30000MbVXQnQ*UN; zcVTj60B~VxZgehgWpp4kE-*Xj^=SYA0b)r+K~y+TV_-l6w|{2cjy~UU{{P{w!*Mn||F6-jA#A|PpjH1bW?lM!HUH}WJq3IJ-<@&q zf1g|b|2Z~u|JUi&5jJ3{-!k770W1Gs%D(*na^98ybq4kS=iAKx-)q|Uzecx~umK=H z0=?n1GGNvJ)9GixwobK}_P^|u~NMp^ipXM+&!I(kUjO+rU3<24QOCdfv q6qjLBNVH~bP9`}Fu!TH&EC2w_(hAtLX>{BG00005jgR3=A9lx&I`x0{IHb9znhg3{`3j3=J&| z48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!CBxDSR diff --git a/ILSpy/Images/OverlayIcon.cs b/ILSpy/Images/OverlayIcon.cs new file mode 100644 index 000000000..6c4e729c4 --- /dev/null +++ b/ILSpy/Images/OverlayIcon.cs @@ -0,0 +1,34 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under MIT X11 license (for details please see \doc\license.txt) + +// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; + +namespace ICSharpCode.ILSpy +{ + internal enum OverlayIcon + { + Public, + Protected, + Internal, + ProtectedInternal, + Private, + } +} diff --git a/ILSpy/Images/OverlayInternal.png b/ILSpy/Images/OverlayInternal.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc53bddecc15a060e83493ac08fdd7967ff9453 GIT binary patch literal 1292 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6zM9{GlYxANWRDd{n^G1HN- zGLUw)l=XL1@^?~<@KB2N)69!EYR)li$g^EDJ#*8X%&iLww=XK*xwLfW@{&C(EB3Cc zI50>3+fOkj}L=RecPBcv2`=~9r=n*zqdOhHXeK~1wA z4I8%1=;&A>!X4uvu&9+&@4)$^XHOnHb%sM2XutEN#Vv=9-3O%~Pgg&ebxsLQ07q(a AjQ{`u literal 0 HcmV?d00001 diff --git a/ILSpy/Images/OverlayPrivate.png b/ILSpy/Images/OverlayPrivate.png new file mode 100644 index 0000000000000000000000000000000000000000..13ee614f84b2bf54497c9d6f367024b626f41481 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`)Ym%P6qN7l0AZa z85pWm85kOx85n;42huMY7)lKo7+xhXFj&oCU=Yur6o1qWsFt(9BeIx*L8u6X8RJr; z9|Hx&N?apKg7ec#$`gxH8440J^GfvcQcDy}^bD+De9Z)^ckmkYud(}5|9)fk|JA$1{;8j0 znBePv?#>_k)zHEW$Gv9zp<-fU32rIHB+A>TLY7c+5Wj37#03E@mLhTQ@g<+ zzzob>R-%;<#l_ZAhLYbs4IB>Z2JbqJ_!)t1t8|L^?D{D1kh r`k#L77k}jEUHx+3erMYX2Nnit^*yVUoa1HzJgTe~DWM4f9#y0R literal 0 HcmV?d00001 diff --git a/ILSpy/Images/OverlayProtected.png b/ILSpy/Images/OverlayProtected.png new file mode 100644 index 0000000000000000000000000000000000000000..0d125f7d25e4ab710d03227b66922e7c13a467d0 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`)Ym%P6qN7l0AZa z85pWm85kOx85n;42huMY7)lKo7+xhXFj&oCU=Yur6o1qWsFt(9BeIx*L8u6X8RJr; z9|Hx&N?apKg7ec#$`gxH8440J^GfvcQcDy}^bD+De9Z)^*y8Ep7-Hd{oFKt^Sd(Sl z+sspY_bmSR|K-=E|NYnW{I7rQa9nKBU-rv?o?bn*+&(Ym5BtN^wPOGC-{r@9Oi@&r zy?;;4uP^tnoBprf^z{GzyTV`p|F2y9zgzmtKjGX1v!!kI9nG3enm_Dj{&hsUAS-ts z`-%Gs(T;5gOynb`NO(-)cIbL`O=3r54x1!Hk<|t5RW8|Wnk|wJlRi((Wt9Bz$mPxd se>O}1Z$1@r)uZg-qAXs`AX8?Bl@U#^va?=n1-hTX)78&qol`;+03n!+Qvd(} literal 0 HcmV?d00001 diff --git a/ILSpy/Images/OverlayProtectedInternal.png b/ILSpy/Images/OverlayProtectedInternal.png new file mode 100644 index 0000000000000000000000000000000000000000..dacce33c49fa7d2f9e4cbe20bd5d4829be45dce9 GIT binary patch literal 440 zcmV;p0Z0CcP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 za7bBm000tl000tl0bXTW;{X5v7IZ~ebW?9;ba!ELWdLwtX>N2bZe?^JG%heZ==Es; z009h1L_t(IPh(&h1;aH2I?97qU*1vw|MdFO|0h<)|6egB^Ci)Kg=xNfW#*qBH!}W% z@Um8m|MR+&?hs>0D9Gl!m#6;u_jS$xo^1L5clSj7|9{@-|KbL{|5yz;vZ?<6p$)bF z53H&FpBCfzA7sFdqxE2$L7GAM-2r{v1{?-yo}>Q%{q3Uv|3CEnFHW}y`x|5{$Pk$3 zq6EthtS&gPwi>JvW(dfj+z2VK%^(9nPWQGHaK-8Wy{js~23*?e0yYGMJ4-a+2Hh4=Sz4ib9-Rb}Tf4~3#>HMVox4yb$vuXNR zef#S6w)Ovi@ALovzu)xxas9$|zWE+T2eSWe{o1$N?(gQi{~qptbLe(`r1o-s)sqYp z=0Dwaea-XNH$F^TT5~FBT2GecBp!)S8!0AddlrWO_I7{$6HHxz?qcwC^>bP0l+XkK D4SasP literal 0 HcmV?d00001 diff --git a/ILSpy/Images/PrivateClass.png b/ILSpy/Images/PrivateClass.png deleted file mode 100644 index 370aa1c768dcad12b16cdc315871ea9f7fa66f6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 920 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 X8vZAN5zS3a00000NkvXXu0mjfN*-_N diff --git a/ILSpy/Images/PrivateInterface.png b/ILSpy/Images/PrivateInterface.png deleted file mode 100644 index c81bb655f463902e5d331ff66f84199e0b66a6d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 781 zcmV+o1M>WdP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;gGod|RCwBA{Qv(y10?_;fS4F41ONfV^6bTXh7Vu9 zGrV~Hfk8@KkYUT76F~NRhDT2xF|3;2!0_w$AE2`T|92d?%)rjh%JA^nO9oq0Es$PD zO=T$tfB<4*V1$^&$OvN~vBBaD|Bs!$%W&fS6^3(HZZj}5vN0Sxa|fgb?00|wVgf4t z55f#!nh}JN4g9}x_XURChfg!ahqy81Cwehho2oLfu`@F)UbBaRg@t7*Kmakl|NNan zNlui36X?9nd(VJe@E>F=$WSxyGzI})P6l3HUIsZSK?Xivo@sKDLJYE!!VLExKLlF@ z5I`&-zkmAlm4S(wnL%4sj^XFeUkuU`k_^vZJ_q`lo#DpaXABY|A`Fk8e_;6h^B?5=f+U|SK>nd+8;@mu|M49j zrnY7}|7S1T#;|?wGlt*4e=}6%Br=%lDNO^qA{!up7(fYW&(W*@J7;YC&&^or(hh1Q633V4#6C_4Q8$8vvre0$uRy z*KdaJKYkKS$^Zex@);QNuikwIYi{kB!0_qoPjFQJ`1P0J$B$nG4FCurMo>Ux*G~Qa z^XE@+7<~Eqh2h)xpJ2^z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-_(?=TRCwBA{Qv(y10?_;fS4F41ONfVg3M`cZN=%F z>gsAnY~la`!~pUF47aqj{Qv&_`+pEXra|J&%*<1f)xt190I^^*^!V}PaJHeLAzm*4 z1Q3P+92^{AOEz+M6fAVyd$oVs}L|J(Op7=Hfz#qi_zUxp|@ zONL*+eqq@7_U&H=Nl8uypkdSg{P~j&5I{^Y&Eg__3?ILIXLt=XL{ylUp`dXV0}Bfa z3I=KZ@B!68fB*s;@cZ{4hRu7=FidJIWSBpxis9|MFAU#*d}qkc&SrS|^C!d0mkJ+fRlUuRk)(TC#@W!G{kBL$CmV0Al*|K0YCsTtlWC)|C8r$|DQO2=f91U=l@d|?*2b@ z@$Ubv`!4+VO|1M64DJ6w3otM&VF3gX%V%K7zk2r>?26Wo2@IdU{)9y3ufGgGe*6N7 zUjgDnxEufwK;U$cT|4#vPhe;R&0zTQ^$RdSe}XmdUD*$gYkVmYAb{Wr2^h~)u_+*A c06>5N04Hn?EYNUuQUCw|07*qoM6N<$g4{I}E&u=k diff --git a/ILSpy/Images/Property.png b/ILSpy/Images/Property.png index 091e7ab2c533cd27d382ab66677e9b4e8a69ad30..69899b4c40451600343a5c05b4e3d4168e15c405 100644 GIT binary patch delta 666 zcmV;L0%iS#2kHfoB#}8ge*g(^NLh0L01FZT01FZU(%pXi0000MbVXQnQ*UN;cVTj6 z0B~VxZgehgWpp4kE-*Xj^=SYA0zOGZK~y+Ty^~)^Q(+j!M-V~X7$gK0Q8(d@)VvEK zPZtp#-5)omqLl`@EGU@>Hi`zhg(w+~W>QM5wQ4Mr2qY_TW;pGSf3}gK>E_N_G;?Jp zbAQj%*|$y}*`&K(czECMgXj0XJn)G`g6grE*4n#_lh3;iGx|pLp(l5Bi978&+&1aZ z(WZq_Uk_bf1#4>2Y87_sGN*o_pUk~Bvvq04U_GrmFpY0#z$?aRu=r7psTWGLXyj?J%m;-JDF*jek$MwVT zII2-zTndbBN5QUKtY4Rd{2gm>LM25-V>!gFn;~*I-y>DQAcLlcqX>NVlJmQf0RkC+ zkdG}n8&Fkw1g1{Q-_Y`Eww~j(3_vmtqCb^jS=b-;KvPMiEx1RRtoGgI#$N^c+p zBsp^=&SD{)f5g}M1kqG*6~Mr-oA}L-28md~%-^N@cwiNP!|7VFL4qShVoCg1jN{Aq zI6T1^TucOG%s&A9Yf&x+;miE|+LO$lfpc_X#Rg&S#A_}J_~wBRvw(|J))4C(&V!~U zD3&UhC0C(HrT{H1K@q1^rzP_2fQ--Zzb}3Rt#TLH5P4q8@c;k-07*qoM6N<$f)bl7 A<^TWy delta 819 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 LNkvXXu0mjfO1G=v diff --git a/ILSpy/Images/ProtectedEnum.png b/ILSpy/Images/ProtectedEnum.png deleted file mode 100644 index 1912ed8837ffe0b54907b5f3fced99209e7cea60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmV+r1MmEaP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;hDk(0RCwBA{Qdqc!_$+M42+D74ASPE3_u102mty2 zpPsB>V1#fOK=8w-*I>Cf?_M%!I80>_SN38A2q4DaAI>p611e+yD`kW#25b5+ZkEZw z`0FiL?Dx0NV6$2Nykz*r@SUNt=^R7fqJz@_0*HkXrV(TZ)OMI5Ak84Lk{KKf-+%mL z`0?Wh!?f%l48K2qg{uV!AQp7ZAo~5MHw;4jqG0y#Z=V?2<3EFK{`&C^P&3dKf8Q{` z06+k-fSih~nE~n^kRf;0*E7hexiU;X>ca5tJ2%76pVABszULS?|9)rq_T@8JEkFRV zfc!6Rp2@)Q^BvfaAioNO{rZaGC*ya9rl#`@E%j#@et-DF@Z-Z{2FAY(C;%XUSisgn zHJ8rh0NV5qXwy%iU%xZ_0s0jL=FYjt@buXSh|_@J>*vo5X;rlh)7J(t00a;?5J8$x z9lp&Frp?Ik>h(JYd(;1Lzk=in+c!*OKm#DnAOH|RU>BS^e2c-<*^Ght#a6H_^XKnl zIC6`Vp)*&3;VaayB?%7Mj12#Q5aNQ=${Gee13w0U0AhOh(SX6!$rP-pv2zu}^M{Wa zQo@)SY}LMlZHKxVZV&_52pDEy00hoJ;JbR_b-Nwt_N3u z@`qpw|NQxr&42{}1Q6IX5Wc=8^#7lmDgS3zDE((z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;XGugsRCwBA{Qv(y10?_;fS4F41ONfV^6bTXh7Vu9 zGrV~Hfk8@KkYUT76F~NRhDT2xF|3;2!0_w$AE2`T|92d?%)rjh%JA^nO9oq0Es$PD zO=T$tfB<4*V1$^&$OvN~vBBaD|Bs!$%W&fS6^3(HZZj}5vN0Sxa|fgb?00|wVgf4t z55f#!nh}JN4g9}x_XURChfg!ahqy81Cwehho2oLfu`@F)UbBaRg@t7*Kmakl|NNan zNlui36X?9nd(VJe@E>F=$WSxyGzI})P6l3HUIsZSK?Xivo@sKDLJYE!!VLExKLlF@ z5I`&-zkmAlmEq2#*9?h%h{U{(<51m#I%>> zP6inXA%=G!zcQ@Zyq%#WBZk3LPk9B(Mt3LgQ>GAgSpmA249EY3^U3UvOt=x z{Ijw_VQOop!*KEHO@`S^*D|bFzZs}G7OWZQifn)YVmPw4>i^FV>;M1!xZ!_o6950l zyFLE@Kd<(GPNnjHP$Gk2W@hH8$QULL5I`&v!eR`+-rr~7{B?~XI@q1z2MZ6wrw@;S z_WuQkGT0U%fYImxAb`N8T;CG%|NlAF|9@_#{{Og7^Z#t1?Z~#^!vFyUXI$SB3N#?) z|Lh7SqBVmsKmf5Ixdn_v-PnM%94HX8iOCB90mOuCz^8Yw8G08#VaVuyG>zEI1Q0+d j&Z$k{Cdv6A3=m)dGge)@gSjTB00000NkvXXu0mjfF0Du+ diff --git a/ILSpy/Images/ProtectedStruct.png b/ILSpy/Images/ProtectedStruct.png deleted file mode 100644 index fec00cced65d8dc326f4f1f2b325313579cdba7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@MA8P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-qDe$SRCwBA{Qv(y10?_;fS4F41ONfVg3M`cZN=%F z>gsAnY~la`!~pUF47aqj{Qv&_`+pEXra|J&%*<1f)xt190I^^*^!V}PaJHeLAzm*4 z1Q3P+92^{AOEz+M6fAgqCS{``3`{p;5+4E+50cZkg_EK@-= zKmfrFIJ&;(zoYgKh7Gf`87wU=VTw@j+qZuiK72s63?P75AeyWHn>w2@Fu&N!zyNgE zoGKLtMn*=4KY#u(y#4!^fdQ)N0~n*401!YdN7sQgn}RuwovRqqA}twG!kB^PD1vQ- zX#`pQ0gHD50*FaMSd8J<`};uKw=hHpyEFV?kz)At0TQ-VRfP->KpG!>0McMHFuVW| zKupT^`HWAl9%EqsdXPayg`Yv}|8a&@yM8jHb>3$vYwKqa0I3pSfY4X~KmfrL#Puzq z|Nq=f`9Hft37lwvVelUxh9xY3076O!|G_xajSWc4Wu>&=V}wN&J^&CvNG=He|L(Zo u|JpB#|*he{ui-5^@1vWn1F_000(rMObuGZ)S9NVRB^vaA9d~bS`dX zbRaY?Fgxh=X#fBLhDk(0R5(waliNxHQ51%Ksd|TcgRb+ki|&HxCJ4GPx`_@%6qr$B z85kH^m>G6LD^W>IGsUxco^j6ex3@5nIAhU*#lT+s|5*RpYfL5*f383Rdg=7VVD~)3 zcJ@HiLhtGZ6&r<03Of!z#wMmQZ?PWf0#2{ux_XtUC0WI~%>!>Rra|mO5XVKN57;~L zW6kQu^5!uXR;-v^+yXBsdljiRn0vx(S105&|AWAAYBJTENG#RN6(Lh6heb>EV z2aS$|YEwe-Q|JTee=LRoyUrV^#IUTW;6(*2ub|Dys1tFeA)-(dkSX)VfNi_4KP>8( z;go?HnCDh8HM4|du4fF`IPjvU`R&T6wM3NaBC-`8=>mrY5l1tuF@Sob!_xfzdlvB=a2N*&ZS(7NG=#yZA4FazoJF1KPoDO}v9Zq&>QWTtz^-$P>RD zqVFu8-WWW-b`gwqaQ)K8WwRVXC|`9dDKoTO_^0TU9|P#fa9e~otg z3XMhsl}ZJr^AcoPhA2u%3j!OUX&U-}y&l@Fw&_U(A%%E6&Ia^)U9?&%>X(-!tTKwl zBF;|Fkj-Y1Or{Wv#SjjM*#K2lQLEK-vso6QPzZtj02@HfigJNMp@5T<95TllBoYZk zqfrEdLHPIm*z1suhX5IKy1Kj7g_^ZDR* zyWwy+VB58^0iq}(^__Gi5(dxn@Or&)xm>W@iP^RTt96?VFbj^=+xU^_g`&;>)cRI_ Y0w>jD_mJy*@Bjb+07*qoM6N<$f^B!_5dZ)H diff --git a/ILSpy/Images/ResourceImage.png b/ILSpy/Images/ResourceImage.png new file mode 100644 index 0000000000000000000000000000000000000000..3c0cf56cd4c15115538746c7ed8c2e0c59a3cb3c GIT binary patch literal 803 zcmV+;1Kj+HP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 za7bBm000tk000tk0rT8?jsO4v7IZ~ebW?9;ba!ELWdLwtX>N2bZe?^JG%heZ==Es; z00MVOL_t(IPtB8CNYh~$#v>E4z>5NftefbBhS6eW$}q>|)GYe%7Dm3B(TrH>J^JB<@4msdG*s%q+MI(LJR*SS4N0C505%L(9;On;9H2apPP#mhXj_ zhQyRySVutMNyi9P^%^WQHhk|Lrl_Y7@5Hsl%OtoQbjKrh4JC~QWGDDz><>ZT?9Y`G z-fR{91`uvraQC^mi*$7wJMwlDB^R^t`W6m6494ZS2W^^nlqRhtdA}F6if*RXVvpm6jdpB z9^1gS+yKP#Blun0glq6piZkOVxE@39r!c}Ig9dfJPi+`k(El=A`&|QIrnA!&{s04D`vFsF00c->@MGl zTi8lo)g+^Oa(Y21h=q1qq)hvIjt>-|?aHD@b=3*bP!Wf`EDBj!EvX(e|S6J=$U33qiNvd z9GLUGmtl^>(Rcu~&^EQxA+Q0h{GIKU!)nfttF^BGiRiHGM>)NS_n6nd$hUJqgB5WC z%H0TxmoAe?W-M#1WpQS3>6XD4E)-6CkU!|g>}V_0*C?0(jalSzvlAaOclJUt!iROZ zBt9VKj-z%`vxxk%y6sl!qtg5mWj5@Hz<_dV2I6>l3w$g484^G`@lr?BK)hW?N6 zB-EM1z8k>hxz__a>&eOAWbGUn2q^^l86yrIRC`>SW!_IAxQE_&0&hdA`29o zoH;zW^^AdF8jfBcjnLHjS9try1k*W7Y~w{?eFf@Fv4?&*+rCg-#2DK)%nyer( zF#YS-FAV&D{P}l?%`7ZaK{P-BVYuMOj~@({mXqDAp~%!0SF)#dg}00JX08yM90RjvF^e%yc4Wwbk00000NkvXXu0mjf@f(Ma diff --git a/ILSpy/Images/SubTypes.png b/ILSpy/Images/SubTypes.png index 82bfe26d712654038ca4d7d2ffebf7191c4dbffd..e04de5c6a16a6d9947b211db872f14ed41dec797 100644 GIT binary patch literal 1303 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>eBVx ztM5g?q?e&nUq#P+lQ{Qn`oed)OWzl*{4jIhd!U+8Fd72GG6WWS@w{SSU}Pu>@(cby zvH?TzcXm}^By$#cL>4nJ2o-`bfkFQB|3o0gSRCZ;#IWw1%*%<2cJ&OL1s;*b3=BeG%-Ex}lO3og z-_yl0#KQmXq(-g-3LGxi_y4|sth4JRn>a5Ux6YQ=OK%2TeVx(4!O14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>mdKI;Vst0F~oqwEzGB delta 192 zcmbQm)y*_PQk0E>fkFQB|3o0gSRCZ;#IWw1%*%<2cJ&OL1s;*b3=BeG%-Ex}lO3q0 z#M8ww#KM2+Bu2gi3LMPa_kYfJRqFR|bMvmB s(e4#joum~UqBkfUes?W=-TE>{>E)5dw!NL2KnE~*y85}Sb4q9e01Hw|!~g&Q diff --git a/ILSpy/Images/TypeIcon.cs b/ILSpy/Images/TypeIcon.cs new file mode 100644 index 000000000..2e5f3f498 --- /dev/null +++ b/ILSpy/Images/TypeIcon.cs @@ -0,0 +1,31 @@ +// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; + +namespace ICSharpCode.ILSpy +{ + internal enum TypeIcon + { + Class, + Enum, + Struct, + Interface, + Delegate + } +} diff --git a/ILSpy/TreeNodes/EventTreeNode.cs b/ILSpy/TreeNodes/EventTreeNode.cs index aad7263b7..c54540f38 100644 --- a/ILSpy/TreeNodes/EventTreeNode.cs +++ b/ILSpy/TreeNodes/EventTreeNode.cs @@ -55,12 +55,29 @@ namespace ICSharpCode.ILSpy.TreeNodes get { return HighlightSearchMatch(ev.Name, " : " + this.Language.TypeToString(ev.EventType, false, ev)); } } - public override object Icon { - get { - return Images.Event; + public override object Icon + { + get { return Images.GetIcon(MemberIcon.Event, GetOverlayIcon(ev.AddMethod.Attributes), ev.AddMethod.IsStatic); } + } + + private static OverlayIcon GetOverlayIcon(MethodAttributes methodAttributes) + { + switch (methodAttributes & MethodAttributes.MemberAccessMask) { + case MethodAttributes.Public: + return OverlayIcon.Public; + case MethodAttributes.Assembly: + case MethodAttributes.FamANDAssem: + return OverlayIcon.Internal; + case MethodAttributes.Family: + case MethodAttributes.FamORAssem: + return OverlayIcon.Protected; + case MethodAttributes.Private: + return OverlayIcon.Private; + default: + throw new NotSupportedException(); } } - + public override FilterResult Filter(FilterSettings settings) { if (settings.SearchTermMatches(ev.Name) && settings.Language.ShowMember(ev)) diff --git a/ILSpy/TreeNodes/FieldTreeNode.cs b/ILSpy/TreeNodes/FieldTreeNode.cs index 88cf533a9..a967d3109 100644 --- a/ILSpy/TreeNodes/FieldTreeNode.cs +++ b/ILSpy/TreeNodes/FieldTreeNode.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using System.Windows.Media; using ICSharpCode.Decompiler; using Mono.Cecil; @@ -28,34 +29,60 @@ namespace ICSharpCode.ILSpy.TreeNodes public sealed class FieldTreeNode : ILSpyTreeNode, IMemberTreeNode { readonly FieldDefinition field; - - public FieldDefinition FieldDefinition { + + public FieldDefinition FieldDefinition + { get { return field; } } - + public FieldTreeNode(FieldDefinition field) { if (field == null) throw new ArgumentNullException("field"); this.field = field; } - - public override object Text { + + public override object Text + { get { return HighlightSearchMatch(field.Name, " : " + this.Language.TypeToString(field.FieldType, false, field)); } } - - public override object Icon { + + public override object Icon + { get { return GetIcon(field); } } - - public static object GetIcon(FieldDefinition field) + + public static ImageSource GetIcon(FieldDefinition field) { + if (field.DeclaringType.IsEnum && !field.Attributes.HasFlag(FieldAttributes.SpecialName)) + return Images.GetIcon(MemberIcon.EnumValue, GetOverlayIcon(field.Attributes), false); + if (field.IsLiteral) - return Images.Literal; + return Images.GetIcon(MemberIcon.Literal, GetOverlayIcon(field.Attributes), false); + else if (field.IsInitOnly) + return Images.GetIcon(MemberIcon.FieldReadOnly, GetOverlayIcon(field.Attributes), field.IsStatic); else - return Images.Field; + return Images.GetIcon(MemberIcon.Field, GetOverlayIcon(field.Attributes), field.IsStatic); + } + + private static OverlayIcon GetOverlayIcon(FieldAttributes fieldAttributes) + { + switch (fieldAttributes & FieldAttributes.FieldAccessMask) { + case FieldAttributes.Public: + return OverlayIcon.Public; + case FieldAttributes.Assembly: + case FieldAttributes.FamANDAssem: + return OverlayIcon.Internal; + case FieldAttributes.Family: + case FieldAttributes.FamORAssem: + return OverlayIcon.Protected; + case FieldAttributes.Private: + return OverlayIcon.Private; + default: + throw new NotSupportedException(); + } } - + public override FilterResult Filter(FilterSettings settings) { if (settings.SearchTermMatches(field.Name) && settings.Language.ShowMember(field)) @@ -63,13 +90,14 @@ namespace ICSharpCode.ILSpy.TreeNodes else return FilterResult.Hidden; } - + public override void Decompile(Language language, ITextOutput output, DecompilationOptions options) { language.DecompileField(field, output, options); } - - MemberReference IMemberTreeNode.Member { + + MemberReference IMemberTreeNode.Member + { get { return field; } } } diff --git a/ILSpy/TreeNodes/MethodTreeNode.cs b/ILSpy/TreeNodes/MethodTreeNode.cs index 0e23aa02d..97df9ac92 100644 --- a/ILSpy/TreeNodes/MethodTreeNode.cs +++ b/ILSpy/TreeNodes/MethodTreeNode.cs @@ -18,8 +18,7 @@ using System; using System.Text; -using System.Windows.Media.Imaging; - +using System.Windows.Media; using ICSharpCode.Decompiler; using Mono.Cecil; @@ -31,20 +30,23 @@ namespace ICSharpCode.ILSpy.TreeNodes public sealed class MethodTreeNode : ILSpyTreeNode, IMemberTreeNode { MethodDefinition method; - - public MethodDefinition MethodDefinition { + + public MethodDefinition MethodDefinition + { get { return method; } } - + public MethodTreeNode(MethodDefinition method) { if (method == null) throw new ArgumentNullException("method"); this.method = method; } - - public override object Text { - get { + + public override object Text + { + get + { return GetText(method, Language); } } @@ -62,31 +64,57 @@ namespace ICSharpCode.ILSpy.TreeNodes b.Append(language.TypeToString(method.ReturnType, false, method.MethodReturnType)); return HighlightSearchMatch(method.Name, b.ToString()); } - - public override object Icon { - get { - return GetIcon(method); - } + + public override object Icon + { + get { return GetIcon(method); } } - public static BitmapImage GetIcon(MethodDefinition method) + public static ImageSource GetIcon(MethodDefinition method) { - if (method.IsSpecialName && method.Name.StartsWith("op_", StringComparison.Ordinal)) - return Images.Operator; + if (method.IsSpecialName && method.Name.StartsWith("op_", StringComparison.Ordinal)) { + return Images.GetIcon(MemberIcon.Operator, GetOverlayIcon(method.Attributes), false); + } + if (method.IsStatic && method.HasCustomAttributes) { foreach (var ca in method.CustomAttributes) { - if (ca.AttributeType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute") - return Images.ExtensionMethod; + if (ca.AttributeType.FullName == "System.Runtime.CompilerServices.ExtensionAttribute") { + return Images.GetIcon(MemberIcon.ExtensionMethod, GetOverlayIcon(method.Attributes), false); + } } } - return Images.Method; + + if (method.IsSpecialName && + (method.Name == ".ctor" || method.Name == ".cctor")) { + return Images.GetIcon(MemberIcon.Constructor, GetOverlayIcon(method.Attributes), false); + } + + return Images.GetIcon(MemberIcon.Method, GetOverlayIcon(method.Attributes), method.IsStatic); } - + + private static OverlayIcon GetOverlayIcon(MethodAttributes methodAttributes) + { + switch (methodAttributes & MethodAttributes.MemberAccessMask) { + case MethodAttributes.Public: + return OverlayIcon.Public; + case MethodAttributes.Assembly: + case MethodAttributes.FamANDAssem: + return OverlayIcon.Internal; + case MethodAttributes.Family: + case MethodAttributes.FamORAssem: + return OverlayIcon.Protected; + case MethodAttributes.Private: + return OverlayIcon.Private; + default: + throw new NotSupportedException(); + } + } + public override void Decompile(Language language, ITextOutput output, DecompilationOptions options) { language.DecompileMethod(method, output, options); } - + public override FilterResult Filter(FilterSettings settings) { if (settings.SearchTermMatches(method.Name) && settings.Language.ShowMember(method)) @@ -94,8 +122,9 @@ namespace ICSharpCode.ILSpy.TreeNodes else return FilterResult.Hidden; } - - MemberReference IMemberTreeNode.Member { + + MemberReference IMemberTreeNode.Member + { get { return method; } } } diff --git a/ILSpy/TreeNodes/PropertyTreeNode.cs b/ILSpy/TreeNodes/PropertyTreeNode.cs index 466543bd6..98596b7c5 100644 --- a/ILSpy/TreeNodes/PropertyTreeNode.cs +++ b/ILSpy/TreeNodes/PropertyTreeNode.cs @@ -17,6 +17,7 @@ // DEALINGS IN THE SOFTWARE. using System; +using System.Windows.Media; using ICSharpCode.Decompiler; using Mono.Cecil; @@ -29,14 +30,16 @@ namespace ICSharpCode.ILSpy.TreeNodes { readonly PropertyDefinition property; readonly bool isIndexer; - + readonly MethodAttributes attributesOfMostAccessibleMethod; + public PropertyTreeNode(PropertyDefinition property, bool isIndexer) { if (property == null) throw new ArgumentNullException("property"); this.property = property; this.isIndexer = isIndexer; - + this.attributesOfMostAccessibleMethod = GetAttributesOfMostAccessibleMethod(this.property); + if (property.GetMethod != null) this.Children.Add(new MethodTreeNode(property.GetMethod)); if (property.SetMethod != null) @@ -46,21 +49,90 @@ namespace ICSharpCode.ILSpy.TreeNodes this.Children.Add(new MethodTreeNode(m)); } } - + public PropertyDefinition PropertyDefinition { get { return property; } } - - public override object Text { + + public override object Text + { get { return HighlightSearchMatch(property.Name, " : " + this.Language.TypeToString(property.PropertyType, false, property)); } } - - public override object Icon { - get { - return isIndexer ? Images.Indexer : Images.Property; + + public override object Icon + { + get { return GetIcon(property); } + } + + private ImageSource GetIcon(PropertyDefinition property) + { + MemberIcon icon = this.isIndexer ? MemberIcon.Indexer : MemberIcon.Property; + return Images.GetIcon(icon, GetOverlayIcon(attributesOfMostAccessibleMethod), IsStatic); + } + + private static OverlayIcon GetOverlayIcon(MethodAttributes methodAttributes) + { + switch (methodAttributes & MethodAttributes.MemberAccessMask) { + case MethodAttributes.Public: + return OverlayIcon.Public; + case MethodAttributes.Assembly: + case MethodAttributes.FamANDAssem: + return OverlayIcon.Internal; + case MethodAttributes.Family: + case MethodAttributes.FamORAssem: + return OverlayIcon.Protected; + case MethodAttributes.Private: + return OverlayIcon.Private; + default: + throw new NotSupportedException(); + } + } + + public bool IsStatic + { + get { return (attributesOfMostAccessibleMethod & MethodAttributes.Static) != 0; } + } + + private static MethodAttributes GetAttributesOfMostAccessibleMethod(PropertyDefinition property) + { + // There should always be at least one method from which to + // obtain the result, but the compiler doesn't know this so + // initialize the result with a default value + MethodAttributes result = (MethodAttributes)0; + + // Method access is defined from inaccessible (lowest) to public (highest) + // in numeric order, so we can do an integer comparison of the masked attribute + int accessLevel = 0; + + if (property.GetMethod != null) { + int methodAccessLevel = (int)(property.GetMethod.Attributes & MethodAttributes.MemberAccessMask); + if (accessLevel < methodAccessLevel) { + accessLevel = methodAccessLevel; + result = property.GetMethod.Attributes; + } + } + + if (property.SetMethod != null) { + int methodAccessLevel = (int)(property.SetMethod.Attributes & MethodAttributes.MemberAccessMask); + if (accessLevel < methodAccessLevel) { + accessLevel = methodAccessLevel; + result = property.SetMethod.Attributes; + } } + + if (property.HasOtherMethods) { + foreach (var m in property.OtherMethods) { + int methodAccessLevel = (int)(m.Attributes & MethodAttributes.MemberAccessMask); + if (accessLevel < methodAccessLevel) { + accessLevel = methodAccessLevel; + result = m.Attributes; + } + } + } + + return result; } - + public override FilterResult Filter(FilterSettings settings) { if (settings.SearchTermMatches(property.Name) && settings.Language.ShowMember(property)) @@ -68,13 +140,14 @@ namespace ICSharpCode.ILSpy.TreeNodes else return FilterResult.Hidden; } - + public override void Decompile(Language language, ITextOutput output, DecompilationOptions options) { language.DecompileProperty(property, output, options); } - - MemberReference IMemberTreeNode.Member { + + MemberReference IMemberTreeNode.Member + { get { return property; } } } diff --git a/ILSpy/TreeNodes/TypeTreeNode.cs b/ILSpy/TreeNodes/TypeTreeNode.cs index 4fd691323..bd0cb0544 100644 --- a/ILSpy/TreeNodes/TypeTreeNode.cs +++ b/ILSpy/TreeNodes/TypeTreeNode.cs @@ -129,82 +129,62 @@ namespace ICSharpCode.ILSpy.TreeNodes { language.DecompileType(type, output, options); } - + #region Icon - enum ClassType + public override object Icon { - Class, - Enum, - Struct, - Interface, - Delegate + get { return GetIcon(type); } } - - static ClassType GetClassType(TypeDefinition type) + + public static ImageSource GetIcon(TypeDefinition type) + { + TypeIcon typeIcon = GetTypeIcon(type); + OverlayIcon overlayIcon = GetOverlayIcon(type); + + return Images.GetIcon(typeIcon, overlayIcon); + } + + static TypeIcon GetTypeIcon(TypeDefinition type) { if (type.IsValueType) { if (type.IsEnum) - return ClassType.Enum; + return TypeIcon.Enum; else - return ClassType.Struct; + return TypeIcon.Struct; } else { if (type.IsInterface) - return ClassType.Interface; + return TypeIcon.Interface; else if (type.BaseType != null && type.BaseType.FullName == typeof(MulticastDelegate).FullName) - return ClassType.Delegate; + return TypeIcon.Delegate; else - return ClassType.Class; - } - } - - public override object Icon { - get { - return GetIcon(type); + return TypeIcon.Class; } } - - public static ImageSource GetIcon(TypeDefinition type) + + private static OverlayIcon GetOverlayIcon(TypeDefinition type) { + OverlayIcon overlay; switch (type.Attributes & TypeAttributes.VisibilityMask) { case TypeAttributes.Public: case TypeAttributes.NestedPublic: - switch (GetClassType(type)) { - case ClassType.Delegate: return Images.Delegate; - case ClassType.Enum: return Images.Enum; - case ClassType.Interface: return Images.Interface; - case ClassType.Struct: return Images.Struct; - default: return Images.Class; - } + overlay = OverlayIcon.Public; + break; case TypeAttributes.NotPublic: case TypeAttributes.NestedAssembly: case TypeAttributes.NestedFamANDAssem: - switch (GetClassType(type)) { - case ClassType.Delegate: return Images.InternalDelegate; - case ClassType.Enum: return Images.InternalEnum; - case ClassType.Interface: return Images.InternalInterface; - case ClassType.Struct: return Images.InternalStruct; - default: return Images.InternalClass; - } + overlay = OverlayIcon.Internal; + break; case TypeAttributes.NestedFamily: case TypeAttributes.NestedFamORAssem: - switch (GetClassType(type)) { - case ClassType.Delegate: return Images.ProtectedDelegate; - case ClassType.Enum: return Images.ProtectedEnum; - case ClassType.Interface: return Images.ProtectedInterface; - case ClassType.Struct: return Images.ProtectedStruct; - default: return Images.ProtectedClass; - } + overlay = OverlayIcon.Protected; + break; case TypeAttributes.NestedPrivate: - switch (GetClassType(type)) { - case ClassType.Delegate: return Images.PrivateDelegate; - case ClassType.Enum: return Images.PrivateEnum; - case ClassType.Interface: return Images.PrivateInterface; - case ClassType.Struct: return Images.PrivateStruct; - default: return Images.PrivateClass; - } + overlay = OverlayIcon.Private; + break; default: throw new NotSupportedException(); } + return overlay; } #endregion From ea58f30b1efc5e28561a9089609d04639d698cc8 Mon Sep 17 00:00:00 2001 From: Ed Harvey Date: Mon, 4 Apr 2011 11:52:17 +1000 Subject: [PATCH 2/4] Renamed OverlayIcon to AccessOverlayIcon --- ILSpy/ILSpy.csproj | 2 +- .../{OverlayIcon.cs => AccessOverlayIcon.cs} | 2 +- ILSpy/Images/Images.cs | 26 +++++++++---------- ILSpy/TreeNodes/EventTreeNode.cs | 10 +++---- ILSpy/TreeNodes/FieldTreeNode.cs | 10 +++---- ILSpy/TreeNodes/MethodTreeNode.cs | 10 +++---- ILSpy/TreeNodes/PropertyTreeNode.cs | 10 +++---- ILSpy/TreeNodes/TypeTreeNode.cs | 14 +++++----- 8 files changed, 42 insertions(+), 42 deletions(-) rename ILSpy/Images/{OverlayIcon.cs => AccessOverlayIcon.cs} (97%) diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index de0643562..52a957f1f 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -110,8 +110,8 @@ + - diff --git a/ILSpy/Images/OverlayIcon.cs b/ILSpy/Images/AccessOverlayIcon.cs similarity index 97% rename from ILSpy/Images/OverlayIcon.cs rename to ILSpy/Images/AccessOverlayIcon.cs index 6c4e729c4..8bade1b92 100644 --- a/ILSpy/Images/OverlayIcon.cs +++ b/ILSpy/Images/AccessOverlayIcon.cs @@ -23,7 +23,7 @@ using System; namespace ICSharpCode.ILSpy { - internal enum OverlayIcon + internal enum AccessOverlayIcon { Public, Protected, diff --git a/ILSpy/Images/Images.cs b/ILSpy/Images/Images.cs index 0309cd82e..0545f22c2 100644 --- a/ILSpy/Images/Images.cs +++ b/ILSpy/Images/Images.cs @@ -85,12 +85,12 @@ namespace ICSharpCode.ILSpy private static TypeIconCache typeIconCache = new TypeIconCache(); private static MemberIconCache memberIconCache = new MemberIconCache(); - public static ImageSource GetIcon(TypeIcon icon, OverlayIcon overlay) + public static ImageSource GetIcon(TypeIcon icon, AccessOverlayIcon overlay) { return typeIconCache.GetIcon(icon, overlay, false); } - public static ImageSource GetIcon(MemberIcon icon, OverlayIcon overlay, bool isStatic) + public static ImageSource GetIcon(MemberIcon icon, AccessOverlayIcon overlay, bool isStatic) { return memberIconCache.GetIcon(icon, overlay, isStatic); } @@ -199,17 +199,17 @@ namespace ICSharpCode.ILSpy private abstract class IconCache { - private Dictionary, ImageSource> cache = new Dictionary, ImageSource>(); + private Dictionary, ImageSource> cache = new Dictionary, ImageSource>(); protected void PreloadPublicIconToCache(T icon, ImageSource image) { - var iconKey = new Tuple(icon, OverlayIcon.Public, false); + var iconKey = new Tuple(icon, AccessOverlayIcon.Public, false); cache.Add(iconKey, image); } - public ImageSource GetIcon(T icon, OverlayIcon overlay, bool isStatic) + public ImageSource GetIcon(T icon, AccessOverlayIcon overlay, bool isStatic) { - var iconKey = new Tuple(icon, overlay, isStatic); + var iconKey = new Tuple(icon, overlay, isStatic); if (cache.ContainsKey(iconKey)) { return cache[iconKey]; } else { @@ -219,7 +219,7 @@ namespace ICSharpCode.ILSpy } } - private ImageSource BuildMemberIcon(T icon, OverlayIcon overlay, bool isStatic) + private ImageSource BuildMemberIcon(T icon, AccessOverlayIcon overlay, bool isStatic) { ImageSource baseImage = GetBaseImage(icon); ImageSource overlayImage = GetOverlayImage(overlay); @@ -229,23 +229,23 @@ namespace ICSharpCode.ILSpy protected abstract ImageSource GetBaseImage(T icon); - private static ImageSource GetOverlayImage(OverlayIcon overlay) + private static ImageSource GetOverlayImage(AccessOverlayIcon overlay) { ImageSource overlayImage; switch (overlay) { - case OverlayIcon.Public: + case AccessOverlayIcon.Public: overlayImage = null; break; - case OverlayIcon.Protected: + case AccessOverlayIcon.Protected: overlayImage = Images.OverlayProtected; break; - case OverlayIcon.Internal: + case AccessOverlayIcon.Internal: overlayImage = Images.OverlayInternal; break; - case OverlayIcon.ProtectedInternal: + case AccessOverlayIcon.ProtectedInternal: overlayImage = Images.OverlayProtectedInternal; break; - case OverlayIcon.Private: + case AccessOverlayIcon.Private: overlayImage = Images.OverlayPrivate; break; default: diff --git a/ILSpy/TreeNodes/EventTreeNode.cs b/ILSpy/TreeNodes/EventTreeNode.cs index c54540f38..94cba230e 100644 --- a/ILSpy/TreeNodes/EventTreeNode.cs +++ b/ILSpy/TreeNodes/EventTreeNode.cs @@ -60,19 +60,19 @@ namespace ICSharpCode.ILSpy.TreeNodes get { return Images.GetIcon(MemberIcon.Event, GetOverlayIcon(ev.AddMethod.Attributes), ev.AddMethod.IsStatic); } } - private static OverlayIcon GetOverlayIcon(MethodAttributes methodAttributes) + private static AccessOverlayIcon GetOverlayIcon(MethodAttributes methodAttributes) { switch (methodAttributes & MethodAttributes.MemberAccessMask) { case MethodAttributes.Public: - return OverlayIcon.Public; + return AccessOverlayIcon.Public; case MethodAttributes.Assembly: case MethodAttributes.FamANDAssem: - return OverlayIcon.Internal; + return AccessOverlayIcon.Internal; case MethodAttributes.Family: case MethodAttributes.FamORAssem: - return OverlayIcon.Protected; + return AccessOverlayIcon.Protected; case MethodAttributes.Private: - return OverlayIcon.Private; + return AccessOverlayIcon.Private; default: throw new NotSupportedException(); } diff --git a/ILSpy/TreeNodes/FieldTreeNode.cs b/ILSpy/TreeNodes/FieldTreeNode.cs index a967d3109..7afba8b95 100644 --- a/ILSpy/TreeNodes/FieldTreeNode.cs +++ b/ILSpy/TreeNodes/FieldTreeNode.cs @@ -65,19 +65,19 @@ namespace ICSharpCode.ILSpy.TreeNodes return Images.GetIcon(MemberIcon.Field, GetOverlayIcon(field.Attributes), field.IsStatic); } - private static OverlayIcon GetOverlayIcon(FieldAttributes fieldAttributes) + private static AccessOverlayIcon GetOverlayIcon(FieldAttributes fieldAttributes) { switch (fieldAttributes & FieldAttributes.FieldAccessMask) { case FieldAttributes.Public: - return OverlayIcon.Public; + return AccessOverlayIcon.Public; case FieldAttributes.Assembly: case FieldAttributes.FamANDAssem: - return OverlayIcon.Internal; + return AccessOverlayIcon.Internal; case FieldAttributes.Family: case FieldAttributes.FamORAssem: - return OverlayIcon.Protected; + return AccessOverlayIcon.Protected; case FieldAttributes.Private: - return OverlayIcon.Private; + return AccessOverlayIcon.Private; default: throw new NotSupportedException(); } diff --git a/ILSpy/TreeNodes/MethodTreeNode.cs b/ILSpy/TreeNodes/MethodTreeNode.cs index 97df9ac92..87df0efcf 100644 --- a/ILSpy/TreeNodes/MethodTreeNode.cs +++ b/ILSpy/TreeNodes/MethodTreeNode.cs @@ -92,19 +92,19 @@ namespace ICSharpCode.ILSpy.TreeNodes return Images.GetIcon(MemberIcon.Method, GetOverlayIcon(method.Attributes), method.IsStatic); } - private static OverlayIcon GetOverlayIcon(MethodAttributes methodAttributes) + private static AccessOverlayIcon GetOverlayIcon(MethodAttributes methodAttributes) { switch (methodAttributes & MethodAttributes.MemberAccessMask) { case MethodAttributes.Public: - return OverlayIcon.Public; + return AccessOverlayIcon.Public; case MethodAttributes.Assembly: case MethodAttributes.FamANDAssem: - return OverlayIcon.Internal; + return AccessOverlayIcon.Internal; case MethodAttributes.Family: case MethodAttributes.FamORAssem: - return OverlayIcon.Protected; + return AccessOverlayIcon.Protected; case MethodAttributes.Private: - return OverlayIcon.Private; + return AccessOverlayIcon.Private; default: throw new NotSupportedException(); } diff --git a/ILSpy/TreeNodes/PropertyTreeNode.cs b/ILSpy/TreeNodes/PropertyTreeNode.cs index 98596b7c5..2ff9a336d 100644 --- a/ILSpy/TreeNodes/PropertyTreeNode.cs +++ b/ILSpy/TreeNodes/PropertyTreeNode.cs @@ -70,19 +70,19 @@ namespace ICSharpCode.ILSpy.TreeNodes return Images.GetIcon(icon, GetOverlayIcon(attributesOfMostAccessibleMethod), IsStatic); } - private static OverlayIcon GetOverlayIcon(MethodAttributes methodAttributes) + private static AccessOverlayIcon GetOverlayIcon(MethodAttributes methodAttributes) { switch (methodAttributes & MethodAttributes.MemberAccessMask) { case MethodAttributes.Public: - return OverlayIcon.Public; + return AccessOverlayIcon.Public; case MethodAttributes.Assembly: case MethodAttributes.FamANDAssem: - return OverlayIcon.Internal; + return AccessOverlayIcon.Internal; case MethodAttributes.Family: case MethodAttributes.FamORAssem: - return OverlayIcon.Protected; + return AccessOverlayIcon.Protected; case MethodAttributes.Private: - return OverlayIcon.Private; + return AccessOverlayIcon.Private; default: throw new NotSupportedException(); } diff --git a/ILSpy/TreeNodes/TypeTreeNode.cs b/ILSpy/TreeNodes/TypeTreeNode.cs index bd0cb0544..8905ae1fc 100644 --- a/ILSpy/TreeNodes/TypeTreeNode.cs +++ b/ILSpy/TreeNodes/TypeTreeNode.cs @@ -139,7 +139,7 @@ namespace ICSharpCode.ILSpy.TreeNodes public static ImageSource GetIcon(TypeDefinition type) { TypeIcon typeIcon = GetTypeIcon(type); - OverlayIcon overlayIcon = GetOverlayIcon(type); + AccessOverlayIcon overlayIcon = GetOverlayIcon(type); return Images.GetIcon(typeIcon, overlayIcon); } @@ -161,25 +161,25 @@ namespace ICSharpCode.ILSpy.TreeNodes } } - private static OverlayIcon GetOverlayIcon(TypeDefinition type) + private static AccessOverlayIcon GetOverlayIcon(TypeDefinition type) { - OverlayIcon overlay; + AccessOverlayIcon overlay; switch (type.Attributes & TypeAttributes.VisibilityMask) { case TypeAttributes.Public: case TypeAttributes.NestedPublic: - overlay = OverlayIcon.Public; + overlay = AccessOverlayIcon.Public; break; case TypeAttributes.NotPublic: case TypeAttributes.NestedAssembly: case TypeAttributes.NestedFamANDAssem: - overlay = OverlayIcon.Internal; + overlay = AccessOverlayIcon.Internal; break; case TypeAttributes.NestedFamily: case TypeAttributes.NestedFamORAssem: - overlay = OverlayIcon.Protected; + overlay = AccessOverlayIcon.Protected; break; case TypeAttributes.NestedPrivate: - overlay = OverlayIcon.Private; + overlay = AccessOverlayIcon.Private; break; default: throw new NotSupportedException(); From f040dbb2314294a72a4f3238641829e91419f031 Mon Sep 17 00:00:00 2001 From: Ed Harvey Date: Mon, 4 Apr 2011 12:03:42 +1000 Subject: [PATCH 3/4] Added distinct node icon for virtual methods --- ILSpy/ILSpy.csproj | 1 + ILSpy/Images/Images.cs | 5 +++++ ILSpy/Images/MemberIcon.cs | 1 + ILSpy/Images/VirtualMethod.png | Bin 0 -> 412 bytes ILSpy/TreeNodes/MethodTreeNode.cs | 5 ++++- 5 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 ILSpy/Images/VirtualMethod.png diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index 52a957f1f..f69fe767f 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -234,6 +234,7 @@ + diff --git a/ILSpy/Images/Images.cs b/ILSpy/Images/Images.cs index 0545f22c2..c1b4f7506 100644 --- a/ILSpy/Images/Images.cs +++ b/ILSpy/Images/Images.cs @@ -54,6 +54,7 @@ namespace ICSharpCode.ILSpy private static readonly BitmapImage Method = LoadBitmap("Method"); private static readonly BitmapImage Constructor = LoadBitmap("Constructor"); + private static readonly BitmapImage VirtualMethod = LoadBitmap("VirtualMethod"); private static readonly BitmapImage Operator = LoadBitmap("Operator"); private static readonly BitmapImage ExtensionMethod = LoadBitmap("ExtensionMethod"); @@ -147,6 +148,7 @@ namespace ICSharpCode.ILSpy PreloadPublicIconToCache(MemberIcon.Indexer, Images.Indexer); PreloadPublicIconToCache(MemberIcon.Method, Images.Method); PreloadPublicIconToCache(MemberIcon.Constructor, Images.Constructor); + PreloadPublicIconToCache(MemberIcon.VirtualMethod, Images.VirtualMethod); PreloadPublicIconToCache(MemberIcon.Operator, Images.Operator); PreloadPublicIconToCache(MemberIcon.ExtensionMethod, Images.ExtensionMethod); PreloadPublicIconToCache(MemberIcon.Event, Images.Event); @@ -180,6 +182,9 @@ namespace ICSharpCode.ILSpy case MemberIcon.Constructor: baseImage = Images.Constructor; break; + case MemberIcon.VirtualMethod: + baseImage = Images.VirtualMethod; + break; case MemberIcon.Operator: baseImage = Images.Operator; break; diff --git a/ILSpy/Images/MemberIcon.cs b/ILSpy/Images/MemberIcon.cs index 187adf31f..3112a2cc7 100644 --- a/ILSpy/Images/MemberIcon.cs +++ b/ILSpy/Images/MemberIcon.cs @@ -30,6 +30,7 @@ namespace ICSharpCode.ILSpy Indexer, Method, Constructor, + VirtualMethod, Operator, ExtensionMethod, Event diff --git a/ILSpy/Images/VirtualMethod.png b/ILSpy/Images/VirtualMethod.png new file mode 100644 index 0000000000000000000000000000000000000000..6a3dfe74a64b36234801899b0745f12721648565 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`)Ym%P6qN7l0AZa z85pWm85kOx85n;42huMY7)lKo7+xhXFj&oCU=Yur6o1qWsFt(9BeIx*L8u6X8RJr; z9|Hx&N?apKg7ec#$`gxH8440J^GfvcQcDy}^bD+De9Z)^_~7Z{7-Hd{oUlNB$DBIX z?_~$){#TG%zxTfVnt%0QU(NcTy=~3!`=-Tr>n9}5cov^s|5yE#K#8=&th(GkU;kg< zbpL<-*&n@k1ty%;pYN1oU%~RCX>IoZ^ASvi2d~b_{vYpO!F-M9uy$;CT{a3&I16#~zrrE76 zu?;ex6vFSE*vn~_u Date: Mon, 4 Apr 2011 12:11:35 +1000 Subject: [PATCH 4/4] Added/changed icons for various resource nodes. --- ILSpy/ILSpy.csproj | 4 ++++ ILSpy/Images/Folder.Closed.png | Bin 0 -> 658 bytes ILSpy/Images/Folder.Open.png | Bin 0 -> 689 bytes ILSpy/Images/Images.cs | 5 +++++ ILSpy/Images/ResourceResourcesFile.png | Bin 0 -> 1391 bytes ILSpy/TreeNodes/ResourceEntryNode.cs | 7 ++++++- ILSpy/TreeNodes/ResourceListTreeNode.cs | 8 ++++++-- ILSpy/TreeNodes/ResourceTreeNode.cs | 7 ++++++- 8 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 ILSpy/Images/Folder.Closed.png create mode 100644 ILSpy/Images/Folder.Open.png create mode 100644 ILSpy/Images/ResourceResourcesFile.png diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index f69fe767f..2820e09a1 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -222,6 +222,10 @@ + + + + diff --git a/ILSpy/Images/Folder.Closed.png b/ILSpy/Images/Folder.Closed.png new file mode 100644 index 0000000000000000000000000000000000000000..7db1ebe2195a76550bf3b814f7c3e1c335869145 GIT binary patch literal 658 zcmV;D0&V??P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02XvbSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8JLvUk00067NklE4>B!Wni-X=wXHK<5} zqz~4oVL?$*P=jC<(hFH6gORLqC7a}Gu(7GMsY~1p5gAb=7FY?D6-IAl3}4b^t5%b3 z?ipO|IR`O?U|*sGzb}XTy6*cvoV>jMexCJtj^6g$nIH8&r{PpEI@V3<+Z~ZaG(ddV zL9qE6IZ4#Q`Dypo(bi<8tZmB{{*zT)iI@UWUsb3+KXb|O# zkIZK$nXnDzy_wYDd8VFL@bjS_Q>8%))K02kW`$&|gLJe7WjqTGTgePnlYV`MHzP=Y?;`!xKL?(EbC%@5G2)L73V0$=LccwqlZFFw0&jL7RiJiO zqPI{c+@iDc$;_W{?0z}X?rn_v*Ym)Z&*8l~DQLQJQH(Ekjx>@PwP)c=5`Iy^)Z;_M zdUgpo64=DZ&DDf1FQj}&sT8>Dt4U0DWgpB-X3Qbr^xG;4KhaA#R7NCN!gy;jL$2in zE-a>WvsMb6HWP_RP`tJhwn+HZ2?_V^o`wDE2sdbWcfA0waVgrh8Yytp8i|Elm>j5N zZL`Os6oOKEiSR9`^0r sPTAItY$#qOik2)|@Ym$@)&F_XZ~R);eceIxA^-pY07*qoM6N<$f_T^`82|tP literal 0 HcmV?d00001 diff --git a/ILSpy/Images/Folder.Open.png b/ILSpy/Images/Folder.Open.png new file mode 100644 index 0000000000000000000000000000000000000000..92456b56595d5a6fea1c63dcf01971e078f51518 GIT binary patch literal 689 zcmV;i0#5yjP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02XvbSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8JLvUk0006cNklvCFsFY=f zj{N%dz8jdUF1(2jJU55)obx;X|B*=kd$c_>AE|d3`CVduPH>{Jr_)AoxGtn00VflK zR^0Yd=G3IF%D`BlCc-@Rse%cA7Bx4tRGW*iUe3pIQOQ-kf=e115o9i#jUAMKaF@{N)NrS|2)DHWr$vq3be`*FxtI+KOged( zrrJ`($h&ex?EV%No*DyF{c0E}jMQ5p*Ovp`+3@Nl9kr=At{IV7O$B`G)xvu{cU`4; zAL_$JvsZX|5PZ9tY)vBgD3Lc+QnE8rL?uWn%T#=Qt!AJ#506vNbe{^kj)xm`qzlG< zOnQ?EHg99({w9X%*P_mh6V?&l3Fb*E40#N7%DLsx(f(8*>CO@w9EJ8Yrk|%U{$vNE zO`8dL*74aDkMF`F_9w-Lr;A}KQP9<_NSs56Z83KGlT!G@Ip2^;JCVmcPLCzLIE|#J0*5Mwu(cbosbyl%{PN4~Q3xBhvM$Ffi16t+TTU?eUF{=H+Aag zr0M^&=Kar^|G#3z|H;+Cb6TR8^d+sGp1F2<*5>&ITjm$;US76;ZFS?Z{G)9p$2-dp ztgSw>ss80u$H!CiU(T=WpS7Z6-j2zOwohHWXV%Jny=!jFS$S~Yy2CB2f3|M;-@V~i z*XI8dw*H>D{r|L`e`f9dJ7drP+57%4T7Pu$rW4Dzomsi%_zh<;ux7FK;}2`Tfz$AJ5>1b=5&1x6refk$L90|Vb-5N14{zaj-F zC|2ScQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`PW{o-pTP{k=v7sn8d;N&0uY!VGM;_T9{ ztd^OchJp(0Isy+KKgr0?*41Va?XJ-UJ5Xx&boFyt I=akR{0NT`4^8f$< literal 0 HcmV?d00001 diff --git a/ILSpy/TreeNodes/ResourceEntryNode.cs b/ILSpy/TreeNodes/ResourceEntryNode.cs index 0585dbcda..f642c1140 100644 --- a/ILSpy/TreeNodes/ResourceEntryNode.cs +++ b/ILSpy/TreeNodes/ResourceEntryNode.cs @@ -102,7 +102,12 @@ namespace ICSharpCode.ILSpy.TreeNodes public ImageResourceEntryNode(string key, Stream data) : base(key, data) { } - + + public override object Icon + { + get { return Images.ResourceImage; } + } + internal override bool View(DecompilerTextView textView) { try { diff --git a/ILSpy/TreeNodes/ResourceListTreeNode.cs b/ILSpy/TreeNodes/ResourceListTreeNode.cs index 07ea76324..4140c9a84 100644 --- a/ILSpy/TreeNodes/ResourceListTreeNode.cs +++ b/ILSpy/TreeNodes/ResourceListTreeNode.cs @@ -37,12 +37,16 @@ namespace ICSharpCode.ILSpy.TreeNodes } public override object Icon { - get { return Images.Resource; } + get { return Images.FolderClosed; } + } + + public override object ExpandedIcon { + get { return Images.FolderOpen; } } protected override void LoadChildren() { - foreach (Resource r in module.Resources) + foreach (Resource r in module.Resources.OrderBy(m => m.Name)) this.Children.Add(ResourceTreeNode.Create(r)); } diff --git a/ILSpy/TreeNodes/ResourceTreeNode.cs b/ILSpy/TreeNodes/ResourceTreeNode.cs index 92e6676f8..282431371 100644 --- a/ILSpy/TreeNodes/ResourceTreeNode.cs +++ b/ILSpy/TreeNodes/ResourceTreeNode.cs @@ -151,7 +151,12 @@ namespace ICSharpCode.ILSpy.TreeNodes { this.LazyLoading = true; } - + + public override object Icon + { + get { return Images.ResourceResourcesFile; } + } + protected override void LoadChildren() { EmbeddedResource er = this.Resource as EmbeddedResource;