From 9d20ae7cb0b32920ab7d3ac64d6a097c162aec9b Mon Sep 17 00:00:00 2001 From: Booklordofthedings Date: Mon, 13 May 2024 00:10:42 +0200 Subject: [PATCH] added some layouting and basic controls --- assets/DIN.ttf | Bin 0 -> 165728 bytes assets/npatch.png | Bin 0 -> 170 bytes assets/npatch.png~ | Bin 0 -> 189 bytes src/Application.bf | 19 ++++-- src/Assets.bf | 3 + src/Controls/Button.bf | 19 ++++++ src/Controls/Control.bf | 18 +++++ src/Controls/Toolbar.bf | 19 ++++++ src/Screen.bf | 44 ++++++++++++ src/Textures.bf | 144 ++++++++++++++++++++++++++++++++++++++++ src/Theme.bf | 14 ++++ 11 files changed, 273 insertions(+), 7 deletions(-) create mode 100644 assets/DIN.ttf create mode 100644 assets/npatch.png create mode 100644 assets/npatch.png~ create mode 100644 src/Controls/Button.bf create mode 100644 src/Controls/Control.bf create mode 100644 src/Controls/Toolbar.bf create mode 100644 src/Screen.bf create mode 100644 src/Textures.bf create mode 100644 src/Theme.bf diff --git a/assets/DIN.ttf b/assets/DIN.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f0f8a92ec9639c90cb74576e6044851c6aa6d315 GIT binary patch literal 165728 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 literal 0 HcmV?d00001 diff --git a/assets/npatch.png b/assets/npatch.png new file mode 100644 index 0000000000000000000000000000000000000000..3d40d149f1a26db2ab4abb0359b9e1c7352811b9 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^>Od^U!3HFqTU%{`6lZ})WHAE+e$8iM;|78k~2)aXv2w^wP*=gTy8I<_8pJUqiXK|H6f=d9<9tKZW KKbLh*2~7ZL6*hGM literal 0 HcmV?d00001 diff --git a/assets/npatch.png~ b/assets/npatch.png~ new file mode 100644 index 0000000000000000000000000000000000000000..1cff33eb0218e3c5c44194c4d73a1a5748b2d5a0 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^>Od^U!3HFqTU%{`6lZ})WHAE+eZt1gO7oxa)ZQQ}Y6m_m^aZK0H|2-!)-M!{on9x0)?> zOe^!5-`>e_=+H8Dy@>abX Raylib.GetRenderHeight(); set => Raylib.SetWindowSize(Raylib.GetRenderWidth(), value); } - public Vector2 MousePosition { get @@ -51,18 +52,23 @@ class Application } } + public Textures Textures ~ delete _; + public Screen CurrentScreen; + ///Start the application displaying the input screen - public void Start() + public void Start(Screen pScreen) { + pScreen.Parent = this; + CurrentScreen = pScreen; + while(!Raylib.WindowShouldClose()) { Raylib.BeginDrawing(); Raylib.ClearBackground(Raylib.BLACK); Raylib.BeginTextureMode(_RenderTexture); //Our render code goes here - Raylib.ClearBackground(Raylib.WHITE); - var mouse = MousePosition; - Raylib.DrawRectangle((.)mouse.x-16,(.)mouse.y-16,32,32,Raylib.PINK); + Raylib.ClearBackground(Theme.BackgroundDark); + CurrentScreen.Render(); Raylib.EndTextureMode(); Raylib.DrawTexturePro( @@ -73,7 +79,6 @@ class Application 0, Raylib.WHITE ); - Raylib.EndDrawing(); UpdateLetterboxing(); } @@ -94,7 +99,7 @@ class Application { _RTPosition[0] = 0; _RTSize[0] = width; - _RTPosition[1] = (.)((height - maxHeight * 9) / 2); + _RTPosition[1] = (.)((height - maxWidth * 9) / 2); _RTSize[1] = (.)(height - (height - maxWidth * 9)); } else diff --git a/src/Assets.bf b/src/Assets.bf index 4e3ef2a..54dd5cc 100644 --- a/src/Assets.bf +++ b/src/Assets.bf @@ -5,4 +5,7 @@ using System; class Assets { public static uint8[?] WindowIcon = Compiler.ReadBinary("assets/64.png"); + public static uint8[?] NPatch = Compiler.ReadBinary("assets/npatch.png"); + public static uint8[?] Din = Compiler.ReadBinary("assets/din.ttf"); + } \ No newline at end of file diff --git a/src/Controls/Button.bf b/src/Controls/Button.bf new file mode 100644 index 0000000..d6339a3 --- /dev/null +++ b/src/Controls/Button.bf @@ -0,0 +1,19 @@ +namespace TheaterGui.Controls; + +using RaylibBeef; + +class Button : Control +{ + public this() + { + BoundingBox = .(0, 0, 400, 200); + } + + public override void Render() + { + var s = Parent.Parent.Textures.GetAsset("npatch").Value; + NPatchInfo patchInfo = .(s.SourceRect,3,3,3,3,(.)NPatchLayout.NPATCH_NINE_PATCH); + Raylib.DrawTextureNPatch(*s.Source, patchInfo,.(BoundingBox.x,BoundingBox.y,400,200),.(0,0),0,Theme.Main); + Raylib.DrawTextEx(Theme.Font, "Button", .(BoundingBox.x + 3, BoundingBox.y + 4), 16, 0, Theme.Text); + } +} \ No newline at end of file diff --git a/src/Controls/Control.bf b/src/Controls/Control.bf new file mode 100644 index 0000000..8e29101 --- /dev/null +++ b/src/Controls/Control.bf @@ -0,0 +1,18 @@ +namespace TheaterGui.Controls; + +using RaylibBeef; + +//The base class for every control object +abstract class Control +{ + public Rectangle BoundingBox = .(0,0,0,0); + public Screen Parent; + + public abstract void Render(); + + /* + Reacting to clicks + Reacting to hover + While selected + */ +} \ No newline at end of file diff --git a/src/Controls/Toolbar.bf b/src/Controls/Toolbar.bf new file mode 100644 index 0000000..484ed93 --- /dev/null +++ b/src/Controls/Toolbar.bf @@ -0,0 +1,19 @@ +namespace TheaterGui.Controls; + +using RaylibBeef; + +class Toolbar : Control +{ + public this() + { + BoundingBox = .(0,0, 1920, 20); + } + + public override void Render() + { + var s = Parent.Parent.Textures.GetAsset("npatch").Value; + NPatchInfo patchInfo = .(s.SourceRect,3,3,3,3,(.)NPatchLayout.NPATCH_NINE_PATCH); + Raylib.DrawTextureNPatch(*s.Source, patchInfo,.(BoundingBox.x,BoundingBox.y,1920,20),.(0,0),0,Theme.Main); + Raylib.DrawTextEx(Theme.Font, "File", .(BoundingBox.x + 3, BoundingBox.y + 4), 16, 0, Theme.Text); + } +} \ No newline at end of file diff --git a/src/Screen.bf b/src/Screen.bf new file mode 100644 index 0000000..6423779 --- /dev/null +++ b/src/Screen.bf @@ -0,0 +1,44 @@ +namespace TheaterGui; +using TheaterGui.Controls; + +using System; +using System.Collections; +using RaylibBeef; + +class Screen +{ + private List _Controls = new .() ~ DeleteContainerAndItems!(_); + //Used for layouting + private int32 _HighestY = 0; //"Highest" y value + private int32 _LowestY = 0; //"Lowest" y value + private int32 _X = 0; //Current X value + + + public Application Parent = null; + + public void Render() + { + for(var i in _Controls) + i.Render(); + } + + ///Add a control to the current screen + public void AddControl(Control pToAdd) + { + if(_X + pToAdd.BoundingBox.width >= 1920) + ForceNewRow(); + pToAdd.BoundingBox.x = _X; + pToAdd.BoundingBox.y = _HighestY; + _X = _X + (.)pToAdd.BoundingBox.width; //Update to new x value + if(_HighestY + pToAdd.BoundingBox.height > _LowestY) + _LowestY = _HighestY + (.)pToAdd.BoundingBox.height; + _Controls.Add(pToAdd); + pToAdd.Parent = this; + } + ///Force the next controls onto a newline + public void ForceNewRow() + { + _X = 0; + _HighestY = _LowestY; + } +} \ No newline at end of file diff --git a/src/Textures.bf b/src/Textures.bf new file mode 100644 index 0000000..68a8485 --- /dev/null +++ b/src/Textures.bf @@ -0,0 +1,144 @@ +namespace TheaterGui; + +using System; +using System.Collections; +using RaylibBeef; + +class Textures +{ + private List _Containers = new .() ~ DeleteContainerAndItems!(_); + private List _Textures = new .() ~ delete _; + private Dictionary _Map = new .() ~ DeleteDictionaryAndKeys!(_); //Mapped Textures + + public this() + { + LoadAsset(Assets.NPatch, "npatch"); + } + + public Result GetAsset(StringView acess) + { + if (!_Map.ContainsKeyAlt(acess)) + return .Err; + return .Ok(_Map[scope .(acess)]); + } + + private void LoadAsset(Span data, StringView name) + { + var img = Raylib.LoadImageFromMemory(".png", (.)data.Ptr, (.)data.Length); + defer Raylib.UnloadImage(img); + var s = Insert(img); + _Map.Add(new .(name), s); + } + + private sprite Insert(Image toInsert) + { + for (var i in _Containers) + { + var res = i.Insert(toInsert); + if (res != null) + { + Raylib.BeginDrawing(); + Raylib.BeginTextureMode(_Textures[@i.Index]); + var img = Raylib.LoadTextureFromImage((.)res.id); + Raylib.DrawTexturePro(img, .(0, 0, img.width, -img.height), .((.)res.rc[0], 2048 - res.rc[1] - (.)res.rc[3], img.width, img.height), .(0, 0), 0, Raylib.WHITE); + Raylib.EndTextureMode(); + Raylib.EndDrawing(); + Raylib.UnloadTexture(img); + + sprite toReturn = .(); + toReturn.Source = &_Textures[@i.Index].texture; + toReturn.Height = (.)res.rc[3]; + toReturn.Width = (.)res.rc[2]; + toReturn.SourceRect = .(res.rc[0], res.rc[1], res.rc[2], res.rc[3]); + return toReturn; + } + } + _Containers.Add(new .()); + _Textures.Add(Raylib.LoadRenderTexture(2048, 2048)); + Raylib.BeginDrawing(); + Raylib.BeginTextureMode(_Textures[_Textures.Count - 1]); + Raylib.ClearBackground(Raylib.BLANK); + Raylib.EndTextureMode(); + Raylib.EndDrawing(); + return Insert(toInsert); + } + + class Node + { + public Node[2] childs = .(null, null); + public uint64[4] rc = .(0, 0, 2048, 2048); //x,y, width, height + public Image? id = null; + + public Node Insert(Image toInsert) + { + if (!(childs[0] == null && childs[1] == null)) + { + var newNode = childs[0].Insert(toInsert); + if (newNode != null) return newNode; + + newNode = childs[1].Insert(toInsert); + if (newNode != null) return newNode; + } + else //Insert + { + if (id != null) + return null; + + if (toInsert.width > (.)rc[2] || toInsert.height > (.)rc[3]) + return null; + + if (toInsert.width == (.)rc[2] && toInsert.height == (.)rc[3]) + { + id = toInsert; + return this; + } + + childs[0] = new .(); + childs[1] = new .(); + + var dw = rc[2] - (.)toInsert.width; + var dh = rc[3] - (.)toInsert.height; + + if (dw > dh) + { + childs[0].rc = .(rc[0], rc[1], (.)toInsert.width, rc[3]); + childs[1].rc = .(rc[0] + (.)toInsert.width, rc[1], + rc[2] - (.)toInsert.width, rc[3]); + } + else + { + childs[0].rc = .(rc[0], rc[1], + rc[2], (.)toInsert.height); + childs[1].rc = .(rc[0], rc[1] + (.)toInsert.height, + rc[2], rc[3] - (.)toInsert.height); + } + + return childs[0].Insert(toInsert); + } + return null; + } + + public ~this() + { + if (childs[0] != null) + delete childs[0]; + if (childs[1] != null) + delete childs[1]; + } + } +} + +struct sprite +{ + public Texture2D* Source; + public Rectangle SourceRect; + + public int32 Width = 0; + public int32 Height = 0; + public float Rotation = 0; + + public void Render(float x, float y) + { + Raylib.DrawTexturePro(*Source, SourceRect, .(x + Width / 2, y + Height / 2, Width, Height), .(Width / 2, Height / 2), Rotation, Raylib.WHITE); + } +} \ No newline at end of file diff --git a/src/Theme.bf b/src/Theme.bf new file mode 100644 index 0000000..0cd4d70 --- /dev/null +++ b/src/Theme.bf @@ -0,0 +1,14 @@ +namespace TheaterGui; + +using RaylibBeef; + +class Theme +{ + public static Font Font ~ Raylib.UnloadFont(_); + public static int32 FontSize = 16; + + public static Color BackgroundDark = .(45, 45, 49, 255); + public static Color Main = .(153, 36, 72 ,255); + public static Color Text = .(216, 197, 215, 255); + +} \ No newline at end of file