Browse Source

The IconEditor AddIn now can edit icons.

pull/27/merge
Daniel Grunwald 14 years ago
parent
commit
fbf0b6d419
  1. 705
      SharpDevelop.Tests.sln
  2. 37
      SharpDevelop.sln
  3. 38
      src/AddIns/DisplayBindings/IconEditor/AlphaTransparentBitmap.cs
  4. 2
      src/AddIns/DisplayBindings/IconEditor/Configuration/AssemblyInfo.cs
  5. 51
      src/AddIns/DisplayBindings/IconEditor/EditorPanel.Designer.cs
  6. 73
      src/AddIns/DisplayBindings/IconEditor/EditorPanel.cs
  7. 2
      src/AddIns/DisplayBindings/IconEditor/IconDisplayBinding.cs
  8. 10
      src/AddIns/DisplayBindings/IconEditor/IconEditor.addin
  9. 51
      src/AddIns/DisplayBindings/IconEditor/IconEditor.csproj
  10. 16
      src/AddIns/DisplayBindings/IconEditor/IconEditor/AssemblyInfo.cs
  11. 120
      src/AddIns/DisplayBindings/IconEditor/IconEditor/EditorPanel.resx
  12. 78
      src/AddIns/DisplayBindings/IconEditor/IconEditor/IconEditor.csproj
  13. 16
      src/AddIns/DisplayBindings/IconEditor/IconEditor/IconEditor.sln
  14. 53
      src/AddIns/DisplayBindings/IconEditor/IconEditor/IconPanel.Designer.cs
  15. 120
      src/AddIns/DisplayBindings/IconEditor/IconEditor/IconPanel.resx
  16. 130
      src/AddIns/DisplayBindings/IconEditor/IconEditor/MainForm.Designer.cs
  17. 108
      src/AddIns/DisplayBindings/IconEditor/IconEditor/MainForm.cs
  18. 187
      src/AddIns/DisplayBindings/IconEditor/IconEditor/MainForm.resx
  19. 6
      src/AddIns/DisplayBindings/IconEditor/IconEditorAddIn/IconEditorAddIn.sln
  20. 37
      src/AddIns/DisplayBindings/IconEditor/IconEditorAddIn/Src/IconViewContent.cs
  21. 298
      src/AddIns/DisplayBindings/IconEditor/IconEntry.cs
  22. 71
      src/AddIns/DisplayBindings/IconEditor/IconFile.cs
  23. 153
      src/AddIns/DisplayBindings/IconEditor/IconPanel.Designer.cs
  24. 169
      src/AddIns/DisplayBindings/IconEditor/IconPanel.cs
  25. 55
      src/AddIns/DisplayBindings/IconEditor/IconViewContent.cs
  26. 2
      src/AddIns/DisplayBindings/IconEditor/InvalidIconException.cs
  27. 187
      src/AddIns/DisplayBindings/IconEditor/PickFormatDialog.Designer.cs
  28. 45
      src/AddIns/DisplayBindings/IconEditor/PickFormatDialog.cs
  29. 9
      src/Setup/Files.wxs
  30. 3
      src/Setup/Setup.wxs

705
SharpDevelop.Tests.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.2.0.8564-beta
# SharpDevelop 4.3
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -554,20 +554,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\Dis @@ -554,20 +554,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\Dis
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "src\AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
@ -602,6 +588,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "src\Ad @@ -602,6 +588,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "src\Ad
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -807,10 +798,6 @@ Global @@ -807,10 +798,6 @@ Global
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Any CPU.Build.0 = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Any CPU.Build.0 = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -1435,6 +1422,682 @@ Global @@ -1435,6 +1422,682 @@ Global
{3C532D80-32B4-40E5-B5FE-BC6BAE1A00E7}.Release|Win32.ActiveCfg = Release|x86
{3C532D80-32B4-40E5-B5FE-BC6BAE1A00E7}.Release|x86.Build.0 = Release|x86
{3C532D80-32B4-40E5-B5FE-BC6BAE1A00E7}.Release|x86.ActiveCfg = Release|x86
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Win32.Build.0 = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Win32.ActiveCfg = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|x86.Build.0 = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|x86.ActiveCfg = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Win32.Build.0 = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Win32.ActiveCfg = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|x86.Build.0 = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|x86.ActiveCfg = Release|Any CPU
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}.Debug|Win32.Build.0 = Debug|Any CPU
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}.Debug|Win32.ActiveCfg = Debug|Any CPU
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}.Debug|x86.Build.0 = Debug|Any CPU
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}.Debug|x86.ActiveCfg = Debug|Any CPU
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}.Release|Win32.Build.0 = Release|Any CPU
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}.Release|Win32.ActiveCfg = Release|Any CPU
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}.Release|x86.Build.0 = Release|Any CPU
{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}.Release|x86.ActiveCfg = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|Win32.Build.0 = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|Win32.ActiveCfg = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|x86.Build.0 = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Debug|x86.ActiveCfg = Debug|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|Win32.Build.0 = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|Win32.ActiveCfg = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|x86.Build.0 = Release|Any CPU
{CE498514-D12D-4B6E-AE0E-FEC29BD43748}.Release|x86.ActiveCfg = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Win32.Build.0 = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|x86.Build.0 = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Debug|x86.ActiveCfg = Debug|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Win32.Build.0 = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|Win32.ActiveCfg = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|x86.Build.0 = Release|Any CPU
{08CE9972-283B-44F4-82FA-966F7DFA6B7A}.Release|x86.ActiveCfg = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|Win32.Build.0 = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|x86.Build.0 = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Debug|x86.ActiveCfg = Debug|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|Win32.Build.0 = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|Win32.ActiveCfg = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|x86.Build.0 = Release|Any CPU
{3EAA45A9-735C-4AC7-A799-947B93EA449D}.Release|x86.ActiveCfg = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|Win32.Build.0 = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|x86.Build.0 = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Debug|x86.ActiveCfg = Debug|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|Win32.Build.0 = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|Win32.ActiveCfg = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|x86.Build.0 = Release|Any CPU
{1F261725-6318-4434-A1B1-6C70CE4CD324}.Release|x86.ActiveCfg = Release|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Debug|Win32.Build.0 = Debug|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Debug|x86.Build.0 = Debug|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Debug|x86.ActiveCfg = Debug|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Release|Win32.Build.0 = Release|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Release|Win32.ActiveCfg = Release|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Release|x86.Build.0 = Release|Any CPU
{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}.Release|x86.ActiveCfg = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|Win32.Build.0 = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|Win32.ActiveCfg = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|x86.Build.0 = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Debug|x86.ActiveCfg = Debug|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|Win32.Build.0 = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|Win32.ActiveCfg = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|x86.Build.0 = Release|Any CPU
{88DA149F-21B2-48AB-82C4-28FB6BDFD783}.Release|x86.ActiveCfg = Release|Any CPU
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}.Debug|Win32.Build.0 = Debug|Any CPU
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}.Debug|x86.Build.0 = Debug|Any CPU
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}.Debug|x86.ActiveCfg = Debug|Any CPU
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}.Release|Win32.Build.0 = Release|Any CPU
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}.Release|Win32.ActiveCfg = Release|Any CPU
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}.Release|x86.Build.0 = Release|Any CPU
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}.Release|x86.ActiveCfg = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|Win32.Build.0 = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|Win32.ActiveCfg = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|x86.Build.0 = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Debug|x86.ActiveCfg = Debug|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|Win32.Build.0 = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|Win32.ActiveCfg = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|x86.Build.0 = Release|Any CPU
{78CC29AC-CC79-4355-B1F2-97936DF198AC}.Release|x86.ActiveCfg = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|Win32.Build.0 = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|Win32.ActiveCfg = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|x86.Build.0 = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Debug|x86.ActiveCfg = Debug|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|Win32.Build.0 = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|Win32.ActiveCfg = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|x86.Build.0 = Release|Any CPU
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}.Release|x86.ActiveCfg = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|Win32.Build.0 = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|x86.Build.0 = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Debug|x86.ActiveCfg = Debug|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|Win32.Build.0 = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|Win32.ActiveCfg = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|x86.Build.0 = Release|Any CPU
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}.Release|x86.ActiveCfg = Release|Any CPU
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}.Debug|Win32.Build.0 = Debug|Any CPU
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}.Debug|x86.Build.0 = Debug|Any CPU
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}.Debug|x86.ActiveCfg = Debug|Any CPU
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}.Release|Win32.Build.0 = Release|Any CPU
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}.Release|Win32.ActiveCfg = Release|Any CPU
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}.Release|x86.Build.0 = Release|Any CPU
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}.Release|x86.ActiveCfg = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Win32.Build.0 = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|x86.Build.0 = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|x86.ActiveCfg = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|Win32.Build.0 = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|Win32.ActiveCfg = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|x86.Build.0 = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|x86.ActiveCfg = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Win32.Build.0 = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Win32.ActiveCfg = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|x86.Build.0 = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|x86.ActiveCfg = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Win32.Build.0 = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Win32.ActiveCfg = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|x86.Build.0 = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|x86.ActiveCfg = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|Win32.Build.0 = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|x86.Build.0 = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Debug|x86.ActiveCfg = Debug|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|Win32.Build.0 = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|Win32.ActiveCfg = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|x86.Build.0 = Release|Any CPU
{CBC6C247-747B-4908-B09A-4D2E0F640B6B}.Release|x86.ActiveCfg = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|Win32.Build.0 = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|x86.Build.0 = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Debug|x86.ActiveCfg = Debug|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|Win32.Build.0 = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|Win32.ActiveCfg = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|x86.Build.0 = Release|Any CPU
{0162E499-42D0-409B-AA25-EED21F75336B}.Release|x86.ActiveCfg = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|Win32.Build.0 = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|x86.Build.0 = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Debug|x86.ActiveCfg = Debug|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|Win32.Build.0 = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|Win32.ActiveCfg = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|x86.Build.0 = Release|Any CPU
{DCA2703D-250A-463E-A68A-07ED105AE6BD}.Release|x86.ActiveCfg = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|Win32.Build.0 = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|x86.Build.0 = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Debug|x86.ActiveCfg = Debug|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|Win32.Build.0 = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|Win32.ActiveCfg = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|x86.Build.0 = Release|Any CPU
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}.Release|x86.ActiveCfg = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|Win32.Build.0 = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|Win32.ActiveCfg = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|x86.Build.0 = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Debug|x86.ActiveCfg = Debug|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|Win32.Build.0 = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|Win32.ActiveCfg = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|x86.Build.0 = Release|Any CPU
{08F772A1-F0BE-433E-8B37-F6522953DB05}.Release|x86.ActiveCfg = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|Win32.Build.0 = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|x86.Build.0 = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Debug|x86.ActiveCfg = Debug|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|Win32.Build.0 = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|Win32.ActiveCfg = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|x86.Build.0 = Release|Any CPU
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}.Release|x86.ActiveCfg = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|Win32.Build.0 = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|Win32.ActiveCfg = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|x86.Build.0 = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Debug|x86.ActiveCfg = Debug|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|Win32.Build.0 = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|Win32.ActiveCfg = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|x86.Build.0 = Release|Any CPU
{0991423A-DBF6-4C89-B365-A1DF1EB32E42}.Release|x86.ActiveCfg = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|Win32.Build.0 = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|x86.Build.0 = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Debug|x86.ActiveCfg = Debug|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|Win32.Build.0 = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|Win32.ActiveCfg = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|x86.Build.0 = Release|Any CPU
{A9F12710-24E4-46D4-832C-6ECB395B9EAD}.Release|x86.ActiveCfg = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|Win32.Build.0 = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|x86.Build.0 = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Debug|x86.ActiveCfg = Debug|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|Win32.Build.0 = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|Win32.ActiveCfg = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|x86.Build.0 = Release|Any CPU
{B7823AE9-4B43-4859-8796-2EBDC116FBB8}.Release|x86.ActiveCfg = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|Win32.Build.0 = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|x86.Build.0 = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Debug|x86.ActiveCfg = Debug|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|Win32.Build.0 = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|Win32.ActiveCfg = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|x86.Build.0 = Release|Any CPU
{BAD94D6E-4159-4CB6-B991-486F412D9BB6}.Release|x86.ActiveCfg = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|Win32.Build.0 = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|x86.Build.0 = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Debug|x86.ActiveCfg = Debug|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|Win32.Build.0 = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|Win32.ActiveCfg = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|x86.Build.0 = Release|Any CPU
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}.Release|x86.ActiveCfg = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|Win32.Build.0 = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|x86.Build.0 = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Debug|x86.ActiveCfg = Debug|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|Win32.Build.0 = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|Win32.ActiveCfg = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|x86.Build.0 = Release|Any CPU
{EEF5E054-4192-4A57-8FBF-E860D808A51D}.Release|x86.ActiveCfg = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|Win32.Build.0 = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|Win32.ActiveCfg = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|x86.Build.0 = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Debug|x86.ActiveCfg = Debug|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|Win32.Build.0 = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|Win32.ActiveCfg = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|x86.Build.0 = Release|Any CPU
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}.Release|x86.ActiveCfg = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|Win32.Build.0 = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|x86.Build.0 = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Debug|x86.ActiveCfg = Debug|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|Win32.Build.0 = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|Win32.ActiveCfg = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|x86.Build.0 = Release|Any CPU
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}.Release|x86.ActiveCfg = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Win32.Build.0 = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|x86.Build.0 = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|x86.ActiveCfg = Debug|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Win32.Build.0 = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Win32.ActiveCfg = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|x86.Build.0 = Release|Any CPU
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|x86.ActiveCfg = Release|Any CPU
{A569DCC1-C608-45FD-B770-4F79335EF154}.Debug|Win32.Build.0 = Debug|Any CPU
{A569DCC1-C608-45FD-B770-4F79335EF154}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A569DCC1-C608-45FD-B770-4F79335EF154}.Debug|x86.Build.0 = Debug|Any CPU
{A569DCC1-C608-45FD-B770-4F79335EF154}.Debug|x86.ActiveCfg = Debug|Any CPU
{A569DCC1-C608-45FD-B770-4F79335EF154}.Release|Win32.Build.0 = Release|Any CPU
{A569DCC1-C608-45FD-B770-4F79335EF154}.Release|Win32.ActiveCfg = Release|Any CPU
{A569DCC1-C608-45FD-B770-4F79335EF154}.Release|x86.Build.0 = Release|Any CPU
{A569DCC1-C608-45FD-B770-4F79335EF154}.Release|x86.ActiveCfg = Release|Any CPU
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}.Debug|Win32.Build.0 = Debug|Any CPU
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}.Debug|x86.Build.0 = Debug|Any CPU
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}.Debug|x86.ActiveCfg = Debug|Any CPU
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}.Release|Win32.Build.0 = Release|Any CPU
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}.Release|Win32.ActiveCfg = Release|Any CPU
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}.Release|x86.Build.0 = Release|Any CPU
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}.Release|x86.ActiveCfg = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|Win32.Build.0 = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|Win32.ActiveCfg = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|x86.Build.0 = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Debug|x86.ActiveCfg = Debug|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|Win32.Build.0 = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|Win32.ActiveCfg = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|x86.Build.0 = Release|Any CPU
{461606BD-E824-4D0A-8CBA-01810B1F5E02}.Release|x86.ActiveCfg = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|Win32.Build.0 = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|Win32.ActiveCfg = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|x86.Build.0 = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Debug|x86.ActiveCfg = Debug|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|Win32.Build.0 = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|Win32.ActiveCfg = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|x86.Build.0 = Release|Any CPU
{64A3E5E6-90BF-47F6-94DF-68C94B62C817}.Release|x86.ActiveCfg = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|Win32.Build.0 = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|Win32.ActiveCfg = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|x86.Build.0 = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Debug|x86.ActiveCfg = Debug|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|Win32.Build.0 = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|Win32.ActiveCfg = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|x86.Build.0 = Release|Any CPU
{5EEB99CF-EA2B-4733-80A6-CE9192D68170}.Release|x86.ActiveCfg = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|Win32.Build.0 = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|x86.Build.0 = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Debug|x86.ActiveCfg = Debug|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|Win32.Build.0 = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|Win32.ActiveCfg = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|x86.Build.0 = Release|Any CPU
{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}.Release|x86.ActiveCfg = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|Win32.Build.0 = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|x86.Build.0 = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Debug|x86.ActiveCfg = Debug|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|Win32.Build.0 = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|Win32.ActiveCfg = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|x86.Build.0 = Release|Any CPU
{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}.Release|x86.ActiveCfg = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|Win32.Build.0 = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|Win32.ActiveCfg = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|x86.Build.0 = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Debug|x86.ActiveCfg = Debug|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|Win32.Build.0 = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|Win32.ActiveCfg = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|x86.Build.0 = Release|Any CPU
{F93E52FD-DA66-4CE5-A0CB-BCD902811122}.Release|x86.ActiveCfg = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|Win32.Build.0 = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|x86.Build.0 = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Debug|x86.ActiveCfg = Debug|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|Win32.Build.0 = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|Win32.ActiveCfg = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|x86.Build.0 = Release|Any CPU
{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}.Release|x86.ActiveCfg = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Win32.Build.0 = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|x86.Build.0 = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|x86.ActiveCfg = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Win32.Build.0 = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Win32.ActiveCfg = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|x86.Build.0 = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|x86.ActiveCfg = Release|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Debug|x86.Build.0 = Debug|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Debug|x86.ActiveCfg = Debug|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Release|x86.Build.0 = Release|Any CPU
{3CA90546-3B4C-4663-9445-C4E9371750A7}.Release|x86.ActiveCfg = Release|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Debug|Win32.Build.0 = Debug|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Debug|Win32.ActiveCfg = Debug|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Debug|x86.Build.0 = Debug|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Debug|x86.ActiveCfg = Debug|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Release|Win32.Build.0 = Release|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Release|Win32.ActiveCfg = Release|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Release|x86.Build.0 = Release|Any CPU
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}.Release|x86.ActiveCfg = Release|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Debug|Win32.Build.0 = Debug|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Debug|x86.Build.0 = Debug|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Debug|x86.ActiveCfg = Debug|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Release|Win32.Build.0 = Release|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Release|Win32.ActiveCfg = Release|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Release|x86.Build.0 = Release|Any CPU
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}.Release|x86.ActiveCfg = Release|Any CPU
{A4C858C8-51B6-4265-A695-A20FCEBA1D19}.Debug|Win32.Build.0 = Debug|Any CPU
{A4C858C8-51B6-4265-A695-A20FCEBA1D19}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A4C858C8-51B6-4265-A695-A20FCEBA1D19}.Debug|x86.Build.0 = Debug|Any CPU
{A4C858C8-51B6-4265-A695-A20FCEBA1D19}.Debug|x86.ActiveCfg = Debug|Any CPU
{A4C858C8-51B6-4265-A695-A20FCEBA1D19}.Release|Win32.Build.0 = Release|Any CPU
{A4C858C8-51B6-4265-A695-A20FCEBA1D19}.Release|Win32.ActiveCfg = Release|Any CPU
{A4C858C8-51B6-4265-A695-A20FCEBA1D19}.Release|x86.Build.0 = Release|Any CPU
{A4C858C8-51B6-4265-A695-A20FCEBA1D19}.Release|x86.ActiveCfg = Release|Any CPU
{388E7B64-0393-4EB4-A3E3-5C474F141853}.Debug|Win32.Build.0 = Debug|Any CPU
{388E7B64-0393-4EB4-A3E3-5C474F141853}.Debug|Win32.ActiveCfg = Debug|Any CPU
{388E7B64-0393-4EB4-A3E3-5C474F141853}.Debug|x86.Build.0 = Debug|Any CPU
{388E7B64-0393-4EB4-A3E3-5C474F141853}.Debug|x86.ActiveCfg = Debug|Any CPU
{388E7B64-0393-4EB4-A3E3-5C474F141853}.Release|Win32.Build.0 = Release|Any CPU
{388E7B64-0393-4EB4-A3E3-5C474F141853}.Release|Win32.ActiveCfg = Release|Any CPU
{388E7B64-0393-4EB4-A3E3-5C474F141853}.Release|x86.Build.0 = Release|Any CPU
{388E7B64-0393-4EB4-A3E3-5C474F141853}.Release|x86.ActiveCfg = Release|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Debug|Win32.Build.0 = Debug|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Debug|Win32.ActiveCfg = Debug|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Debug|x86.Build.0 = Debug|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Debug|x86.ActiveCfg = Debug|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Release|Win32.Build.0 = Release|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Release|Win32.ActiveCfg = Release|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Release|x86.Build.0 = Release|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Release|x86.ActiveCfg = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|Win32.Build.0 = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|x86.Build.0 = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|x86.ActiveCfg = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|Win32.Build.0 = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|Win32.ActiveCfg = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|x86.Build.0 = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|x86.ActiveCfg = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|Win32.Build.0 = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|Win32.ActiveCfg = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|x86.Build.0 = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Debug|x86.ActiveCfg = Debug|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|Win32.Build.0 = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|Win32.ActiveCfg = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|x86.Build.0 = Release|Any CPU
{BF38FB72-B380-4196-AF8C-95749D726C61}.Release|x86.ActiveCfg = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|Win32.Build.0 = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|x86.Build.0 = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Debug|x86.ActiveCfg = Debug|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|Win32.Build.0 = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|Win32.ActiveCfg = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|x86.Build.0 = Release|Any CPU
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}.Release|x86.ActiveCfg = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|Win32.Build.0 = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|x86.Build.0 = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Debug|x86.ActiveCfg = Debug|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|Win32.Build.0 = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|Win32.ActiveCfg = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|x86.Build.0 = Release|Any CPU
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}.Release|x86.ActiveCfg = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|Win32.Build.0 = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|x86.Build.0 = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Debug|x86.ActiveCfg = Debug|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|Win32.Build.0 = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|Win32.ActiveCfg = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|x86.Build.0 = Release|Any CPU
{8D732610-8FC6-43BA-94C9-7126FD7FE361}.Release|x86.ActiveCfg = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|Win32.Build.0 = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|x86.Build.0 = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Debug|x86.ActiveCfg = Debug|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|Win32.Build.0 = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|Win32.ActiveCfg = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|x86.Build.0 = Release|Any CPU
{D332F2D1-2CF1-43B7-903C-844BD5211A7E}.Release|x86.ActiveCfg = Release|Any CPU
{833904AB-3CD4-4071-9B48-5770E44685AA}.Debug|Win32.Build.0 = Debug|Any CPU
{833904AB-3CD4-4071-9B48-5770E44685AA}.Debug|Win32.ActiveCfg = Debug|Any CPU
{833904AB-3CD4-4071-9B48-5770E44685AA}.Debug|x86.Build.0 = Debug|Any CPU
{833904AB-3CD4-4071-9B48-5770E44685AA}.Debug|x86.ActiveCfg = Debug|Any CPU
{833904AB-3CD4-4071-9B48-5770E44685AA}.Release|Win32.Build.0 = Release|Any CPU
{833904AB-3CD4-4071-9B48-5770E44685AA}.Release|Win32.ActiveCfg = Release|Any CPU
{833904AB-3CD4-4071-9B48-5770E44685AA}.Release|x86.Build.0 = Release|Any CPU
{833904AB-3CD4-4071-9B48-5770E44685AA}.Release|x86.ActiveCfg = Release|Any CPU
{23B517C9-1ECC-4419-A13F-0B7136D085CB}.Debug|Win32.Build.0 = Debug|Any CPU
{23B517C9-1ECC-4419-A13F-0B7136D085CB}.Debug|Win32.ActiveCfg = Debug|Any CPU
{23B517C9-1ECC-4419-A13F-0B7136D085CB}.Debug|x86.Build.0 = Debug|Any CPU
{23B517C9-1ECC-4419-A13F-0B7136D085CB}.Debug|x86.ActiveCfg = Debug|Any CPU
{23B517C9-1ECC-4419-A13F-0B7136D085CB}.Release|Win32.Build.0 = Release|Any CPU
{23B517C9-1ECC-4419-A13F-0B7136D085CB}.Release|Win32.ActiveCfg = Release|Any CPU
{23B517C9-1ECC-4419-A13F-0B7136D085CB}.Release|x86.Build.0 = Release|Any CPU
{23B517C9-1ECC-4419-A13F-0B7136D085CB}.Release|x86.ActiveCfg = Release|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Debug|Win32.Build.0 = Debug|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Debug|Win32.ActiveCfg = Debug|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Debug|x86.Build.0 = Debug|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Debug|x86.ActiveCfg = Debug|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Release|Win32.Build.0 = Release|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Release|Win32.ActiveCfg = Release|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Release|x86.Build.0 = Release|Any CPU
{C9DE556D-325C-4544-B29F-16A9EB7C9830}.Release|x86.ActiveCfg = Release|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Debug|Win32.Build.0 = Debug|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Debug|x86.Build.0 = Debug|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Debug|x86.ActiveCfg = Debug|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|Win32.Build.0 = Release|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|Win32.ActiveCfg = Release|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|x86.Build.0 = Release|Any CPU
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}.Release|x86.ActiveCfg = Release|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Debug|Win32.Build.0 = Debug|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Debug|x86.Build.0 = Debug|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Debug|x86.ActiveCfg = Debug|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Release|Win32.Build.0 = Release|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Release|Win32.ActiveCfg = Release|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Release|x86.Build.0 = Release|Any CPU
{4AC2D5F1-F671-480C-A075-6BF62B3721B2}.Release|x86.ActiveCfg = Release|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Debug|Win32.Build.0 = Debug|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Debug|x86.Build.0 = Debug|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Debug|x86.ActiveCfg = Debug|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Release|Win32.Build.0 = Release|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Release|Win32.ActiveCfg = Release|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Release|x86.Build.0 = Release|Any CPU
{6FA16499-896F-4C02-BB43-1AF5C6C7C713}.Release|x86.ActiveCfg = Release|Any CPU
{50A89267-A28B-4DF3-8E62-912E005143B8}.Debug|Win32.Build.0 = Debug|Any CPU
{50A89267-A28B-4DF3-8E62-912E005143B8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{50A89267-A28B-4DF3-8E62-912E005143B8}.Debug|x86.Build.0 = Debug|Any CPU
{50A89267-A28B-4DF3-8E62-912E005143B8}.Debug|x86.ActiveCfg = Debug|Any CPU
{50A89267-A28B-4DF3-8E62-912E005143B8}.Release|Win32.Build.0 = Release|Any CPU
{50A89267-A28B-4DF3-8E62-912E005143B8}.Release|Win32.ActiveCfg = Release|Any CPU
{50A89267-A28B-4DF3-8E62-912E005143B8}.Release|x86.Build.0 = Release|Any CPU
{50A89267-A28B-4DF3-8E62-912E005143B8}.Release|x86.ActiveCfg = Release|Any CPU
{52006F3F-3156-45DE-89D8-C4813694FBA4}.Debug|Win32.Build.0 = Debug|Any CPU
{52006F3F-3156-45DE-89D8-C4813694FBA4}.Debug|Win32.ActiveCfg = Debug|Any CPU
{52006F3F-3156-45DE-89D8-C4813694FBA4}.Debug|x86.Build.0 = Debug|Any CPU
{52006F3F-3156-45DE-89D8-C4813694FBA4}.Debug|x86.ActiveCfg = Debug|Any CPU
{52006F3F-3156-45DE-89D8-C4813694FBA4}.Release|Win32.Build.0 = Release|Any CPU
{52006F3F-3156-45DE-89D8-C4813694FBA4}.Release|Win32.ActiveCfg = Release|Any CPU
{52006F3F-3156-45DE-89D8-C4813694FBA4}.Release|x86.Build.0 = Release|Any CPU
{52006F3F-3156-45DE-89D8-C4813694FBA4}.Release|x86.ActiveCfg = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|Win32.Build.0 = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|Win32.ActiveCfg = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|x86.Build.0 = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Debug|x86.ActiveCfg = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Win32.Build.0 = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Win32.ActiveCfg = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|x86.Build.0 = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|x86.ActiveCfg = Release|Any CPU
{068F9531-5D29-49E0-980E-59982A3A0469}.Debug|Win32.Build.0 = Debug|Win32
{068F9531-5D29-49E0-980E-59982A3A0469}.Debug|Win32.ActiveCfg = Debug|Win32
{068F9531-5D29-49E0-980E-59982A3A0469}.Debug|x86.Build.0 = Debug|Any CPU
{068F9531-5D29-49E0-980E-59982A3A0469}.Debug|x86.ActiveCfg = Debug|Any CPU
{068F9531-5D29-49E0-980E-59982A3A0469}.Release|Win32.Build.0 = Release|Win32
{068F9531-5D29-49E0-980E-59982A3A0469}.Release|Win32.ActiveCfg = Release|Win32
{068F9531-5D29-49E0-980E-59982A3A0469}.Release|x86.Build.0 = Release|Any CPU
{068F9531-5D29-49E0-980E-59982A3A0469}.Release|x86.ActiveCfg = Release|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Debug|Win32.Build.0 = Debug|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Debug|Win32.ActiveCfg = Debug|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Debug|x86.Build.0 = Debug|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Debug|x86.ActiveCfg = Debug|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Release|Win32.Build.0 = Release|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Release|Win32.ActiveCfg = Release|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Release|x86.Build.0 = Release|Any CPU
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}.Release|x86.ActiveCfg = Release|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Debug|Win32.Build.0 = Debug|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Debug|x86.Build.0 = Debug|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Debug|x86.ActiveCfg = Debug|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Release|Win32.Build.0 = Release|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Release|Win32.ActiveCfg = Release|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Release|x86.Build.0 = Release|Any CPU
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}.Release|x86.ActiveCfg = Release|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Debug|Win32.Build.0 = Debug|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Debug|Win32.ActiveCfg = Debug|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Debug|x86.Build.0 = Debug|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Debug|x86.ActiveCfg = Debug|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Release|Win32.Build.0 = Release|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Release|Win32.ActiveCfg = Release|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Release|x86.Build.0 = Release|Any CPU
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}.Release|x86.ActiveCfg = Release|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Debug|Win32.Build.0 = Debug|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Debug|x86.Build.0 = Debug|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Debug|x86.ActiveCfg = Debug|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Release|Win32.Build.0 = Release|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Release|Win32.ActiveCfg = Release|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Release|x86.Build.0 = Release|Any CPU
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}.Release|x86.ActiveCfg = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Win32.Build.0 = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|x86.Build.0 = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|x86.ActiveCfg = Debug|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Win32.Build.0 = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Win32.ActiveCfg = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|x86.Build.0 = Release|Any CPU
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|x86.ActiveCfg = Release|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|Win32.Build.0 = Debug|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|x86.Build.0 = Debug|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Debug|x86.ActiveCfg = Debug|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|Win32.Build.0 = Release|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|Win32.ActiveCfg = Release|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|x86.Build.0 = Release|Any CPU
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}.Release|x86.ActiveCfg = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|Win32.Build.0 = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|x86.Build.0 = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Debug|x86.ActiveCfg = Debug|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|Win32.Build.0 = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|Win32.ActiveCfg = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|x86.Build.0 = Release|Any CPU
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}.Release|x86.ActiveCfg = Release|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|Win32.Build.0 = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|Win32.ActiveCfg = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|x86.Build.0 = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Debug|x86.ActiveCfg = Debug|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|Win32.Build.0 = Release|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|Win32.ActiveCfg = Release|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|x86.Build.0 = Release|Any CPU
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|x86.ActiveCfg = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Win32.Build.0 = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|Win32.ActiveCfg = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|x86.Build.0 = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Debug|x86.ActiveCfg = Debug|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Win32.Build.0 = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|Win32.ActiveCfg = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|x86.Build.0 = Release|Any CPU
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}.Release|x86.ActiveCfg = Release|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Debug|Win32.Build.0 = Debug|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Debug|Win32.ActiveCfg = Debug|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Debug|x86.Build.0 = Debug|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Debug|x86.ActiveCfg = Debug|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Release|Win32.Build.0 = Release|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Release|Win32.ActiveCfg = Release|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Release|x86.Build.0 = Release|Any CPU
{B22522AA-B5BF-4A58-AC6D-D4B45805521F}.Release|x86.ActiveCfg = Release|Any CPU
{870115DD-960A-4406-A6B9-600BCDC36A03}.Debug|Win32.Build.0 = Debug|Any CPU
{870115DD-960A-4406-A6B9-600BCDC36A03}.Debug|Win32.ActiveCfg = Debug|Any CPU
{870115DD-960A-4406-A6B9-600BCDC36A03}.Debug|x86.Build.0 = Debug|Any CPU
{870115DD-960A-4406-A6B9-600BCDC36A03}.Debug|x86.ActiveCfg = Debug|Any CPU
{870115DD-960A-4406-A6B9-600BCDC36A03}.Release|Win32.Build.0 = Release|Any CPU
{870115DD-960A-4406-A6B9-600BCDC36A03}.Release|Win32.ActiveCfg = Release|Any CPU
{870115DD-960A-4406-A6B9-600BCDC36A03}.Release|x86.Build.0 = Release|Any CPU
{870115DD-960A-4406-A6B9-600BCDC36A03}.Release|x86.ActiveCfg = Release|Any CPU
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}.Debug|Win32.Build.0 = Debug|Any CPU
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}.Debug|x86.Build.0 = Debug|Any CPU
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}.Debug|x86.ActiveCfg = Debug|Any CPU
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}.Release|Win32.Build.0 = Release|Any CPU
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}.Release|Win32.ActiveCfg = Release|Any CPU
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}.Release|x86.Build.0 = Release|Any CPU
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}.Release|x86.ActiveCfg = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|Win32.Build.0 = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|Win32.ActiveCfg = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|x86.Build.0 = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|Win32.Build.0 = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|Win32.ActiveCfg = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|x86.Build.0 = Release|Any CPU
{1152B71B-3C05-4598-B20D-823B5D40559E}.Release|x86.ActiveCfg = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|Win32.Build.0 = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|Win32.ActiveCfg = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|x86.Build.0 = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Debug|x86.ActiveCfg = Debug|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|Win32.Build.0 = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|Win32.ActiveCfg = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|x86.Build.0 = Release|Any CPU
{8035765F-D51F-4A0C-A746-2FD100E19419}.Release|x86.ActiveCfg = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Win32.Build.0 = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|Win32.ActiveCfg = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|x86.Build.0 = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Debug|x86.ActiveCfg = Debug|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Win32.Build.0 = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|Win32.ActiveCfg = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|x86.Build.0 = Release|Any CPU
{2748AD25-9C63-4E12-877B-4DCE96FBED54}.Release|x86.ActiveCfg = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|Win32.Build.0 = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|Win32.ActiveCfg = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|x86.Build.0 = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Debug|x86.ActiveCfg = Debug|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|Win32.Build.0 = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|Win32.ActiveCfg = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|x86.Build.0 = Release|Any CPU
{80318B5F-A25D-45AB-8A95-EF31D2370A4C}.Release|x86.ActiveCfg = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Win32.Build.0 = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|Win32.ActiveCfg = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|x86.Build.0 = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Debug|x86.ActiveCfg = Debug|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Win32.Build.0 = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|Win32.ActiveCfg = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|x86.Build.0 = Release|Any CPU
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}.Release|x86.ActiveCfg = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|Win32.Build.0 = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|Win32.ActiveCfg = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|x86.Build.0 = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Debug|x86.ActiveCfg = Debug|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|Win32.Build.0 = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|Win32.ActiveCfg = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|x86.Build.0 = Release|Any CPU
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}.Release|x86.ActiveCfg = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|Win32.Build.0 = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|x86.Build.0 = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Debug|x86.ActiveCfg = Debug|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|Win32.Build.0 = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|Win32.ActiveCfg = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|x86.Build.0 = Release|Any CPU
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}.Release|x86.ActiveCfg = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Win32.Build.0 = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|Win32.ActiveCfg = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|x86.Build.0 = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Debug|x86.ActiveCfg = Debug|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Win32.Build.0 = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|Win32.ActiveCfg = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|x86.Build.0 = Release|Any CPU
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}.Release|x86.ActiveCfg = Release|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|Win32.Build.0 = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|Win32.ActiveCfg = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|x86.Build.0 = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Debug|x86.ActiveCfg = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|Win32.Build.0 = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|Win32.ActiveCfg = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|x86.Build.0 = Debug|Any CPU
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}.Release|x86.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|Win32.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|x86.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Debug|x86.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|Win32.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|Win32.ActiveCfg = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|x86.Build.0 = Debug|Any CPU
{4980B743-B32F-4aba-AABD-45E2CAD3568D}.Release|x86.ActiveCfg = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Debug|Win32.Build.0 = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Debug|x86.Build.0 = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Debug|x86.ActiveCfg = Debug|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Release|Win32.Build.0 = Release|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Release|Win32.ActiveCfg = Release|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Release|x86.Build.0 = Release|Any CPU
{7DB80259-24D4-46C3-A024-53FF1987733D}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -1548,9 +2211,9 @@ Global @@ -1548,9 +2211,9 @@ Global
{0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0773ED53-08E2-4495-A3BE-CA0B5D413C15} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{6022AC51-B658-4C54-97EF-79187AC65B47} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{53DCA265-3C3C-42F9-B647-F72BA678122B} = {AD8272AC-5C9E-4061-90FB-CEF15A9A3F41}
{3B2A5653-EC97-4001-BB9B-D90F1AF2C371} = {AD8272AC-5C9E-4061-90FB-CEF15A9A3F41}
{984CC812-9470-4A13-AFF9-CC44068D666C} = {AD8272AC-5C9E-4061-90FB-CEF15A9A3F41}
@ -1564,8 +2227,6 @@ Global @@ -1564,8 +2227,6 @@ Global
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {6022AC51-B658-4C54-97EF-79187AC65B47}

37
SharpDevelop.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.2.0.8783
# SharpDevelop 4.3
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -430,20 +430,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\Dis @@ -430,20 +430,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\Dis
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{6022AC51-B658-4C54-97EF-79187AC65B47}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -483,6 +469,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILSpyAddIn", "src\AddIns\Di @@ -483,6 +469,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILSpyAddIn", "src\AddIns\Di
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory.CSharp", "src\Libraries\NewNRefactory\ICSharpCode.NRefactory.CSharp\ICSharpCode.NRefactory.CSharp.csproj", "{53DCA265-3C3C-42F9-B647-F72BA678122B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -675,10 +666,6 @@ Global @@ -675,10 +666,6 @@ Global
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Release|Any CPU.Build.0 = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Any CPU.Build.0 = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -1179,14 +1166,6 @@ Global @@ -1179,14 +1166,6 @@ Global
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|Win32.ActiveCfg = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|x86.Build.0 = Release|Any CPU
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}.Release|x86.ActiveCfg = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Win32.Build.0 = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Win32.ActiveCfg = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|x86.Build.0 = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|x86.ActiveCfg = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Win32.Build.0 = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Win32.ActiveCfg = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|x86.Build.0 = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|x86.ActiveCfg = Release|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Win32.Build.0 = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|Win32.ActiveCfg = Debug|Any CPU
{E618A9CD-A39F-4925-A538-E8A3FEF24E54}.Debug|x86.Build.0 = Debug|Any CPU
@ -1727,9 +1706,9 @@ Global @@ -1727,9 +1706,9 @@ Global
{0162E499-42D0-409B-AA25-EED21F75336B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{0773ED53-08E2-4495-A3BE-CA0B5D413C15} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{6022AC51-B658-4C54-97EF-79187AC65B47} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{814DFF39-5324-40BE-90EA-F62F758660B3} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{EEF5E054-4192-4A57-8FBF-E860D808A51D} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
@ -1739,8 +1718,6 @@ Global @@ -1739,8 +1718,6 @@ Global
{0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{08F772A1-F0BE-433E-8B37-F6522953DB05} = {BFA3BF26-33BD-4A65-B84D-C7F30D131668}
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0773ED53-08E2-4495-A3BE-CA0B5D413C15}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {6022AC51-B658-4C54-97EF-79187AC65B47}

38
src/AddIns/DisplayBindings/IconEditor/IconEditor/AlphaTransparentBitmap.cs → src/AddIns/DisplayBindings/IconEditor/AlphaTransparentBitmap.cs

@ -6,7 +6,7 @@ using System.Drawing; @@ -6,7 +6,7 @@ using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace IconEditor
namespace ICSharpCode.IconEditor
{
/// <summary>
/// .NET does not support alpha-transparent .bmp files.
@ -76,5 +76,41 @@ namespace IconEditor @@ -76,5 +76,41 @@ namespace IconEditor
return bmp;
}
}
public unsafe static Bitmap ConvertToAlphaTransparentBitmap(Bitmap andMask, Bitmap xorMask)
{
if (andMask == null || xorMask == null)
return null;
int width = xorMask.Width;
int height = xorMask.Height;
if (andMask.Width != width || andMask.Height != height)
throw new ArgumentException();
Bitmap bmp = new Bitmap(xorMask, width, height);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
try {
if (bmpData.Stride != width * 4)
throw new InvalidOperationException("expected 32bit bitmapdata");
BitmapData maskData = andMask.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadOnly, PixelFormat.Format1bppIndexed);
try {
uint* bmpPtr = (uint*)bmpData.Scan0.ToPointer();
byte* maskPtr = (byte*)maskData.Scan0.ToPointer();
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (((maskPtr[x >> 3] << (x & 7)) & 0x80) != 0) {
// white in the mask -> survives AND -> transparent
bmpPtr[x] = 0;
}
}
bmpPtr += width;
maskPtr += maskData.Stride;
}
} finally {
andMask.UnlockBits(maskData);
}
} finally {
bmp.UnlockBits(bmpData);
}
return bmp;
}
}
}

2
src/AddIns/DisplayBindings/IconEditor/IconEditorAddIn/Configuration/AssemblyInfo.cs → src/AddIns/DisplayBindings/IconEditor/Configuration/AssemblyInfo.cs

@ -9,7 +9,7 @@ using System.Reflection; @@ -9,7 +9,7 @@ using System.Reflection;
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("IconEditorAddIn")]
[assembly: AssemblyTitle("IconEditor")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")]

51
src/AddIns/DisplayBindings/IconEditor/IconEditor/EditorPanel.Designer.cs → src/AddIns/DisplayBindings/IconEditor/EditorPanel.Designer.cs generated

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
namespace IconEditor
namespace ICSharpCode.IconEditor
{
partial class EditorPanel : System.Windows.Forms.UserControl
{
@ -32,25 +32,49 @@ namespace IconEditor @@ -32,25 +32,49 @@ namespace IconEditor
private void InitializeComponent()
{
this.panel2 = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
this.addFormatButton = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.colorComboBox = new System.Windows.Forms.ComboBox();
this.table = new System.Windows.Forms.TableLayoutPanel();
this.tableLabel = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.panel2.SuspendLayout();
this.table.SuspendLayout();
this.SuspendLayout();
//
// panel2
//
this.panel2.Controls.Add(this.label2);
this.panel2.Controls.Add(this.addFormatButton);
this.panel2.Controls.Add(this.label1);
this.panel2.Controls.Add(this.colorComboBox);
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(0, 0);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(297, 30);
this.panel2.Size = new System.Drawing.Size(422, 50);
this.panel2.TabIndex = 4;
//
// label2
//
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label2.Location = new System.Drawing.Point(3, 29);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(416, 18);
this.label2.TabIndex = 3;
this.label2.Text = "Right-click on the individual images to see more options.";
//
// addFormatButton
//
this.addFormatButton.Location = new System.Drawing.Point(171, 3);
this.addFormatButton.Name = "addFormatButton";
this.addFormatButton.Size = new System.Drawing.Size(131, 23);
this.addFormatButton.TabIndex = 2;
this.addFormatButton.Text = "Add Custom Format...";
this.addFormatButton.UseVisualStyleBackColor = true;
this.addFormatButton.Click += new System.EventHandler(this.AddFormatButtonClick);
//
// label1
//
this.label1.Location = new System.Drawing.Point(3, 3);
@ -67,7 +91,7 @@ namespace IconEditor @@ -67,7 +91,7 @@ namespace IconEditor
this.colorComboBox.FormattingEnabled = true;
this.colorComboBox.Location = new System.Drawing.Point(108, 3);
this.colorComboBox.Name = "colorComboBox";
this.colorComboBox.Size = new System.Drawing.Size(46, 24);
this.colorComboBox.Size = new System.Drawing.Size(46, 21);
this.colorComboBox.TabIndex = 0;
this.colorComboBox.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ColorComboBoxDrawItem);
this.colorComboBox.SelectedIndexChanged += new System.EventHandler(this.ColorComboBoxSelectedIndexChanged);
@ -80,11 +104,11 @@ namespace IconEditor @@ -80,11 +104,11 @@ namespace IconEditor
this.table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.table.Controls.Add(this.tableLabel, 0, 0);
this.table.Dock = System.Windows.Forms.DockStyle.Fill;
this.table.Location = new System.Drawing.Point(0, 30);
this.table.Location = new System.Drawing.Point(0, 50);
this.table.Name = "table";
this.table.RowCount = 1;
this.table.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.table.Size = new System.Drawing.Size(297, 200);
this.table.Size = new System.Drawing.Size(422, 212);
this.table.TabIndex = 5;
//
// tableLabel
@ -96,28 +120,19 @@ namespace IconEditor @@ -96,28 +120,19 @@ namespace IconEditor
this.tableLabel.Text = "Icon Editor";
this.tableLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// panel1
//
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel1.Location = new System.Drawing.Point(0, 230);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(297, 32);
this.panel1.TabIndex = 6;
this.panel1.Visible = false;
//
// EditorPanel
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.Controls.Add(this.table);
this.Controls.Add(this.panel1);
this.Controls.Add(this.panel2);
this.Name = "EditorPanel";
this.Size = new System.Drawing.Size(297, 262);
this.Size = new System.Drawing.Size(422, 262);
this.panel2.ResumeLayout(false);
this.table.ResumeLayout(false);
this.ResumeLayout(false);
}
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button addFormatButton;
private System.Windows.Forms.Label tableLabel;
private System.Windows.Forms.TableLayoutPanel table;
private System.Windows.Forms.ComboBox colorComboBox;

73
src/AddIns/DisplayBindings/IconEditor/IconEditor/EditorPanel.cs → src/AddIns/DisplayBindings/IconEditor/EditorPanel.cs

@ -4,9 +4,14 @@ @@ -4,9 +4,14 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace IconEditor
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.IconEditor
{
/// <summary>
/// Description of EditorPanel.
@ -39,6 +44,11 @@ namespace IconEditor @@ -39,6 +44,11 @@ namespace IconEditor
activeIconFile.Save(fileName);
}
public void SaveIcon(Stream stream)
{
activeIconFile.Save(stream);
}
public void ShowFile(IconFile f)
{
this.activeIconFile = f;
@ -53,7 +63,7 @@ namespace IconEditor @@ -53,7 +63,7 @@ namespace IconEditor
table.ColumnCount = 1;
table.RowCount = 1;
table.Controls.Add(tableLabel, 0, 0);
availableSizes = f.AvailableSizes;
availableSizes = f.AvailableSizes.ToList();
foreach (Size size in availableSizes) {
table.RowCount += 1;
table.RowStyles.Add(new RowStyle(SizeType.AutoSize));
@ -63,13 +73,13 @@ namespace IconEditor @@ -63,13 +73,13 @@ namespace IconEditor
lbl.Anchor = AnchorStyles.Right;
table.Controls.Add(lbl, 0, table.RowCount - 1);
}
availableColorDepths = f.AvailableColorDepths;
availableColorDepths = f.AvailableColorDepths.ToList();
foreach (int colorDepth in availableColorDepths) {
table.ColumnCount += 1;
table.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
Label lbl = new Label();
lbl.TextAlign = ContentAlignment.MiddleRight;
lbl.Text = colorDepth + "bit";
lbl.Text = colorDepth + " bit";
lbl.Anchor = AnchorStyles.Bottom;
lbl.AutoSize = true;
table.Controls.Add(lbl, table.ColumnCount - 1, 0);
@ -81,6 +91,7 @@ namespace IconEditor @@ -81,6 +91,7 @@ namespace IconEditor
for (int row = 1; row < table.RowCount - 1; row++) {
iconPanels[column-1,row-1] = new IconPanel(availableSizes[row-1], availableColorDepths[column-1]);
iconPanels[column-1,row-1].Anchor = AnchorStyles.None;
iconPanels[column-1,row-1].BackColor = backgroundColors[colorComboBox.SelectedIndex];
table.Controls.Add(iconPanels[column-1,row-1], column, row);
}
}
@ -88,7 +99,11 @@ namespace IconEditor @@ -88,7 +99,11 @@ namespace IconEditor
int row = availableSizes.IndexOf(e.Size);
int column = availableColorDepths.IndexOf(e.ColorDepth);
iconPanels[column, row].Entry = e;
iconPanels[column, row].BackColor = backgroundColors[colorComboBox.SelectedIndex];
}
for (int column = 1; column < table.ColumnCount - 1; column++) {
for (int row = 1; row < table.RowCount - 1; row++) {
iconPanels[column-1, row-1].EntryChanged += EditorPanel_EntryChanged;
}
}
// Work around Windows.Forms bug (scrollbars don't update correctly):
table.Size = new Size(3000, 3000);
@ -96,7 +111,23 @@ namespace IconEditor @@ -96,7 +111,23 @@ namespace IconEditor
table.Visible = true;
}
Color[] backgroundColors = {SystemColors.Control, SystemColors.Window, SystemColors.Desktop, SystemColors.ControlText};
void EditorPanel_EntryChanged(object sender, EventArgs e)
{
var panel = (IconPanel)sender;
if (panel.Entry == null) {
activeIconFile.RemoveEntry(panel.IconSize.Width, panel.IconSize.Height, panel.ColorDepth);
// recreate UI in case we removed the last icon of a format
ShowFile(activeIconFile);
} else {
activeIconFile.AddEntry(panel.Entry);
}
if (IconWasEdited != null)
IconWasEdited(this, e);
}
public event EventHandler IconWasEdited;
Color[] backgroundColors = { SystemColors.Control, Color.Black, Color.White, Color.Teal, Color.DeepSkyBlue, Color.Red, Color.Magenta };
void ColorComboBoxDrawItem(object sender, DrawItemEventArgs e)
{
@ -115,5 +146,35 @@ namespace IconEditor @@ -115,5 +146,35 @@ namespace IconEditor
}
}
}
void AddFormatButtonClick(object sender, EventArgs e)
{
if (activeIconFile == null)
return;
using (PickFormatDialog dlg = new PickFormatDialog()) {
if (dlg.ShowDialog() == DialogResult.OK) {
int width = dlg.IconWidth;
int height = dlg.IconHeight;
int colorDepth = dlg.ColorDepth;
var sameSizeEntries = activeIconFile.Icons.Where(entry => entry.Width == width && entry.Height == height);
if (sameSizeEntries.Any(entry => entry.ColorDepth == colorDepth)) {
MessageService.ShowMessage("This icon already contains an image with the specified format.", "Icon Editor");
return;
}
IconEntry sourceEntry = sameSizeEntries.OrderByDescending(entry => entry.ColorDepth).FirstOrDefault();
if (sourceEntry == null) {
sourceEntry = (from entry in activeIconFile.Icons
orderby entry.Width descending, entry.Height descending, entry.ColorDepth descending
select entry).FirstOrDefault();
}
// sourceEntry can still be null if the icon is completely empty
Bitmap sourceBitmap = sourceEntry != null ? sourceEntry.ExportArgbBitmap() : new Bitmap(width, height);
activeIconFile.AddEntry(new IconEntry(width, height, colorDepth, sourceBitmap));
if (IconWasEdited != null)
IconWasEdited(this, e);
ShowFile(activeIconFile);
}
}
}
}
}

2
src/AddIns/DisplayBindings/IconEditor/IconEditorAddIn/Src/IconDisplayBinding.cs → src/AddIns/DisplayBindings/IconEditor/IconDisplayBinding.cs

@ -5,7 +5,7 @@ using System; @@ -5,7 +5,7 @@ using System;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.IconEditorAddIn
namespace ICSharpCode.IconEditor
{
public class IconDisplayBinding : IDisplayBinding
{

10
src/AddIns/DisplayBindings/IconEditor/IconEditorAddIn/IconEditorAddIn.addin → src/AddIns/DisplayBindings/IconEditor/IconEditor.addin

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
<AddIn name = "IconViewerAddIn"
<AddIn name = "Icon Editor"
author = "Daniel Grunwald"
copyright = "prj:///doc/copyright.txt"
description = "Allows viewing .ico files inside SharpDevelop"
description = "Allows editing .ico files inside SharpDevelop"
addInManagerHidden = "preinstalled">
<Manifest>
@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
</Manifest>
<Runtime>
<Import assembly = "ICSharpCode.IconEditorAddIn.dll"/>
<Import assembly = "ICSharpCode.IconEditor.dll"/>
</Runtime>
<Path name = "/SharpDevelop/Workbench/FileFilter">
@ -21,9 +21,9 @@ @@ -21,9 +21,9 @@
<Path name = "/SharpDevelop/Workbench/DisplayBindings">
<DisplayBinding id = "IconEditor"
class = "ICSharpCode.IconEditorAddIn.IconDisplayBinding"
class = "ICSharpCode.IconEditor.IconDisplayBinding"
insertbefore = "Text"
fileNamePattern = "\.(ico)$"
fileNamePattern = "\.(ico|cur)$"
title = "${res:Gui.ProjectBrowser.OpenWith.Bindings.IconEditor}"/>
</Path>
</AddIn>

51
src/AddIns/DisplayBindings/IconEditor/IconEditorAddIn/IconEditorAddIn.csproj → src/AddIns/DisplayBindings/IconEditor/IconEditor.csproj

@ -2,13 +2,13 @@ @@ -2,13 +2,13 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>ICSharpCode.IconEditorAddIn</RootNamespace>
<AssemblyName>ICSharpCode.IconEditorAddIn</AssemblyName>
<RootNamespace>ICSharpCode.IconEditor</RootNamespace>
<AssemblyName>ICSharpCode.IconEditor</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}</ProjectGuid>
<OutputPath>..\..\..\..\..\AddIns\DisplayBindings\IconEditor\</OutputPath>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<OutputPath>..\..\..\..\AddIns\DisplayBindings\IconEditor\</OutputPath>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
@ -18,8 +18,6 @@ @@ -18,8 +18,6 @@
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
@ -30,43 +28,56 @@ @@ -30,43 +28,56 @@
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
<IntermediateOutputPath>obj\Release\</IntermediateOutputPath>
<Optimize>True</Optimize>
<DefineConstants>TRACE</DefineConstants>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<DebugSymbols>false</DebugSymbols>
<DebugType>PdbOnly</DebugType>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<None Include="IconEditorAddIn.addin">
<Compile Include="IconFile.cs" />
<Compile Include="IconEntry.cs" />
<Compile Include="InvalidIconException.cs" />
<Compile Include="IconPanel.Designer.cs">
<DependentUpon>IconPanel.cs</DependentUpon>
</Compile>
<Compile Include="IconPanel.cs" />
<Compile Include="PickFormatDialog.cs" />
<Compile Include="PickFormatDialog.Designer.cs">
<DependentUpon>PickFormatDialog.cs</DependentUpon>
</Compile>
<Compile Include="AlphaTransparentBitmap.cs" />
<Compile Include="EditorPanel.Designer.cs">
<DependentUpon>EditorPanel.cs</DependentUpon>
</Compile>
<Compile Include="EditorPanel.cs" />
<None Include="IconEditor.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<Compile Include="Configuration\AssemblyInfo.cs" />
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Compile Include="..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\IconDisplayBinding.cs" />
<Compile Include="Src\IconViewContent.cs" />
<Compile Include="IconDisplayBinding.cs" />
<Compile Include="IconViewContent.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\IconEditor\IconEditor.csproj">
<Project>{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}</Project>
<Name>IconEditor</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<ProjectReference Include="..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<ProjectReference Include="..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
<Name>ICSharpCode.Core</Name>
<Private>False</Private>

16
src/AddIns/DisplayBindings/IconEditor/IconEditor/AssemblyInfo.cs

@ -1,16 +0,0 @@ @@ -1,16 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System.Reflection;
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle("IconEditor")]
[assembly: AssemblyDescription("IconEditor with support for Windows Vista icons")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

120
src/AddIns/DisplayBindings/IconEditor/IconEditor/EditorPanel.resx

@ -1,120 +0,0 @@ @@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

78
src/AddIns/DisplayBindings/IconEditor/IconEditor/IconEditor.csproj

@ -1,78 +0,0 @@ @@ -1,78 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<RootNamespace>IconEditor</RootNamespace>
<AssemblyName>IconEditor</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}</ProjectGuid>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>134742016</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<RunPostBuildEvent>Always</RunPostBuildEvent>
<OutputPath>..\..\..\..\..\AddIns\DisplayBindings\IconEditor\</OutputPath>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
<Optimize>False</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
<IntermediateOutputPath>obj\Release\</IntermediateOutputPath>
<Optimize>True</Optimize>
<DefineConstants>TRACE</DefineConstants>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainForm.cs" />
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="IconFile.cs" />
<Compile Include="IconEntry.cs" />
<Compile Include="InvalidIconException.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<Compile Include="IconPanel.Designer.cs">
<DependentUpon>IconPanel.cs</DependentUpon>
</Compile>
<Compile Include="IconPanel.cs" />
<EmbeddedResource Include="IconPanel.resx">
<DependentUpon>IconPanel.cs</DependentUpon>
</EmbeddedResource>
<Compile Include="AlphaTransparentBitmap.cs" />
<Compile Include="EditorPanel.Designer.cs">
<DependentUpon>EditorPanel.cs</DependentUpon>
</Compile>
<Compile Include="EditorPanel.cs" />
<EmbeddedResource Include="EditorPanel.resx">
<DependentUpon>EditorPanel.cs</DependentUpon>
</EmbeddedResource>
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>GlobalAssemblyInfo.cs</Link>
</Compile>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

16
src/AddIns/DisplayBindings/IconEditor/IconEditor/IconEditor.sln

@ -1,16 +0,0 @@ @@ -1,16 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.1.0.1626
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Any CPU.Build.0 = Release|Any CPU
{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
EndGlobal

53
src/AddIns/DisplayBindings/IconEditor/IconEditor/IconPanel.Designer.cs generated

@ -1,53 +0,0 @@ @@ -1,53 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
namespace IconEditor
{
partial class IconPanel : System.Windows.Forms.UserControl
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the control.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
this.Entry = null; // dispose temp. bitmaps
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// IconPanel
//
this.AllowDrop = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.Name = "IconPanel";
this.Size = new System.Drawing.Size(173, 171);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.IconPanelMouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.IconPanelMouseMove);
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.IconPanelDragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.IconPanelDragEnter);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.IconPanelPaint);
this.ResumeLayout(false);
}
}
}

120
src/AddIns/DisplayBindings/IconEditor/IconEditor/IconPanel.resx

@ -1,120 +0,0 @@ @@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

130
src/AddIns/DisplayBindings/IconEditor/IconEditor/MainForm.Designer.cs generated

@ -1,130 +0,0 @@ @@ -1,130 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
namespace IconEditor
{
partial class MainForm : System.Windows.Forms.Form
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.newToolStripButton = new System.Windows.Forms.ToolStripButton();
this.openToolStripButton = new System.Windows.Forms.ToolStripButton();
this.saveToolStripButton = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
this.helpToolStripButton = new System.Windows.Forms.ToolStripButton();
this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
this.toolStrip1.SuspendLayout();
this.SuspendLayout();
//
// toolStrip1
//
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newToolStripButton,
this.openToolStripButton,
this.saveToolStripButton,
this.toolStripSeparator,
this.helpToolStripButton});
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(331, 25);
this.toolStrip1.TabIndex = 1;
this.toolStrip1.Text = "toolStrip1";
//
// newToolStripButton
//
this.newToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.newToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("newToolStripButton.Image")));
this.newToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this.newToolStripButton.Name = "newToolStripButton";
this.newToolStripButton.Size = new System.Drawing.Size(23, 22);
this.newToolStripButton.Text = "&New";
this.newToolStripButton.Click += new System.EventHandler(this.NewToolStripButtonClick);
//
// openToolStripButton
//
this.openToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.openToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("openToolStripButton.Image")));
this.openToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this.openToolStripButton.Name = "openToolStripButton";
this.openToolStripButton.Size = new System.Drawing.Size(23, 22);
this.openToolStripButton.Text = "&Open";
this.openToolStripButton.Click += new System.EventHandler(this.OpenToolStripButtonClick);
//
// saveToolStripButton
//
this.saveToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.saveToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripButton.Image")));
this.saveToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this.saveToolStripButton.Name = "saveToolStripButton";
this.saveToolStripButton.Size = new System.Drawing.Size(23, 22);
this.saveToolStripButton.Text = "&Save";
this.saveToolStripButton.Click += new System.EventHandler(this.SaveToolStripButtonClick);
//
// toolStripSeparator
//
this.toolStripSeparator.Name = "toolStripSeparator";
this.toolStripSeparator.Size = new System.Drawing.Size(6, 25);
//
// helpToolStripButton
//
this.helpToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.helpToolStripButton.Image = ((System.Drawing.Image)(resources.GetObject("helpToolStripButton.Image")));
this.helpToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this.helpToolStripButton.Name = "helpToolStripButton";
this.helpToolStripButton.Size = new System.Drawing.Size(23, 22);
this.helpToolStripButton.Text = "He&lp";
this.helpToolStripButton.Click += new System.EventHandler(this.HelpToolStripButtonClick);
//
// openFileDialog
//
this.openFileDialog.FileName = "openFileDialog1";
this.openFileDialog.Filter = "Icon files|*.ico|Cursor files|*.cur|All files|*.*";
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(331, 305);
this.Controls.Add(this.toolStrip1);
this.Name = "MainForm";
this.Text = "IconEditor";
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
private System.Windows.Forms.OpenFileDialog openFileDialog;
private System.Windows.Forms.ToolStripButton helpToolStripButton;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator;
private System.Windows.Forms.ToolStripButton saveToolStripButton;
private System.Windows.Forms.ToolStripButton openToolStripButton;
private System.Windows.Forms.ToolStripButton newToolStripButton;
private System.Windows.Forms.ToolStrip toolStrip1;
}
}

108
src/AddIns/DisplayBindings/IconEditor/IconEditor/MainForm.cs

@ -1,108 +0,0 @@ @@ -1,108 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
namespace IconEditor
{
public partial class MainForm
{
[STAThread]
public static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//ScanIcons(new DirectoryInfo(@"d:\net\icons"));
Application.Run(new MainForm());
}
// scan for invalid or special icons
static void ScanIcons(DirectoryInfo dir)
{
foreach (DirectoryInfo subdir in dir.GetDirectories()) {
ScanIcons(subdir);
}
foreach (FileInfo file in dir.GetFiles("*.ico")) {
try {
IconFile f = new IconFile(file.OpenRead());
if (f.AvailableColorDepths.Contains(24)) {
Debug.WriteLine(file.FullName + " - 24");
}
} catch (InvalidIconException ex) {
Debug.WriteLine(file.FullName + " - " + ex.Message);
}
}
}
static void Save(string fileName, Stream data)
{
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) {
byte[] buffer = new byte[4096];
int c;
do {
c = data.Read(buffer, 0, buffer.Length);
if (c != 0)
fs.Write(buffer, 0, c);
} while (c != 0);
}
}
EditorPanel pnl = new EditorPanel();
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
pnl.Dock = DockStyle.Fill;
Controls.Add(pnl);
Controls.SetChildIndex(pnl, 0);
//IconFile f = new IconFile(@"D:\net\icons\WinXP\Internet.ico");
//IconFile f = new IconFile(@"c:\temp\example-vista-icon-2.ico");
//IconFile f = new IconFile(@"D:\NET\Icons\exit.ico");
//pnl.ShowFile(f);
}
void HelpToolStripButtonClick(object sender, System.EventArgs e)
{
MessageBox.Show(@"SharpDevelop IconEditor:
(C) Daniel Grunwald, 2006
Contact me: daniel@danielgrunwald.de", "IconEditor");
}
string fileName;
void NewToolStripButtonClick(object sender, System.EventArgs e)
{
fileName = null;
pnl.ShowFile(new IconFile());
}
void OpenToolStripButtonClick(object sender, System.EventArgs e)
{
if (openFileDialog.ShowDialog() == DialogResult.OK) {
try {
pnl.ShowFile(new IconFile(openFileDialog.FileName));
fileName = openFileDialog.FileName;
} catch (InvalidIconException ex) {
MessageBox.Show("Invalid icon file: " + ex.Message);
} catch (IOException ex) {
MessageBox.Show("Error opening icon file: " + ex.Message);
}
}
}
void SaveToolStripButtonClick(object sender, EventArgs e)
{
MessageBox.Show("not implemented");
//pnl.SaveIcon(@"c:\temp\save.ico");
}
}
}

187
src/AddIns/DisplayBindings/IconEditor/IconEditor/MainForm.resx

@ -1,187 +0,0 @@ @@ -1,187 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="newToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAQ9JREFUOE+t09lq
wkAUBmBfyr5DfY32jaReSOmFCyKCgkKLFrVUBZeKiEbshqRuaNw1xiXmLxMJBJ0Zc+GBw9zMfDPnHMZm
u1ZE35s4zXCqjmC8Al+sgHLjD9y7yGFWPIbecOO45yORtMAEHnxxJHL1IyKI9JeEXqtMwOl50Q8bSS0l
8PzBBPbqAQQxICrgjeapgKZpkJUdBmNZB+y3d/QSnsIZKrDdqZjMFYj9OR9wB1NngHrQsJC36EkrfIkT
PuDyJ84AZbOHNF2j1Z2h9i3xAVKfOUjjZssN2oMFmq0xSkLfOmBu3E97iurnENlKxzpgbpzwO0Kh1kOy
KFoDjHmzVuYYjRmTDZfyWh9Yd/4B2Mz2w1z7EGUAAAAASUVORK5CYII=
</value>
</data>
<data name="openToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlpJREFUOE+tk21I
k1EYhif0oyA0sqIQCix/+GcQFFH9CCmiUBTLLEjShJofVBgL2fxoU9Pp5ubUlS5rU9f8rCyjsA+pUCRC
TR1ppmVFUSlmhq78unrnQF1KGHTg/nEOz30993PO+7qJFrmUeiv2n+Mij+XLRLLYULdF2pxlEVIDcw0p
AsyxD5fmI/rQ94pqi26eOlsfuZj+7BgSm01QdA4ih7m73Yx9qGpavwatjPebqCzOprPt8YKQgzFagqL0
BEjyEFWVaBkdLHMxT34uYNwWR9nVTEoL0zHlp2DMSeaSRk6eKt4VWm5WM/rVPNN5SjDTLQebZEHNA1wr
UvHjk3E6tsNcV62e1r3KLGqtKm6WplNpSsVqVFJsOM8VfSKFWjkGtcyZptSYzvC7XByx3zQoqCnTMvlG
CX1prnornPUmQJcUXsbSVhGK5bIOkcmQyveeTHiv4VZ5Nk33Nc6iuSO8CIfmECYa/bE/8ON1iRipJNh5
F0V6Bd86lfQ1JlFj1TDVq4COKCegLVIwHmGiKRB7/V6G7+5koHozymgfYRy5E1CgTWKgXcZ1i5qWp0KS
rjgBcAJawph6FszYk/2M1O1isGYLX8p9ab6wgqP+3rMvYciS01GfzA1LFvQkQ6sQ9/khxhoCGHnox1Dt
NvorxXw0b8Km8UQh2cip6GOzgNyMeKqKM7HdjqFZJ5pRk2YJ9aql3EnxoCJxNaZ4Ly6e3UDY3O6OEXRp
59ApTpIhiyDh9GHORAZyPHQPB/ZtZ/cOMVvFPvh6e7F+3SrWrHRnraf7Xz/xf/rJ/kvxb84I3U1y+9/W
AAAAAElFTkSuQmCC
</value>
</data>
<data name="saveToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAixJREFUOE+tk91L
k3EUx/cvdN9N0EW3NTWGa7EaPOUcyqphWBG9PZEv5dJlmqhYmUYtXyBb4dJJy+kknFT4BqZIjaFMJUsz
V7TEoabYRDD49ju/6Pm1Mi+iH5zLz+c855zvo1L9j/fsaRRUvvZltHmX8Ni9gMaGCO47ZlBb8wn22yHc
KJ9CackECgteIy93FBfOB6H0JrC3B6ipXsVGb2V1Dca0XhxOe8JLEXhbF7mgsuLLX3mCIwsr2G1+DrVa
huWQRwjcj+a5oLTk87qCn/D78CLiTD4UXJ7GAXOTEDjrZ7ngku3dH4Jf4ZHJCLZJXlhzxpGa4hSCurth
LsjOGo0R/A4PBsPYrHdDlgMwmRxCUF31kQvkMwFFsB7c4/+ATYkNOHL0BZKSaoXgZuU0urvATgkcP/kK
lmMDfNu0MJqZPps6/4D7cNDSCUmyC8HVskl0+MAyADS5vrG7f0X59Tm+VFoYzZyZEVTg5NR2GAwVQnCl
cByeZuChc40FJwpjek5MmU/YkH6uiHdOTmHwfg/0+jIhsOWNMRiouhPlnUnAQoI4rYSht7MYm5qDnHsN
e41tHNbucUGnKxICiqXjHpTPJgHBZ/Nv4U1oHqGZJVwstiNe72JwI+J3PYA2MV8IMjOG2dzLfOatBg+2
7JDQ0tEPX9cguvv8GHg5hH0mC9S6eiQweLumDhqNVQgo06dP9fN4UsIoJHRnOhVtmxZGM1NXKoJ3JmTH
Cv71r/4OTrQ4xWMwWlcAAAAASUVORK5CYII=
</value>
</data>
<data name="helpToolStripButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAhhJREFUOE+1U09r
E0EU70fIR9iPUBQ8eMrR46IN5JhCDz2oBA8SBHEpCMFgG5GiwdJdq2Ijqe6ldo3Wrmhri0gXazW2YbMt
UdNmm45ulf7R/HwzU1hLIzn54LFvhvn9eW9nOjr+R0wvBLhTXEf6bgV9w0sYLJQx/uoz2mq9c7eRn2pA
L67Bq+/i29YeWLBL9Q6u5ktI6w6Kr1dbE3HwA3sT/o8mbAfQRgE1LZPXtsPgbjZxaXAG4y/Kh0m48sbP
JgwbiKYAwwLYNkR4DEje5HsMFSI5l3l2kGD6/RYezzeEMgfzwzzMWSCRlV9OFk0xqhl06wNy+Tchyb2n
dXxhv4TVaFLazppAJ9VKL0MySxYoVI0hkXaw5AbovjAWEmTur4qBqZoEdfbKVCgTBObqdolBUW0ocRs1
P8Cx2PWQ4PJtl6a9J+xLIB1OMHIilU2b1gSMqCZ9TdTq33FEHQgJcg8rWPF3qHcJVOKeyOyoJIioDqUk
UFM2SuUqus4YIcHEzFdYji8GxIGROAc41JJHc6E1B58wRRqWhzFrEVduTR78E5mRBSz7v0l1H0AgXgsH
+2DNcPBp3cep0/rhezA5V0Vfbg5ug+4CqaiaI/rmyWu+t1zdQIysDxdmW9/GiZcVnO+fgvHkI+YXV7BG
067VA9Ezt91Fyvq/wH8/lKHCW/RcfITj8Rs4evIaYmdHkBl63v4xtX1tLQ78AZ3a8qxOv4hDAAAAAElF
TkSuQmCC
</value>
</data>
<metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>116, 17</value>
</metadata>
</root>

6
src/AddIns/DisplayBindings/IconEditor/IconEditorAddIn/IconEditorAddIn.sln

@ -1,6 +0,0 @@ @@ -1,6 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.1.0.1634
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
EndProject
Global
EndGlobal

37
src/AddIns/DisplayBindings/IconEditor/IconEditorAddIn/Src/IconViewContent.cs

@ -1,37 +0,0 @@ @@ -1,37 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using System.Windows.Forms;
using IconEditor;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.IconEditorAddIn
{
public class IconViewContent : AbstractViewContent
{
EditorPanel editor = new EditorPanel();
public override object Control {
get {
return editor;
}
}
public override bool IsViewOnly {
get { return true; }
}
public IconViewContent(OpenedFile file) : base(file)
{
}
public override void Load(OpenedFile file, Stream stream)
{
editor.ShowFile(new IconFile(stream));
}
}
}

298
src/AddIns/DisplayBindings/IconEditor/IconEditor/IconEntry.cs → src/AddIns/DisplayBindings/IconEditor/IconEntry.cs

@ -2,11 +2,14 @@ @@ -2,11 +2,14 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
namespace IconEditor
namespace ICSharpCode.IconEditor
{
/// <summary>
/// Describes the type of an icon entry.
@ -85,6 +88,29 @@ namespace IconEditor @@ -85,6 +88,29 @@ namespace IconEditor
}
}
/// <summary>
/// Gets/Sets the hotspot (cursors only).
/// </summary>
public Point Hotspot { get; set; }
public static PixelFormat GetPixelFormat(int colorDepth)
{
switch (colorDepth) {
case 1:
return PixelFormat.Format1bppIndexed;
case 4:
return PixelFormat.Format4bppIndexed;
case 8:
return PixelFormat.Format8bppIndexed;
case 24:
return PixelFormat.Format24bppRgb;
case 32:
return PixelFormat.Format32bppArgb;
default:
throw new NotSupportedException();
}
}
public IconEntryType Type {
get {
if (isCompressed)
@ -113,6 +139,9 @@ namespace IconEditor @@ -113,6 +139,9 @@ namespace IconEditor
/// </summary>
public Stream GetImageData()
{
const int bmpFileHeaderLength = 14;
const int positionOfHeightInHeader = 8;
Stream stream = GetEntryData();
if (isCompressed)
return stream;
@ -126,7 +155,7 @@ namespace IconEditor @@ -126,7 +155,7 @@ namespace IconEditor
w.Write(0); // 4 reserved bytes
w.Write(0); // data start offset, we'll fill it in later
w.Write(entryData, 0, headerSize); // write header
output.Position = 14 + 8; // position of biHeight in header
output.Position = bmpFileHeaderLength + positionOfHeightInHeader;
w.Write(height); // write correct height into header
output.Position = output.Length;
if (biBitCount <= 8) {
@ -178,10 +207,10 @@ namespace IconEditor @@ -178,10 +207,10 @@ namespace IconEditor
w.Write((short)1); // 1 plane
w.Write((short)1); // monochrome
w.Write(0); // no compression
w.Write(0); // biSizeImage, should be zero
w.Write(GetBitmapSize(width, height, 1)); // biSizeImage
w.Write(0); // biXPelsPerMeter, should be zero
w.Write(0); // biYPelsPerMeter, should be zero
w.Write(0); // biClrUsed - calculate color count using bitCount
w.Write(0); // biClrUsed - should be 0 for monochrome bitmaps
w.Write(0); // no special "important" colors
// write color table:
@ -216,20 +245,23 @@ namespace IconEditor @@ -216,20 +245,23 @@ namespace IconEditor
}
}
static int GetStride(int width, int bitsPerPixel)
{
const int pack = 4; // 4 byte packing
const int bitPack = pack*8;
int lineBits = width * bitsPerPixel;
// divide by bitPack and round up:
int packUnits = (lineBits + (bitPack - 1)) / bitPack;
return packUnits * pack;
}
/// <summary>
/// Gets the size of the data section of a DIB bitmap with the
/// specified parameters
/// </summary>
static int GetBitmapSize(int width, int height, int bitsPerPixel)
{
const int bitPack = 4*8; // 4 byte packing
int lineBits = width * bitsPerPixel;
// expand size to multiple of 4 bytes
int rem = lineBits % bitPack;
if (rem != 0) {
lineBits += (bitPack - rem);
}
return lineBits / 8 * height;
return GetStride(width, bitsPerPixel) * height;
}
/// <summary>
@ -261,7 +293,12 @@ namespace IconEditor @@ -261,7 +293,12 @@ namespace IconEditor
/// an InvalidOperationException is thrown if you call GetImageMask on a compressed icon.</exception>
public Bitmap GetMaskImage()
{
return new Bitmap(GetMaskImageData());
var stream = GetMaskImageData();
try {
return new Bitmap(stream);
} catch (ArgumentException) {
return null;
}
}
/// <summary>
@ -273,7 +310,7 @@ namespace IconEditor @@ -273,7 +310,7 @@ namespace IconEditor
throw new ArgumentNullException("imageData");
this.entryData = entryData;
isCompressed = false;
if (sizeInBytes > 8) {
if (entryData.Length > 8) {
// PNG Specification, section 5.2:
// The first eight bytes of a PNG datastream always contain the following (decimal) values:
// 137 80 78 71 13 10 26 10
@ -294,11 +331,11 @@ namespace IconEditor @@ -294,11 +331,11 @@ namespace IconEditor
int CheckBitmapHeader(BinaryReader b, out int biBitCount)
{
const int knownHeaderSize = 4*3 + 2*2 + 4;
const int knownHeaderSize = 4*3 + 2*2 + 6*4;
const int BI_RGB = 0;
int biSize = b.ReadInt32();
if (biSize <= knownHeaderSize)
if (biSize < knownHeaderSize)
throw new InvalidIconException("biSize invalid: " + biSize);
if (b.ReadInt32() != width)
throw new InvalidIconException("biWidth invalid");
@ -312,12 +349,19 @@ namespace IconEditor @@ -312,12 +349,19 @@ namespace IconEditor
// Do not test biBitCount: there are icons where the colorDepth is saved
// incorrectly; biBitCount is the real value to use in those cases
//if (biBitCount != colorDepth)
// throw new InvalidIconException("biBitCount invalid: " + biBitCount);
int compression = b.ReadInt32();
if (compression != BI_RGB)
int biCompression = b.ReadInt32();
if (biCompression != BI_RGB)
throw new InvalidIconException("biCompression invalid");
b.ReadInt32(); // biSizeImage
b.ReadInt32(); // biXPelsPerMeter
b.ReadInt32(); // biYPelsPerMeter
int biClrUsed = b.ReadInt32();
if (biClrUsed != 0 && biClrUsed != (1 << biBitCount))
throw new InvalidIconException("biClrUsed invalid");
b.ReadInt32(); // biClrImportant
// skip rest of header:
b.ReadBytes(biSize - knownHeaderSize);
return biSize;
@ -348,6 +392,16 @@ namespace IconEditor @@ -348,6 +392,16 @@ namespace IconEditor
SetEntryData(imageData);
}
public IconEntry(int width, int height, int colorDepth, Bitmap bitmap, bool? storeCompressed = null)
{
this.width = width;
this.height = height;
this.colorDepth = colorDepth;
CheckSize();
CheckColorDepth();
SetImage(bitmap, storeCompressed);
}
void CheckSize()
{
if (width <= 0 || height <= 0 || width > 256 || height > 256) {
@ -370,7 +424,7 @@ namespace IconEditor @@ -370,7 +424,7 @@ namespace IconEditor
}
}
internal void ReadHeader(BinaryReader r, ref bool wellFormed)
internal void ReadHeader(BinaryReader r, bool isCursor, ref bool wellFormed)
{
width = r.ReadByte();
height = r.ReadByte();
@ -382,28 +436,37 @@ namespace IconEditor @@ -382,28 +436,37 @@ namespace IconEditor
if (colorCount != 0 && colorCount != 2 && colorCount != 16) {
throw new InvalidIconException("Invalid color count: " + colorCount);
}
if (r.ReadByte() != 0) {
byte reserved = r.ReadByte();
if (reserved != 0 && reserved != 255) {
// should be 0, but .NET Icon.Save() uses 255
throw new InvalidIconException("Invalid value for reserved");
}
uint planeCount = r.ReadUInt16();
// placeCount should always be 1, but there are some icons with planeCount = 0
if (planeCount == 0) {
wellFormed = false;
}
if (planeCount > 1) {
throw new InvalidIconException("Invalid number of planes: " + planeCount);
}
colorDepth = r.ReadUInt16();
if (colorDepth == 0) {
if (colorCount == 2)
colorDepth = 1;
else if (colorCount == 16)
colorDepth = 4;
else if (colorCount == 0)
colorDepth = 8;
if (isCursor) {
colorDepth = -1;
this.Hotspot = new Point(r.ReadUInt16(), r.ReadUInt16());
if (this.Hotspot.X >= width || this.Hotspot.Y >= height)
throw new InvalidIconException("Hotspot is outside image");
} else {
uint planeCount = r.ReadUInt16();
// planeCount should always be 1, but there are some icons with planeCount = 0
if (planeCount == 0) {
wellFormed = false;
}
if (planeCount > 1) {
throw new InvalidIconException("Invalid number of planes: " + planeCount);
}
colorDepth = r.ReadUInt16();
if (colorDepth == 0) {
if (colorCount == 2)
colorDepth = 1;
else if (colorCount == 16)
colorDepth = 4;
else if (colorCount == 0)
colorDepth = 8;
}
CheckColorDepth();
}
CheckColorDepth();
sizeInBytes = r.ReadInt32();
if (sizeInBytes <= 0) {
@ -420,14 +483,19 @@ namespace IconEditor @@ -420,14 +483,19 @@ namespace IconEditor
uint saveOffsetToHeaderPosition;
internal void WriteHeader(Stream stream, BinaryWriter w)
internal void WriteHeader(Stream stream, bool isCursor, BinaryWriter w)
{
w.Write((byte)(width == 256 ? 0 : width));
w.Write((byte)(height == 256 ? 0 : height));
w.Write((byte)(colorDepth == 4 ? 16 : 0));
w.Write((byte)0);
w.Write((ushort)1);
w.Write((ushort)colorDepth);
if (isCursor) {
w.Write((ushort)Hotspot.X);
w.Write((ushort)Hotspot.Y);
} else {
w.Write((ushort)1);
w.Write((ushort)colorDepth);
}
w.Write((int)entryData.Length);
saveOffsetToHeaderPosition = (uint)stream.Position;
w.Write((uint)0);
@ -445,11 +513,18 @@ namespace IconEditor @@ -445,11 +513,18 @@ namespace IconEditor
pos += c;
}
SetEntryData(imageData);
if (isCompressed == false) {
if (isCompressed) {
if (colorDepth == -1)
colorDepth = 32; // assume 32-bit colors for .pngs
} else {
using (BinaryReader r = new BinaryReader(new MemoryStream(imageData, false))) {
int biBitCount;
CheckBitmapHeader(r, out biBitCount);
if (biBitCount != colorDepth) {
if (colorDepth == -1) {
// missing color depth (cursors)
colorDepth = biBitCount;
CheckColorDepth();
} else if (biBitCount != colorDepth) {
// inconsistency in header information, fix icon header
wellFormed = false;
colorDepth = biBitCount;
@ -472,53 +547,124 @@ namespace IconEditor @@ -472,53 +547,124 @@ namespace IconEditor
/// Stores the specified bitmap. The bitmap will be resized and
/// changed to the correct pixel format.
/// </summary>
public void SetImage(Bitmap bitmap, bool storeCompressed)
public unsafe void SetImage(Bitmap bitmap, bool? storeCompressed)
{
if (this.Type == IconEntryType.Classic)
throw new InvalidOperationException("Cannot use SetImage on classic entries");
if (bitmap.Width != width || bitmap.Height != height) {
bitmap = new Bitmap(bitmap, width, height);
}
PixelFormat expected;
switch (colorDepth) {
case 1:
expected = PixelFormat.Format1bppIndexed;
break;
case 4:
expected = PixelFormat.Format4bppIndexed;
break;
case 8:
expected = PixelFormat.Format8bppIndexed;
break;
case 24:
expected = PixelFormat.Format24bppRgb;
break;
case 32:
expected = PixelFormat.Format32bppArgb;
break;
default:
throw new NotSupportedException();
}
if (bitmap.PixelFormat != expected) {
if (expected == PixelFormat.Format32bppArgb) {
bitmap = new Bitmap(bitmap, width, height);
} else {
throw new NotImplementedException();
}
}
if (storeCompressed) {
PixelFormat format = GetPixelFormat(colorDepth);
if (storeCompressed ?? (colorDepth == 32 && (width > 48 || height > 48))) {
bitmap = Convert(bitmap, format);
using (MemoryStream ms = new MemoryStream()) {
bitmap.Save(ms, ImageFormat.Png);
SetEntryData(ms.ToArray());
}
} else {
throw new NotImplementedException();
// Make clone of bitmap because we're going to modify it
bitmap = bitmap.Clone(new Rectangle(0, 0, width, height), PixelFormat.Format32bppArgb);
// Calculate AND mask and set transparent parts to black
int maskStride = GetStride(width, 1);
byte[] andMask = new byte[GetBitmapSize(width, height, 1)];
BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
try {
uint* bmpPtr = (uint*)bmpData.Scan0.ToPointer();
int bmpStride = bmpData.Stride / sizeof(uint);
for (int y = 0; y < height; y++) {
uint* linePtr = bmpPtr + (height - 1 - y) * bmpStride;
for (int x = 0; x < width; x++) {
if ((linePtr[x] & 0xff000000) < 0x80000000u) {
// pixel is more than 50% transparent
// set AND mask to white
andMask[y * maskStride + (x >> 3)] |= (byte)(0x80 >> (x & 7));
if (colorDepth < 32) {
linePtr[x] = 0xff000000; // set to black if target format doesn't support transparency
}
}
}
}
} finally {
bitmap.UnlockBits(bmpData);
}
// Convert bitmap
bitmap = Convert(bitmap, format);
MemoryStream ms = new MemoryStream();
BinaryWriter w = new BinaryWriter(ms);
w.Write(40); // Header Size
w.Write((int)width);
w.Write((int)height * 2);
w.Write((ushort)1); // biPlanes
w.Write((ushort)colorDepth); // biBitCount
w.Write(0); // biCompression
w.Write(0); // biSizeImage
w.Write(0); // biXPelsPerMeter
w.Write(0); // biYPelsPerMeter
w.Write(0); // biClrUsed
w.Write(0); // biClrImportant
// Color palette:
if (colorDepth <= 8) {
Color[] palette = bitmap.Palette.Entries;
if (palette.Length > (1 << colorDepth))
throw new InvalidOperationException("Palette has wrong size");
foreach (Color c in palette) {
w.Write(c.B);
w.Write(c.G);
w.Write(c.R);
w.Write((byte)0);
}
for (int i = palette.Length; i < (1 << colorDepth); i++) {
w.Write(0);
}
}
// image data
bmpData = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadOnly, format);
try {
if (bmpData.Stride != GetStride(width, colorDepth))
throw new InvalidOperationException();
byte[] lineBuffer = new byte[bmpData.Stride];
for (int y = height - 1; y >= 0; y--) {
Marshal.Copy(bmpData.Scan0 + y * bmpData.Stride, lineBuffer, 0, bmpData.Stride);
w.Write(lineBuffer);
}
} finally {
bitmap.UnlockBits(bmpData);
}
w.Write(andMask);
SetEntryData(ms.ToArray());
}
}
static Bitmap Convert(Bitmap bitmap, PixelFormat targetFormat)
{
if (bitmap.PixelFormat == targetFormat)
return bitmap;
else
return bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), targetFormat);
}
public override string ToString()
{
return string.Format("[IconEntry {0}x{1}x{2}]", this.width, this.height, this.colorDepth);
}
/// <summary>
/// Exports the image as ARGB bitmap.
/// Note: if the bitmap is using the classic style (AND/XOR maps), any pixel
/// where the AND map isn't 0 is set to fully transparent.
/// </summary>
public Bitmap ExportArgbBitmap()
{
if (colorDepth == 32) {
return GetImage();
} else if (isCompressed) {
using (Bitmap image = GetImage()) {
return image.Clone(new Rectangle(0, 0, width, height), PixelFormat.Format32bppArgb);
}
} else {
using (Bitmap mask = GetMaskImage(), image = GetImage()) {
return AlphaTransparentBitmap.ConvertToAlphaTransparentBitmap(mask, image);
}
}
}
}
}

71
src/AddIns/DisplayBindings/IconEditor/IconEditor/IconFile.cs → src/AddIns/DisplayBindings/IconEditor/IconFile.cs

@ -6,8 +6,9 @@ using System.Collections.Generic; @@ -6,8 +6,9 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.IO;
using System.Linq;
namespace IconEditor
namespace ICSharpCode.IconEditor
{
/// <summary>
/// Icon class supporting XP and Vista icons.
@ -89,25 +90,24 @@ namespace IconEditor @@ -89,25 +90,24 @@ namespace IconEditor
{
BinaryReader r = new BinaryReader(stream);
if (r.ReadUInt16() != 0)
throw new InvalidIconException("reserved word must be 0");
throw new InvalidIconException("This is not a valid .ico file.");
ushort type = r.ReadUInt16();
if (type == 1)
isCursor = false;
else if (type == 2)
isCursor = true;
else
throw new InvalidIconException("invalid icon type " + type);
if (isCursor)
throw new InvalidIconException("cursors are currently not supported");
throw new InvalidIconException("This is not a valid .ico file.");
IconEntry[] icons = new IconEntry[r.ReadUInt16()];
for (int i = 0; i < icons.Length; i++) {
icons[i] = new IconEntry();
icons[i].ReadHeader(r, ref wellFormed);
icons[i].ReadHeader(r, isCursor, ref wellFormed);
}
for (int i = 0; i < icons.Length; i++) {
icons[i].ReadData(stream, ref wellFormed);
}
this.icons = new Collection<IconEntry>(icons);
// need to use List<T> so that the collection can be resized
this.icons = new Collection<IconEntry>(new List<IconEntry>(icons));
}
/// <summary>
@ -138,7 +138,7 @@ namespace IconEditor @@ -138,7 +138,7 @@ namespace IconEditor
w.Write((ushort)(isCursor ? 2 : 1));
w.Write((ushort)icons.Count);
foreach (IconEntry e in icons) {
e.WriteHeader(stream, w);
e.WriteHeader(stream, isCursor, w);
}
foreach (IconEntry e in icons) {
e.WriteData(stream);
@ -170,41 +170,48 @@ namespace IconEditor @@ -170,41 +170,48 @@ namespace IconEditor
return best;
}
/// <summary>
/// Adds the specified entry
/// </summary>
public void AddEntry(IconEntry entry)
{
if (entry == null)
throw new ArgumentNullException("entry");
// replace matching existing entry:
for (int i = 0; i < icons.Count; i++) {
if (icons[i].Width == entry.Width && icons[i].Height == entry.Height && icons[i].ColorDepth == entry.ColorDepth) {
icons[i] = entry;
return;
}
}
icons.Add(entry);
}
public void RemoveEntry(int width, int height, int colorDepth)
{
for (int i = 0; i < icons.Count; i++) {
if (icons[i].Width == width && icons[i].Height == height && icons[i].ColorDepth == colorDepth) {
icons.RemoveAt(i);
break;
}
}
}
/// <summary>
/// Gets a sorted list of all icon sizes available in this file.
/// </summary>
public IList<Size> AvailableSizes {
public IEnumerable<Size> AvailableSizes {
get {
List<Size> r = new List<Size>();
foreach (IconEntry e in this.Icons) {
if (r.Contains(e.Size) == false)
r.Add(e.Size);
}
r.Sort(delegate(Size a, Size b) {
int res = a.Width.CompareTo(b.Width);
if (res == 0)
return a.Height.CompareTo(b.Height);
else
return res;
});
return r;
return this.Icons.Select(e => e.Size).Distinct().OrderBy(s => s.Width).ThenBy(s => s.Height);
}
}
/// <summary>
/// Gets a sorted list of all color depths available in this file.
/// </summary>
public IList<int> AvailableColorDepths {
public IEnumerable<int> AvailableColorDepths {
get {
bool[] depths = new bool[33];
foreach (IconEntry e in this.Icons) {
depths[e.ColorDepth] = true;
}
List<int> r = new List<int>();
for (int i = 0; i < depths.Length; i++) {
if (depths[i]) r.Add(i);
}
return r;
return this.Icons.Select(e => e.ColorDepth).Distinct().OrderBy(v => v);
}
}
}

153
src/AddIns/DisplayBindings/IconEditor/IconPanel.Designer.cs generated

@ -0,0 +1,153 @@ @@ -0,0 +1,153 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
namespace ICSharpCode.IconEditor
{
partial class IconPanel : System.Windows.Forms.UserControl
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the control.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
this.Entry = null; // dispose temp. bitmaps
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.replaceWithImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.compressedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exportANDMaskToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exportXORMaskToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.emptyContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.addImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuStrip.SuspendLayout();
this.emptyContextMenuStrip.SuspendLayout();
this.SuspendLayout();
//
// contextMenuStrip
//
this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.replaceWithImageToolStripMenuItem,
this.deleteToolStripMenuItem,
this.compressedToolStripMenuItem,
this.toolStripMenuItem1,
this.exportToolStripMenuItem,
this.exportANDMaskToolStripMenuItem,
this.exportXORMaskToolStripMenuItem});
this.contextMenuStrip.Name = "contextMenuStrip";
this.contextMenuStrip.Size = new System.Drawing.Size(181, 164);
//
// replaceWithImageToolStripMenuItem
//
this.replaceWithImageToolStripMenuItem.Name = "replaceWithImageToolStripMenuItem";
this.replaceWithImageToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.replaceWithImageToolStripMenuItem.Text = "&Replace Image...";
this.replaceWithImageToolStripMenuItem.Click += new System.EventHandler(this.ReplaceWithImageToolStripMenuItemClick);
//
// deleteToolStripMenuItem
//
this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem";
this.deleteToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.deleteToolStripMenuItem.Text = "&Delete";
this.deleteToolStripMenuItem.Click += new System.EventHandler(this.DeleteToolStripMenuItemClick);
//
// compressedToolStripMenuItem
//
this.compressedToolStripMenuItem.Name = "compressedToolStripMenuItem";
this.compressedToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.compressedToolStripMenuItem.Text = "Use embedded &PNG";
this.compressedToolStripMenuItem.Click += new System.EventHandler(this.CompressedToolStripMenuItemClick);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(177, 6);
//
// exportToolStripMenuItem
//
this.exportToolStripMenuItem.Name = "exportToolStripMenuItem";
this.exportToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.exportToolStripMenuItem.Text = "&Export...";
this.exportToolStripMenuItem.Click += new System.EventHandler(this.ExportToolStripMenuItemClick);
//
// exportANDMaskToolStripMenuItem
//
this.exportANDMaskToolStripMenuItem.Name = "exportANDMaskToolStripMenuItem";
this.exportANDMaskToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.exportANDMaskToolStripMenuItem.Text = "Export &AND mask...";
this.exportANDMaskToolStripMenuItem.Click += new System.EventHandler(this.ExportANDMaskToolStripMenuItemClick);
//
// exportXORMaskToolStripMenuItem
//
this.exportXORMaskToolStripMenuItem.Name = "exportXORMaskToolStripMenuItem";
this.exportXORMaskToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.exportXORMaskToolStripMenuItem.Text = "Export &XOR image...";
this.exportXORMaskToolStripMenuItem.Click += new System.EventHandler(this.ExportXORMaskToolStripMenuItemClick);
//
// emptyContextMenuStrip
//
this.emptyContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addImageToolStripMenuItem});
this.emptyContextMenuStrip.Name = "contextMenuStrip";
this.emptyContextMenuStrip.Size = new System.Drawing.Size(142, 26);
//
// addImageToolStripMenuItem
//
this.addImageToolStripMenuItem.Name = "addImageToolStripMenuItem";
this.addImageToolStripMenuItem.Size = new System.Drawing.Size(141, 22);
this.addImageToolStripMenuItem.Text = "&Add Image...";
this.addImageToolStripMenuItem.Click += new System.EventHandler(this.ReplaceWithImageToolStripMenuItemClick);
//
// IconPanel
//
this.AllowDrop = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.ContextMenuStrip = this.emptyContextMenuStrip;
this.Name = "IconPanel";
this.Size = new System.Drawing.Size(173, 171);
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.IconPanelDragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.IconPanelDragEnter);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.IconPanelPaint);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.IconPanelMouseDown);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.IconPanelMouseMove);
this.contextMenuStrip.ResumeLayout(false);
this.emptyContextMenuStrip.ResumeLayout(false);
this.ResumeLayout(false);
}
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem compressedToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exportXORMaskToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exportANDMaskToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem addImageToolStripMenuItem;
private System.Windows.Forms.ContextMenuStrip emptyContextMenuStrip;
private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem replaceWithImageToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exportToolStripMenuItem;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
}
}

169
src/AddIns/DisplayBindings/IconEditor/IconEditor/IconPanel.cs → src/AddIns/DisplayBindings/IconEditor/IconPanel.cs

@ -4,19 +4,31 @@ @@ -4,19 +4,31 @@
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace IconEditor
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.IconEditor
{
public partial class IconPanel
{
Size size;
Size iconSize;
int colorDepth;
IconEntry entry;
Bitmap maskBitmap;
Bitmap bitmap;
public Size IconSize {
get { return iconSize; }
}
public int ColorDepth {
get { return colorDepth; }
}
public IconEntry Entry {
get {
return entry;
@ -31,22 +43,30 @@ namespace IconEditor @@ -31,22 +43,30 @@ namespace IconEditor
bitmap = null;
}
entry = value;
this.ContextMenuStrip = null;
if (entry != null) {
bitmap = entry.GetImage();
if (entry.Type == IconEntryType.Classic) {
maskBitmap = FixBitmap(entry.GetMaskImage());
bitmap = FixBitmap(bitmap);
} else {
//this.ContextMenuStrip = trueColorContextMenu;
}
exportANDMaskToolStripMenuItem.Visible = entry.Type == IconEntryType.Classic;
exportXORMaskToolStripMenuItem.Visible = entry.Type == IconEntryType.Classic;
compressedToolStripMenuItem.Checked = entry.IsCompressed;
compressedToolStripMenuItem.Enabled = entry.IsCompressed || entry.ColorDepth == 32;
}
this.ContextMenuStrip = (entry != null) ? contextMenuStrip : emptyContextMenuStrip;
UpdateSize();
Invalidate();
}
}
public event EventHandler EntryChanged = delegate {};
Bitmap FixBitmap(Bitmap src)
{
if (src == null)
return src;
Bitmap dest = new Bitmap(src.Width, src.Height);
using (Graphics g = Graphics.FromImage(dest)) {
g.DrawImageUnscaled(src, 0, 0);
@ -57,7 +77,7 @@ namespace IconEditor @@ -57,7 +77,7 @@ namespace IconEditor
public IconPanel(Size size, int colorDepth)
{
this.size = size;
this.iconSize = size;
this.colorDepth = colorDepth;
//
@ -65,7 +85,22 @@ namespace IconEditor @@ -65,7 +85,22 @@ namespace IconEditor
//
InitializeComponent();
this.ClientSize = new Size(size.Width + 2, size.Height + 2);
UpdateSize();
}
void UpdateSize()
{
Size newClientSize = new Size(LimitSizeIfNoEntry(iconSize.Width) + 2, LimitSizeIfNoEntry(iconSize.Height) + 2);
if (this.ClientSize != newClientSize)
this.ClientSize = newClientSize;
}
int LimitSizeIfNoEntry(int size)
{
if (entry != null)
return size;
else
return Math.Min(size, 32);
}
void IconPanelPaint(object sender, PaintEventArgs e)
@ -77,8 +112,9 @@ namespace IconEditor @@ -77,8 +112,9 @@ namespace IconEditor
IntPtr memDC = Gdi32.CreateCompatibleDC(destDC);
IntPtr srcHBitmap = maskBitmap.GetHbitmap();
IntPtr oldHBitmap = Gdi32.SelectObject(memDC, srcHBitmap);
Gdi32.BitBlt(destDC, drawOffset, drawOffset, size.Width, size.Height, memDC, 0, 0, Gdi32.SRCAND);
Gdi32.BitBlt(destDC, drawOffset, drawOffset, iconSize.Width, iconSize.Height, memDC, 0, 0, Gdi32.SRCAND);
// TODO: review if the objects get destroyed correctly
Gdi32.SelectObject(memDC, oldHBitmap);
Gdi32.DeleteObject(srcHBitmap);
Gdi32.DeleteDC(memDC);
@ -88,7 +124,7 @@ namespace IconEditor @@ -88,7 +124,7 @@ namespace IconEditor
IntPtr memDC = Gdi32.CreateCompatibleDC(destDC);
IntPtr srcHBitmap = bitmap.GetHbitmap();
IntPtr oldHBitmap = Gdi32.SelectObject(memDC, srcHBitmap);
Gdi32.BitBlt(destDC, drawOffset, drawOffset, size.Width, size.Height, memDC, 0, 0, Gdi32.SRCINVERT);
Gdi32.BitBlt(destDC, drawOffset, drawOffset, iconSize.Width, iconSize.Height, memDC, 0, 0, Gdi32.SRCINVERT);
Gdi32.SelectObject(memDC, oldHBitmap);
Gdi32.DeleteObject(srcHBitmap);
@ -136,30 +172,82 @@ namespace IconEditor @@ -136,30 +172,82 @@ namespace IconEditor
dlg.DefaultExt = "png";
dlg.Filter = "PNG images|*.png|All files|*.*";
if (dlg.ShowDialog() == DialogResult.OK) {
bitmap.Save(dlg.FileName, ImageFormat.Png);
entry.ExportArgbBitmap().Save(dlg.FileName, ImageFormat.Png);
}
}
}
void ExportANDMaskToolStripMenuItemClick(object sender, EventArgs e)
{
using (SaveFileDialog dlg = new SaveFileDialog()) {
dlg.DefaultExt = "bmp";
dlg.Filter = "BMP images|*.bmp|All files|*.*";
if (dlg.ShowDialog() == DialogResult.OK) {
using (var stream = dlg.OpenFile()) {
entry.GetMaskImageData().CopyTo(stream);
}
}
}
}
void ExportXORMaskToolStripMenuItemClick(object sender, EventArgs e)
{
using (SaveFileDialog dlg = new SaveFileDialog()) {
dlg.DefaultExt = "bmp";
dlg.Filter = "BMP images|*.bmp|All files|*.*";
if (dlg.ShowDialog() == DialogResult.OK) {
using (var stream = dlg.OpenFile()) {
entry.GetImageData().CopyTo(stream);
}
}
}
}
void DeleteToolStripMenuItemClick(object sender, EventArgs e)
{
this.Entry = null;
EntryChanged(this, e);
}
void ReplaceWithImageToolStripMenuItemClick(object sender, EventArgs e)
{
using (OpenFileDialog dlg = new OpenFileDialog()) {
dlg.Filter = "Images|*.png;*.bmp;*.gif;*.jpg|All files|*.*";
if (dlg.ShowDialog() == DialogResult.OK) {
Bitmap newBitmap = new Bitmap(dlg.FileName);
// scale to correct size and make it ARGB
string oldFormat = entry.Width + "x" + entry.Height + "x" + entry.ColorDepth;
string newFormat = newBitmap.Width + "x" + newBitmap.Height + "x";
if (newBitmap.Width != entry.Width || newBitmap.Height != entry.Height) {
MessageBox.Show("The loaded bitmap has the");
try {
Bitmap newBitmap = new Bitmap(dlg.FileName);
SetImage(newBitmap);
} catch (Exception ex) {
MessageService.ShowHandledException(ex);
}
//entry.SetTrueColorImage(newBitmap, entry.IsCompressed);
newBitmap.Dispose();
this.Entry = entry; // re-display bitmap
}
}
}
void CompressedToolStripMenuItemClick(object sender, EventArgs e)
{
// Toggle compression
this.Entry = new IconEntry(iconSize.Width, iconSize.Height, colorDepth, entry.ExportArgbBitmap(), !entry.IsCompressed);
EntryChanged(this, EventArgs.Empty);
}
void SetImage(Bitmap newBitmap)
{
// scale to correct size and make it ARGB
if (iconSize != newBitmap.Size) {
int r = MessageService.ShowCustomDialog(
"Import Image",
string.Format("The image has size {0}x{1}, but size {2}x{3} is expected.", newBitmap.Width, newBitmap.Height, iconSize.Width, iconSize.Height),
0, 1, "Convert", "Cancel");
if (r != 0) {
return;
}
}
bool? compress = entry != null ? entry.IsCompressed : (bool?)null;
this.Entry = new IconEntry(iconSize.Width, iconSize.Height, colorDepth, newBitmap, compress);
EntryChanged(this, EventArgs.Empty);
}
Point mouseDownLocation;
void IconPanelMouseDown(object sender, MouseEventArgs e)
@ -172,41 +260,56 @@ namespace IconEditor @@ -172,41 +260,56 @@ namespace IconEditor
void IconPanelMouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left) {
/*
if (mouseDownLocation.IsEmpty == false) {
if (mouseDownLocation.IsEmpty == false && entry != null) {
int dx = Math.Abs(e.X - mouseDownLocation.X);
int dy = Math.Abs(e.Y - mouseDownLocation.Y);
if (dx > SystemInformation.DragSize.Width || dy > SystemInformation.DragSize.Height)
{
mouseDownLocation = Point.Empty;
this.DoDragDrop(bitmap, DragDropEffects.Copy);
this.DoDragDrop(entry.ExportArgbBitmap(), DragDropEffects.Copy);
}
}
*/
}
}
void IconPanelDragEnter(object sender, DragEventArgs e)
{
/*
if (e.Data.GetDataPresent(typeof(Bitmap)))
if (e.Data.GetDataPresent(DataFormats.Bitmap)) {
e.Effect = DragDropEffects.Copy;
else
} else if (e.Data.GetDataPresent(DataFormats.FileDrop)) {
e.Effect = DragDropEffects.None;
string[] files = e.Data.GetData(DataFormats.FileDrop) as string[];
if (files != null && files.Length == 1) {
string ext = Path.GetExtension(files[0]);
if (ext.Equals(".png", StringComparison.OrdinalIgnoreCase) || ext.Equals(".bmp", StringComparison.OrdinalIgnoreCase)
|| ext.Equals(".gif", StringComparison.OrdinalIgnoreCase) || ext.Equals(".jpg", StringComparison.OrdinalIgnoreCase))
{
e.Effect = DragDropEffects.Copy;
}
}
} else {
e.Effect = DragDropEffects.None;
*/
}
}
void IconPanelDragDrop(object sender, DragEventArgs e)
{
/*try {
Bitmap bmp = (Bitmap)e.Data.GetData(typeof(Bitmap));
try {
Bitmap bmp = null;
if (e.Data.GetDataPresent(DataFormats.Bitmap)) {
bmp = (Bitmap)e.Data.GetData(DataFormats.Bitmap);
} else if (e.Data.GetDataPresent(DataFormats.FileDrop)) {
string[] files = e.Data.GetData(DataFormats.FileDrop) as string[];
if (files != null && files.Length == 1) {
bmp = new Bitmap(files[0]);
}
}
if (bmp != null) {
entry.SetImage(bmp, entry.IsCompressed);
this.Entry = entry; // re-display entry
SetImage(bmp);
}
} catch (Exception ex) {
MessageBox.Show(ex.ToString());
}*/
MessageService.ShowHandledException(ex);
}
}
}
}

55
src/AddIns/DisplayBindings/IconEditor/IconViewContent.cs

@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.IconEditor
{
public class IconViewContent : AbstractViewContent
{
EditorPanel editor = new EditorPanel();
public override object Control {
get {
return editor;
}
}
public IconViewContent(OpenedFile file) : base(file)
{
editor.IconWasEdited += editor_IconWasEdited;
}
void editor_IconWasEdited(object sender, EventArgs e)
{
PrimaryFile.MakeDirty();
}
public override void Load(OpenedFile file, Stream stream)
{
try {
editor.ShowFile(new IconFile(stream));
} catch (InvalidIconException ex) {
// call with a delay to work around a re-entrancy bug
// when closing a workbench window while it is getting activated
WorkbenchSingleton.SafeThreadAsyncCall(
delegate {
MessageService.ShowHandledException(ex);
if (WorkbenchWindow != null)
WorkbenchWindow.CloseWindow(true);
});
}
}
public override void Save(OpenedFile file, Stream stream)
{
editor.SaveIcon(stream);
}
}
}

2
src/AddIns/DisplayBindings/IconEditor/IconEditor/InvalidIconException.cs → src/AddIns/DisplayBindings/IconEditor/InvalidIconException.cs

@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
using System;
using System.Runtime.Serialization;
namespace IconEditor
namespace ICSharpCode.IconEditor
{
[Serializable]
public class InvalidIconException : Exception

187
src/AddIns/DisplayBindings/IconEditor/PickFormatDialog.Designer.cs generated

@ -0,0 +1,187 @@ @@ -0,0 +1,187 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
namespace ICSharpCode.IconEditor
{
partial class PickFormatDialog
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.widthUpDown = new System.Windows.Forms.NumericUpDown();
this.heightUpDown = new System.Windows.Forms.NumericUpDown();
this.label3 = new System.Windows.Forms.Label();
this.colorDepthComboBox = new System.Windows.Forms.ComboBox();
this.okButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.widthUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.heightUpDown)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.Location = new System.Drawing.Point(26, 20);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(61, 23);
this.label1.TabIndex = 0;
this.label1.Text = "&Width:";
//
// label2
//
this.label2.Location = new System.Drawing.Point(26, 48);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(61, 23);
this.label2.TabIndex = 1;
this.label2.Text = "&Height:";
//
// widthUpDown
//
this.widthUpDown.Location = new System.Drawing.Point(93, 18);
this.widthUpDown.Maximum = new decimal(new int[] {
256,
0,
0,
0});
this.widthUpDown.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.widthUpDown.Name = "widthUpDown";
this.widthUpDown.Size = new System.Drawing.Size(78, 20);
this.widthUpDown.TabIndex = 2;
this.widthUpDown.Value = new decimal(new int[] {
32,
0,
0,
0});
//
// heightUpDown
//
this.heightUpDown.Location = new System.Drawing.Point(93, 46);
this.heightUpDown.Maximum = new decimal(new int[] {
256,
0,
0,
0});
this.heightUpDown.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.heightUpDown.Name = "heightUpDown";
this.heightUpDown.Size = new System.Drawing.Size(78, 20);
this.heightUpDown.TabIndex = 3;
this.heightUpDown.Value = new decimal(new int[] {
32,
0,
0,
0});
//
// label3
//
this.label3.Location = new System.Drawing.Point(26, 76);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(61, 23);
this.label3.TabIndex = 4;
this.label3.Text = "&Colors:";
//
// colorDepthComboBox
//
this.colorDepthComboBox.FormattingEnabled = true;
this.colorDepthComboBox.Items.AddRange(new object[] {
"Monochrome",
"4 bit",
"8 bit",
"16 bit",
"24 bit",
"32 bit"});
this.colorDepthComboBox.Location = new System.Drawing.Point(93, 73);
this.colorDepthComboBox.Name = "colorDepthComboBox";
this.colorDepthComboBox.Size = new System.Drawing.Size(78, 21);
this.colorDepthComboBox.TabIndex = 5;
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.okButton.Location = new System.Drawing.Point(28, 114);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(75, 23);
this.okButton.TabIndex = 6;
this.okButton.Text = "OK";
this.okButton.UseVisualStyleBackColor = true;
this.okButton.Click += new System.EventHandler(this.OkButtonClick);
//
// cancelButton
//
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Location = new System.Drawing.Point(109, 114);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(75, 23);
this.cancelButton.TabIndex = 7;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
this.cancelButton.Click += new System.EventHandler(this.CancelButtonClick);
//
// PickFormatDialog
//
this.AcceptButton = this.okButton;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(196, 149);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.colorDepthComboBox);
this.Controls.Add(this.label3);
this.Controls.Add(this.heightUpDown);
this.Controls.Add(this.widthUpDown);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "PickFormatDialog";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Image Format";
((System.ComponentModel.ISupportInitialize)(this.widthUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.heightUpDown)).EndInit();
this.ResumeLayout(false);
}
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.ComboBox colorDepthComboBox;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.NumericUpDown heightUpDown;
private System.Windows.Forms.NumericUpDown widthUpDown;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
}
}

45
src/AddIns/DisplayBindings/IconEditor/PickFormatDialog.cs

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ICSharpCode.IconEditor
{
public partial class PickFormatDialog : Form
{
public PickFormatDialog()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
colorDepthComboBox.SelectedIndex = Array.IndexOf(colorDepths, 32); // 32-bit is default
}
public int IconWidth {
get { return (int)widthUpDown.Value; }
}
public int IconHeight {
get { return (int)heightUpDown.Value; }
}
int[] colorDepths = { 1, 4, 8, 24, 32 };
public int ColorDepth {
get { return colorDepths[colorDepthComboBox.SelectedIndex]; }
}
void OkButtonClick(object sender, EventArgs e)
{
Close();
}
void CancelButtonClick(object sender, EventArgs e)
{
Close();
}
}
}

9
src/Setup/Files.wxs

@ -1534,12 +1534,9 @@ @@ -1534,12 +1534,9 @@
</Component>
</Directory>
<Directory Id="IconEditorFolder" Name="IconEditor">
<Component Guid="13031705-82B1-46D8-8749-453A6A313A3B" Id="IconEditorExe" DiskId="1">
<File Source="..\..\AddIns\DisplayBindings\IconEditor\IconEditor.exe" Id="IconEditor.exe" Name="IconEditor.exe" Assembly=".net" AssemblyApplication="IconEditor.exe" AssemblyManifest="IconEditor.exe" KeyPath="yes" />
</Component>
<Component Guid="A6F985C3-09A5-4650-9A8E-239BBC737B10" Id="IconEditorAddInFiles" DiskId="1">
<File Source="..\..\AddIns\DisplayBindings\IconEditor\ICSharpCode.IconEditorAddIn.dll" Id="ICSharpCode.IconEditorAddIn.dll" Name="ICSharpCode.IconEditorAddIn.dll" Assembly=".net" AssemblyApplication="ICSharpCode.IconEditorAddIn.dll" AssemblyManifest="ICSharpCode.IconEditorAddIn.dll" KeyPath="yes" />
<File Source="..\..\AddIns\DisplayBindings\IconEditor\IconEditorAddIn.addin" Id="IconEditorAddIn.addin" Name="IconEditorAddIn.addin" />
<Component Guid="A32C8CC1-705D-4BFF-B9CE-A4D867DD2EFA" Id="IconEditorFiles" DiskId="1">
<File Source="..\..\AddIns\DisplayBindings\IconEditor\ICSharpCode.IconEditor.dll" Id="ICSharpCode.IconEditor.dll" Name="ICSharpCode.IconEditor.dll" Assembly=".net" AssemblyApplication="ICSharpCode.IconEditor.dll" AssemblyManifest="ICSharpCode.IconEditor.dll" KeyPath="yes" />
<File Source="..\..\AddIns\DisplayBindings\IconEditor\IconEditor.addin" Id="IconEditor.addin" Name="IconEditor.addin" />
</Component>
</Directory>
<Directory Id="ResourceEditorFolder" Name="ResourceEditor">

3
src/Setup/Setup.wxs

@ -365,8 +365,7 @@ @@ -365,8 +365,7 @@
<ComponentRef Id="WixUIInstallDirProjectTemplate"/>
<ComponentRef Id="WixUIFeatureTreeProjectTemplate"/>
<ComponentRef Id="FormsDesignerFiles"/>
<ComponentRef Id="IconEditorAddInFiles"/>
<ComponentRef Id="IconEditorExe"/>
<ComponentRef Id="IconEditorFiles"/>
<ComponentRef Id="ResourceEditorFiles"/>
<ComponentRef Id="SettingsEditorFiles"/>
<ComponentRef Id="ClassDiagramResources"/>

Loading…
Cancel
Save