diff --git a/Sources/CSkia/utils.cpp b/Sources/CSkia/utils.cpp index d008157..00f8c3d 100644 --- a/Sources/CSkia/utils.cpp +++ b/Sources/CSkia/utils.cpp @@ -2,18 +2,6 @@ using namespace skia::textlayout; -// FontCollection_sp test_font_collection() -// { -// // auto c = SkCanvas(); -// auto fontCollection = sk_make_sp(); -// // auto fontMgr = SkFontMgr::RefDefault() -// auto fontMgr = SkFontMgr::RefEmpty(); -// assert(fontMgr != nullptr); -// fontCollection->setDefaultFontManager(fontMgr); -// return fontCollection; -// // return nullptr; -// } - template struct sk_sp; template struct sk_sp; template struct sk_sp; @@ -153,9 +141,9 @@ std::vector skstring_vector_new() return std::vector(); } -const char *skstring_c_str(const SkString &string) +void skstring_c_str(const SkString &string, const char **out) { - return string.c_str(); + *out = string.c_str(); } sk_sp color_space_new_srgb() diff --git a/Sources/CSkia/utils.h b/Sources/CSkia/utils.h index 9682dd3..1fdc204 100644 --- a/Sources/CSkia/utils.h +++ b/Sources/CSkia/utils.h @@ -2,8 +2,6 @@ #define SK_METAL #define SK_GANESH -#include - #include "include/android/SkAnimatedImage.h" #include "include/codec/SkAndroidCodec.h" #include "include/codec/SkBmpDecoder.h" @@ -16,6 +14,7 @@ #include "include/core/SkBlurTypes.h" #include "include/core/SkCanvas.h" #include "include/core/SkColorSpace.h" +#include "include/core/SkRefCnt.h" #include "include/core/SkData.h" #include "include/core/SkDocument.h" #include "include/core/SkFontMetrics.h" @@ -107,6 +106,8 @@ typedef sk_sp ParagraphBuilder_sp; typedef sk_sp SkTypeface_sp; typedef sk_sp SkTextBlob_sp; +template void SkSafeUnref(FontCollection *obj); + // FontCollection_sp test_font_collection(); // MARK: - ParagraphBuilder @@ -212,8 +213,9 @@ GrDirectContext_sp gr_mtl_direct_context_make(GrMtlBackendContext &context); // MARK: - Misc std::vector skstring_vector_new(); -const char *skstring_c_str(const SkString &string) SWIFT_RETURNS_INDEPENDENT_VALUE; +void skstring_c_str(const SkString &string, const char **out); sk_sp color_space_new_srgb(); + sk_sp color_space_new_null(); #endif // CSKIA_UTILS_H \ No newline at end of file diff --git a/Sources/Shaft/Backend/Skia/SkiaFontCollection.swift b/Sources/Shaft/Backend/Skia/SkiaFontCollection.swift index 2848310..a039f86 100644 --- a/Sources/Shaft/Backend/Skia/SkiaFontCollection.swift +++ b/Sources/Shaft/Backend/Skia/SkiaFontCollection.swift @@ -77,7 +77,9 @@ public class SkiaTypeface: Typeface { public var familyName: String { var skString = SkString() sk_typeface_get_family_name(&self.typeface, &skString) - return String(cString: skstring_c_str(skString)) + var cString: UnsafePointer? + skstring_c_str(skString, &cString) + return String(cString: cString!) } }