Пример #1
0
 private void Button_Click_1(object sender, RoutedEventArgs e)
 {
     if (identifier.Text.Length > 0)
     {
         IDrawableWidget widget = null;
         if (fieldWidget.IsChecked.Value)
         {
             var field = new DrawableField();
             widget = field;
             field.CharacterSize      = 25;
             field.DisplayedString    = "<exemple>";
             field.FillColor          = SFML.Graphics.Color.Black;
             field.OutlineColor       = SFML.Graphics.Color.Black;
             field.Font               = App.Roboto;
             field.Position           = new SFML.System.Vector2f(X, Y);
             field.Field              = new Template.Field();
             field.Field.Size         = 25;
             field.Field.InnerColor   = System.Drawing.Color.Black;
             field.Field.OutsideColor = System.Drawing.Color.Black;
             field.Field.Content      = "";
             field.Field.Font         = "Roboto";
             field.Field.Location     = new System.Numerics.Vector2(X, Y);
         }
         App.CurrentFile.Widgets.Insert(0, (identifier.Text, widget.Link));
         App.Preview.ToDraw.Insert(0, widget);
         EditorProperties.UpdateWidgetList();
         DialogResult = true;
     }
     else
     {
         identifierText.Foreground = new SolidColorBrush(Color.FromArgb(255, 255, 50, 50));
         identifier.BorderBrush    = identifierText.Foreground;
     }
 }
Пример #2
0
 public static IDrawableWidget GetDrawable(Template.IWidget widget, bool preview = false)
 {
     if (widget is Template.Counter counter)
     {
         var result = new DrawableCounter();
         result.Counter = counter;
         foreach (var img in counter.Back)
         {
             using var stream = new MemoryStream();
             img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.Back.Add(new Texture(stream));
         }
         foreach (var img in counter.Icons)
         {
             using var stream = new MemoryStream();
             img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.Icons.Add(new Texture(stream));
         }
         result.InternalText.Font            = Fonts[counter.Font];
         result.InternalText.DisplayedString = counter.Content;
         result.Value = preview ? (int)(Random.NextDouble() * counter.Max) : counter.Value;
         result.Max   = counter.Max;
         result.Style = counter.Style;
         result.InternalText.FillColor = counter.InnerColor.ToSFML();
         result.Position = counter.Location.ToSFML();
         result.InternalText.OutlineColor     = counter.OutsideColor.ToSFML();
         result.InternalText.OutlineThickness = counter.OutsideThickness;
         result.InternalText.CharacterSize    = (uint)counter.Size;
         if (counter.TextImage != null)
         {
             using var stream = new MemoryStream();
             counter.TextImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.TextImage = new Texture(stream);
         }
         return(result);
     }
     else if (widget is Template.Gauge gauge)
     {
         var result = new DrawableGauge();
         result.Gauge = gauge;
         {
             using var stream = new MemoryStream();
             gauge.Bar.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.Bar = new Texture(stream);
         }
         {
             using var stream = new MemoryStream();
             gauge.Back.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.Back = new Texture(stream);
         }
         result.InternalText.Font            = Fonts[gauge.Font];
         result.InternalText.DisplayedString = gauge.Content;
         result.Value = preview ? (float)Random.NextDouble() * gauge.Max : gauge.Value;
         result.Max   = gauge.Max;
         result.Style = gauge.Style;
         result.InternalText.FillColor = gauge.InnerColor.ToSFML();
         result.Position = gauge.Location.ToSFML();
         result.InternalText.OutlineColor     = gauge.OutsideColor.ToSFML();
         result.InternalText.OutlineThickness = gauge.OutsideThickness;
         result.InternalText.CharacterSize    = (uint)gauge.Size;
         if (gauge.TextImage != null)
         {
             using var stream = new MemoryStream();
             gauge.TextImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.TextImage = new Texture(stream);
         }
         return(result);
     }
     else if (widget is Template.Field field)
     {
         var result = new DrawableField();
         result.Field            = field;
         result.Font             = Fonts[field.Font];
         result.DisplayedString  = preview ? "<exemple>" : field.Content;
         result.FillColor        = field.InnerColor.ToSFML();
         result.Position         = field.Location.ToSFML();
         result.OutlineColor     = field.OutsideColor.ToSFML();
         result.OutlineThickness = field.OutsideThickness;
         result.CharacterSize    = (uint)field.Size;
         if (field.TextImage != null)
         {
             using var stream = new MemoryStream();
             field.TextImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.TextImage = new Texture(stream);
         }
         return(result);
     }
     else if (widget is Template.Text text)
     {
         var result = new DrawableText();
         result.Text             = text;
         result.Font             = Fonts[text.Font];
         result.DisplayedString  = text.Content;
         result.FillColor        = text.InnerColor.ToSFML();
         result.Position         = text.Location.ToSFML();
         result.OutlineColor     = text.OutsideColor.ToSFML();
         result.OutlineThickness = text.OutsideThickness;
         result.CharacterSize    = (uint)text.Size;
         if (text.TextImage != null)
         {
             using var stream = new MemoryStream();
             text.TextImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.TextImage = new Texture(stream);
         }
         return(result);
     }
     else if (widget is Template.FieldList fieldList)
     {
         var result = new DrawableFieldList();
         result.FieldList = fieldList;
         result.Position  = fieldList.Location.ToSFML();
         foreach (var subWidget in fieldList.Data)
         {
             var drawableSubWidget = GetDrawable(fieldList.Model, preview);
             result.ToDraw.Add(drawableSubWidget);
             if (drawableSubWidget is DrawableCounter subCounter)
             {
                 subCounter.InternalText.DisplayedString = subWidget.Item1;
                 subCounter.Value = subWidget.Item2;
             }
             else if (drawableSubWidget is DrawableGauge subGauge)
             {
                 subGauge.InternalText.DisplayedString = subWidget.Item1;
                 subGauge.Value = subWidget.Item3;
             }
             else if (drawableSubWidget is DrawableField subField)
             {
                 subField.DisplayedString = subWidget.Item1;
             }
         }
         return(result);
     }
     else if (widget is Template.Image image)
     {
         var result = new DrawableImage();
         result.Image    = image;
         result.Position = image.Location.ToSFML();
         {
             using var stream = new MemoryStream();
             image.Data.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.Texture = new Texture(stream);
         }
         return(result);
     }
     else
     {
         var graph  = widget as Template.StatGraph;
         var result = new DrawableStatGraph();
         result.StatGraph        = graph;
         result.Position         = graph.Location.ToSFML();
         result.CharacterHeight  = graph.CharacterHeight;
         result.HighGraphColor   = graph.HighGraphColor.HasValue ? graph.HighGraphColor.Value.ToSFML() : null as Color?;
         result.LowGraphColor    = graph.LowGraphColor.ToSFML();
         result.InnerColor       = graph.InnerColor.ToSFML();
         result.Max              = graph.Max;
         result.OutsideColor     = graph.OutsideColor.ToSFML();
         result.OutsideThickness = graph.OutsideThickness;
         result.Size             = graph.Size.ToSFML();
         result.IconsSize        = graph.IconsSize.ToSFML();
         if (graph.TextImage != null)
         {
             using var stream = new MemoryStream();
             graph.TextImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
             stream.Seek(0, SeekOrigin.Begin);
             result.TextImage = new Texture(stream);
         }
         foreach (var stat in graph.Statistics)
         {
             var header = (new DrawableStatGraph.Header(), stat.Item2);
             header.Item1.Text = new Text
             {
                 CharacterSize    = (uint)result.CharacterHeight,
                 DisplayedString  = stat.Item1.Text,
                 FillColor        = result.InnerColor,
                 Font             = Fonts[graph.Font],
                 OutlineColor     = graph.OutsideColor.ToSFML(),
                 OutlineThickness = graph.OutsideThickness
             };
             result.Statistics.Add(header);
             if (stat.Item1.Image != null)
             {
                 using var stream = new MemoryStream();
                 stat.Item1.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                 stream.Seek(0, SeekOrigin.Begin);
                 header.Item1.Image = new Texture(stream);
             }
         }
         return(result);
     }
 }