diff --git a/FosterSamples.sln b/FosterSamples.sln index 42c9a3b..c774844 100644 --- a/FosterSamples.sln +++ b/FosterSamples.sln @@ -11,6 +11,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Froggymark", "Froggymark\Fr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FosterImGui", "ImGui\FosterImGui.csproj", "{ED95B28D-2822-4F3D-B1C5-591658BB2380}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageScaling", "ImageScaling\ImageScaling.csproj", "{D657285F-BF95-4A8E-9637-4FEA829FB008}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -36,5 +38,9 @@ Global {AA3B2D39-7BF3-4CCD-8F19-672474E71D41}.Debug|Any CPU.Build.0 = Debug|Any CPU {AA3B2D39-7BF3-4CCD-8F19-672474E71D41}.Release|Any CPU.ActiveCfg = Release|Any CPU {AA3B2D39-7BF3-4CCD-8F19-672474E71D41}.Release|Any CPU.Build.0 = Release|Any CPU + {D657285F-BF95-4A8E-9637-4FEA829FB008}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D657285F-BF95-4A8E-9637-4FEA829FB008}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D657285F-BF95-4A8E-9637-4FEA829FB008}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D657285F-BF95-4A8E-9637-4FEA829FB008}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/ImageScaling/Assets/FosterLogo.png b/ImageScaling/Assets/FosterLogo.png new file mode 100644 index 0000000..f74587d Binary files /dev/null and b/ImageScaling/Assets/FosterLogo.png differ diff --git a/ImageScaling/ImageScaling.csproj b/ImageScaling/ImageScaling.csproj new file mode 100644 index 0000000..5d67000 --- /dev/null +++ b/ImageScaling/ImageScaling.csproj @@ -0,0 +1,19 @@ + + + + Exe + net8.0 + enable + + + + + + + + + PreserveNewest + + + + diff --git a/ImageScaling/Program.cs b/ImageScaling/Program.cs new file mode 100644 index 0000000..436be2e --- /dev/null +++ b/ImageScaling/Program.cs @@ -0,0 +1,23 @@ +using System.Numerics; +using Foster.Framework; + +App.Register(); +App.Run("Image Scaling", 960, 540); + +class Game : Module +{ + readonly Texture Logo = new(new Image(Path.Join("Assets", "FosterLogo.png"))); + readonly Batcher Batcher = new(); + + static RectInt Viewport => new(0, 0, App.WidthInPixels, App.HeightInPixels); + static int Scale => Calc.Min(App.WidthInPixels / App.Width, App.HeightInPixels / App.Height); + + public override void Render() + { + Graphics.Clear(0xdeb813); + + Batcher.Clear(); + Batcher.Image(Logo, Viewport.Center, Logo.Size / 2, Vector2.One * Scale, 0, Color.White); + Batcher.Render(); + } +} diff --git a/ImageScaling/README.md b/ImageScaling/README.md new file mode 100644 index 0000000..12c42a3 --- /dev/null +++ b/ImageScaling/README.md @@ -0,0 +1,4 @@ +# Image Scaling +![Screenshot](screenshot.png "Screenshot") + +A minimal example of using Foster with simple asset loading and rendering. diff --git a/ImageScaling/screenshot.png b/ImageScaling/screenshot.png new file mode 100644 index 0000000..a86449f Binary files /dev/null and b/ImageScaling/screenshot.png differ diff --git a/README.md b/README.md index 0afd0c4..17c11aa 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ Samples Projects and Demos for the C# [Foster Framework](https://github.com/Fost | Sample | Description | Preview | | --- | --- | --- | +| [Image Scaling](https://github.com/FosterFramework/Samples/tree/main/ImageScaling) | A minimal example of using Foster with simple asset loading and rendering. | | | [Shapes](https://github.com/FosterFramework/Samples/tree/main/Shapes) | A small program that draws shapes to the screen without loading any assets | | | [Froggymark](https://github.com/FosterFramework/Samples/tree/main/Froggymark) | Performance test that draws as many quads to the screen as it can | | | [ImGui](https://github.com/FosterFramework/Samples/tree/main/ImGui) | An example using ImGui.NET wrapped in Foster draw calls | |