├── .gitignore ├── LICENSE.md ├── NoesisGUI.MonoGameWrapper.sln ├── NoesisGUI.MonoGameWrapper ├── Config │ ├── HitTestIgnoreDelegate.cs │ └── NoesisConfig.cs ├── Helpers │ ├── DeviceState │ │ ├── DeviceStateHelper.cs │ │ └── DeviceStateHelperD3D11.cs │ ├── KeyConverter.cs │ ├── NoesisTextureHelper.cs │ └── XnaKeysComparer.cs ├── Input │ ├── Devices │ │ ├── Keyboard.cs │ │ └── Mouse.cs │ ├── InputManager.cs │ ├── Platforms │ │ └── Windows │ │ │ ├── KeyboardImeWinforms.cs │ │ │ ├── Win32MessageCode.cs │ │ │ └── Win32Native.cs │ └── SystemSettings │ │ ├── InputSettingsHelper.cs │ │ └── WinFormsInputSettingsHelper.cs ├── NoesisGUI.MonoGameWrapper.csproj ├── NoesisGUI.MonoGameWrapper.csproj.DotSettings ├── NoesisGUI.MonoGameWrapper.sln ├── NoesisViewWrapper.cs ├── NoesisWrapper.cs └── Providers │ ├── ContentTextureProvider.cs │ ├── FolderFontProvider.cs │ ├── FolderTextureProvider.cs │ ├── FolderXamlProvider.cs │ └── NoesisProviderManager.cs ├── README.md └── TestMonoGameNoesisGUI ├── GUI ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Resources.xaml ├── Samples │ ├── Animation.xaml │ ├── Brushes.xaml │ ├── Button.xaml │ ├── Canvas.xaml │ ├── CheckBox.xaml │ ├── ComboBox.xaml │ ├── ContextMenu.xaml │ ├── DockPanel.xaml │ ├── Effects.xaml │ ├── Expander.xaml │ ├── Fonts │ │ ├── Aero Matics Regular.ttf │ │ ├── Caladea-Regular.ttf │ │ ├── CourierPrime-Regular.ttf │ │ ├── Muli-Bold.ttf │ │ ├── Muli-Italic.ttf │ │ ├── Muli-Regular.ttf │ │ └── WidgetIcons.ttf │ ├── Grid.xaml │ ├── GroupBox.xaml │ ├── Hyperlink.xaml │ ├── Image.xaml │ ├── Images │ │ ├── Nature.png │ │ ├── file.png │ │ ├── floppy-disk.png │ │ ├── folder-closed.png │ │ ├── folder-open.png │ │ ├── recycling-bin.png │ │ └── search.png │ ├── ItemsControl.xaml │ ├── ListBox.xaml │ ├── ListView.xaml │ ├── Menu.xaml │ ├── PasswordBox.xaml │ ├── ProgressBar.xaml │ ├── RadioButton.xaml │ ├── RepeatButton.xaml │ ├── ScrollViewer.xaml │ ├── Slider.xaml │ ├── StackPanel.xaml │ ├── StatusBar.xaml │ ├── TabControl.xaml │ ├── TextBlock.xaml │ ├── TextBox.xaml │ ├── ToggleButton.xaml │ ├── ToolBar.xaml │ ├── ToolTip.xaml │ ├── TreeView.xaml │ ├── UniformGrid.xaml │ └── WrapPanel.xaml └── Theme │ ├── Fonts │ ├── PT Root UI_Bold.otf │ └── PT Root UI_Regular.otf │ ├── NoesisTheme.Brushes.DarkAqua.xaml │ ├── NoesisTheme.Brushes.DarkBlue.xaml │ ├── NoesisTheme.Brushes.DarkCrimson.xaml │ ├── NoesisTheme.Brushes.DarkEmerald.xaml │ ├── NoesisTheme.Brushes.DarkGreen.xaml │ ├── NoesisTheme.Brushes.DarkLime.xaml │ ├── NoesisTheme.Brushes.DarkOrange.xaml │ ├── NoesisTheme.Brushes.DarkPurple.xaml │ ├── NoesisTheme.Brushes.DarkRed.xaml │ ├── NoesisTheme.Brushes.LightAqua.xaml │ ├── NoesisTheme.Brushes.LightBlue.xaml │ ├── NoesisTheme.Brushes.LightCrimson.xaml │ ├── NoesisTheme.Brushes.LightEmerald.xaml │ ├── NoesisTheme.Brushes.LightGreen.xaml │ ├── NoesisTheme.Brushes.LightLime.xaml │ ├── NoesisTheme.Brushes.LightOrange.xaml │ ├── NoesisTheme.Brushes.LightPurple.xaml │ ├── NoesisTheme.Brushes.LightRed.xaml │ ├── NoesisTheme.Colors.Dark.xaml │ ├── NoesisTheme.Colors.Light.xaml │ ├── NoesisTheme.DarkAqua.xaml │ ├── NoesisTheme.DarkBlue.xaml │ ├── NoesisTheme.DarkCrimson.xaml │ ├── NoesisTheme.DarkEmerald.xaml │ ├── NoesisTheme.DarkGreen.xaml │ ├── NoesisTheme.DarkLime.xaml │ ├── NoesisTheme.DarkOrange.xaml │ ├── NoesisTheme.DarkPurple.xaml │ ├── NoesisTheme.DarkRed.xaml │ ├── NoesisTheme.Fonts.xaml │ ├── NoesisTheme.LightAqua.xaml │ ├── NoesisTheme.LightBlue.xaml │ ├── NoesisTheme.LightCrimson.xaml │ ├── NoesisTheme.LightEmerald.xaml │ ├── NoesisTheme.LightGreen.xaml │ ├── NoesisTheme.LightLime.xaml │ ├── NoesisTheme.LightOrange.xaml │ ├── NoesisTheme.LightPurple.xaml │ ├── NoesisTheme.LightRed.xaml │ └── NoesisTheme.Styles.xaml ├── GameWithNoesis.cs ├── Icon.ico ├── Program.cs ├── TestMonoGameNoesisGUI.csproj ├── app.config ├── app.manifest └── packages.config /.gitignore: -------------------------------------------------------------------------------- 1 | #Folders 2 | Library/ 3 | Temp/ 4 | Builds/ 5 | obj/ 6 | bin/ 7 | 8 | *.suo 9 | *.user 10 | *.userprefs 11 | *.pidb 12 | 13 | #OS Junk 14 | Thumbs.db 15 | .DS_Store* 16 | ehthumbs.db 17 | Icon7 18 | 19 | /.project 20 | 21 | *.psess 22 | *.vsp 23 | *.opensdf 24 | *.sdf 25 | 26 | *.tmp 27 | 28 | /NoesisGUI-CSharpSDK/* 29 | !/NoesisGUI-CSharpSDK/Extract NoesisGUI SDK here 30 | 31 | /Libs/Output 32 | */Libs/Output 33 | .vs/ 34 | .idea/ 35 | packages/ 36 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 NoesisGUI MonoGame Integration 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31624.102 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NoesisGUI.MonoGameWrapper", "NoesisGUI.MonoGameWrapper\NoesisGUI.MonoGameWrapper.csproj", "{7B629986-9BCF-48F4-AACA-6AA872154C81}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestMonoGameNoesisGUI", "TestMonoGameNoesisGUI\TestMonoGameNoesisGUI.csproj", "{24AC8B94-0651-4FC7-956A-F05F2E664C69}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Debug|x86 = Debug|x86 14 | Release|Any CPU = Release|Any CPU 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {7B629986-9BCF-48F4-AACA-6AA872154C81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {7B629986-9BCF-48F4-AACA-6AA872154C81}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {7B629986-9BCF-48F4-AACA-6AA872154C81}.Debug|x86.ActiveCfg = Debug|Any CPU 21 | {7B629986-9BCF-48F4-AACA-6AA872154C81}.Debug|x86.Build.0 = Debug|Any CPU 22 | {7B629986-9BCF-48F4-AACA-6AA872154C81}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {7B629986-9BCF-48F4-AACA-6AA872154C81}.Release|Any CPU.Build.0 = Release|Any CPU 24 | {7B629986-9BCF-48F4-AACA-6AA872154C81}.Release|x86.ActiveCfg = Release|Any CPU 25 | {7B629986-9BCF-48F4-AACA-6AA872154C81}.Release|x86.Build.0 = Release|Any CPU 26 | {24AC8B94-0651-4FC7-956A-F05F2E664C69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {24AC8B94-0651-4FC7-956A-F05F2E664C69}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {24AC8B94-0651-4FC7-956A-F05F2E664C69}.Debug|x86.ActiveCfg = Debug|Any CPU 29 | {24AC8B94-0651-4FC7-956A-F05F2E664C69}.Debug|x86.Build.0 = Debug|Any CPU 30 | {24AC8B94-0651-4FC7-956A-F05F2E664C69}.Release|Any CPU.ActiveCfg = Release|Any CPU 31 | {24AC8B94-0651-4FC7-956A-F05F2E664C69}.Release|Any CPU.Build.0 = Release|Any CPU 32 | {24AC8B94-0651-4FC7-956A-F05F2E664C69}.Release|x86.ActiveCfg = Release|Any CPU 33 | {24AC8B94-0651-4FC7-956A-F05F2E664C69}.Release|x86.Build.0 = Release|Any CPU 34 | EndGlobalSection 35 | GlobalSection(SolutionProperties) = preSolution 36 | HideSolutionNode = FALSE 37 | EndGlobalSection 38 | GlobalSection(ExtensibilityGlobals) = postSolution 39 | SolutionGuid = {A4CE57D6-6586-4DC7-9FA5-354F4897A303} 40 | EndGlobalSection 41 | EndGlobal 42 | -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Config/HitTestIgnoreDelegate.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper 2 | { 3 | using Noesis; 4 | 5 | public delegate bool HitTestIgnoreDelegate(Visual element); 6 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Helpers/DeviceState/DeviceStateHelper.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Helpers.DeviceState 2 | { 3 | using System; 4 | 5 | internal abstract class DeviceStateHelper 6 | { 7 | public DeviceStateRestorer Remember() 8 | { 9 | this.Save(); 10 | return new DeviceStateRestorer(this); 11 | } 12 | 13 | protected abstract void Restore(); 14 | 15 | protected abstract void Save(); 16 | 17 | /// 18 | /// Disposable structure which calls the state.Restore() method during Dispose(). 19 | /// 20 | internal struct DeviceStateRestorer : IDisposable 21 | { 22 | private readonly DeviceStateHelper state; 23 | 24 | internal DeviceStateRestorer(DeviceStateHelper state) 25 | { 26 | this.state = state; 27 | } 28 | 29 | public void Dispose() 30 | { 31 | this.state.Restore(); 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Helpers/NoesisTextureHelper.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Helpers 2 | { 3 | using System; 4 | using System.Reflection; 5 | using SharpDX.Direct3D11; 6 | using Texture = Noesis.Texture; 7 | using Texture2D = Microsoft.Xna.Framework.Graphics.Texture2D; 8 | 9 | public static class NoesisTextureHelper 10 | { 11 | // We need the native texture pointer for the SharpDX texture 12 | // but this API is not available in MonoGame.Texture class. 13 | // Here we're using reflection to access the internal method. 14 | private static readonly MethodInfo GetTextureMethod 15 | = typeof(Texture2D).GetMethod("GetTexture", 16 | BindingFlags.NonPublic | BindingFlags.Instance); 17 | 18 | public static Texture CreateNoesisTexture(Texture2D texture) 19 | { 20 | if (texture == null) 21 | { 22 | return null; 23 | } 24 | 25 | if (texture.IsDisposed) 26 | { 27 | return null; 28 | 29 | throw new Exception("Cannot wrap the disposed texture: " + texture); 30 | } 31 | 32 | var textureNativePointer = GetTextureNativePointer(texture); 33 | 34 | return Texture.WrapD3D11Texture( 35 | texture, 36 | textureNativePointer, 37 | texture.Width, 38 | texture.Height, 39 | texture.LevelCount, 40 | isInverted: false); 41 | } 42 | 43 | private static IntPtr GetTextureNativePointer(Texture2D texture) 44 | { 45 | var resource = (Resource)GetTextureMethod.Invoke(texture, Array.Empty()); 46 | return resource.NativePointer; 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Helpers/XnaKeysComparer.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Helpers 2 | { 3 | using System.Collections.Generic; 4 | using Microsoft.Xna.Framework.Input; 5 | 6 | internal class XnaKeysComparer : IEqualityComparer 7 | { 8 | public static readonly XnaKeysComparer Instance = new(); 9 | 10 | private XnaKeysComparer() 11 | { 12 | } 13 | 14 | public bool Equals(Keys x, Keys y) 15 | { 16 | return x == y; 17 | } 18 | 19 | public int GetHashCode(Keys obj) 20 | { 21 | return (int)obj; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Input/InputManager.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Input 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Windows.Forms; 6 | using Microsoft.Xna.Framework; 7 | using Noesis; 8 | using Keyboard = NoesisGUI.MonoGameWrapper.Input.Devices.Keyboard; 9 | using Keys = Microsoft.Xna.Framework.Input.Keys; 10 | using Mouse = NoesisGUI.MonoGameWrapper.Input.Devices.Mouse; 11 | 12 | public class InputManager : IDisposable 13 | { 14 | private readonly Keyboard keyboard; 15 | 16 | private readonly Mouse mouse; 17 | 18 | private readonly NoesisViewWrapper viewWrapper; 19 | 20 | internal InputManager( 21 | NoesisViewWrapper viewWrapper, 22 | NoesisConfig config, 23 | Form form) 24 | { 25 | this.viewWrapper = viewWrapper; 26 | var view = viewWrapper.View; 27 | var controlTreeRoot = view.Content; 28 | 29 | this.keyboard = new Keyboard( 30 | view, 31 | controlTreeRoot.Keyboard, 32 | config, 33 | form); 34 | 35 | // Find control tree root. 36 | // It's super important to use global UI root to process visual tree hit testing: 37 | // controlTreeRoot root is not the UI root and popup visuals are created in the UI root. 38 | var rootVisual = (Visual)controlTreeRoot; 39 | while (VisualTreeHelper.GetParent(rootVisual) is Visual parent) 40 | { 41 | rootVisual = parent; 42 | } 43 | 44 | this.mouse = new Mouse(view, 45 | rootVisual, 46 | controlTreeRoot.Keyboard, 47 | config); 48 | } 49 | 50 | /// 51 | /// Gets collection of the keyboard keys consumed by NoesisGUI during this frame. You could use it to ignore according 52 | /// input of the game. 53 | /// 54 | public ICollection ConsumedKeyboardKeys => this.keyboard.ConsumedKeys; 55 | 56 | /// 57 | /// Gets collection of the mouse buttons consumed by NoesisGUI during this frame. You could use it to ignore according 58 | /// input of the game. 59 | /// 60 | public ICollection ConsumedMouseButtons => this.mouse.ConsumedButtons; 61 | 62 | /// 63 | /// Gets amount of the mouse wheel delta consumed by NoesisGUI during this frame. You could use it to ignore according 64 | /// input of the game. 65 | /// 66 | public int ConsumedMouseDeltaWheel => this.mouse.ConsumedDeltaWheel; 67 | 68 | public void Dispose() 69 | { 70 | this.keyboard?.Dispose(); 71 | } 72 | 73 | public void OnMonoGameChar(char character, Keys key) 74 | { 75 | this.keyboard.OnMonoGameChar(character, key); 76 | } 77 | 78 | public void SoftwareKeyboardCallbackHandler(UIElement focused, bool open) 79 | { 80 | this.keyboard.SoftwareKeyboardCallbackHandler(focused, open); 81 | } 82 | 83 | internal void Update(GameTime gameTime, bool isWindowActive) 84 | { 85 | gameTime = this.viewWrapper.CalculateRelativeGameTime(gameTime); 86 | 87 | this.keyboard.UpdateKeyboard(gameTime, isWindowActive); 88 | this.mouse.UpdateMouse(gameTime, isWindowActive); 89 | } 90 | } 91 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Input/SystemSettings/InputSettingsHelper.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Input.SystemSettings 2 | { 3 | internal abstract class InputSettingsHelper 4 | { 5 | public abstract void GetSystemInputSettings( 6 | out double keyRepeatDelaySeconds, 7 | out double keyRepeatIntervalSeconds, 8 | out double mouseDoubleClickIntervalSeconds); 9 | 10 | internal static WinFormsInputSettingsHelper GetPlatform() 11 | { 12 | return WinFormsInputSettingsHelper.Instance; 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Input/SystemSettings/WinFormsInputSettingsHelper.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Input.SystemSettings 2 | { 3 | using System.Windows.Forms; 4 | 5 | internal class WinFormsInputSettingsHelper : InputSettingsHelper 6 | { 7 | public static readonly WinFormsInputSettingsHelper Instance = new(); 8 | 9 | public override void GetSystemInputSettings( 10 | out double keyRepeatDelaySeconds, 11 | out double keyRepeatIntervalSeconds, 12 | out double mouseDoubleClickIntervalSeconds) 13 | { 14 | // The keyboard repeat-delay setting, from 0 (approximately 250 millisecond delay) 15 | // through 3 (approximately 1 second delay). 16 | var sysKeyboardDelay = SystemInformation.KeyboardDelay; 17 | 18 | // The keyboard repeat-speed setting, from 0 (approximately 2.5 repetitions per second) 19 | // through 31 (approximately 30 repetitions per second). 20 | var sysKeyboardRepeat = SystemInformation.KeyboardSpeed; 21 | 22 | // The maximum amount of time, in milliseconds, that can elapse between a first click 23 | // and a second click for the OS to consider the mouse action a double-click. 24 | var sysMouseDoubleClickTime = SystemInformation.DoubleClickTime; 25 | 26 | keyRepeatDelaySeconds = Map(sysKeyboardDelay, 0, 3, 0.25, 1); 27 | keyRepeatIntervalSeconds = Map(sysKeyboardRepeat, 0, 31, 1.0 / 2.5, 1.0 / 30.0); 28 | 29 | mouseDoubleClickIntervalSeconds = sysMouseDoubleClickTime / 1000d; 30 | } 31 | 32 | private static double Clamp(double value, double min, double max) 33 | { 34 | if (value < min) 35 | { 36 | return min; 37 | } 38 | 39 | if (value > max) 40 | { 41 | return max; 42 | } 43 | 44 | return value; 45 | } 46 | 47 | private static double Map( 48 | double inputValue, 49 | double inputMin, 50 | double inputMax, 51 | double outputMin, 52 | double outputMax) 53 | { 54 | inputValue = Clamp(inputValue, inputMin, inputMax); 55 | 56 | var inputPercents = (inputValue - inputMin) / (inputMax - inputMin); 57 | var outputValue = outputMin + inputPercents * (outputMax - outputMin); 58 | 59 | return outputValue; 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/NoesisGUI.MonoGameWrapper.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net471 5 | portable 6 | Library 7 | NoesisGUI.MonoGameWrapper 8 | NoesisGUI.MonoGameWrapper 9 | .pdb 10 | 9 11 | true 12 | x64 13 | 14 | 15 | 16 | DEBUG;TRACE 17 | 18 | 19 | 20 | 21 | 22 | ..\MonoGame\Artifacts\MonoGame.Framework\WindowsDX\Release\net452\MonoGame.Framework.dll 23 | 24 | 25 | ..\MonoGame\Artifacts\MonoGame.Framework\WindowsDX\Release\net452\SharpDX.dll 26 | 27 | 28 | ..\MonoGame\Artifacts\MonoGame.Framework\WindowsDX\Release\net452\SharpDX.Direct3D11.dll 29 | 30 | 31 | ..\MonoGame\Artifacts\MonoGame.Framework\WindowsDX\Release\net452\SharpDX.DXGI.dll 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/NoesisGUI.MonoGameWrapper.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/NoesisGUI.MonoGameWrapper.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28010.2036 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NoesisGUI.MonoGameWrapper", "NoesisGUI.MonoGameWrapper.csproj", "{DFA2077C-7332-454E-9D5D-4023C65B9E34}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NoesisManagedNetStandard", "..\NoesisGUI-ManagedSDK\Src\Noesis\Core\NoesisManagedAtomicTorch.csproj", "{8BC71D9B-DB72-449C-8CB3-2E1F7C72AEDF}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {DFA2077C-7332-454E-9D5D-4023C65B9E34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {DFA2077C-7332-454E-9D5D-4023C65B9E34}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {DFA2077C-7332-454E-9D5D-4023C65B9E34}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {DFA2077C-7332-454E-9D5D-4023C65B9E34}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {8BC71D9B-DB72-449C-8CB3-2E1F7C72AEDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {8BC71D9B-DB72-449C-8CB3-2E1F7C72AEDF}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {8BC71D9B-DB72-449C-8CB3-2E1F7C72AEDF}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {8BC71D9B-DB72-449C-8CB3-2E1F7C72AEDF}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {20ECCF12-0036-4E3A-A754-3DE30D1C0181} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Providers/ContentTextureProvider.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Providers 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | using Microsoft.Xna.Framework.Content; 6 | using Microsoft.Xna.Framework.Graphics; 7 | using Noesis; 8 | using NoesisGUI.MonoGameWrapper.Helpers; 9 | using Path = System.IO.Path; 10 | using Texture = Noesis.Texture; 11 | 12 | /// 13 | /// MonoGame Content texture loading provider for NoesisGUI. 14 | /// 15 | public class ContentTextureProvider : TextureProvider, IDisposable 16 | { 17 | private readonly Dictionary> cache 18 | = new(StringComparer.OrdinalIgnoreCase); 19 | 20 | private readonly ContentManager contentManager; 21 | 22 | private readonly string rootPath; 23 | 24 | public ContentTextureProvider( 25 | ContentManager contentManager, 26 | string rootPath) 27 | { 28 | this.contentManager = contentManager; 29 | this.rootPath = rootPath; 30 | } 31 | 32 | public void Dispose() 33 | { 34 | foreach (var entry in this.cache) 35 | { 36 | if (entry.Value.TryGetTarget(out var texture)) 37 | { 38 | texture.Dispose(); 39 | } 40 | } 41 | 42 | this.cache.Clear(); 43 | } 44 | 45 | public override void GetTextureInfo(string filename, out uint width, out uint height) 46 | { 47 | var texture = this.GetTexture(filename); 48 | width = (uint)texture.Width; 49 | height = (uint)texture.Height; 50 | } 51 | 52 | public override Texture LoadTexture(string filename) 53 | { 54 | var texture2D = this.GetTexture(filename); 55 | return NoesisTextureHelper.CreateNoesisTexture(texture2D); 56 | } 57 | 58 | private Texture2D GetTexture(string filename) 59 | { 60 | if (filename.StartsWith(this.rootPath)) 61 | { 62 | filename = filename.Remove(this.rootPath.Length); 63 | } 64 | 65 | filename = filename.TrimStart(Path.DirectorySeparatorChar, 66 | Path.AltDirectorySeparatorChar); 67 | 68 | if (this.cache.TryGetValue(filename, out var weakReference) 69 | && weakReference.TryGetTarget(out var cachedTexture) 70 | && !cachedTexture.IsDisposed) 71 | { 72 | return cachedTexture; 73 | } 74 | 75 | var texture = this.contentManager.Load(filename); 76 | this.cache[filename] = new WeakReference(texture); 77 | return texture; 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Providers/FolderFontProvider.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Providers 2 | { 3 | using System; 4 | using System.IO; 5 | using Noesis; 6 | using Path = System.IO.Path; 7 | 8 | public class FolderFontProvider : FontProvider 9 | { 10 | private readonly string rootPath; 11 | 12 | public FolderFontProvider(string rootPath) 13 | { 14 | if (!rootPath.EndsWith(Path.DirectorySeparatorChar.ToString())) 15 | { 16 | rootPath += Path.DirectorySeparatorChar; 17 | } 18 | 19 | this.rootPath = rootPath; 20 | } 21 | 22 | public override Stream OpenFont(string folder, string id) 23 | { 24 | var fontPath = id; 25 | if (File.Exists(fontPath)) 26 | { 27 | return File.OpenRead(fontPath); 28 | } 29 | 30 | throw new FileNotFoundException("Font file not found", fontPath); 31 | } 32 | 33 | public override void ScanFolder(string folder) 34 | { 35 | var folderPath = Path.Combine(this.rootPath, folder); 36 | if (!Directory.Exists(folderPath)) 37 | { 38 | return; 39 | } 40 | 41 | var fontFilePaths = Directory.GetFiles(folderPath, "*.*", searchOption: SearchOption.TopDirectoryOnly); 42 | foreach (var fontPath in fontFilePaths) 43 | { 44 | if (fontPath.EndsWith(".ttf", StringComparison.OrdinalIgnoreCase) 45 | || fontPath.EndsWith(".otf", StringComparison.OrdinalIgnoreCase) 46 | || fontPath.EndsWith(".ttc", StringComparison.OrdinalIgnoreCase)) 47 | { 48 | this.RegisterFont(folder, fontPath); 49 | } 50 | } 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Providers/FolderTextureProvider.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Providers 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | using System.IO; 6 | using Microsoft.Xna.Framework.Graphics; 7 | using Noesis; 8 | using NoesisGUI.MonoGameWrapper.Helpers; 9 | using Color = Microsoft.Xna.Framework.Color; 10 | using Path = System.IO.Path; 11 | using Texture = Noesis.Texture; 12 | 13 | /// 14 | /// Default texture loading provider for NoesisGUI. 15 | /// Please note this is a very unefficient loader as simply added as a proof of work. 16 | /// You might want to replace it with as the much more efficient solution. 17 | /// 18 | public class FolderTextureProvider : TextureProvider, IDisposable 19 | { 20 | private readonly Dictionary> cache 21 | = new(StringComparer.OrdinalIgnoreCase); 22 | 23 | private readonly GraphicsDevice graphicsDevice; 24 | 25 | private readonly string rootPath; 26 | 27 | public FolderTextureProvider(string rootPath, GraphicsDevice graphicsDevice) 28 | { 29 | if (!rootPath.EndsWith(Path.DirectorySeparatorChar.ToString())) 30 | { 31 | rootPath += Path.DirectorySeparatorChar; 32 | } 33 | 34 | this.rootPath = rootPath; 35 | this.graphicsDevice = graphicsDevice; 36 | } 37 | 38 | public void Dispose() 39 | { 40 | foreach (var entry in this.cache) 41 | { 42 | if (entry.Value.TryGetTarget(out var texture)) 43 | { 44 | texture.Dispose(); 45 | } 46 | } 47 | 48 | this.cache.Clear(); 49 | } 50 | 51 | public override void GetTextureInfo(string filename, out uint width, out uint height) 52 | { 53 | var texture = this.GetTexture(filename); 54 | width = (uint)texture.Width; 55 | height = (uint)texture.Height; 56 | } 57 | 58 | public override Texture LoadTexture(string filename) 59 | { 60 | var texture2D = this.GetTexture(filename); 61 | return NoesisTextureHelper.CreateNoesisTexture(texture2D); 62 | } 63 | 64 | protected virtual Texture2D LoadTextureFromStream(FileStream fileStream) 65 | { 66 | var texture = Texture2D.FromStream(this.graphicsDevice, fileStream); 67 | if (texture.Format != SurfaceFormat.Color) 68 | { 69 | return texture; 70 | } 71 | 72 | // unfortunately, MonoGame loads textures as non-premultiplied alpha 73 | // need to premultiply alpha for correct rendering with NoesisGUI 74 | var buffer = new Color[texture.Width * texture.Height]; 75 | texture.GetData(buffer); 76 | for (var i = 0; i < buffer.Length; i++) 77 | { 78 | buffer[i] = Color.FromNonPremultiplied( 79 | buffer[i].R, 80 | buffer[i].G, 81 | buffer[i].B, 82 | buffer[i].A); 83 | } 84 | 85 | texture.SetData(buffer); 86 | return texture; 87 | } 88 | 89 | private Texture2D GetTexture(string filename) 90 | { 91 | if (this.cache.TryGetValue(filename, out var weakReference) 92 | && weakReference.TryGetTarget(out var cachedTexture) 93 | && !cachedTexture.IsDisposed) 94 | { 95 | return cachedTexture; 96 | } 97 | 98 | var fullPath = Path.Combine(this.rootPath, filename); 99 | using (var fileStream = File.OpenRead(fullPath)) 100 | { 101 | var texture = this.LoadTextureFromStream(fileStream); 102 | this.cache[filename] = new WeakReference(texture); 103 | return texture; 104 | } 105 | } 106 | } 107 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Providers/FolderXamlProvider.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Providers 2 | { 3 | using System.IO; 4 | using Noesis; 5 | using Path = System.IO.Path; 6 | 7 | public class FolderXamlProvider : XamlProvider 8 | { 9 | private readonly string rootPath; 10 | 11 | public FolderXamlProvider(string rootPath) 12 | { 13 | if (!rootPath.EndsWith(Path.DirectorySeparatorChar.ToString())) 14 | { 15 | rootPath += Path.DirectorySeparatorChar; 16 | } 17 | 18 | this.rootPath = rootPath; 19 | } 20 | 21 | public override Stream LoadXaml(string filename) 22 | { 23 | var fullPath = Path.Combine(this.rootPath, filename); 24 | return File.OpenRead(fullPath); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /NoesisGUI.MonoGameWrapper/Providers/NoesisProviderManager.cs: -------------------------------------------------------------------------------- 1 | namespace NoesisGUI.MonoGameWrapper.Providers 2 | { 3 | using System; 4 | using Noesis; 5 | 6 | public class NoesisProviderManager : IDisposable 7 | { 8 | public NoesisProviderManager( 9 | XamlProvider xamlProvider, 10 | FontProvider fontProvider, 11 | TextureProvider textureProvider) 12 | { 13 | this.XamlProvider = xamlProvider; 14 | this.TextureProvider = textureProvider; 15 | this.FontProvider = fontProvider; 16 | } 17 | 18 | public FontProvider FontProvider { get; private set; } 19 | 20 | public TextureProvider TextureProvider { get; private set; } 21 | 22 | public XamlProvider XamlProvider { get; private set; } 23 | 24 | public void Dispose() 25 | { 26 | (this.XamlProvider as IDisposable)?.Dispose(); 27 | (this.FontProvider as IDisposable)?.Dispose(); 28 | (this.TextureProvider as IDisposable)?.Dispose(); 29 | this.XamlProvider = null; 30 | this.FontProvider = null; 31 | this.TextureProvider = null; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | NoesisGUI MonoGame Integration 2 | ============= 3 | This library provides solution for integration [NoesisGUI 3.0.12](http://noesisengine.com) with [MonoGame 3.8](http://monogame.net) library. 4 | Currently it supports only MonoGame projects for Windows DirectX 11. 5 | Example MonoGame project with integrated NoesisGUI is included. 6 | 7 | Prerequisites 8 | ----- 9 | * [Visual Studio 2019](https://www.visualstudio.com/), any edition (JetBrains Rider works fine too) 10 | 11 | Installation 12 | ----- 13 | 1. Open `NoesisGUI.MonoGameWrapper.sln` with Visual Studio 2019. 14 | 2. Open context menu on `TestMonoGameNoesisGUI` project and select `Set as StartUp Project`. 15 | 3. Press F5 to launch the example game project. 16 | 17 | Please note that the game example project uses default NoesisGUI theme from https://github.com/Noesis/Managed/tree/master/Src/NoesisApp/Theme and samples from https://github.com/Noesis/Tutorials/tree/master/Samples/Gallery/C%23 NoesisGUI works with XAML files without any preprocessing/building step (it has an extremely fast XAML parser that is faster than compiled BAML from WPF/UWP). You could store XAML files in any folder you want and robocopy them this way. One of the useful approaches is to store them in a WPF class library project which could be opened with Visual Studio to edit XAML with full syntax support and autocomplete. It also could be done as a WPF application project which could be executed independently to verify your UI is working properly (but that will require writing more demonstration logic there). WPF XAML is almost 100% compatible with NoesisGUI (see [docs](http://noesisengine.com/docs)). 18 | 19 | Implementation limitations 20 | ----- 21 | * Currently only DirectX 11 is supported. 22 | * Currently there many PInvoke Windows dependencies for input handling. 23 | 24 | Contributing 25 | ----- 26 | Pull requests are welcome. 27 | Please make your code compliant with Microsoft recommended coding conventions: 28 | * [General Naming Conventions](https://msdn.microsoft.com/en-us/library/ms229045%28v=vs.110%29.aspx) 29 | * [C# Coding Conventions](https://msdn.microsoft.com/en-us/library/ff926074.aspx) 30 | 31 | License 32 | ----- 33 | The code provided under MIT License. Please read [LICENSE.md](LICENSE.md) for details. 34 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Canvas.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Content is placed relative to the Canvas using 20 | Canvas.Top, 21 | Canvas.Left, 22 | Canvas.Bottom, 23 | or 24 | Canvas.Right 25 | attached properties. 26 | 27 | 28 | Panel base class defines 29 | Panel.ZIndex 30 | attached property to modify the Z order in which panel children are rendered. By default, order is determined by its position in the Children collection. 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/ComboBox.xaml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | User can bind to 22 | SelectedIndex, 23 | SelectedItem or 24 | SelectedValue 25 | to be notified when selection changes. The 26 | SelectedValuePath 27 | property specifies the path to the property that is used to determine the value of the SelectedValue property. 28 | 29 | 30 | By setting the extension property 31 | noesis:Text.Placeholder 32 | a hint text will be shown when ComboBox has nothing selected. 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Enables or disables editing of the text in text box of the ComboBox. 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | Muli 70 | Courier Prime 71 | Caladea 72 | 73 | 74 | 75 | 8 76 | 9 77 | 10 78 | 12 79 | 14 80 | 18 81 | 24 82 | 32 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/DockPanel.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Dock 20 | attached property changes the position of an element relative to other elements in the same DockPanel. 21 | 22 | 23 | Using property 24 | LastChildFill 25 | the last child element of the DockPanel will fill the remaining space, regardless of any other dock value set on that element. 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Fonts/Aero Matics Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Fonts/Aero Matics Regular.ttf -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Fonts/Caladea-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Fonts/Caladea-Regular.ttf -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Fonts/CourierPrime-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Fonts/CourierPrime-Regular.ttf -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Fonts/Muli-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Fonts/Muli-Bold.ttf -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Fonts/Muli-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Fonts/Muli-Italic.ttf -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Fonts/Muli-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Fonts/Muli-Regular.ttf -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Fonts/WidgetIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Fonts/WidgetIcons.ttf -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Grid.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Content is positioned in the Grid using 20 | Grid.Row, 21 | Grid.RowSpan, 22 | Grid.Column 23 | and 24 | Grid.ColumnSpan 25 | attached properties. 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Hyperlink.xaml: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | When user clicks the Hyperlink, it opens the page specified in the 22 | NavigateUri 23 | property inside the default browser. 24 | 25 | 26 | 27 | 28 | 29 | NoesisGUI home page 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | If NavigateUri property is not set users can handle 39 | Click 40 | event, typically to navigate within their application. 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | Page 1 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | Page 2 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Image.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Images/Nature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Images/Nature.png -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Images/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Images/file.png -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Images/floppy-disk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Images/floppy-disk.png -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Images/folder-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Images/folder-closed.png -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Images/folder-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Images/folder-open.png -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Images/recycling-bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Images/recycling-bin.png -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/Images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Samples/Images/search.png -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/PasswordBox.xaml: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | By setting the extension property 21 | noesis:Text.Placeholder 22 | a hint text will be shown when PasswordBox text is empty. 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | You can customize which character is used to mask the password out by setting the 36 | PasswordChar 37 | property. 38 | 39 | 40 | MaxLength 41 | specifies the maximum number of characters that the PasswordBox admits. A value of 0 means no limit. 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | SelectionBrush 56 | and 57 | SelectionOpacity 58 | properties can be be modified to customize the selection. 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/StackPanel.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Children items are stacked in the direction specified by the 20 | Orientation 21 | property. 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/StatusBar.xaml: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Inside a StatusBar you can place any kind of controls, it is not limited to just text. 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/TextBox.xaml: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Text 21 | property is used to specify the string content of the TextBox. 22 | 23 | 24 | By setting the extension property 25 | noesis:Text.Placeholder 26 | a hint text will be shown when TextBox text is empty. 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | TextWrapping 40 | property specifies how text should wrap inside the TextBox. 41 | 42 | 43 | To insert a line break when 44 | Enter 45 | key is pressed, the 46 | AcceptsReturn 47 | property must be set to true. 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | Read-only 62 | property indicates if TextBox is read-only to a user interacting with the control. Although the contents of the TextBox can always be modified programmatically. 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/ToolTip.xaml: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/UniformGrid.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Content is positioned in the Grid using 20 | Grid.Row, 21 | Grid.RowSpan, 22 | Grid.Column 23 | and 24 | Grid.ColumnSpan 25 | attached properties. 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Samples/WrapPanel.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | Orientation 20 | property can be set to Vertical to position child elements from top to bottom. 21 | 22 | 23 | By default each item gets the minimum space required to render, but a fixed width and height can be specified for all items with 24 | ItemWidth 25 | and 26 | ItemHeight 27 | properties. 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/Fonts/PT Root UI_Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Theme/Fonts/PT Root UI_Bold.otf -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/Fonts/PT Root UI_Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/GUI/Theme/Fonts/PT Root UI_Regular.otf -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.DarkAqua.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF10DDDf 9 | 10 | #FF55EDED 11 | #FF2FEBEB 12 | #FF0CBFC2 13 | #FF0899A1 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.DarkBlue.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF1098DF 9 | 10 | #FF56BDEC 11 | #FF2EAEEB 12 | #FF0B80C1 13 | #FF0864A1 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.DarkCrimson.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FFDE1043 9 | 10 | #FFED5580 11 | #FFEB2F64 12 | #FFC20C39 13 | #FFA10829 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.DarkEmerald.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF10DE62 9 | 10 | #FF55ED8D 11 | #FF2FEB74 12 | #FF0CC254 13 | #FF08A14A 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.DarkGreen.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF2AA60C 9 | 10 | #FF5AB541 11 | #FF43B324 12 | #FF218C08 13 | #FF187306 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.DarkLime.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF99DF10 9 | 10 | #FFBDED55 11 | #FFAFEB2F 12 | #FF85C20C 13 | #FF69A108 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.DarkOrange.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FFDF9910 9 | 10 | #FFECB556 11 | #FFEBA62E 12 | #FFC1840B 13 | #FFA17608 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.DarkPurple.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF894EED 9 | 10 | #FFA67FF5 11 | #FF9D71F5 12 | #FF7743D1 13 | #FF6737B0 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.DarkRed.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FFDE2B10 9 | 10 | #FFED6755 11 | #FFEB452F 12 | #FFC2240C 13 | #FFA11F08 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.LightAqua.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF10DDDf 9 | 10 | #FF0899A1 11 | #FF0CBFC2 12 | #FF2FEBEB 13 | #FF55EDED 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.LightBlue.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF1098DF 9 | 10 | #FF0864A1 11 | #FF0B80C1 12 | #FF2EAEEB 13 | #FF56BDEC 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.LightCrimson.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FFDE1043 9 | 10 | #FFA10829 11 | #FFC20C39 12 | #FFEB2F64 13 | #FFED5580 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.LightEmerald.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF10DE62 9 | 10 | #FF08A14A 11 | #FF0CC254 12 | #FF2FEB74 13 | #FF55ED8D 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.LightGreen.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF2AA60C 9 | 10 | #FF187306 11 | #FF218C08 12 | #FF43B324 13 | #FF5AB541 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.LightLime.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FF99DF10 9 | 10 | #FF69A108 11 | #FF85C20C 12 | #FFAFEB2F 13 | #FFBDED55 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.LightOrange.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FFDF9910 9 | 10 | #FFA17608 11 | #FFC1840B 12 | #FFEBA62E 13 | #FFECB556 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Brushes.LightRed.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | #FFDE2B10 9 | 10 | #FFA11F08 11 | #FFC2240C 12 | #FFEB452F 13 | #FFED6755 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Colors.Dark.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | #e4e6e8 5 | 6 | #bdc0c4 7 | #9fa3a7 8 | #82878c 9 | #6d7378 10 | #595f65 11 | #4b5258 12 | #3e464c 13 | #323940 14 | #2c343a 15 | #262e35 16 | 17 | #20282f 18 | 19 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Colors.Light.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | #20282f 5 | 6 | #41484e 7 | #5d6469 8 | #7b8085 9 | #93979b 10 | #abaeb2 11 | #bbbec1 12 | #cbced0 13 | #dcdee0 14 | #e5e6e8 15 | #edeff0 16 | 17 | #f6f7f8 18 | 19 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.DarkAqua.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.DarkBlue.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.DarkCrimson.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.DarkEmerald.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.DarkGreen.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.DarkLime.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.DarkOrange.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.DarkPurple.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.DarkRed.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.Fonts.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | Fonts/#PT Root UI 7 | 17 8 | 15 9 | 12 10 | 11 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.LightAqua.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.LightBlue.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.LightCrimson.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.LightEmerald.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.LightGreen.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.LightLime.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.LightOrange.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.LightPurple.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/GUI/Theme/NoesisTheme.LightRed.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AtomicTorchStudio/NoesisGUI.MonoGameWrapper/b0610a003095b2a43b3f7da665e254923aa8374f/TestMonoGameNoesisGUI/Icon.ico -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/Program.cs: -------------------------------------------------------------------------------- 1 | namespace TestMonoGameNoesisGUI 2 | { 3 | #region 4 | 5 | using System; 6 | 7 | #endregion 8 | 9 | public static class Program 10 | { 11 | [STAThread] 12 | private static void Main() 13 | { 14 | using (var game = new GameWithNoesis()) 15 | { 16 | game.Run(); 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/TestMonoGameNoesisGUI.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | WinExe 4 | netframework472 5 | false 6 | false 7 | true 8 | x64 9 | NOESIS 10 | 11 | 12 | app.manifest 13 | Icon.ico 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | PreserveNewest 30 | 31 | 32 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | true/pm 39 | permonitorv2,permonitor 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /TestMonoGameNoesisGUI/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | --------------------------------------------------------------------------------