From f4c70a2872481d3b3a8b58fc6535f1cda4aced90 Mon Sep 17 00:00:00 2001 From: ChrisDill Date: Sat, 12 Aug 2023 16:00:31 +0100 Subject: [PATCH 1/3] Move Logo to Raylib-cs/logo --- README.md | 2 +- Raylib-cs/Raylib-cs.csproj | 2 +- {Logo => Raylib-cs/logo}/logo_cs.jpg | Bin {Logo => Raylib-cs/logo}/raylib-cs.ico | Bin {Logo => Raylib-cs/logo}/raylib-cs.pdn | Bin {Logo => Raylib-cs/logo}/raylib-cs_128x128.png | Bin {Logo => Raylib-cs/logo}/raylib-cs_16x16.png | Bin {Logo => Raylib-cs/logo}/raylib-cs_24x24.png | Bin {Logo => Raylib-cs/logo}/raylib-cs_256x256.png | Bin {Logo => Raylib-cs/logo}/raylib-cs_32x32.png | Bin {Logo => Raylib-cs/logo}/raylib-cs_48x48.png | Bin {Logo => Raylib-cs/logo}/raylib-cs_64x64.png | Bin {Logo => Raylib-cs/logo}/raylib-cs_96x96.png | Bin 13 files changed, 2 insertions(+), 2 deletions(-) rename {Logo => Raylib-cs/logo}/logo_cs.jpg (100%) rename {Logo => Raylib-cs/logo}/raylib-cs.ico (100%) rename {Logo => Raylib-cs/logo}/raylib-cs.pdn (100%) rename {Logo => Raylib-cs/logo}/raylib-cs_128x128.png (100%) rename {Logo => Raylib-cs/logo}/raylib-cs_16x16.png (100%) rename {Logo => Raylib-cs/logo}/raylib-cs_24x24.png (100%) rename {Logo => Raylib-cs/logo}/raylib-cs_256x256.png (100%) rename {Logo => Raylib-cs/logo}/raylib-cs_32x32.png (100%) rename {Logo => Raylib-cs/logo}/raylib-cs_48x48.png (100%) rename {Logo => Raylib-cs/logo}/raylib-cs_64x64.png (100%) rename {Logo => Raylib-cs/logo}/raylib-cs_96x96.png (100%) diff --git a/README.md b/README.md index 56c0c71..2e4190e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Raylib-cs Logo](https://raw.githubusercontent.com/ChrisDill/Raylib-cs/master/Logo/raylib-cs_256x256.png "Raylib-cs Logo") +![Raylib-cs Logo](https://raw.githubusercontent.com/ChrisDill/Raylib-cs/master/Raylib-cs/logo/raylib-cs_256x256.png "Raylib-cs Logo") # Raylib-cs diff --git a/Raylib-cs/Raylib-cs.csproj b/Raylib-cs/Raylib-cs.csproj index e0db93b..0776b14 100644 --- a/Raylib-cs/Raylib-cs.csproj +++ b/Raylib-cs/Raylib-cs.csproj @@ -32,7 +32,7 @@ - + diff --git a/Logo/logo_cs.jpg b/Raylib-cs/logo/logo_cs.jpg similarity index 100% rename from Logo/logo_cs.jpg rename to Raylib-cs/logo/logo_cs.jpg diff --git a/Logo/raylib-cs.ico b/Raylib-cs/logo/raylib-cs.ico similarity index 100% rename from Logo/raylib-cs.ico rename to Raylib-cs/logo/raylib-cs.ico diff --git a/Logo/raylib-cs.pdn b/Raylib-cs/logo/raylib-cs.pdn similarity index 100% rename from Logo/raylib-cs.pdn rename to Raylib-cs/logo/raylib-cs.pdn diff --git a/Logo/raylib-cs_128x128.png b/Raylib-cs/logo/raylib-cs_128x128.png similarity index 100% rename from Logo/raylib-cs_128x128.png rename to Raylib-cs/logo/raylib-cs_128x128.png diff --git a/Logo/raylib-cs_16x16.png b/Raylib-cs/logo/raylib-cs_16x16.png similarity index 100% rename from Logo/raylib-cs_16x16.png rename to Raylib-cs/logo/raylib-cs_16x16.png diff --git a/Logo/raylib-cs_24x24.png b/Raylib-cs/logo/raylib-cs_24x24.png similarity index 100% rename from Logo/raylib-cs_24x24.png rename to Raylib-cs/logo/raylib-cs_24x24.png diff --git a/Logo/raylib-cs_256x256.png b/Raylib-cs/logo/raylib-cs_256x256.png similarity index 100% rename from Logo/raylib-cs_256x256.png rename to Raylib-cs/logo/raylib-cs_256x256.png diff --git a/Logo/raylib-cs_32x32.png b/Raylib-cs/logo/raylib-cs_32x32.png similarity index 100% rename from Logo/raylib-cs_32x32.png rename to Raylib-cs/logo/raylib-cs_32x32.png diff --git a/Logo/raylib-cs_48x48.png b/Raylib-cs/logo/raylib-cs_48x48.png similarity index 100% rename from Logo/raylib-cs_48x48.png rename to Raylib-cs/logo/raylib-cs_48x48.png diff --git a/Logo/raylib-cs_64x64.png b/Raylib-cs/logo/raylib-cs_64x64.png similarity index 100% rename from Logo/raylib-cs_64x64.png rename to Raylib-cs/logo/raylib-cs_64x64.png diff --git a/Logo/raylib-cs_96x96.png b/Raylib-cs/logo/raylib-cs_96x96.png similarity index 100% rename from Logo/raylib-cs_96x96.png rename to Raylib-cs/logo/raylib-cs_96x96.png From d067c6c0aa5b553780e4a65a4acbf92765534055 Mon Sep 17 00:00:00 2001 From: Nickolas McDonald <43690021+n77y@users.noreply.github.com> Date: Sat, 12 Aug 2023 17:59:46 -0400 Subject: [PATCH 2/3] [Fix #184] Seperate UTF8 from Ansi (#185) --- Raylib-cs/Raylib-cs.csproj | 1 + Raylib-cs/types/Raylib.Utils.cs | 54 ++++++++++++++-------------- Raylib-cs/types/native/AnsiBuffer.cs | 36 +++++++++++++++++++ Raylib-cs/types/native/UTF8Buffer.cs | 12 +++---- 4 files changed, 70 insertions(+), 33 deletions(-) create mode 100644 Raylib-cs/types/native/AnsiBuffer.cs diff --git a/Raylib-cs/Raylib-cs.csproj b/Raylib-cs/Raylib-cs.csproj index 0776b14..285069d 100644 --- a/Raylib-cs/Raylib-cs.csproj +++ b/Raylib-cs/Raylib-cs.csproj @@ -53,6 +53,7 @@ + diff --git a/Raylib-cs/types/Raylib.Utils.cs b/Raylib-cs/types/Raylib.Utils.cs index db4c676..e6c562b 100644 --- a/Raylib-cs/types/Raylib.Utils.cs +++ b/Raylib-cs/types/Raylib.Utils.cs @@ -56,8 +56,8 @@ namespace Raylib_cs /// Load shader from files and bind default locations public static Shader LoadShader(string vsFileName, string fsFileName) { - using var str1 = vsFileName.ToUTF8Buffer(); - using var str2 = fsFileName.ToUTF8Buffer(); + using var str1 = vsFileName.ToAnsiBuffer(); + using var str2 = fsFileName.ToAnsiBuffer(); return LoadShader(str1.AsPointer(), str2.AsPointer()); } @@ -86,43 +86,43 @@ namespace Raylib_cs /// Takes a screenshot of current screen (saved a .png) public static void TakeScreenshot(string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); TakeScreenshot(str1.AsPointer()); } /// Check file extension public static CBool IsFileExtension(string fileName, string ext) { - using var str1 = fileName.ToUTF8Buffer(); - using var str2 = ext.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); + using var str2 = ext.ToAnsiBuffer(); return IsFileExtension(str1.AsPointer(), str2.AsPointer()); } /// Get file modification time (last write time) public static long GetFileModTime(string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return GetFileModTime(str1.AsPointer()); } /// Load image from file into CPU memory (RAM) public static Image LoadImage(string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return LoadImage(str1.AsPointer()); } /// Load image from RAW file data public static Image LoadImageRaw(string fileName, int width, int height, PixelFormat format, int headerSize) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return LoadImageRaw(str1.AsPointer(), width, height, format, headerSize); } /// Load image sequence from file (frames appended to image.data) public static Image LoadImageAnim(string fileName, out int frames) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); fixed (int* p = &frames) { return LoadImageAnim(str1.AsPointer(), p); @@ -134,7 +134,7 @@ namespace Raylib_cs /// public static Image LoadImageFromMemory(string fileType, byte[] fileData) { - using var fileTypeNative = fileType.ToUTF8Buffer(); + using var fileTypeNative = fileType.ToAnsiBuffer(); fixed (byte* fileDataNative = fileData) { Image image = LoadImageFromMemory(fileTypeNative.AsPointer(), fileDataNative, fileData.Length); @@ -145,14 +145,14 @@ namespace Raylib_cs /// Export image data to file public static CBool ExportImage(Image image, string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return ExportImage(image, str1.AsPointer()); } /// Export image as code file defining an array of bytes public static CBool ExportImageAsCode(Image image, string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return ExportImageAsCode(image, str1.AsPointer()); } @@ -225,7 +225,7 @@ namespace Raylib_cs /// Load file data as byte array (read) public static byte* LoadFileData(string fileName, ref uint bytesRead) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); fixed (uint* p = &bytesRead) { return LoadFileData(str1.AsPointer(), p); @@ -662,7 +662,7 @@ namespace Raylib_cs /// Load texture from file into GPU memory (VRAM) public static Texture2D LoadTexture(string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return LoadTexture(str1.AsPointer()); } @@ -708,14 +708,14 @@ namespace Raylib_cs /// Load font from file into GPU memory (VRAM) public static Font LoadFont(string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return LoadFont(str1.AsPointer()); } /// Load font from file with extended parameters public static Font LoadFontEx(string fileName, int fontSize, int[] fontChars, int glyphCount) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); fixed (int* p = fontChars) { return LoadFontEx(str1.AsPointer(), fontSize, p, glyphCount); @@ -733,7 +733,7 @@ namespace Raylib_cs int glyphCount ) { - using var fileTypeNative = fileType.ToUTF8Buffer(); + using var fileTypeNative = fileType.ToAnsiBuffer(); fixed (byte* fileDataNative = fileData) { fixed (int* fontCharsNative = fontChars) @@ -791,7 +791,7 @@ namespace Raylib_cs /// Load model animations from file public static ReadOnlySpan LoadModelAnimations(string fileName, ref uint animCount) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); fixed (uint* p = &animCount) { ModelAnimation* modelAnimations = LoadModelAnimations(str1.AsPointer(), p); @@ -965,14 +965,14 @@ namespace Raylib_cs /// Draw a model (with texture if set) public static Model LoadModel(string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return LoadModel(str1.AsPointer()); } /// Export mesh data to file, returns true on success public static CBool ExportMesh(Mesh mesh, string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return ExportMesh(mesh, str1.AsPointer()); } @@ -997,7 +997,7 @@ namespace Raylib_cs /// Load wave data from file public static Wave LoadWave(string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return LoadWave(str1.AsPointer()); } @@ -1009,7 +1009,7 @@ namespace Raylib_cs byte[] fileData ) { - using var fileTypeNative = fileType.ToUTF8Buffer(); + using var fileTypeNative = fileType.ToAnsiBuffer(); fixed (byte* fileDataNative = fileData) { @@ -1026,28 +1026,28 @@ namespace Raylib_cs /// Load sound from file public static Sound LoadSound(string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return LoadSound(str1.AsPointer()); } /// Export wave data to file public static CBool ExportWave(Wave wave, string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return ExportWave(wave, str1.AsPointer()); } /// Export wave sample data to code (.h) public static CBool ExportWaveAsCode(Wave wave, string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return ExportWaveAsCode(wave, str1.AsPointer()); } /// Load music stream from file public static Music LoadMusicStream(string fileName) { - using var str1 = fileName.ToUTF8Buffer(); + using var str1 = fileName.ToAnsiBuffer(); return LoadMusicStream(str1.AsPointer()); } @@ -1059,7 +1059,7 @@ namespace Raylib_cs byte[] fileData ) { - using var fileTypeNative = fileType.ToUTF8Buffer(); + using var fileTypeNative = fileType.ToAnsiBuffer(); fixed (byte* fileDataNative = fileData) { diff --git a/Raylib-cs/types/native/AnsiBuffer.cs b/Raylib-cs/types/native/AnsiBuffer.cs new file mode 100644 index 0000000..311496a --- /dev/null +++ b/Raylib-cs/types/native/AnsiBuffer.cs @@ -0,0 +1,36 @@ +using System; +using System.Runtime.InteropServices; + +namespace Raylib_cs +{ + /// + /// Converts text to a Ansi buffer for passing to native code + /// + public readonly ref struct AnsiBuffer + { + private readonly IntPtr data; + + public AnsiBuffer(string text) + { + data = Marshal.StringToHGlobalAnsi(text); + } + + public unsafe sbyte* AsPointer() + { + return (sbyte*)data.ToPointer(); + } + + public void Dispose() + { + Marshal.FreeHGlobal(data); + } + } + + public static class AnsiStringUtils + { + public static AnsiBuffer ToAnsiBuffer(this string text) + { + return new AnsiBuffer(text); + } + } +} diff --git a/Raylib-cs/types/native/UTF8Buffer.cs b/Raylib-cs/types/native/UTF8Buffer.cs index 4dd201d..a46f4f3 100644 --- a/Raylib-cs/types/native/UTF8Buffer.cs +++ b/Raylib-cs/types/native/UTF8Buffer.cs @@ -1,19 +1,19 @@ -using System; -using System.Text; +using System; using System.Runtime.InteropServices; +using System.Text; namespace Raylib_cs { /// /// Converts text to a UTF8 buffer for passing to native code /// - public ref struct UTF8Buffer + public readonly ref struct UTF8Buffer { - private IntPtr data; + private readonly IntPtr data; public UTF8Buffer(string text) { - this.data = Marshal.StringToHGlobalAnsi(text); + data = Marshal.StringToCoTaskMemUTF8(text); } public unsafe sbyte* AsPointer() @@ -23,7 +23,7 @@ namespace Raylib_cs public void Dispose() { - Marshal.FreeHGlobal(data); + Marshal.ZeroFreeCoTaskMemUTF8(data); } } From 3f9cf16c9362f3576a02a24466d6ff953648e780 Mon Sep 17 00:00:00 2001 From: ChrisDill Date: Sat, 12 Aug 2023 23:04:49 +0100 Subject: [PATCH 3/3] Remove unused icon from tests --- Raylib-cs.Tests/Raylib-cs.Tests.csproj | 1 - Raylib-cs/types/Raylib.Utils.cs | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Raylib-cs.Tests/Raylib-cs.Tests.csproj b/Raylib-cs.Tests/Raylib-cs.Tests.csproj index 4c3e612..fd8921a 100644 --- a/Raylib-cs.Tests/Raylib-cs.Tests.csproj +++ b/Raylib-cs.Tests/Raylib-cs.Tests.csproj @@ -1,7 +1,6 @@ net6.0 - ../Logo/raylib-cs.ico true diff --git a/Raylib-cs/types/Raylib.Utils.cs b/Raylib-cs/types/Raylib.Utils.cs index e6c562b..fa033cc 100644 --- a/Raylib-cs/types/Raylib.Utils.cs +++ b/Raylib-cs/types/Raylib.Utils.cs @@ -38,14 +38,14 @@ namespace Raylib_cs using var str1 = text.ToUTF8Buffer(); SetClipboardText(str1.AsPointer()); } - + /// Open URL with default system browser (if available) public static void OpenURL(string url) { using var str1 = url.ToUTF8Buffer(); OpenURL(str1.AsPointer()); } - + /// Set internal gamepad mappings (SDL_GameControllerDB) public static int SetGamepadMappings(string mappings) {