diff --git a/Matrix App/Matrix App.csproj b/Matrix App/Matrix App.csproj
index 4f76f74..20e9fde 100644
--- a/Matrix App/Matrix App.csproj
+++ b/Matrix App/Matrix App.csproj
@@ -37,6 +37,6 @@
-
+
\ No newline at end of file
diff --git a/Matrix App/MatrixDesigner.cs b/Matrix App/MatrixDesigner.cs
index 4b3d9a6..e708807 100644
--- a/Matrix App/MatrixDesigner.cs
+++ b/Matrix App/MatrixDesigner.cs
@@ -63,7 +63,7 @@ namespace Matrix_App
// apply light-mode by default
new LightMode().ApplyTheme(this);
}
-
+
private void Init()
{
// Create port name update timer
@@ -99,7 +99,7 @@ namespace Matrix_App
if (((int) DateTime.Now.DayOfWeek) != 3)
return;
- if (new Random().Next(0, 9) <= 1)
+ if (new Random().Next(0, 9) >= 1)
return;
using (Bitmap wednesdayFrog = new Bitmap(Properties.Resources.Frosch))
@@ -646,7 +646,7 @@ namespace Matrix_App
{
if (Timeline.InvokeRequired)
{
- // invoke on the comboboxes thread
+ // invoke on the combo-boxes thread
Timeline.Invoke(new Action(() =>
{
if (Timeline.Value < Timeline.Maximum)
diff --git a/Matrix App/MatrixGifGenerator.cs b/Matrix App/MatrixGifGenerator.cs
index 3eccf01..ed4d72c 100644
--- a/Matrix App/MatrixGifGenerator.cs
+++ b/Matrix App/MatrixGifGenerator.cs
@@ -1,5 +1,6 @@
using Matrix_App.PregeneratedMods;
using System;
+using System.Diagnostics;
using System.Drawing;
using System.Reflection;
using System.Text.RegularExpressions;
@@ -85,8 +86,8 @@ namespace Matrix_App
};
button.Click += (sender, e) => OpenGeneratorUi(generator, matrix);
button.Image = CreateSnapshot(generator);
- button.TextImageRelation = TextImageRelation.ImageAboveText;
- button.Height = FilterPreviewHeight * 2;
+ button.TextImageRelation = TextImageRelation.ImageBeforeText;
+ button.Height = FilterPreviewHeight * 3 / 2;
anchor.Controls.Add(button);
}
@@ -179,7 +180,7 @@ namespace Matrix_App
PlaybackTimer.Interval = _form.GetDelayTime();
PlaybackTimer.Enabled = true;
- CreateDivider(controlPanel);
+ CreateDivider(controlPanel, 2);
foreach (var field in fields)
{
if (field.IsStatic || !field.IsPublic)
@@ -187,23 +188,11 @@ namespace Matrix_App
var fieldValue = field.GetValue(_generator);
- controlPanel.Controls.Add(GetFieldUi(field, fieldValue, _generator));
- }
-
- if (controlPanel.Controls.Count > 1)
- {
- CreateDivider(controlPanel);
-
- var label = new Label() { Text = "Settings" };
- label.Font = new Font(label.Font, FontStyle.Bold);
- controlPanel.Controls.Add(label);
+ controlPanel.Controls.AddRange(GetFieldUi(field, _generator.GetType(), fieldValue, _generator));
+ CreateDivider(controlPanel, 1);
}
controlPanel.Controls.Add(_preview);
- CreateDivider(controlPanel);
- var playLabel = new Label() { Text = "Playback preview" };
- playLabel.Font = new Font(playLabel.Font, FontStyle.Bold);
- controlPanel.Controls.Add(playLabel);
FlowLayoutPanel southPane = new FlowLayoutPanel
{
@@ -229,7 +218,7 @@ namespace Matrix_App
return success;
}
- private static Control GetFieldUi(FieldInfo field, object? fieldValue, MatrixGifGenerator generator)
+ private static Control[] GetFieldUi(FieldInfo field, Type clazz, object? fieldValue, MatrixGifGenerator generator)
{
var panel = new FlowLayoutPanel
{
@@ -237,11 +226,24 @@ namespace Matrix_App
Anchor = AnchorStyles.Top | AnchorStyles.Left,
AutoSize = true
};
+
+ var title = GetBetterFieldName(field.Name);
+ var description = new Label();
+
+ if (Attribute.GetCustomAttribute(field, typeof(UiDescriptionAttribute)) is UiDescriptionAttribute desc)
+ {
+ title = desc.title;
+ description.Text = desc.description;
+ description.ForeColor = Color.Gray;
+ description.Height += 10;
+ description.AutoSize = true;
+ }
+
panel.Controls.Add(new Label
{
- TextAlign = System.Drawing.ContentAlignment.MiddleLeft,
- Text = GetBetterFieldName(field.Name),
+ TextAlign = ContentAlignment.MiddleLeft,
+ Text = title,
Dock = DockStyle.Left,
Anchor = AnchorStyles.Top | AnchorStyles.Left,
Width = 100
@@ -305,7 +307,7 @@ namespace Matrix_App
}
}
- return panel;
+ return new Control[] {description, panel};
}
///
@@ -354,13 +356,13 @@ namespace Matrix_App
/// Adds a separating line to the controls
///
///
- private static void CreateDivider(Control controlPanel)
+ private static void CreateDivider(Control controlPanel, int height)
{
var divider = new Label
{
BorderStyle = BorderStyle.Fixed3D,
AutoSize = false,
- Height = 2,
+ Height = height,
Width = 500
};
diff --git a/Matrix App/PregeneratedMods/Boxblur.cs b/Matrix App/PregeneratedMods/Boxblur.cs
index 9b4a428..503b8a5 100644
--- a/Matrix App/PregeneratedMods/Boxblur.cs
+++ b/Matrix App/PregeneratedMods/Boxblur.cs
@@ -1,12 +1,11 @@
using System;
-using System.Collections.Generic;
-using System.Text;
using static Matrix_App.GifGeneratorUtils;
namespace Matrix_App.PregeneratedMods
{
- public class Boxblur : MatrixGifGenerator
+ public sealed class Boxblur : MatrixGifGenerator
{
+ [UiDescriptionAttribute(title: "Blur size", description: "The side length of the bounding square used to blur in pixels")]
public int blurSize = 2;
protected override void ColorFragment(in int x, in int y, in float u, in float v, in int frame, out float r, out float g, out float b)
diff --git a/Matrix App/PregeneratedMods/ColorAdjust.cs b/Matrix App/PregeneratedMods/ColorAdjust.cs
index 2e35d3a..3a6599e 100644
--- a/Matrix App/PregeneratedMods/ColorAdjust.cs
+++ b/Matrix App/PregeneratedMods/ColorAdjust.cs
@@ -7,12 +7,18 @@ namespace Matrix_App.PregeneratedMods
{
public sealed class ColorAdjust : MatrixGifGenerator
{
+ [UiDescriptionAttribute(title: "Tone offset", description: "Sets an additional offset to the pixels hue")]
public float hueOffset = 0.0f;
+ [UiDescriptionAttribute(title: "Saturation boost", description: "Decreases or increases saturation")]
public float saturationBoost = 0.5f;
+ [UiDescriptionAttribute(title: "Brightness boost", description: "Decreases or increases brightness")]
public float valueBoost = 0.5f;
+ [UiDescriptionAttribute(title: "Red boost", description: "Decreases or increases Red")]
public float redBoost = 0.5f;
+ [UiDescriptionAttribute(title: "Green boost", description: "Decreases or increases Green")]
public float greenBoost = 0.5f;
+ [UiDescriptionAttribute(title: "Blue boost", description: "Decreases or increases Blue")]
public float blueBoost = 0.5f;
private float boost(float x, float y)
diff --git a/Matrix App/PregeneratedMods/Grayscale.cs b/Matrix App/PregeneratedMods/Grayscale.cs
index a026e85..df83745 100644
--- a/Matrix App/PregeneratedMods/Grayscale.cs
+++ b/Matrix App/PregeneratedMods/Grayscale.cs
@@ -7,6 +7,7 @@ namespace Matrix_App.PregeneratedMods
{
public sealed class Grayscale : MatrixGifGenerator
{
+ [UiDescriptionAttribute(title: "use Luminance", description: "Use luminance as defined by ITU-R BT.709 as grayscale output")]
public bool byLuminance = false;
protected override void ColorFragment(in int x, in int y, in float u, in float v, in int frame, out float r, out float g, out float b)
diff --git a/Matrix App/PregeneratedMods/RandomPixels.cs b/Matrix App/PregeneratedMods/RandomPixels.cs
index 6793b80..33c6e58 100644
--- a/Matrix App/PregeneratedMods/RandomPixels.cs
+++ b/Matrix App/PregeneratedMods/RandomPixels.cs
@@ -4,6 +4,7 @@ namespace Matrix_App.PregeneratedMods
{
public class RandomPixels : MatrixGifGenerator
{
+ [UiDescriptionAttribute(title: "Seed", description: "Just a seed for a bad deterministic random function")]
public int seed = 0;
protected override void ColorFragment(in int x, in int y, in float u, in float v, in int frame, out float r, out float g, out float b)
diff --git a/Matrix App/PregeneratedMods/SimpleRainbow.cs b/Matrix App/PregeneratedMods/SimpleRainbow.cs
index 3136d0e..926c341 100644
--- a/Matrix App/PregeneratedMods/SimpleRainbow.cs
+++ b/Matrix App/PregeneratedMods/SimpleRainbow.cs
@@ -1,17 +1,18 @@
using System;
-using System.Collections.Generic;
-using System.Text;
-
using static Matrix_App.GifGeneratorUtils;
-namespace Matrix_App
+namespace Matrix_App.PregeneratedMods
{
public class SimpleRainbow : MatrixGifGenerator
{
+ [UiDescription(title: "Radial", description: "Uses the angle to alter hues")]
public bool radial = false;
+ [UiDescription(title: "Saturation", description: "Overall saturation")]
public float saturation = 1.0f;
+ [UiDescription(title: "Brightness", description: "Overall brightness")]
public float value = 1.0f;
+ [UiDescription(title: "Hue rotation", description: "Offset for hue calculation")]
public float rotation = 0.0f;
protected override void ColorFragment(in int x, in int y,
diff --git a/Matrix App/PregeneratedMods/UIDescriptionAttribute.cs b/Matrix App/PregeneratedMods/UIDescriptionAttribute.cs
new file mode 100644
index 0000000..0d7fb06
--- /dev/null
+++ b/Matrix App/PregeneratedMods/UIDescriptionAttribute.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace Matrix_App.PregeneratedMods
+{
+ [AttributeUsage(AttributeTargets.Field)]
+ public class UiDescriptionAttribute : Attribute
+ {
+ public string title;
+ public string description;
+
+ public UiDescriptionAttribute(string title, string description)
+ {
+ this.title = title;
+ this.description = description;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Matrix App/Program.cs b/Matrix App/Program.cs
index f41a2db..251cd1e 100644
--- a/Matrix App/Program.cs
+++ b/Matrix App/Program.cs
@@ -10,17 +10,22 @@ namespace Matrix_App
///
[STAThread]
private static void Main()
- {
- SplashScreen.ShowSplashScreen();
-
+ {
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
+ SplashScreen.ShowSplashScreen();
+
var designer = new MatrixDesignerMain();
SplashScreen.CloseForm();
+ designer.StartPosition = FormStartPosition.CenterScreen;
+ designer.WindowState = FormWindowState.Minimized;
+ designer.Show();
+ designer.WindowState = FormWindowState.Normal;
+
Application.Run(designer);
}
}
diff --git a/Matrix App/Resources/pfüsikuh.png b/Matrix App/Resources/pfüsikuh.png
index 690d786..bd297f2 100644
Binary files a/Matrix App/Resources/pfüsikuh.png and b/Matrix App/Resources/pfüsikuh.png differ
diff --git a/Matrix App/SplashScreen.cs b/Matrix App/SplashScreen.cs
index 6d967b4..b35dba3 100644
--- a/Matrix App/SplashScreen.cs
+++ b/Matrix App/SplashScreen.cs
@@ -1,4 +1,5 @@
-using System.Threading;
+using System.Drawing;
+using System.Threading;
using System.Windows.Forms;
namespace Matrix_App
@@ -17,8 +18,12 @@ namespace Matrix_App
Controls.Add(new Label()
{
- Image = Properties.Resources.Pfüsikuh
+ Image = Properties.Resources.Pfüsikuh,
+ Size = new Size(Properties.Resources.Pfüsikuh.Width, Properties.Resources.Pfüsikuh.Height)
});
+
+ Size = new Size(Properties.Resources.Pfüsikuh.Width, Properties.Resources.Pfüsikuh.Height);
+ StartPosition = FormStartPosition.CenterScreen;
}
public static void ShowSplashScreen()
diff --git a/Matrix App/bin/Debug/netcoreapp3.1/Matrix App.dll b/Matrix App/bin/Debug/netcoreapp3.1/Matrix App.dll
index e23d833..e55c3a3 100644
Binary files a/Matrix App/bin/Debug/netcoreapp3.1/Matrix App.dll and b/Matrix App/bin/Debug/netcoreapp3.1/Matrix App.dll differ
diff --git a/Matrix App/bin/Debug/netcoreapp3.1/Matrix App.pdb b/Matrix App/bin/Debug/netcoreapp3.1/Matrix App.pdb
index e9c8d6b..bf8aba4 100644
Binary files a/Matrix App/bin/Debug/netcoreapp3.1/Matrix App.pdb and b/Matrix App/bin/Debug/netcoreapp3.1/Matrix App.pdb differ
diff --git a/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.csproj.CoreCompileInputs.cache b/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.csproj.CoreCompileInputs.cache
index 75a64fd..5c4c3e9 100644
--- a/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.csproj.CoreCompileInputs.cache
+++ b/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-ee8b86baf58d13435f960406ec4b0be78d0cc26c
+0e5f843b45897d8b4a3e6250399d748fbf87d606
diff --git a/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.csproj.GenerateResource.cache b/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.csproj.GenerateResource.cache
index 42e045b..144f2a0 100644
Binary files a/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.csproj.GenerateResource.cache and b/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.csproj.GenerateResource.cache differ
diff --git a/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.dll b/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.dll
index e23d833..e55c3a3 100644
Binary files a/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.dll and b/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.dll differ
diff --git a/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.pdb b/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.pdb
index e9c8d6b..bf8aba4 100644
Binary files a/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.pdb and b/Matrix App/obj/Debug/netcoreapp3.1/Matrix App.pdb differ
diff --git a/Matrix App/obj/Debug/netcoreapp3.1/Matrix_App.Properties.Resources.resources b/Matrix App/obj/Debug/netcoreapp3.1/Matrix_App.Properties.Resources.resources
index 54dc4a6..ba39fa7 100644
Binary files a/Matrix App/obj/Debug/netcoreapp3.1/Matrix_App.Properties.Resources.resources and b/Matrix App/obj/Debug/netcoreapp3.1/Matrix_App.Properties.Resources.resources differ