diff --git a/src/Artemis.Core/Artemis.Core.csproj b/src/Artemis.Core/Artemis.Core.csproj index 7aafd5db4..47ba62de6 100644 --- a/src/Artemis.Core/Artemis.Core.csproj +++ b/src/Artemis.Core/Artemis.Core.csproj @@ -12,28 +12,11 @@ Artemis.Core v4.7.2 512 + false - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - 7 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - true bin\x64\Debug\ diff --git a/src/Artemis.Core/Models/Profile/LayerShapes/LayerShape.cs b/src/Artemis.Core/Models/Profile/LayerShapes/LayerShape.cs index 1a9ec275d..79adc2133 100644 --- a/src/Artemis.Core/Models/Profile/LayerShapes/LayerShape.cs +++ b/src/Artemis.Core/Models/Profile/LayerShapes/LayerShape.cs @@ -107,6 +107,9 @@ namespace Artemis.Core.Models.Profile.LayerShapes public SKRect GetUnscaledRectangle() { + if (!Layer.Leds.Any()) + return SKRect.Empty; + var x = Layer.Leds.Min(l => l.RgbLed.AbsoluteLedRectangle.Location.X); var y = Layer.Leds.Min(l => l.RgbLed.AbsoluteLedRectangle.Location.Y); var width = Layer.Leds.Max(l => l.RgbLed.AbsoluteLedRectangle.Location.X + l.RgbLed.AbsoluteLedRectangle.Size.Width) - x; diff --git a/src/Artemis.Plugins.Devices.Corsair/Artemis.Plugins.Devices.Corsair.csproj b/src/Artemis.Plugins.Devices.Corsair/Artemis.Plugins.Devices.Corsair.csproj index 5ffeb1d0e..619003f12 100644 --- a/src/Artemis.Plugins.Devices.Corsair/Artemis.Plugins.Devices.Corsair.csproj +++ b/src/Artemis.Plugins.Devices.Corsair/Artemis.Plugins.Devices.Corsair.csproj @@ -15,22 +15,25 @@ - + true - full - false - bin\Debug\ + bin\x64\Debug\ DEBUG;TRACE + full + x64 + 7.3 prompt - 4 + MinimumRecommendedRules.ruleset - - pdbonly - true - bin\Release\ + + bin\x64\Release\ TRACE + true + pdbonly + x64 + 7.3 prompt - 4 + MinimumRecommendedRules.ruleset diff --git a/src/Artemis.Plugins.Devices.Logitech/Artemis.Plugins.Devices.Logitech.csproj b/src/Artemis.Plugins.Devices.Logitech/Artemis.Plugins.Devices.Logitech.csproj index 6f4b09ced..0ea1a4bf3 100644 --- a/src/Artemis.Plugins.Devices.Logitech/Artemis.Plugins.Devices.Logitech.csproj +++ b/src/Artemis.Plugins.Devices.Logitech/Artemis.Plugins.Devices.Logitech.csproj @@ -13,22 +13,25 @@ 512 true - + true - full - false - bin\Debug\ + bin\x64\Debug\ DEBUG;TRACE + full + x64 + 7.3 prompt - 4 + MinimumRecommendedRules.ruleset - - pdbonly - true - bin\Release\ + + bin\x64\Release\ TRACE + true + pdbonly + x64 + 7.3 prompt - 4 + MinimumRecommendedRules.ruleset @@ -54,6 +57,7 @@ {9B811F9B-86B9-4771-87AF-72BAE7078A36} Artemis.Core + False diff --git a/src/Artemis.Plugins.Devices.Wooting/Artemis.Plugins.Devices.Wooting.csproj b/src/Artemis.Plugins.Devices.Wooting/Artemis.Plugins.Devices.Wooting.csproj index b59e9e83d..bddd6ad42 100644 --- a/src/Artemis.Plugins.Devices.Wooting/Artemis.Plugins.Devices.Wooting.csproj +++ b/src/Artemis.Plugins.Devices.Wooting/Artemis.Plugins.Devices.Wooting.csproj @@ -13,22 +13,25 @@ 512 true - + true - full - false - bin\Debug\ + bin\x64\Debug\ DEBUG;TRACE + full + x64 + 7.3 prompt - 4 + MinimumRecommendedRules.ruleset - - pdbonly - true - bin\Release\ + + bin\x64\Release\ TRACE + true + pdbonly + x64 + 7.3 prompt - 4 + MinimumRecommendedRules.ruleset @@ -59,6 +62,7 @@ {9b811f9b-86b9-4771-87af-72bae7078a36} Artemis.Core + False diff --git a/src/Artemis.Plugins.LayerTypes.Brush/Artemis.Plugins.LayerBrushes.Color.csproj b/src/Artemis.Plugins.LayerBrushes.Color/Artemis.Plugins.LayerBrushes.Color.csproj similarity index 91% rename from src/Artemis.Plugins.LayerTypes.Brush/Artemis.Plugins.LayerBrushes.Color.csproj rename to src/Artemis.Plugins.LayerBrushes.Color/Artemis.Plugins.LayerBrushes.Color.csproj index 345b42e67..a9b3d6761 100644 --- a/src/Artemis.Plugins.LayerTypes.Brush/Artemis.Plugins.LayerBrushes.Color.csproj +++ b/src/Artemis.Plugins.LayerBrushes.Color/Artemis.Plugins.LayerBrushes.Color.csproj @@ -12,27 +12,30 @@ v4.7.2 512 true + false - + true - full - false - bin\Debug\ + bin\x64\Debug\ DEBUG;TRACE - prompt - 4 + full + x64 7 - - - pdbonly - true - bin\Release\ - TRACE prompt - 4 + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + MinimumRecommendedRules.ruleset diff --git a/src/Artemis.Plugins.LayerTypes.Brush/ColorBrush.cs b/src/Artemis.Plugins.LayerBrushes.Color/ColorBrush.cs similarity index 100% rename from src/Artemis.Plugins.LayerTypes.Brush/ColorBrush.cs rename to src/Artemis.Plugins.LayerBrushes.Color/ColorBrush.cs diff --git a/src/Artemis.Plugins.LayerTypes.Brush/ColorBrushProvider.cs b/src/Artemis.Plugins.LayerBrushes.Color/ColorBrushProvider.cs similarity index 100% rename from src/Artemis.Plugins.LayerTypes.Brush/ColorBrushProvider.cs rename to src/Artemis.Plugins.LayerBrushes.Color/ColorBrushProvider.cs diff --git a/src/Artemis.Plugins.LayerTypes.Brush/ColorBrushSettings.cs b/src/Artemis.Plugins.LayerBrushes.Color/ColorBrushSettings.cs similarity index 100% rename from src/Artemis.Plugins.LayerTypes.Brush/ColorBrushSettings.cs rename to src/Artemis.Plugins.LayerBrushes.Color/ColorBrushSettings.cs diff --git a/src/Artemis.Plugins.LayerTypes.Brush/ColorBrushView.xaml b/src/Artemis.Plugins.LayerBrushes.Color/ColorBrushView.xaml similarity index 100% rename from src/Artemis.Plugins.LayerTypes.Brush/ColorBrushView.xaml rename to src/Artemis.Plugins.LayerBrushes.Color/ColorBrushView.xaml diff --git a/src/Artemis.Plugins.LayerTypes.Brush/ColorBrushViewModel.cs b/src/Artemis.Plugins.LayerBrushes.Color/ColorBrushViewModel.cs similarity index 100% rename from src/Artemis.Plugins.LayerTypes.Brush/ColorBrushViewModel.cs rename to src/Artemis.Plugins.LayerBrushes.Color/ColorBrushViewModel.cs diff --git a/src/Artemis.Plugins.LayerTypes.Brush/Properties/AssemblyInfo.cs b/src/Artemis.Plugins.LayerBrushes.Color/Properties/AssemblyInfo.cs similarity index 100% rename from src/Artemis.Plugins.LayerTypes.Brush/Properties/AssemblyInfo.cs rename to src/Artemis.Plugins.LayerBrushes.Color/Properties/AssemblyInfo.cs diff --git a/src/Artemis.Plugins.LayerTypes.Brush/app.config b/src/Artemis.Plugins.LayerBrushes.Color/app.config similarity index 100% rename from src/Artemis.Plugins.LayerTypes.Brush/app.config rename to src/Artemis.Plugins.LayerBrushes.Color/app.config diff --git a/src/Artemis.Plugins.LayerTypes.Brush/packages.config b/src/Artemis.Plugins.LayerBrushes.Color/packages.config similarity index 100% rename from src/Artemis.Plugins.LayerTypes.Brush/packages.config rename to src/Artemis.Plugins.LayerBrushes.Color/packages.config diff --git a/src/Artemis.Plugins.LayerTypes.Brush/plugin.json b/src/Artemis.Plugins.LayerBrushes.Color/plugin.json similarity index 100% rename from src/Artemis.Plugins.LayerTypes.Brush/plugin.json rename to src/Artemis.Plugins.LayerBrushes.Color/plugin.json diff --git a/src/Artemis.Plugins.LayerElements.Noise/Artemis.Plugins.LayerBrushes.Noise.csproj b/src/Artemis.Plugins.LayerBrushes.Noise/Artemis.Plugins.LayerBrushes.Noise.csproj similarity index 92% rename from src/Artemis.Plugins.LayerElements.Noise/Artemis.Plugins.LayerBrushes.Noise.csproj rename to src/Artemis.Plugins.LayerBrushes.Noise/Artemis.Plugins.LayerBrushes.Noise.csproj index 2fbe7e331..7dbd14a31 100644 --- a/src/Artemis.Plugins.LayerElements.Noise/Artemis.Plugins.LayerBrushes.Noise.csproj +++ b/src/Artemis.Plugins.LayerBrushes.Noise/Artemis.Plugins.LayerBrushes.Noise.csproj @@ -12,27 +12,30 @@ v4.7.2 512 true + false - + true - full - false - bin\Debug\ + bin\x64\Debug\ DEBUG;TRACE - prompt - 4 + full + x64 7 - - - pdbonly - true - bin\Release\ - TRACE prompt - 4 + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + MinimumRecommendedRules.ruleset diff --git a/src/Artemis.Plugins.LayerElements.Noise/NoiseBrush.cs b/src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrush.cs similarity index 100% rename from src/Artemis.Plugins.LayerElements.Noise/NoiseBrush.cs rename to src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrush.cs diff --git a/src/Artemis.Plugins.LayerElements.Noise/NoiseBrushProvider.cs b/src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrushProvider.cs similarity index 100% rename from src/Artemis.Plugins.LayerElements.Noise/NoiseBrushProvider.cs rename to src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrushProvider.cs diff --git a/src/Artemis.Plugins.LayerElements.Noise/NoiseBrushSettings.cs b/src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrushSettings.cs similarity index 100% rename from src/Artemis.Plugins.LayerElements.Noise/NoiseBrushSettings.cs rename to src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrushSettings.cs diff --git a/src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrushView.xaml b/src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrushView.xaml new file mode 100644 index 000000000..d3fd894c1 --- /dev/null +++ b/src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrushView.xaml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Artemis.Plugins.LayerElements.Noise/NoiseBrushViewModel.cs b/src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrushViewModel.cs similarity index 100% rename from src/Artemis.Plugins.LayerElements.Noise/NoiseBrushViewModel.cs rename to src/Artemis.Plugins.LayerBrushes.Noise/NoiseBrushViewModel.cs diff --git a/src/Artemis.Plugins.LayerElements.Noise/Properties/AssemblyInfo.cs b/src/Artemis.Plugins.LayerBrushes.Noise/Properties/AssemblyInfo.cs similarity index 95% rename from src/Artemis.Plugins.LayerElements.Noise/Properties/AssemblyInfo.cs rename to src/Artemis.Plugins.LayerBrushes.Noise/Properties/AssemblyInfo.cs index 4da3ae745..68a8ae3ae 100644 --- a/src/Artemis.Plugins.LayerElements.Noise/Properties/AssemblyInfo.cs +++ b/src/Artemis.Plugins.LayerBrushes.Noise/Properties/AssemblyInfo.cs @@ -9,7 +9,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Artemis.Plugins.LayerElements.Noise")] +[assembly: AssemblyProduct("Artemis.Plugins.LayerBrushes.Noise")] [assembly: AssemblyCopyright("Copyright © 2019")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/src/Artemis.Plugins.LayerElements.Noise/Utilities/OpenSimplexNoise.cs b/src/Artemis.Plugins.LayerBrushes.Noise/Utilities/OpenSimplexNoise.cs similarity index 100% rename from src/Artemis.Plugins.LayerElements.Noise/Utilities/OpenSimplexNoise.cs rename to src/Artemis.Plugins.LayerBrushes.Noise/Utilities/OpenSimplexNoise.cs diff --git a/src/Artemis.Plugins.LayerElements.Noise/app.config b/src/Artemis.Plugins.LayerBrushes.Noise/app.config similarity index 100% rename from src/Artemis.Plugins.LayerElements.Noise/app.config rename to src/Artemis.Plugins.LayerBrushes.Noise/app.config diff --git a/src/Artemis.Plugins.LayerElements.Noise/packages.config b/src/Artemis.Plugins.LayerBrushes.Noise/packages.config similarity index 100% rename from src/Artemis.Plugins.LayerElements.Noise/packages.config rename to src/Artemis.Plugins.LayerBrushes.Noise/packages.config diff --git a/src/Artemis.Plugins.LayerElements.Noise/plugin.json b/src/Artemis.Plugins.LayerBrushes.Noise/plugin.json similarity index 100% rename from src/Artemis.Plugins.LayerElements.Noise/plugin.json rename to src/Artemis.Plugins.LayerBrushes.Noise/plugin.json diff --git a/src/Artemis.Plugins.LayerElements.Animations/AnimationBrushProvider.cs b/src/Artemis.Plugins.LayerElements.Animations/AnimationBrushProvider.cs deleted file mode 100644 index ba10bedfa..000000000 --- a/src/Artemis.Plugins.LayerElements.Animations/AnimationBrushProvider.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Artemis.Core.Plugins.LayerElement; -using Artemis.Core.Plugins.Models; - -namespace Artemis.Plugins.LayerElements.Animations -{ - public class AnimationBrushProvider : BrushProvider - { - public AnimationBrushProvider(PluginInfo pluginInfo) : base(pluginInfo) - { - AddLayerElementDescriptor("Slide animation", "A sliding animation", "ArrowAll"); - AddLayerElementDescriptor("Rotation animation", "A rotation animation", "CropRotate"); - } - - public override void Dispose() - { - } - - public override void EnablePlugin() - { - } - - public override void DisablePlugin() - { - } - } -} \ No newline at end of file diff --git a/src/Artemis.Plugins.LayerElements.Animations/Artemis.Plugins.LayerElements.Animations.csproj b/src/Artemis.Plugins.LayerElements.Animations/Artemis.Plugins.LayerElements.Animations.csproj deleted file mode 100644 index ac15258da..000000000 --- a/src/Artemis.Plugins.LayerElements.Animations/Artemis.Plugins.LayerElements.Animations.csproj +++ /dev/null @@ -1,92 +0,0 @@ - - - - - Debug - AnyCPU - {6FE5DED5-D62E-4811-985F-644124FCEEFE} - Library - Properties - Artemis.Plugins.LayerElements.Animations - Artemis.Plugins.LayerElements.Animations - v4.7.2 - 512 - true - - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\packages\SkiaSharp.1.68.1\lib\net45\SkiaSharp.dll - - - - ..\packages\System.Buffers.4.5.0\lib\netstandard2.0\System.Buffers.dll - - - - ..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll - - - - ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll - - - ..\packages\System.Runtime.CompilerServices.Unsafe.4.6.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll - - - - - - - - - - - - - - - - - {9b811f9b-86b9-4771-87af-72bae7078a36} - Artemis.Core - - - - - - - PreserveNewest - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - echo Copying plugin to Artemis.UI output directory -XCOPY "$(TargetDir.TrimEnd('\'))" "$(SolutionDir)\Artemis.UI\$(OutDir)Plugins\$(ProjectName)" /s /q /i /y - - \ No newline at end of file diff --git a/src/Artemis.Plugins.LayerElements.Animations/Properties/AssemblyInfo.cs b/src/Artemis.Plugins.LayerElements.Animations/Properties/AssemblyInfo.cs deleted file mode 100644 index 3bd9cdaa0..000000000 --- a/src/Artemis.Plugins.LayerElements.Animations/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Artemis.Plugins.LayerElements.Animations")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Artemis.Plugins.LayerElements.Animations")] -[assembly: AssemblyCopyright("Copyright © 2019")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("6fe5ded5-d62e-4811-985f-644124fceefe")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/Artemis.Plugins.LayerElements.Animations/RotationLayerElement.cs b/src/Artemis.Plugins.LayerElements.Animations/RotationLayerElement.cs deleted file mode 100644 index 6a96b8d0b..000000000 --- a/src/Artemis.Plugins.LayerElements.Animations/RotationLayerElement.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using Artemis.Core.Models.Profile; -using Artemis.Core.Plugins.LayerElement; -using SkiaSharp; - -namespace Artemis.Plugins.LayerElements.Animations -{ - public class RotationLayerElement : LayerElement - { - public RotationLayerElement(Layer layer, Guid guid, BrushSettings settings, BrushDescriptor descriptor) : base(layer, guid, settings, descriptor) - { - } - - public float Rotation { get; set; } - - public override BrushViewModel GetViewModel() - { - return null; - } - - public override void Update(double deltaTime) - { - Rotation += (float) (deltaTime * 100); - if (Rotation > 360) - Rotation = 0; - } - - public override void RenderPreProcess(SKPath framePath, SKCanvas canvas) - { - canvas.RotateDegrees(Rotation, Layer.RenderRectangle.MidX, Layer.RenderRectangle.MidY); - framePath.Transform(SKMatrix.MakeRotationDegrees(Rotation * -1, Layer.RenderRectangle.MidX, Layer.RenderRectangle.MidY)); - } - } -} \ No newline at end of file diff --git a/src/Artemis.Plugins.LayerElements.Animations/SlideLayerElement.cs b/src/Artemis.Plugins.LayerElements.Animations/SlideLayerElement.cs deleted file mode 100644 index c86b91aa8..000000000 --- a/src/Artemis.Plugins.LayerElements.Animations/SlideLayerElement.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using Artemis.Core.Models.Profile; -using Artemis.Core.Plugins.LayerElement; -using SkiaSharp; - -namespace Artemis.Plugins.LayerElements.Animations -{ - public class SlideLayerElement : LayerElement - { - public SlideLayerElement(Layer layer, Guid guid, BrushSettings settings, BrushDescriptor descriptor) : base(layer, guid, settings, descriptor) - { - } - - public int MovePercentage { get; set; } - - public override BrushViewModel GetViewModel() - { - return null; - } - - public override void Update(double deltaTime) - { - MovePercentage++; - if (MovePercentage > 100) - MovePercentage = 0; - } - - public override void RenderPreProcess(SKPath framePath, SKCanvas canvas) - { - canvas.Translate(Layer.RenderRectangle.Width / 100 * MovePercentage * -1, 0); - framePath.Transform(SKMatrix.MakeTranslation(Layer.RenderRectangle.Width / 100 * MovePercentage, 0)); - } - } -} \ No newline at end of file diff --git a/src/Artemis.Plugins.LayerElements.Animations/app.config b/src/Artemis.Plugins.LayerElements.Animations/app.config deleted file mode 100644 index 03a8d9e5d..000000000 --- a/src/Artemis.Plugins.LayerElements.Animations/app.config +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Artemis.Plugins.LayerElements.Animations/packages.config b/src/Artemis.Plugins.LayerElements.Animations/packages.config deleted file mode 100644 index 97d48701a..000000000 --- a/src/Artemis.Plugins.LayerElements.Animations/packages.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/Artemis.Plugins.LayerElements.Animations/plugin.json b/src/Artemis.Plugins.LayerElements.Animations/plugin.json deleted file mode 100644 index a5e4bbb6f..000000000 --- a/src/Artemis.Plugins.LayerElements.Animations/plugin.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "Guid": "a3b94380-6592-44f9-8717-3053ca9b4799", - "Name": "Animation layer elements", - "Version": { - "Major": 1, - "Minor": 0, - "Build": 0 - }, - "Main": "Artemis.Plugins.LayerElements.Animations.dll" -} \ No newline at end of file diff --git a/src/Artemis.Plugins.LayerElements.Noise/NoiseBrushView.xaml b/src/Artemis.Plugins.LayerElements.Noise/NoiseBrushView.xaml deleted file mode 100644 index b642495ee..000000000 --- a/src/Artemis.Plugins.LayerElements.Noise/NoiseBrushView.xaml +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Artemis.Plugins.Modules.General/Artemis.Plugins.Modules.General.csproj b/src/Artemis.Plugins.Modules.General/Artemis.Plugins.Modules.General.csproj index c7accaf55..4f9fc237f 100644 --- a/src/Artemis.Plugins.Modules.General/Artemis.Plugins.Modules.General.csproj +++ b/src/Artemis.Plugins.Modules.General/Artemis.Plugins.Modules.General.csproj @@ -12,27 +12,30 @@ v4.7.2 512 true + false - + true - full - false - bin\Debug\ + bin\x64\Debug\ DEBUG;TRACE - prompt - 4 + full + x64 7 - - - pdbonly - true - bin\Release\ - TRACE prompt - 4 + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + MinimumRecommendedRules.ruleset diff --git a/src/Artemis.Storage/Artemis.Storage.csproj b/src/Artemis.Storage/Artemis.Storage.csproj index 384f835dc..4a42f4dc9 100644 --- a/src/Artemis.Storage/Artemis.Storage.csproj +++ b/src/Artemis.Storage/Artemis.Storage.csproj @@ -2,7 +2,7 @@ net472 - AnyCPU;x64 + x64 7 diff --git a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj index e27d3449d..d0dd9a1a4 100644 --- a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj +++ b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj @@ -13,25 +13,29 @@ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 true + false - + true - full - false - bin\Debug\ + bin\x64\Debug\ DEBUG;TRACE + full + x64 + 7.3 prompt - 4 + MinimumRecommendedRules.ruleset - - pdbonly - true - bin\Release\ + + bin\x64\Release\ TRACE + true + pdbonly + x64 + 7.3 prompt - 4 + MinimumRecommendedRules.ruleset diff --git a/src/Artemis.UI/Artemis.UI.csproj b/src/Artemis.UI/Artemis.UI.csproj index e34ff68d3..a57331b6e 100644 --- a/src/Artemis.UI/Artemis.UI.csproj +++ b/src/Artemis.UI/Artemis.UI.csproj @@ -18,26 +18,6 @@ - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - 7 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - true @@ -490,9 +470,6 @@ - - - @@ -530,6 +507,11 @@ + + + false + + @@ -545,4 +527,11 @@ + + + + + + + \ No newline at end of file diff --git a/src/Artemis.UI/Ninject/Factories/IViewModelFactory.cs b/src/Artemis.UI/Ninject/Factories/IViewModelFactory.cs index d171e66fa..b1e9a2d43 100644 --- a/src/Artemis.UI/Ninject/Factories/IViewModelFactory.cs +++ b/src/Artemis.UI/Ninject/Factories/IViewModelFactory.cs @@ -4,6 +4,7 @@ using Artemis.Core.Plugins.Abstract; using Artemis.UI.Screens.Module; using Artemis.UI.Screens.Module.ProfileEditor; using Artemis.UI.Screens.Module.ProfileEditor.ProfileTree.TreeItem; +using Artemis.UI.Screens.Module.ProfileEditor.Visualization; using Artemis.UI.Screens.Settings.Tabs.Devices; namespace Artemis.UI.Ninject.Factories @@ -37,4 +38,9 @@ namespace Artemis.UI.Ninject.Factories { LayerViewModel Create(TreeItemViewModel parent, ProfileElement folder); } + + public interface IProfileLayerViewModelFactory : IViewModelFactory + { + ProfileLayerViewModel Create(Layer layer); + } } \ No newline at end of file diff --git a/src/Artemis.UI/Properties/Resources.Designer.cs b/src/Artemis.UI/Properties/Resources.Designer.cs index da2a448eb..9aff96daa 100644 --- a/src/Artemis.UI/Properties/Resources.Designer.cs +++ b/src/Artemis.UI/Properties/Resources.Designer.cs @@ -179,15 +179,5 @@ namespace Artemis.UI.Properties { return ((System.Drawing.Bitmap)(obj)); } } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap tile { - get { - object obj = ResourceManager.GetObject("tile", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } } } diff --git a/src/Artemis.UI/Properties/Resources.resx b/src/Artemis.UI/Properties/Resources.resx index d7077ea48..ffa40844b 100644 --- a/src/Artemis.UI/Properties/Resources.resx +++ b/src/Artemis.UI/Properties/Resources.resx @@ -154,7 +154,4 @@ ..\Resources\logo-512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\tile.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - \ No newline at end of file diff --git a/src/Artemis.UI/Resources/tile.png b/src/Artemis.UI/Resources/tile.png deleted file mode 100644 index b793d7906..000000000 Binary files a/src/Artemis.UI/Resources/tile.png and /dev/null differ diff --git a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerView.xaml b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerView.xaml index 5a8665445..d676cea0e 100644 --- a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerView.xaml +++ b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerView.xaml @@ -6,7 +6,29 @@ xmlns:local="clr-namespace:Artemis.UI.Screens.Module.ProfileEditor.Visualization" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> - + + + + diff --git a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerViewModel.cs b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerViewModel.cs index a84b45958..76861ee7d 100644 --- a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerViewModel.cs +++ b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerViewModel.cs @@ -6,20 +6,24 @@ using Artemis.Core.Models.Profile; using Artemis.Core.Models.Profile.LayerShapes; using Artemis.Core.Models.Surface; using Artemis.UI.Extensions; +using Artemis.UI.Services.Interfaces; using RGB.NET.Core; -using SkiaSharp.Views.WPF; using Rectangle = Artemis.Core.Models.Profile.LayerShapes.Rectangle; namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization { public class ProfileLayerViewModel : CanvasViewModel { - public ProfileLayerViewModel(Layer layer) + private readonly IProfileEditorService _profileEditorService; + + public ProfileLayerViewModel(Layer layer, IProfileEditorService profileEditorService) { + _profileEditorService = profileEditorService; Layer = layer; Update(); Layer.RenderPropertiesUpdated += LayerOnRenderPropertiesUpdated; + _profileEditorService.SelectedProfileElementChanged += OnSelectedProfileElementChanged; } public Layer Layer { get; } @@ -28,9 +32,11 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization public Geometry OpacityGeometry { get; set; } public Geometry ShapeGeometry { get; set; } public Rect ViewportRectangle { get; set; } + public bool IsSelected { get; set; } private void Update() { + IsSelected = _profileEditorService.SelectedProfileElement == Layer; CreateLayerGeometry(); CreateShapeGeometry(); CreateViewportRectangle(); @@ -118,8 +124,7 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization ViewportRectangle = Rect.Empty; return; } - - + var x = Layer.Leds.Min(l => l.RgbLed.AbsoluteLedRectangle.Location.X); var y = Layer.Leds.Min(l => l.RgbLed.AbsoluteLedRectangle.Location.Y); var width = Layer.Leds.Max(l => l.RgbLed.AbsoluteLedRectangle.Location.X + l.RgbLed.AbsoluteLedRectangle.Size.Width) - x; @@ -176,6 +181,11 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization Update(); } + private void OnSelectedProfileElementChanged(object sender, EventArgs e) + { + IsSelected = _profileEditorService.SelectedProfileElement == Layer; + } + public void Dispose() { Layer.RenderPropertiesUpdated -= LayerOnRenderPropertiesUpdated; diff --git a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileViewModel.cs b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileViewModel.cs index a8d553288..e4840d593 100644 --- a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileViewModel.cs +++ b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileViewModel.cs @@ -11,6 +11,7 @@ using Artemis.Core.Plugins.Models; using Artemis.Core.Services; using Artemis.Core.Services.Storage.Interfaces; using Artemis.UI.Events; +using Artemis.UI.Ninject.Factories; using Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools; using Artemis.UI.Screens.Shared; using Artemis.UI.Services.Interfaces; @@ -23,17 +24,23 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization { private readonly IProfileEditorService _profileEditorService; private readonly ISettingsService _settingsService; + private readonly IProfileLayerViewModelFactory _profileLayerViewModelFactory; private readonly ISurfaceService _surfaceService; private int _activeToolIndex; private VisualizationToolViewModel _activeToolViewModel; private int _previousTool; private TimerUpdateTrigger _updateTrigger; - public ProfileViewModel(IProfileEditorService profileEditorService, ISurfaceService surfaceService, ISettingsService settingsService, IEventAggregator eventAggregator) + public ProfileViewModel(IProfileEditorService profileEditorService, + ISurfaceService surfaceService, + ISettingsService settingsService, + IEventAggregator eventAggregator, + IProfileLayerViewModelFactory profileLayerViewModelFactory) { _profileEditorService = profileEditorService; _surfaceService = surfaceService; _settingsService = settingsService; + _profileLayerViewModelFactory = profileLayerViewModelFactory; Execute.OnUIThreadSync(() => { @@ -133,7 +140,7 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization foreach (var layer in layers) { if (layerViewModels.All(vm => vm.Layer != layer)) - CanvasViewModels.Add(new ProfileLayerViewModel(layer)); + CanvasViewModels.Add(_profileLayerViewModelFactory.Create(layer)); } // Remove layers that no longer exist diff --git a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/EllipseToolViewModel.cs b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/EllipseToolViewModel.cs index 7c066c34d..ffa6a935d 100644 --- a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/EllipseToolViewModel.cs +++ b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/EllipseToolViewModel.cs @@ -45,8 +45,11 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools if (ProfileEditorService.SelectedProfileElement is Layer layer) { + // Ensure the shape is an ellipse, we're all about ellipses up here if (!(layer.LayerShape is Ellipse)) layer.LayerShape = new Ellipse(layer); + + // Apply the drag rectangle layer.LayerShape.SetFromUnscaledRectangle(DragRectangle.ToSKRect()); ProfileEditorService.UpdateSelectedProfileElement(); } diff --git a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/FillToolViewModel.cs b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/FillToolViewModel.cs index 6368d5e4d..c449b3d2d 100644 --- a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/FillToolViewModel.cs +++ b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/FillToolViewModel.cs @@ -25,15 +25,16 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools // Find out if the click is inside a layer and if so, fill it var position = e.GetPosition((IInputElement) sender); var panZoomVm = ProfileViewModel.PanZoomViewModel; - var layer = ProfileEditorService.SelectedProfile .GetAllLayers() .FirstOrDefault(l => l.Leds.Any( led => panZoomVm.TransformContainingRect(led.RgbLed.AbsoluteLedRectangle).Contains(position)) ); - if (layer != null) - layer.LayerShape = new Fill(layer); + if (layer == null) + return; + layer.LayerShape = new Fill(layer); + ProfileEditorService.UpdateSelectedProfileElement(); } } } \ No newline at end of file diff --git a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/RectangleToolViewModel.cs b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/RectangleToolViewModel.cs index f9ba56717..25363d5b2 100644 --- a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/RectangleToolViewModel.cs +++ b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/Tools/RectangleToolViewModel.cs @@ -1,8 +1,11 @@ using System.IO; using System.Windows; using System.Windows.Input; +using Artemis.Core.Models.Profile; +using Artemis.Core.Models.Profile.LayerShapes; using Artemis.UI.Properties; using Artemis.UI.Services.Interfaces; +using SkiaSharp.Views.WPF; namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools { @@ -34,6 +37,22 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization.Tools DragRectangle = GetSquareRectBetweenPoints(MouseDownStartPosition, position); } + public override void MouseUp(object sender, MouseButtonEventArgs e) + { + base.MouseUp(sender, e); + + if (ProfileEditorService.SelectedProfileElement is Layer layer) + { + // Ensure the shape is a rectangle + if (!(layer.LayerShape is Rectangle)) + layer.LayerShape = new Rectangle(layer); + + // Apply the drag rectangle + layer.LayerShape.SetFromUnscaledRectangle(DragRectangle.ToSKRect()); + ProfileEditorService.UpdateSelectedProfileElement(); + } + } + public override void KeyUp(KeyEventArgs e) { base.KeyUp(e); diff --git a/src/Artemis.UI/Screens/RootViewModel.cs b/src/Artemis.UI/Screens/RootViewModel.cs index 5af4656e4..adfb4295b 100644 --- a/src/Artemis.UI/Screens/RootViewModel.cs +++ b/src/Artemis.UI/Screens/RootViewModel.cs @@ -60,7 +60,10 @@ namespace Artemis.UI.Screens paletteHelper.SetTheme(theme); var extensionsPaletteHelper = new MaterialDesignExtensions.Themes.PaletteHelper(); + // That's nice, then don't use it in your own examples and provide a working alternative + #pragma warning disable 612 extensionsPaletteHelper.SetLightDark(windowsTheme == ThemeWatcher.WindowsTheme.Dark); + #pragma warning restore 612 } public void WindowDeactivated() diff --git a/src/Artemis.UI/Screens/SurfaceEditor/Dialogs/SurfaceDeviceConfigViewModel.cs b/src/Artemis.UI/Screens/SurfaceEditor/Dialogs/SurfaceDeviceConfigViewModel.cs index b1dc0496a..ab58f6b4f 100644 --- a/src/Artemis.UI/Screens/SurfaceEditor/Dialogs/SurfaceDeviceConfigViewModel.cs +++ b/src/Artemis.UI/Screens/SurfaceEditor/Dialogs/SurfaceDeviceConfigViewModel.cs @@ -41,7 +41,7 @@ namespace Artemis.UI.Screens.SurfaceEditor.Dialogs Session.Close(true); } - public async Task Cancel() + public void Cancel() { Session.Close(false); } diff --git a/src/Artemis.sln b/src/Artemis.sln index bdeab08d0..0c35a0086 100644 --- a/src/Artemis.sln +++ b/src/Artemis.sln @@ -21,13 +21,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{E830 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.Modules.General", "Artemis.Plugins.Modules.General\Artemis.Plugins.Modules.General.csproj", "{E592F239-FAA0-4840-9C85-46E5867D06D5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.LayerBrushes.Color", "Artemis.Plugins.LayerTypes.Brush\Artemis.Plugins.LayerBrushes.Color.csproj", "{0F288A66-6EB0-4589-8595-E33A3A3EAEA2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.LayerBrushes.Color", "Artemis.Plugins.LayerBrushes.Color\Artemis.Plugins.LayerBrushes.Color.csproj", "{0F288A66-6EB0-4589-8595-E33A3A3EAEA2}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.Devices.Corsair", "Artemis.Plugins.Devices.Corsair\Artemis.Plugins.Devices.Corsair.csproj", "{A779B2F8-C253-4C4B-8634-6EB8F594E96D}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.Devices.Logitech", "Artemis.Plugins.Devices.Logitech\Artemis.Plugins.Devices.Logitech.csproj", "{235A45C7-24AD-4F47-B9D4-CD67E610A04D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.LayerBrushes.Noise", "Artemis.Plugins.LayerElements.Noise\Artemis.Plugins.LayerBrushes.Noise.csproj", "{7F4C7AB0-4C9B-452D-AFED-34544C903DEF}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.LayerBrushes.Noise", "Artemis.Plugins.LayerBrushes.Noise\Artemis.Plugins.LayerBrushes.Noise.csproj", "{7F4C7AB0-4C9B-452D-AFED-34544C903DEF}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.UI.Shared", "Artemis.UI.Shared\Artemis.UI.Shared.csproj", "{ADB357E6-151D-4D0D-87CB-68FD0BC29812}" EndProject @@ -35,92 +35,50 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.Devices.Woo EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {46B74153-77CF-4489-BDF9-D53FDB1F7ACB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {46B74153-77CF-4489-BDF9-D53FDB1F7ACB}.Debug|Any CPU.Build.0 = Debug|Any CPU {46B74153-77CF-4489-BDF9-D53FDB1F7ACB}.Debug|x64.ActiveCfg = Debug|x64 {46B74153-77CF-4489-BDF9-D53FDB1F7ACB}.Debug|x64.Build.0 = Debug|x64 - {46B74153-77CF-4489-BDF9-D53FDB1F7ACB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {46B74153-77CF-4489-BDF9-D53FDB1F7ACB}.Release|Any CPU.Build.0 = Release|Any CPU {46B74153-77CF-4489-BDF9-D53FDB1F7ACB}.Release|x64.ActiveCfg = Release|x64 {46B74153-77CF-4489-BDF9-D53FDB1F7ACB}.Release|x64.Build.0 = Release|x64 - {E489E5E3-1A65-4AF5-A1EA-F9805FD19A65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E489E5E3-1A65-4AF5-A1EA-F9805FD19A65}.Debug|Any CPU.Build.0 = Debug|Any CPU {E489E5E3-1A65-4AF5-A1EA-F9805FD19A65}.Debug|x64.ActiveCfg = Debug|x64 {E489E5E3-1A65-4AF5-A1EA-F9805FD19A65}.Debug|x64.Build.0 = Debug|x64 - {E489E5E3-1A65-4AF5-A1EA-F9805FD19A65}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E489E5E3-1A65-4AF5-A1EA-F9805FD19A65}.Release|Any CPU.Build.0 = Release|Any CPU {E489E5E3-1A65-4AF5-A1EA-F9805FD19A65}.Release|x64.ActiveCfg = Release|x64 {E489E5E3-1A65-4AF5-A1EA-F9805FD19A65}.Release|x64.Build.0 = Release|x64 - {9B811F9B-86B9-4771-87AF-72BAE7078A36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9B811F9B-86B9-4771-87AF-72BAE7078A36}.Debug|Any CPU.Build.0 = Debug|Any CPU {9B811F9B-86B9-4771-87AF-72BAE7078A36}.Debug|x64.ActiveCfg = Debug|x64 {9B811F9B-86B9-4771-87AF-72BAE7078A36}.Debug|x64.Build.0 = Debug|x64 - {9B811F9B-86B9-4771-87AF-72BAE7078A36}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9B811F9B-86B9-4771-87AF-72BAE7078A36}.Release|Any CPU.Build.0 = Release|Any CPU {9B811F9B-86B9-4771-87AF-72BAE7078A36}.Release|x64.ActiveCfg = Release|x64 {9B811F9B-86B9-4771-87AF-72BAE7078A36}.Release|x64.Build.0 = Release|x64 - {E592F239-FAA0-4840-9C85-46E5867D06D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E592F239-FAA0-4840-9C85-46E5867D06D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E592F239-FAA0-4840-9C85-46E5867D06D5}.Debug|x64.ActiveCfg = Debug|Any CPU - {E592F239-FAA0-4840-9C85-46E5867D06D5}.Debug|x64.Build.0 = Debug|Any CPU - {E592F239-FAA0-4840-9C85-46E5867D06D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E592F239-FAA0-4840-9C85-46E5867D06D5}.Release|Any CPU.Build.0 = Release|Any CPU - {E592F239-FAA0-4840-9C85-46E5867D06D5}.Release|x64.ActiveCfg = Release|Any CPU - {E592F239-FAA0-4840-9C85-46E5867D06D5}.Release|x64.Build.0 = Release|Any CPU - {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Debug|x64.ActiveCfg = Debug|Any CPU - {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Debug|x64.Build.0 = Debug|Any CPU - {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Release|Any CPU.Build.0 = Release|Any CPU - {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Release|x64.ActiveCfg = Release|Any CPU - {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Release|x64.Build.0 = Release|Any CPU - {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Debug|x64.ActiveCfg = Debug|Any CPU - {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Debug|x64.Build.0 = Debug|Any CPU - {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Release|Any CPU.Build.0 = Release|Any CPU - {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Release|x64.ActiveCfg = Release|Any CPU - {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Release|x64.Build.0 = Release|Any CPU - {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|x64.ActiveCfg = Debug|Any CPU - {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|x64.Build.0 = Debug|Any CPU - {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|Any CPU.Build.0 = Release|Any CPU - {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|x64.ActiveCfg = Release|Any CPU - {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|x64.Build.0 = Release|Any CPU - {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Debug|x64.ActiveCfg = Debug|Any CPU - {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Debug|x64.Build.0 = Debug|Any CPU - {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Release|Any CPU.Build.0 = Release|Any CPU - {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Release|x64.ActiveCfg = Release|Any CPU - {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Release|x64.Build.0 = Release|Any CPU - {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Debug|x64.ActiveCfg = Debug|Any CPU - {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Debug|x64.Build.0 = Debug|Any CPU - {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Release|Any CPU.Build.0 = Release|Any CPU - {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Release|x64.ActiveCfg = Release|Any CPU - {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Release|x64.Build.0 = Release|Any CPU - {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Debug|x64.ActiveCfg = Debug|Any CPU - {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Debug|x64.Build.0 = Debug|Any CPU - {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Release|Any CPU.Build.0 = Release|Any CPU - {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Release|x64.ActiveCfg = Release|Any CPU - {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Release|x64.Build.0 = Release|Any CPU + {E592F239-FAA0-4840-9C85-46E5867D06D5}.Debug|x64.ActiveCfg = Debug|x64 + {E592F239-FAA0-4840-9C85-46E5867D06D5}.Debug|x64.Build.0 = Debug|x64 + {E592F239-FAA0-4840-9C85-46E5867D06D5}.Release|x64.ActiveCfg = Release|x64 + {E592F239-FAA0-4840-9C85-46E5867D06D5}.Release|x64.Build.0 = Release|x64 + {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Debug|x64.ActiveCfg = Debug|x64 + {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Debug|x64.Build.0 = Debug|x64 + {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Release|x64.ActiveCfg = Release|x64 + {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}.Release|x64.Build.0 = Release|x64 + {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Debug|x64.ActiveCfg = Debug|x64 + {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Debug|x64.Build.0 = Debug|x64 + {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Release|x64.ActiveCfg = Release|x64 + {A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Release|x64.Build.0 = Release|x64 + {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|x64.ActiveCfg = Debug|x64 + {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|x64.Build.0 = Debug|x64 + {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|x64.ActiveCfg = Release|x64 + {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|x64.Build.0 = Release|x64 + {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Debug|x64.ActiveCfg = Debug|x64 + {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Debug|x64.Build.0 = Debug|x64 + {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Release|x64.ActiveCfg = Release|x64 + {7F4C7AB0-4C9B-452D-AFED-34544C903DEF}.Release|x64.Build.0 = Release|x64 + {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Debug|x64.ActiveCfg = Debug|x64 + {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Debug|x64.Build.0 = Debug|x64 + {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Release|x64.ActiveCfg = Release|x64 + {ADB357E6-151D-4D0D-87CB-68FD0BC29812}.Release|x64.Build.0 = Release|x64 + {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Debug|x64.ActiveCfg = Debug|x64 + {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Debug|x64.Build.0 = Debug|x64 + {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Release|x64.ActiveCfg = Release|x64 + {C6BDB6D9-062D-4C28-A280-F3BD6197F07F}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE