From 3d151fd6532570c599b67ab60637acaef43bd064 Mon Sep 17 00:00:00 2001 From: harborsiem Date: Sat, 30 Dec 2017 12:44:50 +0100 Subject: [PATCH 01/11] Bugfix: Height in IconDirectory standard namespace removed (Resx generator) new version --- iconlib_src/IconLib/IconLib.csproj | 4 ++-- iconlib_src/IconLib/Properties/AssemblyInfo.cs | 4 ++-- iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/iconlib_src/IconLib/IconLib.csproj b/iconlib_src/IconLib/IconLib.csproj index 9dd73ab..7ce1e3e 100644 --- a/iconlib_src/IconLib/IconLib.csproj +++ b/iconlib_src/IconLib/IconLib.csproj @@ -7,7 +7,7 @@ {CE53747F-D2E6-4E1E-9EF4-A0AE02671B1D} Library Properties - IconLib + IconLib @@ -87,7 +87,7 @@ Designer ResXFileCodeGenerator - System.Drawing.IconLIb + System.Drawing.IconLib Resource.Designer.cs diff --git a/iconlib_src/IconLib/Properties/AssemblyInfo.cs b/iconlib_src/IconLib/Properties/AssemblyInfo.cs index ce7827c..8b6c363 100644 --- a/iconlib_src/IconLib/Properties/AssemblyInfo.cs +++ b/iconlib_src/IconLib/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("0.73.0.0")] -[assembly: AssemblyFileVersion("0.73.0.0")] +[assembly: AssemblyVersion("0.74.0.0")] +[assembly: AssemblyFileVersion("0.74.0.0")] diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs b/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs index f9632a0..39290f6 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs @@ -208,7 +208,7 @@ internal unsafe ICONDIRENTRY ICONDIRENTRY { ICONDIRENTRY iconDirEntry; iconDirEntry.bColorCount = (byte) mEncoder.Header.biClrUsed; - iconDirEntry.bHeight = (byte) mEncoder.Header.biHeight; + iconDirEntry.bHeight = (byte) (mEncoder.Header.biHeight / 2); iconDirEntry.bReserved = 0; iconDirEntry.bWidth = (byte) mEncoder.Header.biWidth; iconDirEntry.dwBytesInRes = (uint) (sizeof(BITMAPINFOHEADER) + @@ -227,7 +227,7 @@ internal unsafe GRPICONDIRENTRY GRPICONDIRENTRY { GRPICONDIRENTRY groupIconDirEntry; groupIconDirEntry.bColorCount = (byte) mEncoder.Header.biClrUsed; - groupIconDirEntry.bHeight = (byte) mEncoder.Header.biHeight; + groupIconDirEntry.bHeight = (byte) (mEncoder.Header.biHeight / 2); groupIconDirEntry.bReserved = 0; groupIconDirEntry.bWidth = (byte) mEncoder.Header.biWidth; groupIconDirEntry.dwBytesInRes = (uint) IconImageSize; From 9e45e7bd46661473c6070dc546b5bbf479920792 Mon Sep 17 00:00:00 2001 From: harborsiem Date: Sat, 30 Dec 2017 19:24:45 +0100 Subject: [PATCH 02/11] iconlib_demo/IconLib.dll changes compiled --- iconlib_demo/IconLib.dll | Bin 69632 -> 55808 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/iconlib_demo/IconLib.dll b/iconlib_demo/IconLib.dll index c682c9ba0cdad35f909ea7feed978e667511281c..eb878ddff569e8c166088e5c0bb1cfa65a546a84 100644 GIT binary patch literal 55808 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 From 05cdd2ab186c9a8ad3c898feff5153e34eb85d7a Mon Sep 17 00:00:00 2001 From: harborsiem Date: Tue, 2 Jan 2018 16:33:12 +0100 Subject: [PATCH 03/11] Readme added with new version info --- Readme.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Readme.md b/Readme.md index c665c27..0133058 100644 --- a/Readme.md +++ b/Readme.md @@ -31,6 +31,11 @@ The first parameter can be either the path to the png, or a `Bitmap` object. The ### History +### IconLib 0.74 (12/30/2017) + +Fixed a small problem with saving icon files (bHeight in ICONDIRENTRY and GRPICONDIRENTRY had doubled value). +Namespace corrections for the resource designer file. + ### IconLib 0.73 (01/31/2008) Fixed a small problem with indexed 8bpp images. From d32fed2b2ca2f490df89213bd09e1c3c1f4568d4 Mon Sep 17 00:00:00 2001 From: harborsiem Date: Sun, 10 Jun 2018 14:20:03 +0200 Subject: [PATCH 04/11] adjust a namespace show versions in MultiIcon.exe --- iconlib_demo/IconLib.dll | Bin 55808 -> 55808 bytes iconlib_demo/MultiIcon.exe | Bin 106496 -> 96256 bytes .../IconLib/LibraryFormats/PEFormat.cs | 2 +- iconlib_src/MultiIcon/Form1.cs | 19 ++++++++++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/iconlib_demo/IconLib.dll b/iconlib_demo/IconLib.dll index eb878ddff569e8c166088e5c0bb1cfa65a546a84..13007a6b616bc7afa8d838826f05ee4bebc06cba 100644 GIT binary patch delta 140 zcmZqJ!rZWhc|r$Eo|tU(#vYE10#ClIFHLHF>%V-N>drEUhqpE_*(ji(1CnL{0wy4q zVPs%9^B#yVGB5-My9Cd;@XzRVmy=c^L!?2Tskm0 M;fTWK7nda10Yy10%m4rY diff --git a/iconlib_demo/MultiIcon.exe b/iconlib_demo/MultiIcon.exe index 0d10436e4805d2961daa49f06d00b9f872ad327f..c675f559f517c1f22bf28bcd9b3ec2411341c509 100644 GIT binary patch delta 17134 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 F{|gW77@q(D diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/PEFormat.cs b/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/PEFormat.cs index d6ea2ca..15d9e00 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/PEFormat.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/PEFormat.cs @@ -24,7 +24,7 @@ using System.Drawing.IconLib.Exceptions; using System.Drawing.Imaging; using System.Collections; -using System.Drawing.IconLIb; +using System.Drawing.IconLib; namespace System.Drawing.IconLib.EncodingFormats { diff --git a/iconlib_src/MultiIcon/Form1.cs b/iconlib_src/MultiIcon/Form1.cs index d5c04f2..293a498 100644 --- a/iconlib_src/MultiIcon/Form1.cs +++ b/iconlib_src/MultiIcon/Form1.cs @@ -7,6 +7,8 @@ using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; +using System.Diagnostics; +using System.Reflection; using System.Drawing.Imaging; using System.Drawing.IconLib; using System.Drawing.IconLib.ColorProcessing; @@ -25,6 +27,8 @@ public FormIconBrowser() { InitializeComponent(); dlgSave.InitialDirectory = Path.GetDirectoryName(Application.ExecutablePath); + string iconLibVersion = GetVersions(); + this.Text = iconLibVersion; } #endregion @@ -219,6 +223,21 @@ private string GetFriendlyBitDepth(PixelFormat pixelFormat) } return "Unknown"; } + + private string GetVersions() { + StringBuilder versionString = new StringBuilder(); + AssemblyName name = AssemblyName.GetAssemblyName(Application.ExecutablePath); + string exeName = name.Name + ".exe"; + FileVersionInfo info = FileVersionInfo.GetVersionInfo(exeName); + versionString.Append(exeName + " : "); + versionString.Append(info.FileVersion + ", "); + + string libName = "IconLib.dll"; + info = FileVersionInfo.GetVersionInfo(libName); + versionString.Append(libName + " : "); + versionString.Append(info.FileVersion); + return versionString.ToString(); + } #endregion #region Override From edc172fffc7c20d8c390bdf6a79f0c45d105b3c6 Mon Sep 17 00:00:00 2001 From: harborsiem Date: Sun, 10 Jun 2018 21:26:56 +0200 Subject: [PATCH 05/11] Project adjusted to Visual Studio 2017 --- iconlib_src/IconLib/IconLib.csproj | 11 +++++++++-- .../System/Drawing/IconLib/Resource.Designer.cs | 9 ++++++--- iconlib_src/MultiIcon/MultiIcon.csproj | 8 +++++++- iconlib_src/MultiIcon/MultiIcon.sln | 9 +++++++-- .../MultiIcon/Properties/Resources.Designer.cs | 4 ++-- iconlib_src/MultiIcon/Properties/Settings.Designer.cs | 4 ++-- 6 files changed, 33 insertions(+), 12 deletions(-) diff --git a/iconlib_src/IconLib/IconLib.csproj b/iconlib_src/IconLib/IconLib.csproj index 7ce1e3e..0a27d34 100644 --- a/iconlib_src/IconLib/IconLib.csproj +++ b/iconlib_src/IconLib/IconLib.csproj @@ -1,4 +1,4 @@ - + Debug AnyCPU @@ -7,7 +7,8 @@ {CE53747F-D2E6-4E1E-9EF4-A0AE02671B1D} Library Properties - + + IconLib @@ -17,6 +18,12 @@ + v2.0 + + + + + 2.0 true diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Resource.Designer.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Resource.Designer.cs index 834acc4..5da07f9 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Resource.Designer.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Resource.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.42 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -19,7 +19,7 @@ namespace System.Drawing.IconLib { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resource { @@ -39,7 +39,7 @@ internal Resource() { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IconLib.System.Drawing.IconLib.Resource", typeof(Resource).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("System.Drawing.IconLib.Resource", typeof(Resource).Assembly); resourceMan = temp; } return resourceMan; @@ -60,6 +60,9 @@ internal Resource() { } } + ///

+ /// Looks up a localized resource of type System.Byte[]. + /// internal static byte[] EmptyDll { get { object obj = ResourceManager.GetObject("EmptyDll", resourceCulture); diff --git a/iconlib_src/MultiIcon/MultiIcon.csproj b/iconlib_src/MultiIcon/MultiIcon.csproj index 3f1795b..52160da 100644 --- a/iconlib_src/MultiIcon/MultiIcon.csproj +++ b/iconlib_src/MultiIcon/MultiIcon.csproj @@ -1,4 +1,4 @@ - + Debug AnyCPU @@ -18,6 +18,12 @@ video.ico + v2.0 + + + + + 2.0 true diff --git a/iconlib_src/MultiIcon/MultiIcon.sln b/iconlib_src/MultiIcon/MultiIcon.sln index c287bab..0edccb8 100644 --- a/iconlib_src/MultiIcon/MultiIcon.sln +++ b/iconlib_src/MultiIcon/MultiIcon.sln @@ -1,6 +1,8 @@  -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27703.2026 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiIcon", "MultiIcon.csproj", "{BE1ADD60-F285-4084-BDCE-3C44CB076F58}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconLib", "..\IconLib\IconLib.csproj", "{CE53747F-D2E6-4E1E-9EF4-A0AE02671B1D}" @@ -23,4 +25,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {82EC0920-4A01-4BFD-97A8-2CDEBB1F258F} + EndGlobalSection EndGlobal diff --git a/iconlib_src/MultiIcon/Properties/Resources.Designer.cs b/iconlib_src/MultiIcon/Properties/Resources.Designer.cs index 1fdc9ec..f669517 100644 --- a/iconlib_src/MultiIcon/Properties/Resources.Designer.cs +++ b/iconlib_src/MultiIcon/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.42 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -19,7 +19,7 @@ namespace MultiIconTester.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/iconlib_src/MultiIcon/Properties/Settings.Designer.cs b/iconlib_src/MultiIcon/Properties/Settings.Designer.cs index efb3d53..a46f2de 100644 --- a/iconlib_src/MultiIcon/Properties/Settings.Designer.cs +++ b/iconlib_src/MultiIcon/Properties/Settings.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.42 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -12,7 +12,7 @@ namespace MultiIconTester.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); From 8aa954dd97e9a99757503ba1fc85b8b29eae3e49 Mon Sep 17 00:00:00 2001 From: harborsiem Date: Mon, 21 Jan 2019 18:51:34 +0100 Subject: [PATCH 06/11] version 0.75 some bugfixes for 64bit windows codeanalysis fixes --- iconlib_demo/IconLib.dll | Bin 55808 -> 56320 bytes iconlib_demo/MultiIcon.exe | Bin 96256 -> 96256 bytes .../IconLib/Properties/AssemblyInfo.cs | 5 +++- .../IconLib/BitmapEncoders/ImageEncoder.cs | 3 ++ .../ColorProcessing/EuclideanQuantizer.cs | 9 ++++-- .../ColorProcessing/OctreeQuantizer.cs | 5 +++- .../IconNameAlreadyExistException.cs | 1 + .../Exceptions/ImageAlreadyExistsException.cs | 1 + .../Exceptions/ImageTooBigException.cs | 1 + .../Exceptions/InvalidFileException.cs | 1 + .../Exceptions/InvalidICLFileException.cs | 1 + .../InvalidIconFormatSelectionException.cs | 1 + .../InvalidIconSelectionException.cs | 1 + .../InvalidMultiIconFileException.cs | 1 + .../Exceptions/InvalidMultiIconMaskBitmap.cs | 1 + .../Exceptions/InvalidPixelFormatException.cs | 1 + .../System/Drawing/IconLib/IconImage.cs | 7 +++++ .../IconLib/LibraryFormats/IconFormat.cs | 3 ++ .../IconLib/LibraryFormats/NEFormat.cs | 3 ++ .../IconLib/LibraryFormats/PEFormat.cs | 12 ++++---- .../System/Drawing/IconLib/MultiIcon.cs | 3 ++ .../System/Drawing/IconLib/SingleIcon.cs | 9 ++++-- .../IconLib/System/Drawing/IconLib/Structs.cs | 3 ++ .../IconLib/System/Drawing/IconLib/Win32.cs | 28 +++++++++--------- 24 files changed, 74 insertions(+), 26 deletions(-) diff --git a/iconlib_demo/IconLib.dll b/iconlib_demo/IconLib.dll index 13007a6b616bc7afa8d838826f05ee4bebc06cba..49f1549afbe3b6e61d87db123deecb85560bc080 100644 GIT binary patch delta 23071 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 diff --git a/iconlib_demo/MultiIcon.exe b/iconlib_demo/MultiIcon.exe index c675f559f517c1f22bf28bcd9b3ec2411341c509..efe0f247cfa0eaf8afecbacaabdf9d5b7bae93b7 100644 GIT binary patch delta 122 zcmZqpz}oPEbwUSA0;^lh#-10R0;f_InSI}T)os^&p0gav(H5Iqygux80!cFf0TU3* zFfuUos4+71a4<3i1-k@0tiGps@AwYij@<>9w#`}81(arRv5Ij?EJ=*XNGwXqFDlMV X&7HoPgHdn#BM!zR+gEThM&tni2~{lB delta 121 zcmZqpz}oPEbwUSAzL;$E#-10R0+B!N&$>F*$z#(?hR%-+!Zw>*ygux;2T3yk0TU3* zFfuUos4+71a4<3i1-k_AJ?;JWE!#?;CDrRCDg=IN0;L(8tztrpQ;UjYG7^iD@{6W# V<6zWdG@Sl~gYn4rWt@yrc>un(D%=17 diff --git a/iconlib_src/IconLib/Properties/AssemblyInfo.cs b/iconlib_src/IconLib/Properties/AssemblyInfo.cs index 8b6c363..d6e39c4 100644 --- a/iconlib_src/IconLib/Properties/AssemblyInfo.cs +++ b/iconlib_src/IconLib/Properties/AssemblyInfo.cs @@ -14,6 +14,9 @@ [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] +//[assembly: System.Security.SecurityCritical] +//[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level2)] + // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. @@ -32,4 +35,4 @@ // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: [assembly: AssemblyVersion("0.74.0.0")] -[assembly: AssemblyFileVersion("0.74.0.0")] +[assembly: AssemblyFileVersion("0.75.0.0")] diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/BitmapEncoders/ImageEncoder.cs b/iconlib_src/IconLib/System/Drawing/IconLib/BitmapEncoders/ImageEncoder.cs index cb29c41..a03c165 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/BitmapEncoders/ImageEncoder.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/BitmapEncoders/ImageEncoder.cs @@ -21,6 +21,7 @@ using System.Text; using System.Collections.Generic; using System.Runtime.InteropServices; +using System.Security.Permissions; namespace System.Drawing.IconLib.BitmapEncoders { @@ -45,6 +46,8 @@ public unsafe virtual Icon Icon { get { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + MemoryStream ms = new MemoryStream(); // ICONDIR diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/ColorProcessing/EuclideanQuantizer.cs b/iconlib_src/IconLib/System/Drawing/IconLib/ColorProcessing/EuclideanQuantizer.cs index a405ce9..51f33eb 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/ColorProcessing/EuclideanQuantizer.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/ColorProcessing/EuclideanQuantizer.cs @@ -22,6 +22,7 @@ using System.Drawing.IconLib; using System.Drawing.Imaging; using System.Collections.Generic; +using System.Security.Permissions; namespace System.Drawing.IconLib.ColorProcessing { @@ -42,7 +43,7 @@ public class EuclideanQuantizer : IColorQuantizer public EuclideanQuantizer(IPaletteQuantizer quantizer, IDithering dithering) { if (quantizer == null) - throw new Exception("param 'quantizer' cannot be null"); + throw new ArgumentNullException("quantizer", "param 'quantizer' cannot be null"); mQuantizer = quantizer; mDithering = dithering; @@ -52,10 +53,12 @@ public EuclideanQuantizer(IPaletteQuantizer quantizer, IDithering dithering) #region Methods public unsafe Bitmap Convert(Bitmap source, PixelFormat outputFormat) { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + DateTime dt1 = DateTime.Now; if ((outputFormat & PixelFormat.Indexed) != PixelFormat.Indexed) - throw new Exception("Output format must be one of the indexed formats"); + throw new ArgumentException("Output format must be one of the indexed formats", "outputFormat"); Bitmap bmpTrg = new Bitmap(source.Width, source.Height, outputFormat); @@ -80,7 +83,7 @@ public unsafe Bitmap Convert(Bitmap source, PixelFormat outputFormat) newPalette = mQuantizer.CreatePalette(source, 256, 8); break; default: - throw new Exception("Indexed format not supported"); + throw new ArgumentException("Indexed format not supported", "outputFormat"); } DateTime dt2 = DateTime.Now; diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/ColorProcessing/OctreeQuantizer.cs b/iconlib_src/IconLib/System/Drawing/IconLib/ColorProcessing/OctreeQuantizer.cs index 9a32b63..8841bce 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/ColorProcessing/OctreeQuantizer.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/ColorProcessing/OctreeQuantizer.cs @@ -20,6 +20,7 @@ using System.Collections.Generic; using System.Text; using System.Drawing.Imaging; +using System.Security.Permissions; namespace System.Drawing.IconLib.ColorProcessing { @@ -35,6 +36,8 @@ public OctreeQuantizer() #region Methods public unsafe ColorPalette CreatePalette(Bitmap image, int maxColors, int bitsPerPixel) { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + int nPad; byte* pbBits; ushort* pwBits; @@ -50,7 +53,7 @@ public unsafe ColorPalette CreatePalette(Bitmap image, int maxColors, int bitsPe Node[] reducibleNodes = new Node[9]; if (maxColors > Math.Pow(2, bitsPerPixel)) - throw new Exception("param maxColors out of range, maximum " + Math.Pow(2, bitsPerPixel) + " colors for " + bitsPerPixel + " bits"); + throw new ArgumentException("param maxColors out of range, maximum " + Math.Pow(2, bitsPerPixel) + " colors for " + bitsPerPixel + " bits", "bitsPerPixel"); //// Initialize octree variables tree = null; diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/IconNameAlreadyExistException.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/IconNameAlreadyExistException.cs index bb4d76a..e625a23 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/IconNameAlreadyExistException.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/IconNameAlreadyExistException.cs @@ -19,6 +19,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class IconNameAlreadyExistException : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/ImageAlreadyExistsException.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/ImageAlreadyExistsException.cs index 23bb29a..20c191e 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/ImageAlreadyExistsException.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/ImageAlreadyExistsException.cs @@ -19,6 +19,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class ImageAlreadyExistsException : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/ImageTooBigException.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/ImageTooBigException.cs index 44f245a..c23b44e 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/ImageTooBigException.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/ImageTooBigException.cs @@ -19,6 +19,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class ImageTooBigException : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidFileException.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidFileException.cs index 6264ca8..05a327a 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidFileException.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidFileException.cs @@ -19,6 +19,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class InvalidFileException : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidICLFileException.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidICLFileException.cs index 991e172..e4de17d 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidICLFileException.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidICLFileException.cs @@ -20,6 +20,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class InvalidICLFileException : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidIconFormatSelectionException.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidIconFormatSelectionException.cs index 49fb8cf..46106bd 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidIconFormatSelectionException.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidIconFormatSelectionException.cs @@ -19,6 +19,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class InvalidIconFormatSelectionException : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidIconSelectionException.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidIconSelectionException.cs index 0b5a7e4..94ce4bf 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidIconSelectionException.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidIconSelectionException.cs @@ -19,6 +19,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class InvalidIconSelectionException : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidMultiIconFileException.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidMultiIconFileException.cs index 6a8a419..276b937 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidMultiIconFileException.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidMultiIconFileException.cs @@ -19,6 +19,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class InvalidMultiIconFileException : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidMultiIconMaskBitmap.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidMultiIconMaskBitmap.cs index 83ddc29..960fc92 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidMultiIconMaskBitmap.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidMultiIconMaskBitmap.cs @@ -19,6 +19,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class InvalidMultiIconMaskBitmap : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidPixelFormatException.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidPixelFormatException.cs index dfce673..0bb1e4d 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidPixelFormatException.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Exceptions/InvalidPixelFormatException.cs @@ -20,6 +20,7 @@ namespace System.Drawing.IconLib.Exceptions { [Author("Franco, Gustavo")] + [Serializable] public class InvalidPixelFormatException : Exception { #region Constructors diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs b/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs index 39290f6..5bfe915 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs @@ -22,6 +22,7 @@ using System.Drawing.Imaging; using System.Collections.Generic; using System.Runtime.InteropServices; +using System.Security.Permissions; using System.Drawing.IconLib.Exceptions; using System.Drawing.IconLib.BitmapEncoders; using System.Drawing.IconLib.EncodingFormats; @@ -102,6 +103,8 @@ public Bitmap Image { get { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + IntPtr hDCScreen = Win32.GetDC(IntPtr.Zero); // Image @@ -140,6 +143,8 @@ public Bitmap Mask { get { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + IntPtr hDCScreen = Win32.GetDC(IntPtr.Zero); // Image @@ -242,6 +247,8 @@ internal unsafe GRPICONDIRENTRY GRPICONDIRENTRY #region Methods public unsafe void Set(Bitmap bitmap, Bitmap bitmapMask, Color transparentColor) { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + // We need to rotate the images, but we don't want to mess with the source image, lets create a clone Bitmap image = (Bitmap) bitmap.Clone(); Bitmap mask = bitmapMask != null ? (Bitmap) bitmapMask.Clone() : null; diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/IconFormat.cs b/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/IconFormat.cs index 3f5ce7a..072c946 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/IconFormat.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/IconFormat.cs @@ -21,6 +21,7 @@ using System.Text; using System.Collections.Generic; using System.Runtime.InteropServices; +using System.Security.Permissions; using System.Drawing.IconLib.Exceptions; namespace System.Drawing.IconLib.EncodingFormats @@ -81,6 +82,8 @@ public unsafe MultiIcon Load(Stream stream) public unsafe void Save(MultiIcon multiIcon, Stream stream) { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + if (multiIcon.SelectedIndex == -1) return; diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/NEFormat.cs b/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/NEFormat.cs index a5e0b9f..05cd6e0 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/NEFormat.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/NEFormat.cs @@ -22,6 +22,7 @@ using System.Drawing; using System.Collections.Generic; using System.Runtime.InteropServices; +using System.Security.Permissions; using System.Drawing.IconLib.Exceptions; @@ -124,6 +125,8 @@ public MultiIcon Load(Stream stream) public unsafe void Save(MultiIcon multiIcon, Stream stream) { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + //Lets prepare the complete file in memory, then we dump everything to a file IMAGE_DOS_HEADER dos_header = new IMAGE_DOS_HEADER(); IMAGE_OS2_HEADER os2_header = new IMAGE_OS2_HEADER(); diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/PEFormat.cs b/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/PEFormat.cs index 15d9e00..b20cfaa 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/PEFormat.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/LibraryFormats/PEFormat.cs @@ -33,6 +33,7 @@ internal class PEFormat : ILibraryFormat { #region Variables Declaration private static List mIconsIDs; + private object lockObj = new object(); #endregion #region Methods @@ -82,7 +83,8 @@ public unsafe MultiIcon Load(Stream stream) throw new InvalidFileException(); List iconsIDs; - lock (typeof(PEFormat)) + //lock (typeof(PEFormat)) + lock (lockObj) { mIconsIDs = new List(); bool bResult = Win32.EnumResourceNames(hLib, (IntPtr) ResourceType.RT_GROUP_ICON, new Win32.EnumResNameProc(EnumResNameProc), IntPtr.Zero); @@ -100,7 +102,7 @@ public unsafe MultiIcon Load(Stream stream) IntPtr hRsrc = IntPtr.Zero; if (Win32.IS_INTRESOURCE(id)) - hRsrc = Win32.FindResource(hLib, int.Parse(id), (IntPtr) ResourceType.RT_GROUP_ICON); + hRsrc = Win32.FindResource(hLib, (IntPtr)int.Parse(id), (IntPtr) ResourceType.RT_GROUP_ICON); else hRsrc = Win32.FindResource(hLib, id, (IntPtr) ResourceType.RT_GROUP_ICON); @@ -204,7 +206,7 @@ public unsafe void Save(MultiIcon multiIcon, Stream stream) buffer = ms.GetBuffer(); // Update resource but it doesn't write to disk yet - bResult = Win32.UpdateResource(updPtr, (int) ResourceType.RT_ICON, iconIndex, 0, buffer, (uint) ms.Length); + bResult = Win32.UpdateResource(updPtr, (IntPtr) ResourceType.RT_ICON, (IntPtr)iconIndex, 0, buffer, (uint) ms.Length); iconIndex++; @@ -230,13 +232,13 @@ public unsafe void Save(MultiIcon multiIcon, Stream stream) if (int.TryParse(singleIcon.Name, out id)) { // Write id as an integer - bResult = Win32.UpdateResource(updPtr, (int) ResourceType.RT_GROUP_ICON, (IntPtr) id, 0, buffer, (uint) ms.Length); + bResult = Win32.UpdateResource(updPtr, (IntPtr) ResourceType.RT_GROUP_ICON, (IntPtr) id, 0, buffer, (uint) ms.Length); } else { // Write id as string IntPtr pName = Marshal.StringToHGlobalAnsi(singleIcon.Name.ToUpper()); - bResult = Win32.UpdateResource(updPtr, (int) ResourceType.RT_GROUP_ICON, pName, 0, buffer, (uint) ms.Length); + bResult = Win32.UpdateResource(updPtr, (IntPtr) ResourceType.RT_GROUP_ICON, pName, 0, buffer, (uint) ms.Length); Marshal.FreeHGlobal(pName); } } diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/MultiIcon.cs b/iconlib_src/IconLib/System/Drawing/IconLib/MultiIcon.cs index b675574..f2cdd0e 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/MultiIcon.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/MultiIcon.cs @@ -22,6 +22,7 @@ using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; +using System.Security.Permissions; using System.Drawing.IconLib.Exceptions; using System.Drawing.IconLib.EncodingFormats; @@ -225,6 +226,8 @@ public void Save(string fileName, MultiIconFormat format) public void Save(Stream stream, MultiIconFormat format) { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + switch (format) { case MultiIconFormat.ICO: diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/SingleIcon.cs b/iconlib_src/IconLib/System/Drawing/IconLib/SingleIcon.cs index 856c937..c107326 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/SingleIcon.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/SingleIcon.cs @@ -192,8 +192,11 @@ public IconImage Add(Icon icon) // then make them XP format Icons if (Tools.BitsFromPixelFormat(XORImage.PixelFormat) == 16) { - XORImage.Dispose(); - ANDImage.Dispose(); + //XORImage.Dispose(); + //XORImage = null; + //ANDImage.Dispose(); + //ANDImage = null; + //above commented code is done in finally block return Add(icon.ToBitmap(), Color.Transparent); } @@ -381,8 +384,10 @@ public IconImage this[int index] public struct Enumerator : IEnumerator, IDisposable, IEnumerator { #region Variables Declaration + [NonSerialized] private SingleIcon mList; private int mIndex; + [NonSerialized] private IconImage mCurrent; #endregion diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Structs.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Structs.cs index 3c7a12c..f2530c2 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Structs.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Structs.cs @@ -21,6 +21,7 @@ using System.Text; using System.Collections.Generic; using System.Runtime.InteropServices; +using System.Security.Permissions; namespace System.Drawing.IconLib { @@ -392,6 +393,8 @@ public void Read(Stream stream) public unsafe void Write(Stream stream) { + new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); + BinaryWriter br = new BinaryWriter(stream); br.Write(rscAlignShift); diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Win32.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Win32.cs index 15acac7..1019558 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Win32.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Win32.cs @@ -34,18 +34,18 @@ internal class Win32 #region KERNEL32 [DllImport("KERNEL32.DLL")] public unsafe static extern void CopyMemory(void* dest, void* src, int length); - [DllImport("kernel32.dll", SetLastError=true)] + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError =true)] public static extern IntPtr BeginUpdateResource(string pFileName, bool bDeleteExistingResources); [DllImport("kernel32.dll", SetLastError=true)] public static extern bool EndUpdateResource(IntPtr hUpdate, bool fDiscard); [DllImport("kernel32.dll", SetLastError=true)] - public static extern bool UpdateResource(IntPtr hUpdate, uint lpType, ref string pName, ushort wLanguage, byte[] lpData, uint cbData); + public static extern bool UpdateResource(IntPtr hUpdate, IntPtr lpType, ref string pName, ushort wLanguage, byte[] lpData, uint cbData); [DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Ansi)] - public static extern bool UpdateResource(IntPtr hUpdate, uint lpType, IntPtr pName, ushort wLanguage, byte[] lpData, uint cbData); - [DllImport("kernel32.dll", SetLastError=true)] - public unsafe static extern bool UpdateResource(IntPtr hUpdate, uint lpType, byte[] pName, ushort wLanguage, byte[] lpData, uint cbData); + public static extern bool UpdateResource(IntPtr hUpdate, IntPtr lpType, IntPtr pName, ushort wLanguage, byte[] lpData, uint cbData); [DllImport("kernel32.dll", SetLastError=true)] - public static extern bool UpdateResource(IntPtr hUpdate, uint lpType, uint lpName, ushort wLanguage, byte[] lpData, uint cbData); + public unsafe static extern bool UpdateResource(IntPtr hUpdate, IntPtr lpType, byte[] pName, ushort wLanguage, byte[] lpData, uint cbData); + //[DllImport("kernel32.dll", SetLastError=true)] + //public static extern bool UpdateResource(IntPtr hUpdate, IntPtr lpType, uint lpName, ushort wLanguage, byte[] lpData, uint cbData); [DllImport("kernel32.dll", EntryPoint="RtlMoveMemory")] public unsafe static extern void CopyMemory(RGBQUAD* dest, byte* src, int cb); [DllImport("kernel32.dll", CharSet=CharSet.Auto)] @@ -60,17 +60,17 @@ internal class Win32 public static extern bool EnumResourceNames(IntPtr hModule, IntPtr pType, EnumResNameProc callback, IntPtr param); [DllImport("kernel32.dll", SetLastError=true)] public static extern bool EnumResourceTypes(IntPtr hModule, EnumResTypeProc callback, IntPtr lParam); - [DllImport("kernel32.dll", CharSet=CharSet.Auto)] + [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] public static extern IntPtr FindResource(IntPtr hModule, string resourceID, IntPtr type); - [DllImport("kernel32.dll", CharSet=CharSet.Auto)] - public static extern IntPtr FindResource(IntPtr hModule, Int32 resourceID, IntPtr type); - [DllImport("kernel32.dll", CharSet=CharSet.Auto)] + //[DllImport("kernel32.dll", CharSet=CharSet.Auto)] + //public static extern IntPtr FindResource(IntPtr hModule, Int32 resourceID, IntPtr type); + [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] public static extern IntPtr FindResource(IntPtr hModule, IntPtr resourceID, IntPtr type); - [DllImport("kernel32.dll", CharSet=CharSet.Auto)] + [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] public static extern IntPtr FindResource(IntPtr hModule, IntPtr resourceID, string resourceName); - [DllImport("kernel32.dll")] + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] public static extern IntPtr LoadLibrary(string libraryName); - [DllImport("kernel32.dll", CharSet=CharSet.Auto)] + [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] public static extern IntPtr LoadLibraryEx(string path, IntPtr hFile, LoadLibraryFlags flags); #endregion @@ -88,7 +88,7 @@ public static extern bool MaskBlt(IntPtr hdcDest, int nXDest, int nYDest, int nW [DllImport("gdi32.dll", CharSet=CharSet.Auto)] public static extern IntPtr CreateDIBSection(IntPtr hdc, [In] ref BITMAPINFO pbmi, uint iUsage, out IntPtr ppvBits, IntPtr hSection, uint dwOffset); [DllImport("gdi32.dll", CharSet=CharSet.Auto)] - public static extern IntPtr DeleteDC(IntPtr hDC); + public static extern bool DeleteDC(IntPtr hDC); [DllImport("gdi32.dll", CharSet=CharSet.Auto)] public static extern bool DeleteObject(IntPtr hObject); [DllImport("gdi32.dll", CharSet=CharSet.Auto)] From c80696ecb04556b4d9b475ae402f2d1b90df9032 Mon Sep 17 00:00:00 2001 From: harborsiem Date: Tue, 22 Jan 2019 12:49:41 +0100 Subject: [PATCH 07/11] added projectfiles for .net4.0 with MIT License signed assembly and installer for GAC PublicKeyToken=d586bf32134c8d42, AssemblyVersion=4.0 --- iconlib_src/IconLib/IconLib.Net4.csproj | 120 ++++++++++++++++++++ iconlib_src/IconLib/IconLib.Net4.wxs | 60 ++++++++++ iconlib_src/IconLib/MIT_License.rtf | 23 ++++ iconlib_src/IconLib/iconlib.pfx | Bin 0 -> 160 bytes iconlib_src/IconLib/iconlib.snk | Bin 0 -> 596 bytes iconlib_src/MultiIcon/MultiIcon.Net4.csproj | 117 +++++++++++++++++++ iconlib_src/MultiIcon/MultiIcon.Net4.sln | 31 +++++ 7 files changed, 351 insertions(+) create mode 100644 iconlib_src/IconLib/IconLib.Net4.csproj create mode 100644 iconlib_src/IconLib/IconLib.Net4.wxs create mode 100644 iconlib_src/IconLib/MIT_License.rtf create mode 100644 iconlib_src/IconLib/iconlib.pfx create mode 100644 iconlib_src/IconLib/iconlib.snk create mode 100644 iconlib_src/MultiIcon/MultiIcon.Net4.csproj create mode 100644 iconlib_src/MultiIcon/MultiIcon.Net4.sln diff --git a/iconlib_src/IconLib/IconLib.Net4.csproj b/iconlib_src/IconLib/IconLib.Net4.csproj new file mode 100644 index 0000000..96ee7b6 --- /dev/null +++ b/iconlib_src/IconLib/IconLib.Net4.csproj @@ -0,0 +1,120 @@ + + + Debug + AnyCPU + 8.0.50727 + 2.0 + {B8893240-CA7C-4AE9-A1BF-A32D080EFBD6} + Library + Properties + + + IconLib + + + + + + + + + v4.0 + + + + + 2.0 + + + + true + full + false + bin4\Debug\ + TRACE;DEBUG;Net4 + prompt + 4 + true + + + pdbonly + true + bin4\Release\ + TRACE;Net4 + prompt + 4 + true + + + true + + + iconlib.snk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + Resource.resx + + + + + + + + + Designer + ResXFileCodeGenerator + System.Drawing.IconLib + Resource.Designer.cs + + + + + + + + + \ No newline at end of file diff --git a/iconlib_src/IconLib/IconLib.Net4.wxs b/iconlib_src/IconLib/IconLib.Net4.wxs new file mode 100644 index 0000000..bb9d01c --- /dev/null +++ b/iconlib_src/IconLib/IconLib.Net4.wxs @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Installed OR NETFRAMEWORK40FULL + + + + + + + + + + \ No newline at end of file diff --git a/iconlib_src/IconLib/MIT_License.rtf b/iconlib_src/IconLib/MIT_License.rtf new file mode 100644 index 0000000..3564c52 --- /dev/null +++ b/iconlib_src/IconLib/MIT_License.rtf @@ -0,0 +1,23 @@ +{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1031{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f16\froman\fcharset238\fprq2 Times New Roman CE;}{\f17\froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f19\froman\fcharset161\fprq2 Times New Roman Greek;}{\f20\froman\fcharset162\fprq2 Times New Roman Tur;}{\f21\froman\fcharset186\fprq2 Times New Roman Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255; +\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0; +\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar\adjustright \fs20\lang1031\cgrid \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}}{\info{\title Copyright }{\author harbor}{\operator harbor} +{\creatim\yr2017\mo10\dy31\hr13\min51}{\revtim\yr2017\mo11\dy17\hr18\min57}{\version4}{\edmins0}{\nofpages1}{\nofwords0}{\nofchars0}{\*\company harbor}{\nofcharsws0}{\vern113}}\paperw11906\paperh16838\margl1273\margr1273\margt1417\margb1134 +\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\hyphcaps0\formshade\viewkind4\viewscale150\pgbrdrhead\pgbrdrfoot \fet0\sectd \linex0\headery1440\footery1440\colsx709\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2 +\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6 +\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}\pard\plain \widctlpar\adjustright \fs20\lang1031\cgrid {\b\fs28\cgrid0 The MIT LICENSE +\par }{ +\par +\par Copyright 2017 Hartmut Borkenhagen (harborsiem) +\par +\par 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, m +erge, 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: +\par +\par The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +\par +\par 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 N +O 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. + +\par +\par }} \ No newline at end of file diff --git a/iconlib_src/IconLib/iconlib.pfx b/iconlib_src/IconLib/iconlib.pfx new file mode 100644 index 0000000000000000000000000000000000000000..4d7ccf4bc86bdff34fe55cd4f54044688cdc7ed5 GIT binary patch literal 160 zcmV;R0AK$ABme*efB*oL000060ssI2Bme+XQ$aBR1ONa50096|KoxF}7>ccAN(5|) zMUICe!(2SrLNcc(c-35}*63!KlN$UH%L~u}03t=`QPHPFbm?J#-)R}tNcK5hw*Pw1 zbA5+`!0{^3bn9k>Xi>h7P^^BLV?l{QY*|XJQ!i!fM<_MNn=V{H4VT3DSIwy5^s(@u OFk^mi{`2wT46WCiZ$kwD literal 0 HcmV?d00001 diff --git a/iconlib_src/IconLib/iconlib.snk b/iconlib_src/IconLib/iconlib.snk new file mode 100644 index 0000000000000000000000000000000000000000..ad26e134705d3fb2c4f4a592cd3be904cb364d0f GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50096|KoxF}7>ccAN(5|)MUICe!(2SrLNcc( zc-35}*63!KlN$UH%L~u}03t=`QPHPFbm?J#-)R}tNcK5hw*Pw1bA5+`!0{^3bn9k> zXi>h7P^^BLV?l{QY*|XJQ!i!fM<_MNn=V{H4VT3DSIwy5^s(@uFk^mi{`2wT46WC9 z*Eh!)49FkYB(@I$=l(Pq?(2z$o8Bm16bUzGs=-b%VpDE>wk zWBDMmV?7Fi2&qM_SnRHy7tN(0`n~;2=b3N%a^xsGl;SF`3Ahv7fPajC2djQETz#~b zSO}5D%5G4teP={hQ}I7iX~YWbSW0Ku);eX}q5w9ZLM1KoU$o9a0PuhE|% z8k#n4>(~k|f!sw1H=$1^sY(e@1)gA!r*#zf)n4|@Uk~jsJr$1j1GSpxEY;EHM6qA< z%yasBQ6e}x5NSR2%>>D+cd&&*?u^p4ZH%5DR6}r3+h{=&#x`jQ#-3r@aH!Q1d5FdN zI&L^17s_o_$zRxwHCL3I0J#1okz{g>|MB&S3vpS!V03*(=!!gCeyzN#>3z5Y&>EDp z*64LgW$`LW + + Debug + AnyCPU + 8.0.50727 + 2.0 + {4E4CFADE-E3EC-48CB-B526-B44BF95D76FE} + WinExe + Properties + MultiIconTester + MultiIcon + + + + + + + + + video.ico + v4.0 + + + + + 2.0 + + + + true + full + false + bin4\Debug\ + DEBUG;TRACE + prompt + 4 + true + + + pdbonly + true + bin4\Release\ + TRACE + prompt + 4 + true + + + + + + + + + + + + Form + + + Form1.cs + + + Form + + + Form2.cs + + + + + Designer + Form1.cs + + + Designer + Form2.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + {B8893240-CA7C-4AE9-A1BF-A32D080EFBD6} + IconLib + + + + + + + + \ No newline at end of file diff --git a/iconlib_src/MultiIcon/MultiIcon.Net4.sln b/iconlib_src/MultiIcon/MultiIcon.Net4.sln new file mode 100644 index 0000000..a33070f --- /dev/null +++ b/iconlib_src/MultiIcon/MultiIcon.Net4.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27703.2026 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiIcon", "MultiIcon.Net4.csproj", "{4E4CFADE-E3EC-48CB-B526-B44BF95D76FE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconLib", "..\IconLib\IconLib.Net4.csproj", "{B8893240-CA7C-4AE9-A1BF-A32D080EFBD6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4E4CFADE-E3EC-48CB-B526-B44BF95D76FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4E4CFADE-E3EC-48CB-B526-B44BF95D76FE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4E4CFADE-E3EC-48CB-B526-B44BF95D76FE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4E4CFADE-E3EC-48CB-B526-B44BF95D76FE}.Release|Any CPU.Build.0 = Release|Any CPU + {B8893240-CA7C-4AE9-A1BF-A32D080EFBD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B8893240-CA7C-4AE9-A1BF-A32D080EFBD6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B8893240-CA7C-4AE9-A1BF-A32D080EFBD6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B8893240-CA7C-4AE9-A1BF-A32D080EFBD6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {82EC0920-4A01-4BFD-97A8-2CDEBB1F258F} + EndGlobalSection +EndGlobal From 01105310e40a67a11679f36c24a6c90ceced7c7c Mon Sep 17 00:00:00 2001 From: harborsiem Date: Mon, 28 Jan 2019 17:53:47 +0100 Subject: [PATCH 08/11] Naming fix Codeanalysis supressions --- Readme.md | 9 ++ iconlib_demo/IconLib.dll | Bin 56320 -> 56320 bytes iconlib_demo/MultiIcon.exe | Bin 96256 -> 96256 bytes iconlib_src/IconLib/BuildMsi.bat | 23 +++++ iconlib_src/IconLib/MIT_License.rtf | Bin 3231 -> 1377 bytes .../IconLib/Properties/AssemblyInfo.cs | 10 ++- .../System/Drawing/IconLib/IconImage.cs | 2 +- .../IconLib/System/Drawing/IconLib/Tools.cs | 2 +- .../IconLib/System/Drawing/IconLib/Win32.cs | 84 ++++++++++++------ iconlib_src/MultiIcon/Form1.Designer.cs | 1 - 10 files changed, 100 insertions(+), 31 deletions(-) create mode 100644 iconlib_src/IconLib/BuildMsi.bat diff --git a/Readme.md b/Readme.md index 0133058..951acaf 100644 --- a/Readme.md +++ b/Readme.md @@ -31,6 +31,15 @@ The first parameter can be either the path to the png, or a `Bitmap` object. The ### History +### IconLib 0.75 (01/28/2019) + +some bugfixes for 64bit windows +codeanalysis fixes + +added projectfiles for .net4.0 with MIT License +signed assembly and installer for GAC added +PublicKeyToken=d586bf32134c8d42, AssemblyVersion=4.0 + ### IconLib 0.74 (12/30/2017) Fixed a small problem with saving icon files (bHeight in ICONDIRENTRY and GRPICONDIRENTRY had doubled value). diff --git a/iconlib_demo/IconLib.dll b/iconlib_demo/IconLib.dll index 49f1549afbe3b6e61d87db123deecb85560bc080..cd62e047265c5d6e29547aaef9794369f5ee755e 100644 GIT binary patch delta 7567 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 delta 7565 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 diff --git a/iconlib_demo/MultiIcon.exe b/iconlib_demo/MultiIcon.exe index efe0f247cfa0eaf8afecbacaabdf9d5b7bae93b7..fa0325d285fc879bb81a6bb8c215cd7e96d773ec 100644 GIT binary patch delta 512 zcmZqpz}oPEbwUU8YXkp@-Lj15Caw%;teMQnsLtx5#>gNu*)d;dawMZV(-ro~O^kJl z8`K#YK)?ftnHX3Z4mdI})Mzs>fJDU@7}#t!D>Cu(FnVq_;f8D)NYo}JeIR|Y5bX?G)G z5LWx(av>pt%!m@}rGd5&dlQOCsK8!Y40`NI2n?i$?o4~(aQ?q@IrpB!e|S+DUR1_L z->;V*UmZc;e8+{t_U(wOx6KAce zBkLHbP(r>WXs|-Nt){^XWGaYUh}Bw8K5J@B0c$y4&}!e%&m* zJLZiqiO>ls26%_J7v8_>8-441eR+TKcIhG`M#0Y&AHB9;Li34Sn9Adi UtEsc3skD4f`kO2rNYE1f1NFgtKL7v# diff --git a/iconlib_src/IconLib/BuildMsi.bat b/iconlib_src/IconLib/BuildMsi.bat new file mode 100644 index 0000000..ad0e9b8 --- /dev/null +++ b/iconlib_src/IconLib/BuildMsi.bat @@ -0,0 +1,23 @@ +:: Color 0C +@echo For a newer version change the Program ID and Version Infos in the wxs file. +@echo --------------------------------------------------------------------------- +:: Color 07 +@echo off +:: @set INPUT= +:: @set /P INPUT=Type Version (e.g. V1.2): %=% +echo on +if not defined ProgramFiles(x86) goto x86 +rem 64Bit Systems + Set X86ProgramFiles=%ProgramFiles(x86)% + goto x86End + +:x86 +rem 32Bit Systems + Set X86ProgramFiles=%ProgramFiles% +:x86End + +Set AppName=IconLib.Net4 +Set Wix3xPath=%X86ProgramFiles%\WiX Toolset v3.11\bin +"%Wix3xPath%\candle.exe" -nologo %AppName%.wxs -out %AppName%.wixobj +"%Wix3xPath%\light.exe" -nologo %AppName%.wixobj -out %AppName%.msi -ext WixUtilExtension -ext WixUIExtension -ext WixNetFxExtension +pause diff --git a/iconlib_src/IconLib/MIT_License.rtf b/iconlib_src/IconLib/MIT_License.rtf index 3564c52cce63497c75db293d61610ebb6c29f0d1..b4a397f3adcf6c48fb42a972114d322318f62212 100644 GIT binary patch delta 342 zcmY+9F;2rU6owg#p%NnuNS+xgJE_!Gj8!EnL5DWuTb#sBED}37E)i-&uYj5Za0br6 z&KJ z36~39wbCPdw_{^nycn6J7JGz_@EtSFqH}$IxYDdUzs>se;~0+6>oNF5U(NRH=i)Hx H9z6L2qI7Z| literal 3231 zcmb_e?{C^j5dEINVw6wq3FT~l1ahe=Ibe!)#317|7s+4N_8Pl2UT(dFa)|%^-rA55 zqEzYW6oPlhZ{EC_^^DmDQYB`1S#-UFUnFuNQQzx8^4JLG&`=mbn6J3;+SKfH zj*Zw>NNqkl@;}&X2E99?)nJW1F`r=Hpg5QhBrgP;&EBy(Y%6tdnCpNVbR_P8Ju#nP z_1(HcRn|}7gB{mOh$`I5ZpuZ2QlFP2;~^=!fO z9ZAkqwg@(|X_(z$Ax!l0rey}HG+V(UD>^0|C4YPgG64b{pk4*)0`$mbnTeu}C6D1* z8dwz~S+Y4VH4D~jA>)I+ngJSvB8Ub0fAg#q(CYTO0)x3Q&DL&*DS;H$rg>#t*6Y-~ z?4j=$OwMz&*@a}R=)btO;gr8S?#Gv^JMWGg z(g)95Ry^-IfS=Ly{wFzC?~sEouZnW22Mr|gtmZ5$=vSuLHVE}} z>(xWeAV1}F>-aQw`nEf>QE4V=x2>=B_w%^YQ-(%(au+K_H$r~rcxLCkpbzzwDl@+L zcsKuuxV~$|VmsgvnSa9ych#+m1v+dRWYPgOngWM=&HxIEYXoxvZEIqX-jI zBUK8TQY324BnLPqR+b{l82AY7zgnP~FcRUOWEk@FK_S2M+1}&)V-+OkEGN`W-#gr* zb%t?^v?SMWfk<;S0E+TetTh~N=h-6LN6_xo7%#Q*Rf!C=&IT<+oF)2t#;d%Rt1!>X zv_WyExx4@cOP=SNB7^WM*=KnbMu$OhAYfmkD)2fLiS2qt@?#k2>f!XD_@;O zC8s{%{Vj}HWD)Xx?Vtda)}}*Z$a589f)y&mF)Z=(M@K$Q_~M0Kl>eq>iB1hnw!`_9DGdGsf)?_t|Onx6mU zdhg8a23ejn(-j$d6VU5=!b2C$)qbvBv*=n^s-KPo5M8l5Wc{RNU|VBw;e6Z|;ES{4 Ililt91#n7ega7~l diff --git a/iconlib_src/IconLib/Properties/AssemblyInfo.cs b/iconlib_src/IconLib/Properties/AssemblyInfo.cs index d6e39c4..0567821 100644 --- a/iconlib_src/IconLib/Properties/AssemblyInfo.cs +++ b/iconlib_src/IconLib/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -7,7 +7,11 @@ // associated with an assembly. [assembly: AssemblyTitle("IconLib")] [assembly: AssemblyDescription("")] +#if Net4 +[assembly: AssemblyConfiguration(".NET4")] +#else [assembly: AssemblyConfiguration("")] +#endif [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("IconLib")] [assembly: AssemblyCopyright("Copyright © Franco, Gustavo 2006")] @@ -34,5 +38,9 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: +#if Net4 +[assembly: AssemblyVersion("4.0.0.0")] +#else [assembly: AssemblyVersion("0.74.0.0")] +#endif [assembly: AssemblyFileVersion("0.75.0.0")] diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs b/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs index 5bfe915..5955850 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs @@ -112,7 +112,7 @@ public Bitmap Image IntPtr bits; bitmapInfo.icHeader = mEncoder.Header; bitmapInfo.icHeader.biHeight /= 2; - bitmapInfo.icColors = Tools.StandarizePalette(mEncoder.Colors); + bitmapInfo.icColors = Tools.StandardizePalette(mEncoder.Colors); IntPtr hDCScreenOUTBmp = Win32.CreateCompatibleDC(hDCScreen); IntPtr hBitmapOUTBmp = Win32.CreateDIBSection(hDCScreenOUTBmp, ref bitmapInfo, 0, out bits, IntPtr.Zero, 0); Marshal.Copy(mEncoder.XOR, 0, bits, mEncoder.XOR.Length); diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/Tools.cs b/iconlib_src/IconLib/System/Drawing/IconLib/Tools.cs index 05e5817..39c6b69 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/Tools.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/Tools.cs @@ -59,7 +59,7 @@ public static unsafe void FlipYBitmap(Bitmap bitmap) bitmap.UnlockBits(bitmapData); } - public static RGBQUAD[] StandarizePalette(RGBQUAD[] palette) + public static RGBQUAD[] StandardizePalette(RGBQUAD[] palette) { RGBQUAD[] newPalette = new RGBQUAD[256]; for(int i=0; i Date: Mon, 28 Jan 2019 18:14:50 +0100 Subject: [PATCH 09/11] IconLib Version 1.0 --- iconlib_demo/IconLib.dll | Bin 56320 -> 56320 bytes iconlib_demo/MultiIcon.exe | Bin 96256 -> 96256 bytes .../IconLib/Properties/AssemblyInfo.cs | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/iconlib_demo/IconLib.dll b/iconlib_demo/IconLib.dll index cd62e047265c5d6e29547aaef9794369f5ee755e..834ce771118da500edcfd84e6054a96d03e5a9bc 100644 GIT binary patch delta 647 zcmY+;&r2Io5C`yiJFT&%y9iz@A>gXGZAz2s0zWc>#;keC*|Y7-Z^Yu>iFm@jTRl6vTuqo4~7^kG0>Xtygs&m!7PL3w91RYFtKQTXCQBPw+0 z7-7Px5!Fy1J3giXWGj5F=%k|Jq%DtTY>9pXy+ZFo1AQ1kX8a12P(c?O=tF*lO(>y) zE-V@p9|n*gM;9bi(1iy2Fo4{Jr=f%jy3jx$29RUehZ3qD6gN^2lv1%HyW})!)O%N& z%Jt5^`o?^|^?D^fcQlfh4e#fVJv;tXP%M|pMn_*ZKIs3Azuupnf4$Eu!*AbH7*?3i z1ku4+nEOQe!dT(tQ+wF!eF delta 653 zcmZY3K}#D!6bJA(J0?-vT~a(6DIvW`OS%=390UcoRK$azh!k2{nEC~TdMPD|duV9{ z4HHE0ICv;IRNX_R6trx=fUzWvwDqu(O9b^)N)C4R-`qMdzxQVTZ-*`H^TIw~e`~bu z^1BtI!pq44nPhKR#e2^>uk+iML;ZAM3FtxveHc)QzD5J|oQ0Dq=yVNJ!6bdN1a4fY z*cSb=6jM4?tg7`f<0B0qH}q?HD-{-N*zo9u>7buNFVMSCK_3Q?bNmW)pnxt^(1*MS zlhAB9;2|sY4fG$+fhXLeKJPjQvpbHiBVE}my^U#5!AH@xocZ;dmsadp+ zX~LT?EJqAoql?eI8C&?&wEGaO_Nctoz7*_cG{Mm!)NmM;hFd2%US$h z+n#wsdKr2r7}57jy=z3Xa}Vc=ua+YpTel}yM|UUh?38|b=e6hD%<^#l-^$9z_4_xb zyC+?xtS_<+`KO*@OLC~O#z&}6erOEcvMEhD%4oyRCi0q%amKSc9&9H6kL6Tz$73hg F>@OsOumJ!7 diff --git a/iconlib_demo/MultiIcon.exe b/iconlib_demo/MultiIcon.exe index fa0325d285fc879bb81a6bb8c215cd7e96d773ec..f49a53a6ed94f1561e7627e121552d6242bb3f43 100644 GIT binary patch delta 68 zcmV-K0K5Ny@CAVI1(1jWoHwzGzDW@IdHS~~;95tD5T5OewS5?~SW57{0-QION(ccO a5Zg?@r2FDyLYCDyxJtPcO1E?f0gP{ND<9GT delta 68 zcmV-K0K5Ny@CAVI1(1jW>oBp3zDW>)>0U6<5r09B>AWwIsQN9lSW57{0_!lBN(ccO a5OKc0>Ut5mMx Date: Mon, 28 Jan 2019 18:17:30 +0100 Subject: [PATCH 10/11] Readme.md Version 1.0 --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index 951acaf..7971438 100644 --- a/Readme.md +++ b/Readme.md @@ -31,7 +31,7 @@ The first parameter can be either the path to the png, or a `Bitmap` object. The ### History -### IconLib 0.75 (01/28/2019) +### IconLib 1.0 (01/28/2019) some bugfixes for 64bit windows codeanalysis fixes From f1a4ea742ce2a0e8ddf6a569782dbdf35c7b059c Mon Sep 17 00:00:00 2001 From: harborsiem Date: Mon, 26 Apr 2021 09:02:42 +0200 Subject: [PATCH 11/11] Fix for memory leak in IconImage.Transparent property from Magnus Madsen --- iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs b/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs index 5955850..51ae803 100644 --- a/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs +++ b/iconlib_src/IconLib/System/Drawing/IconLib/IconImage.cs @@ -96,7 +96,11 @@ public Icon Icon public unsafe Bitmap Transparent { - get {return Icon.ToBitmap();} + get + { + using (Icon icon = Icon) + return icon.ToBitmap(); + } } public Bitmap Image