Browse Source

Fixed palettes

Krzysztof Krysiński 2 years ago
parent
commit
2f9455f377

+ 5 - 7
src/PixiEditor/Helpers/Converters/BackendColorToMediaColorConverter.cs → src/PixiEditor/Helpers/Converters/GenericColorToMediaColorConverter.cs

@@ -5,22 +5,20 @@ using BackendColor = PixiEditor.DrawingApi.Core.ColorsImpl.Color;
 
 namespace PixiEditor.Helpers.Converters;
 
-internal class BackendColorToMediaColorConverter : SingleInstanceConverter<BackendColorToMediaColorConverter>
+internal class GenericColorToMediaColorConverter : SingleInstanceConverter<GenericColorToMediaColorConverter>
 {
     public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     {
-        BackendColor backendColor = default;
-        if (value is BackendColor)
+        Color color = default;
+        if (value is BackendColor backendColor)
         {
-            backendColor = (BackendColor)value;
+            color = backendColor.ToColor();
         }
         else if (value is PaletteColor paletteColor)
         {
-            backendColor = paletteColor.ToColor();
+            color = paletteColor.ToMediaColor();
         }
 
-        var color = Color.FromArgb(backendColor.A, backendColor.R, backendColor.G, backendColor.B);
-
         if (targetType == typeof(Brush))
         {
             return new SolidColorBrush(color);

+ 2 - 2
src/PixiEditor/ViewModels/SubViewModels/Main/ColorsViewModel.cs

@@ -323,9 +323,9 @@ internal class ColorsViewModel : SubViewModel<ViewModelMain>
     }
 
     [Command.Internal("PixiEditor.Colors.SelectColor")]
-    public void SelectColor(Color color)
+    public void SelectColor(PaletteColor color)
     {
-        PrimaryColor = color;
+        PrimaryColor = color.ToColor();
     }
 
     [Command.Internal("PixiEditor.CloseContextMenu")]

+ 3 - 3
src/PixiEditor/Views/MainWindow.xaml

@@ -58,7 +58,7 @@
                 x:Key="NotNullToBoolConverter" />
             <converters:DoubleToIntConverter
                 x:Key="DoubleToIntConverter" />
-            <converters:BackendColorToMediaColorConverter
+            <converters:GenericColorToMediaColorConverter
                 x:Key="BackendColorToMediaColorConverter" />
             <ResourceDictionary.MergedDictionaries>
                 <ResourceDictionary
@@ -746,7 +746,7 @@
                                                     Colors="{Binding DocumentManagerSubViewModel.ActiveDocument.Palette}"
                                                     Swatches="{Binding DocumentManagerSubViewModel.ActiveDocument.Swatches}"
                                                     SelectColorCommand="{cmds:Command PixiEditor.Colors.SelectColor, UseProvided=True}"
-                                                    HintColor="{Binding Path=ColorsSubViewModel.PrimaryColor,Converter={converters:BackendColorToMediaColorConverter}}"
+                                                    HintColor="{Binding Path=ColorsSubViewModel.PrimaryColor,Converter={converters:GenericColorToMediaColorConverter}}"
                                                     DataSources="{Binding ColorsSubViewModel.PaletteDataSources}"
                                                     FileParsers="{Binding ColorsSubViewModel.PaletteParsers}"
                                                     Visibility="{Binding RelativeSource={RelativeSource Mode=Self}, Path=ActualWidth, Converter={converters:PaletteViewerWidthToVisibilityConverter}, ConverterParameter=Hidden}"
@@ -844,7 +844,7 @@
                             </ItemsControl.ItemTemplate>
                         </ItemsControl>
                     </ScrollViewer>
-                    <Border Background="{Binding ColorsSubViewModel.PrimaryColor, Mode=TwoWay, Converter={converters:BackendColorToMediaColorConverter}}"
+                    <Border Background="{Binding ColorsSubViewModel.PrimaryColor, Mode=TwoWay, Converter={converters:GenericColorToMediaColorConverter}}"
                             BorderBrush="Gray" BorderThickness="1" CornerRadius="0,0,5,5"
                             Grid.Row="1" Height="30"/>
                 </Grid>

+ 5 - 4
src/PixiEditor/Views/UserControls/Palettes/CompactPaletteViewer.xaml.cs

@@ -1,6 +1,7 @@
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Input;
+using PixiEditor.Extensions.Palettes;
 using PixiEditor.Models.DataHolders;
 using BackendColor = PixiEditor.DrawingApi.Core.ColorsImpl.Color;
 
@@ -11,11 +12,11 @@ namespace PixiEditor.Views.UserControls.Palettes;
 /// </summary>
 internal partial class CompactPaletteViewer : UserControl
 {
-    public static readonly DependencyProperty ColorsProperty = DependencyProperty.Register(nameof(Colors), typeof(WpfObservableRangeCollection<BackendColor>), typeof(CompactPaletteViewer));
+    public static readonly DependencyProperty ColorsProperty = DependencyProperty.Register(nameof(Colors), typeof(WpfObservableRangeCollection<PaletteColor>), typeof(CompactPaletteViewer));
 
-    public WpfObservableRangeCollection<BackendColor> Colors
+    public WpfObservableRangeCollection<PaletteColor> Colors
     {
-        get { return (WpfObservableRangeCollection<BackendColor>)GetValue(ColorsProperty); }
+        get { return (WpfObservableRangeCollection<PaletteColor>)GetValue(ColorsProperty); }
         set { SetValue(ColorsProperty, value); }
     }
 
@@ -37,7 +38,7 @@ internal partial class CompactPaletteViewer : UserControl
     private void RemoveColorMenuItem_OnClick(object sender, RoutedEventArgs e)
     {
         MenuItem menuItem = (MenuItem)sender;
-        BackendColor color = (BackendColor)menuItem.CommandParameter;
+        PaletteColor color = (PaletteColor)menuItem.CommandParameter;
         if (Colors.Contains(color))
         {
             Colors.Remove(color);

+ 13 - 15
src/PixiEditor/Views/UserControls/Palettes/PaletteColorAdder.xaml.cs

@@ -2,16 +2,16 @@
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Media;
+using PixiEditor.Extensions.Palettes;
 using PixiEditor.Models.DataHolders;
-using BackendColor = PixiEditor.DrawingApi.Core.ColorsImpl.Color;
 
 namespace PixiEditor.Views.UserControls.Palettes;
 
 internal partial class PaletteColorAdder : UserControl
 {
-    public WpfObservableRangeCollection<BackendColor> Colors
+    public WpfObservableRangeCollection<PaletteColor> Colors
     {
-        get { return (WpfObservableRangeCollection<BackendColor>)GetValue(ColorsProperty); }
+        get { return (WpfObservableRangeCollection<PaletteColor>)GetValue(ColorsProperty); }
         set { SetValue(ColorsProperty, value); }
     }
 
@@ -35,11 +35,11 @@ internal partial class PaletteColorAdder : UserControl
         }
     }
 
-    public static readonly DependencyProperty SwatchesProperty = DependencyProperty.Register(nameof(Swatches), typeof(WpfObservableRangeCollection<BackendColor>), typeof(PaletteColorAdder), new PropertyMetadata(default(WpfObservableRangeCollection<BackendColor>), OnSwatchesChanged));
+    public static readonly DependencyProperty SwatchesProperty = DependencyProperty.Register(nameof(Swatches), typeof(WpfObservableRangeCollection<PaletteColor>), typeof(PaletteColorAdder), new PropertyMetadata(default(WpfObservableRangeCollection<PaletteColor>), OnSwatchesChanged));
 
-    public WpfObservableRangeCollection<BackendColor> Swatches
+    public WpfObservableRangeCollection<PaletteColor> Swatches
     {
-        get { return (WpfObservableRangeCollection<BackendColor>)GetValue(SwatchesProperty); }
+        get { return (WpfObservableRangeCollection<PaletteColor>)GetValue(SwatchesProperty); }
         set { SetValue(SwatchesProperty, value); }
     }
 
@@ -57,7 +57,7 @@ internal partial class PaletteColorAdder : UserControl
 
 
     public static readonly DependencyProperty ColorsProperty =
-        DependencyProperty.Register(nameof(Colors), typeof(WpfObservableRangeCollection<BackendColor>), typeof(PaletteColorAdder), new PropertyMetadata(default(WpfObservableRangeCollection<BackendColor>), OnColorsChanged));
+        DependencyProperty.Register(nameof(Colors), typeof(WpfObservableRangeCollection<PaletteColor>), typeof(PaletteColorAdder), new PropertyMetadata(default(WpfObservableRangeCollection<PaletteColor>), OnColorsChanged));
 
     private static void OnColorsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
     {
@@ -82,7 +82,7 @@ internal partial class PaletteColorAdder : UserControl
 
     private void UpdateAddButton()
     {
-        AddButton.IsEnabled = !Colors.Contains(ToBackendColor(SelectedColor)) && SelectedColor.A == 255;
+        AddButton.IsEnabled = !Colors.Contains(ToPaletteColor(SelectedColor)) && SelectedColor.A == 255;
     }
 
     private static void OnSwatchesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
@@ -107,7 +107,7 @@ internal partial class PaletteColorAdder : UserControl
 
     private void UpdateAddSwatchesButton()
     {
-        AddFromSwatches.IsEnabled = Swatches != null && Swatches.Where(x => x.A == 255).Any(x => !Colors.Contains(x));
+        AddFromSwatches.IsEnabled = Swatches != null && Swatches.Any(x => !Colors.Contains(x));
     }
 
     public PaletteColorAdder()
@@ -117,18 +117,18 @@ internal partial class PaletteColorAdder : UserControl
 
     private void Button_Click(object sender, RoutedEventArgs e)
     {
-        BackendColor color = ToBackendColor(SelectedColor);
+        PaletteColor color = ToPaletteColor(SelectedColor);
         if (!Colors.Contains(color))
         {
-            Colors.Add(color.WithAlpha(255));
+            Colors.Add(color);
             AddButton.IsEnabled = false;
         }
     }
 
     private void PortableColorPicker_ColorChanged(object sender, RoutedEventArgs e) =>
-        AddButton.IsEnabled = !Colors.Contains(ToBackendColor(SelectedColor));
+        AddButton.IsEnabled = !Colors.Contains(ToPaletteColor(SelectedColor));
 
-    private static BackendColor ToBackendColor(Color color) => new BackendColor(color.R, color.G, color.B, color.A);
+    private static PaletteColor ToPaletteColor(Color color) => new PaletteColor(color.R, color.G, color.B);
 
     private void AddFromSwatches_OnClick(object sender, RoutedEventArgs e)
     {
@@ -136,8 +136,6 @@ internal partial class PaletteColorAdder : UserControl
 
         foreach (var color in Swatches)
         {
-            if (color.A < 255) continue; // No alpha support for now, palette colors shouldn't be transparent
-
             if (!Colors.Contains(color))
             {
                 Colors.Add(color);

+ 2 - 2
src/PixiEditor/Views/UserControls/Palettes/PaletteColorControl.xaml

@@ -13,7 +13,7 @@
              MouseMove="PaletteColor_OnMouseMove"
              MouseUp="PaletteColor_OnMouseUp">
     <UserControl.Resources>
-        <converters:BackendColorToMediaColorConverter x:Key="BackendColorToMediaColorConverter" />
+        <converters:GenericColorToMediaColorConverter x:Key="GenericColorToMediaColorConverter" />
         <BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter" />
     </UserControl.Resources>
     <UserControl.Style>
@@ -34,7 +34,7 @@
         </Border>
         <Border CornerRadius="{Binding ElementName=uc, Path=CornerRadius}" BorderThickness="0 0 0 0.1" BorderBrush="White">
             <Border.Background>
-                <SolidColorBrush Color="{Binding Color, Converter={StaticResource BackendColorToMediaColorConverter}, ElementName=uc}" />
+                <SolidColorBrush Color="{Binding Color, Converter={StaticResource GenericColorToMediaColorConverter}, ElementName=uc}" />
             </Border.Background>
         </Border>
         <Border HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="15" Margin="0 0 0 -1"

+ 2 - 2
src/PixiEditor/Views/UserControls/Palettes/PaletteViewer.xaml.cs

@@ -21,14 +21,14 @@ namespace PixiEditor.Views.UserControls.Palettes;
 /// </summary>
 internal partial class PaletteViewer : UserControl
 {
-    public static readonly DependencyProperty SwatchesProperty = DependencyProperty.Register(nameof(Swatches), typeof(WpfObservableRangeCollection<PaletteColorControl>), typeof(PaletteViewer), new PropertyMetadata(default(WpfObservableRangeCollection<PaletteColorControl>)));
+    public static readonly DependencyProperty SwatchesProperty = DependencyProperty.Register(nameof(Swatches), typeof(WpfObservableRangeCollection<PaletteColor>), typeof(PaletteViewer), new PropertyMetadata(default(WpfObservableRangeCollection<PaletteColorControl>)));
 
     public WpfObservableRangeCollection<PaletteColor> Swatches
     {
         get => (WpfObservableRangeCollection<PaletteColor>)GetValue(SwatchesProperty);
         set => SetValue(SwatchesProperty, value);
     }
-    public static readonly DependencyProperty ColorsProperty = DependencyProperty.Register(nameof(Colors), typeof(WpfObservableRangeCollection<PaletteColorControl>), typeof(PaletteViewer));
+    public static readonly DependencyProperty ColorsProperty = DependencyProperty.Register(nameof(Colors), typeof(WpfObservableRangeCollection<PaletteColor>), typeof(PaletteViewer));
 
     public WpfObservableRangeCollection<PaletteColor> Colors
     {

+ 1 - 1
src/PixiEditor/Views/UserControls/SwatchesView.xaml

@@ -13,7 +13,7 @@
              d:DesignHeight="450" d:DesignWidth="300">
     <UserControl.Resources>
         <ResourceDictionary>
-            <conv:BackendColorToMediaColorConverter x:Key="BackendColorToMediaColorConverter"/>
+            <conv:GenericColorToMediaColorConverter x:Key="BackendColorToMediaColorConverter"/>
         </ResourceDictionary>
     </UserControl.Resources>
     <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">

+ 4 - 3
src/PixiEditor/Views/UserControls/SwatchesView.xaml.cs

@@ -3,17 +3,18 @@ using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Input;
 using PixiEditor.DrawingApi.Core.ColorsImpl;
+using PixiEditor.Extensions.Palettes;
 
 namespace PixiEditor.Views.UserControls;
 
 internal partial class SwatchesView : UserControl
 {
     public static readonly DependencyProperty SwatchesProperty =
-        DependencyProperty.Register(nameof(Swatches), typeof(ObservableCollection<Color>), typeof(SwatchesView));
+        DependencyProperty.Register(nameof(Swatches), typeof(ObservableCollection<PaletteColor>), typeof(SwatchesView));
 
-    public ObservableCollection<Color> Swatches
+    public ObservableCollection<PaletteColor> Swatches
     {
-        get => (ObservableCollection<Color>)GetValue(SwatchesProperty);
+        get => (ObservableCollection<PaletteColor>)GetValue(SwatchesProperty);
         set => SetValue(SwatchesProperty, value);
     }
 

+ 1 - 1
src/PixiEditor/Views/UserControls/ToolSettingColorPicker.xaml

@@ -14,6 +14,6 @@
     <colorpicker:PortableColorPicker Width="40" Height="20" x:Name="ColorPicker" UseHintColor="True"
                                      HintColor="{Binding DataContext.ColorsSubViewModel.PrimaryColor, 
         RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type views:MainWindow}, AncestorLevel=1},
-        Converter={converters:BackendColorToMediaColorConverter}}"
+        Converter={converters:GenericColorToMediaColorConverter}}"
                                      SelectedColor="{Binding SelectedColor, ElementName=uc, Mode=TwoWay}"/>
 </UserControl>