Pārlūkot izejas kodu

Added UTF8 marshalling across Skia wrapper

MarcinZiabek 1 gadu atpakaļ
vecāks
revīzija
d7f2b97986

+ 4 - 4
Source/QuestPDF/Skia/SkCanvas.cs

@@ -188,7 +188,7 @@ internal sealed class SkCanvas : IDisposable
         public static extern void canvas_draw_paragraph(IntPtr canvas, IntPtr paragraph);
         
         [DllImport(SkiaAPI.LibraryName)]
-        public static extern void canvas_draw_svg_path(IntPtr canvas, string svg, uint color);
+        public static extern void canvas_draw_svg_path(IntPtr canvas, [MarshalAs(UnmanagedType.LPUTF8Str)] string svg, uint color);
         
         [DllImport(SkiaAPI.LibraryName)]
         public static extern void canvas_draw_svg(IntPtr canvas, IntPtr svg, float width, float height);
@@ -203,13 +203,13 @@ internal sealed class SkCanvas : IDisposable
         public static extern void canvas_clip_rectangle(IntPtr canvas, SkRect clipArea);
         
         [DllImport(SkiaAPI.LibraryName)]
-        public static extern void canvas_annotate_url(IntPtr canvas, float width, float height, string url);
+        public static extern void canvas_annotate_url(IntPtr canvas, float width, float height, [MarshalAs(UnmanagedType.LPUTF8Str)] string url);
 
         [DllImport(SkiaAPI.LibraryName)]
-        public static extern void canvas_annotate_destination(IntPtr canvas, string destinationName);
+        public static extern void canvas_annotate_destination(IntPtr canvas, [MarshalAs(UnmanagedType.LPUTF8Str)] string destinationName);
 
         [DllImport(SkiaAPI.LibraryName)]
-        public static extern void canvas_annotate_destination_link(IntPtr canvas, float width, float height, string destinationName);
+        public static extern void canvas_annotate_destination_link(IntPtr canvas, float width, float height, [MarshalAs(UnmanagedType.LPUTF8Str)] string destinationName);
         
         [DllImport(SkiaAPI.LibraryName)]
         public static extern void canvas_flush(IntPtr canvas);

+ 1 - 1
Source/QuestPDF/Skia/SkData.cs

@@ -70,7 +70,7 @@ internal sealed class SkData : IDisposable
     private static class API
     {
         [DllImport(SkiaAPI.LibraryName)]
-        public static extern IntPtr data_create_from_file(string path);
+        public static extern IntPtr data_create_from_file([MarshalAs(UnmanagedType.LPUTF8Str)] string path);
     
         [DllImport(SkiaAPI.LibraryName)]
         public static extern unsafe IntPtr data_create_from_binary(byte* arrayPointer, int arrayLength);

+ 1 - 1
Source/QuestPDF/Skia/Text/SkParagraphBuilder.cs

@@ -132,7 +132,7 @@ internal sealed class SkParagraphBuilder : IDisposable
         public static extern IntPtr paragraph_builder_create(ParagraphStyleConfiguration paragraphStyleConfiguration, IntPtr fontCollection);
         
         [DllImport(SkiaAPI.LibraryName)]
-        public static extern void paragraph_builder_add_text(IntPtr paragraphBuilder, string text, IntPtr textStyle);
+        public static extern void paragraph_builder_add_text(IntPtr paragraphBuilder, [MarshalAs(UnmanagedType.LPUTF8Str)] string text, IntPtr textStyle);
         
         [DllImport(SkiaAPI.LibraryName)]
         public static extern void paragraph_builder_add_placeholder(IntPtr paragraphBuilder, SkPlaceholderStyle placeholderStyle);

+ 2 - 2
Source/QuestPDF/Skia/Text/SkTextStyle.cs

@@ -10,8 +10,8 @@ internal struct TextStyleConfiguration
     public FontWeights FontWeight;
     public bool IsItalic;
 
-    public string FontFamily;
-    public string? FontFamilyFallback;
+    [MarshalAs(UnmanagedType.LPUTF8Str)] public string FontFamily;
+    [MarshalAs(UnmanagedType.LPUTF8Str)] public string? FontFamilyFallback;
     
     public uint ForegroundColor;
     public uint BackgroundColor;

+ 1 - 1
Source/QuestPDF/Skia/Text/SkTypefaceProvider.cs

@@ -43,7 +43,7 @@ internal sealed class SkTypefaceProvider : IDisposable
         public static extern void typeface_font_provider_add_typeface(IntPtr typefaceProvider, IntPtr data);
         
         [DllImport(SkiaAPI.LibraryName)]
-        public static extern void typeface_font_provider_add_typeface_with_custom_alias(IntPtr typefaceProvider, IntPtr data, string alias);
+        public static extern void typeface_font_provider_add_typeface_with_custom_alias(IntPtr typefaceProvider, IntPtr data, [MarshalAs(UnmanagedType.LPUTF8Str)] string alias);
         
         [DllImport(SkiaAPI.LibraryName)]
         public static extern void typeface_font_provider_delete(IntPtr typefaceProvider);