Make Merge a method of Style.
This commit is contained in:
@@ -20,6 +20,24 @@ public class Style
|
||||
public Color? BorderColor { get; set; }
|
||||
public float CornerRadius { get; set; }
|
||||
public Color? TextColor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Merges this <see cref="Style"/> with a different one.<br />
|
||||
/// Properties that are not set for this <see cref="Style"/> will be inherited from <paramref name="overrideStyle"/>.
|
||||
/// </summary>
|
||||
/// <param name="overrideStyle"></param>
|
||||
/// <returns>A merged <see cref="Style"/>.</returns>
|
||||
public Style Merge(Style overrideStyle)
|
||||
{
|
||||
return new Style
|
||||
{
|
||||
BackgroundColor = overrideStyle.BackgroundColor != default ? overrideStyle.BackgroundColor : BackgroundColor,
|
||||
TextColor = overrideStyle.TextColor != default ? overrideStyle.TextColor : TextColor,
|
||||
Padding = overrideStyle.Padding != default ? overrideStyle.Padding : Padding,
|
||||
BorderSize = overrideStyle.BorderSize != default ? overrideStyle.BorderSize : BorderSize,
|
||||
BorderColor = overrideStyle.BorderColor != default ? overrideStyle.BorderColor : BorderColor,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class StyleSheetLoader : ResourceLoader<StyleSheet>
|
||||
@@ -88,25 +106,13 @@ public class StyleSheetLoader : ResourceLoader<StyleSheet>
|
||||
var subKey = string.Join('.', parts.Take(i));
|
||||
if (allStyles.TryGetValue(subKey, out var parentStyle))
|
||||
{
|
||||
merged = MergeStyles(merged, parentStyle);
|
||||
merged = merged.Merge(parentStyle);
|
||||
}
|
||||
}
|
||||
|
||||
return merged;
|
||||
}
|
||||
|
||||
private Style MergeStyles(Style baseStyle, Style overrideStyle)
|
||||
{
|
||||
return new Style
|
||||
{
|
||||
BackgroundColor = overrideStyle.BackgroundColor != default ? overrideStyle.BackgroundColor : baseStyle.BackgroundColor,
|
||||
TextColor = overrideStyle.TextColor != default ? overrideStyle.TextColor : baseStyle.TextColor,
|
||||
Padding = overrideStyle.Padding != default ? overrideStyle.Padding : baseStyle.Padding,
|
||||
BorderSize = overrideStyle.BorderSize != default ? overrideStyle.BorderSize : baseStyle.BorderSize,
|
||||
BorderColor = overrideStyle.BorderColor != default ? overrideStyle.BorderColor : baseStyle.BorderColor,
|
||||
};
|
||||
}
|
||||
|
||||
private readonly TomlDataReader _reader = new();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user