diff --git a/src/Artemis.UI/Screens/Module/ProfileEditor/LayerProperties/LayerPropertiesViewModel.cs b/src/Artemis.UI/Screens/Module/ProfileEditor/LayerProperties/LayerPropertiesViewModel.cs index 174f7fdec..b6fc0e6dd 100644 --- a/src/Artemis.UI/Screens/Module/ProfileEditor/LayerProperties/LayerPropertiesViewModel.cs +++ b/src/Artemis.UI/Screens/Module/ProfileEditor/LayerProperties/LayerPropertiesViewModel.cs @@ -129,14 +129,14 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties ); LayerPropertyGroups.Add(new LayerPropertyGroupViewModel(ProfileEditorService, layer.General, (PropertyGroupDescriptionAttribute) generalAttribute)); LayerPropertyGroups.Add(new LayerPropertyGroupViewModel(ProfileEditorService, layer.Transform, (PropertyGroupDescriptionAttribute) transformAttribute)); - - ApplyLayerBrush(); } else SelectedLayer = null; TreeViewModel = new TreeViewModel(this, LayerPropertyGroups); TimelineViewModel = new TimelineViewModel(this, LayerPropertyGroups); + + ApplyLayerBrush(); } private void SelectedLayerOnLayerBrushUpdated(object sender, EventArgs e) @@ -146,6 +146,9 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.LayerProperties public void ApplyLayerBrush() { + if (SelectedLayer == null) + return; + var hideRenderRelatedProperties = SelectedLayer.LayerBrush != null && SelectedLayer.LayerBrush.BrushType == LayerBrushType.RgbNet; SelectedLayer.General.ShapeType.IsHidden = hideRenderRelatedProperties; SelectedLayer.General.FillType.IsHidden = hideRenderRelatedProperties; diff --git a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerViewModel.cs b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerViewModel.cs index 8f71351cc..f10d565df 100644 --- a/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerViewModel.cs +++ b/src/Artemis.UI/Screens/Module/ProfileEditor/Visualization/ProfileLayerViewModel.cs @@ -61,55 +61,57 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization private void CreateLayerGeometry() { - if (!Layer.Leds.Any()) - { - LayerGeometry = Geometry.Empty; - OpacityGeometry = Geometry.Empty; - ViewportRectangle = Rect.Empty; - return; - } - - var group = new GeometryGroup(); - group.FillRule = FillRule.Nonzero; - - foreach (var led in Layer.Leds) - { - Geometry geometry; - switch (led.RgbLed.Shape) - { - case Shape.Custom: - if (led.RgbLed.Device.DeviceInfo.DeviceType == RGBDeviceType.Keyboard || led.RgbLed.Device.DeviceInfo.DeviceType == RGBDeviceType.Keypad) - geometry = CreateCustomGeometry(led, 2); - else - geometry = CreateCustomGeometry(led, 1); - break; - case Shape.Rectangle: - geometry = CreateRectangleGeometry(led); - break; - case Shape.Circle: - geometry = CreateCircleGeometry(led); - break; - default: - throw new ArgumentOutOfRangeException(); - } - - group.Children.Add(geometry); - } - - var layerGeometry = group.GetOutlinedPathGeometry(); - var opacityGeometry = Geometry.Combine(Geometry.Empty, layerGeometry, GeometryCombineMode.Exclude, new TranslateTransform()); - - LayerGeometry = layerGeometry; - OpacityGeometry = opacityGeometry; - - // Render the store as a bitmap Execute.OnUIThread(() => { + if (!Layer.Leds.Any()) + { + LayerGeometry = Geometry.Empty; + OpacityGeometry = Geometry.Empty; + ViewportRectangle = Rect.Empty; + return; + } + + var group = new GeometryGroup(); + group.FillRule = FillRule.Nonzero; + + foreach (var led in Layer.Leds) + { + Geometry geometry; + switch (led.RgbLed.Shape) + { + case Shape.Custom: + if (led.RgbLed.Device.DeviceInfo.DeviceType == RGBDeviceType.Keyboard || led.RgbLed.Device.DeviceInfo.DeviceType == RGBDeviceType.Keypad) + geometry = CreateCustomGeometry(led, 2); + else + geometry = CreateCustomGeometry(led, 1); + break; + case Shape.Rectangle: + geometry = CreateRectangleGeometry(led); + break; + case Shape.Circle: + geometry = CreateCircleGeometry(led); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + group.Children.Add(geometry); + } + + + var layerGeometry = group.GetOutlinedPathGeometry(); + var opacityGeometry = Geometry.Combine(Geometry.Empty, layerGeometry, GeometryCombineMode.Exclude, new TranslateTransform()); + + LayerGeometry = layerGeometry; + OpacityGeometry = opacityGeometry; + + // Render the store as a bitmap + var drawingImage = new DrawingImage(new GeometryDrawing(new SolidColorBrush(Colors.Black), null, LayerGeometry)); - var image = new Image { Source = drawingImage }; + var image = new Image {Source = drawingImage}; var bitmap = new RenderTargetBitmap( - (int)(LayerGeometry.Bounds.Width * 2.5), - (int)(LayerGeometry.Bounds.Height * 2.5), + (int) (LayerGeometry.Bounds.Width * 2.5), + (int) (LayerGeometry.Bounds.Height * 2.5), 96, 96, PixelFormats.Pbgra32 @@ -119,7 +121,6 @@ namespace Artemis.UI.Screens.Module.ProfileEditor.Visualization bitmap.Freeze(); LayerGeometryBitmap = bitmap; }); - } private void CreateShapeGeometry()