mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
add solidcolorbrush
This commit is contained in:
parent
b566dc5452
commit
3ecea91985
@ -126,12 +126,25 @@
|
|||||||
"Y": "double"
|
"Y": "double"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Brush": {
|
||||||
|
"IsCreatable": false,
|
||||||
|
"Attributes": {
|
||||||
|
"Opacity": "double"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SolidColorBrush": {
|
||||||
|
"SuperClass": "Brush",
|
||||||
|
"IsCreatable": true,
|
||||||
|
"Attributes": {
|
||||||
|
"Color": "Color"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ImageBrush": {
|
"ImageBrush": {
|
||||||
|
"SuperClass": "Brush",
|
||||||
"IsCreatable": true,
|
"IsCreatable": true,
|
||||||
"Attributes": {
|
"Attributes": {
|
||||||
"AlignmentX": "AlignmentX",
|
"AlignmentX": "AlignmentX",
|
||||||
"AlignmentY": "AlignmentY",
|
"AlignmentY": "AlignmentY",
|
||||||
"Opacity": "double",
|
|
||||||
"Stretch": "Stretch",
|
"Stretch": "Stretch",
|
||||||
"TileMode": "TileMode",
|
"TileMode": "TileMode",
|
||||||
"ViewboxUnits": "BrushMappingMode",
|
"ViewboxUnits": "BrushMappingMode",
|
||||||
@ -155,6 +168,7 @@
|
|||||||
"Thickness": {},
|
"Thickness": {},
|
||||||
"Rect": {},
|
"Rect": {},
|
||||||
"Brush": {},
|
"Brush": {},
|
||||||
|
"Color": {},
|
||||||
"Content": {},
|
"Content": {},
|
||||||
"ImageSource": {},
|
"ImageSource": {},
|
||||||
"Visibility": {
|
"Visibility": {
|
||||||
|
@ -25,6 +25,9 @@ namespace Bloxstrap.UI.Elements.Bootstrapper
|
|||||||
private static RectConverter? _rectConverter = null;
|
private static RectConverter? _rectConverter = null;
|
||||||
public static RectConverter RectConverter { get => _rectConverter ??= new RectConverter(); }
|
public static RectConverter RectConverter { get => _rectConverter ??= new RectConverter(); }
|
||||||
|
|
||||||
|
private static ColorConverter? _colorConverter = null;
|
||||||
|
public static ColorConverter ColorConverter { get => _colorConverter ??= new ColorConverter(); }
|
||||||
|
|
||||||
private bool _initialised = false;
|
private bool _initialised = false;
|
||||||
|
|
||||||
// prevent users from creating elements with the same name multiple times
|
// prevent users from creating elements with the same name multiple times
|
||||||
@ -49,6 +52,7 @@ namespace Bloxstrap.UI.Elements.Bootstrapper
|
|||||||
|
|
||||||
private static Dictionary<string, HandleXmlBrushElementDelegate> _brushHandlerMap = new Dictionary<string, HandleXmlBrushElementDelegate>()
|
private static Dictionary<string, HandleXmlBrushElementDelegate> _brushHandlerMap = new Dictionary<string, HandleXmlBrushElementDelegate>()
|
||||||
{
|
{
|
||||||
|
["SolidColorBrush"] = HandleXmlBrush_SolidColorBrush,
|
||||||
["ImageBrush"] = HandleXmlBrush_ImageBrush
|
["ImageBrush"] = HandleXmlBrush_ImageBrush
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -207,6 +211,28 @@ namespace Bloxstrap.UI.Elements.Bootstrapper
|
|||||||
return rect;
|
return rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static object? GetColorFromXElement(XElement xmlElement, string attributeName)
|
||||||
|
{
|
||||||
|
string? attributeValue = xmlElement.Attribute(attributeName)?.Value?.ToString();
|
||||||
|
if (attributeValue == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
object? color;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
color = ColorConverter.ConvertFromInvariantString(attributeValue);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new Exception($"{xmlElement.Name} has invalid {attributeName}: {ex.Message}", ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (color == null)
|
||||||
|
throw new Exception($"{xmlElement.Name} has invalid {attributeName}");
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
private static FontWeight GetFontWeightFromXElement(XElement element)
|
private static FontWeight GetFontWeightFromXElement(XElement element)
|
||||||
{
|
{
|
||||||
string? value = element.Attribute("FontWeight")?.Value?.ToString();
|
string? value = element.Attribute("FontWeight")?.Value?.ToString();
|
||||||
@ -399,15 +425,31 @@ namespace Bloxstrap.UI.Elements.Bootstrapper
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Brushes
|
#region Brushes
|
||||||
|
private static void HandleXmlBrush_Brush(Brush brush, XElement xmlElement)
|
||||||
|
{
|
||||||
|
brush.Opacity = ParseXmlAttribute<double>(xmlElement, "Opacity", 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Brush HandleXmlBrush_SolidColorBrush(CustomDialog dialog, XElement xmlElement)
|
||||||
|
{
|
||||||
|
var brush = new SolidColorBrush();
|
||||||
|
HandleXmlBrush_Brush(brush, xmlElement);
|
||||||
|
|
||||||
|
object? color = GetColorFromXElement(xmlElement, "Color");
|
||||||
|
if (color is Color)
|
||||||
|
brush.Color = (Color)color;
|
||||||
|
|
||||||
|
return brush;
|
||||||
|
}
|
||||||
|
|
||||||
private static Brush HandleXmlBrush_ImageBrush(CustomDialog dialog, XElement xmlElement)
|
private static Brush HandleXmlBrush_ImageBrush(CustomDialog dialog, XElement xmlElement)
|
||||||
{
|
{
|
||||||
var imageBrush = new ImageBrush();
|
var imageBrush = new ImageBrush();
|
||||||
|
HandleXmlBrush_Brush(imageBrush, xmlElement);
|
||||||
|
|
||||||
imageBrush.AlignmentX = ParseXmlAttribute<AlignmentX>(xmlElement, "AlignmentX", AlignmentX.Center);
|
imageBrush.AlignmentX = ParseXmlAttribute<AlignmentX>(xmlElement, "AlignmentX", AlignmentX.Center);
|
||||||
imageBrush.AlignmentY = ParseXmlAttribute<AlignmentY>(xmlElement, "AlignmentY", AlignmentY.Center);
|
imageBrush.AlignmentY = ParseXmlAttribute<AlignmentY>(xmlElement, "AlignmentY", AlignmentY.Center);
|
||||||
|
|
||||||
imageBrush.Opacity = ParseXmlAttribute<double>(xmlElement, "Opacity", 1.0);
|
|
||||||
|
|
||||||
imageBrush.Stretch = ParseXmlAttribute<Stretch>(xmlElement, "Stretch", Stretch.Fill);
|
imageBrush.Stretch = ParseXmlAttribute<Stretch>(xmlElement, "Stretch", Stretch.Fill);
|
||||||
imageBrush.TileMode = ParseXmlAttribute<TileMode>(xmlElement, "TileMode", TileMode.None);
|
imageBrush.TileMode = ParseXmlAttribute<TileMode>(xmlElement, "TileMode", TileMode.None);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user