Update skia version, and start work on getting harfbuzz shaper working
This commit is contained in:
parent
79d768e8f6
commit
525da85f51
12 changed files with 117 additions and 36 deletions
|
|
@ -197,8 +197,8 @@ if(EMSCRIPTEN)
|
|||
target_link_options(infinipaint PRIVATE -O3)
|
||||
endif()
|
||||
|
||||
target_compile_options(infinipaint PRIVATE -Wall -fdiagnostics-color -sUSE_SDL=0 -include functional -fexceptions)
|
||||
target_link_options(infinipaint PRIVATE --emrun -sUSE_SDL=0 -sFULL_ES2 -sUSE_WEBGL2=1 -sFETCH --embed-file data -sALLOW_MEMORY_GROWTH -sEXPORTED_RUNTIME_METHODS=ccall -sEXPORTED_FUNCTIONS=[_main,_malloc,_free] -sMAXIMUM_MEMORY=4GB -sSINGLE_FILE -lidbfs.js -fexceptions)
|
||||
target_compile_options(infinipaint PRIVATE -Wall -sUSE_ICU=1 -sUSE_HARFBUZZ=1 -fdiagnostics-color -sUSE_SDL=0 -include functional -fexceptions)
|
||||
target_link_options(infinipaint PRIVATE --emrun -sUSE_ICU=1 -sUSE_HARFBUZZ=1 -sUSE_SDL=0 -sFULL_ES2 -sUSE_WEBGL2=1 -sFETCH --embed-file data -sALLOW_MEMORY_GROWTH -sEXPORTED_RUNTIME_METHODS=ccall -sEXPORTED_FUNCTIONS=[_main,_malloc,_free] -sMAXIMUM_MEMORY=4GB -sSINGLE_FILE -lidbfs.js -fexceptions)
|
||||
if(EMSCRIPTEN_SINGLE_HTML_FILE)
|
||||
target_link_options(infinipaint PRIVATE --shell-file emscripteninstall/singlefilereleaseshell.html)
|
||||
set(CMAKE_EXECUTABLE_SUFFIX ".html")
|
||||
|
|
|
|||
|
|
@ -35,3 +35,23 @@ sources:
|
|||
url:
|
||||
- "https://github.com/google/skia/archive/aefbd9403c1b3032ad4cd0281ef312ed262c7125.zip"
|
||||
sha256: "e10c67a96828b9f36364e2459cdee3e3b381a3875ff78db2b30e7b6fe69509bb"
|
||||
"135.20250607.0":
|
||||
url:
|
||||
- "https://github.com/google/skia/archive/f90131803d70d767bca2f86f12494d55662bdc60.zip"
|
||||
sha256: "20a1bc403f4a7f6571e59da851e341d5674b644b8b6ae6b9758d3684d3044f62"
|
||||
"136.20250607.0":
|
||||
url:
|
||||
- "https://github.com/google/skia/archive/bcce46ca33b67cc302dd53927a63013b8f53bf73.zip"
|
||||
sha256: "f053d8c6fd8a1a9560b81f973ddddd2ffdba50e6a0318a4207a659acc5ebe156"
|
||||
"137.20250607.0":
|
||||
url:
|
||||
- "https://github.com/google/skia/archive/0dfd95a49aed617f242c8b06dd5b255d1cb07776.zip"
|
||||
sha256: "34869886d3ec540cb05c330b34a471126b24131aaff0aa69a1bf4f161d4211f3"
|
||||
"138.20250708.0":
|
||||
url:
|
||||
- "https://github.com/google/skia/archive/a46d5732d9fca93eaec23e502e2eef814b707e6b.zip"
|
||||
sha256: "ef11a5de527636d4278a38b110f290679bf4169653720ff68cb4e148027fec22"
|
||||
"142.20250802.0":
|
||||
url:
|
||||
- "https://github.com/google/skia/archive/f4ed99d2443962782cf5f8b4dd27179f131e7cbe.zip"
|
||||
sha256: "2e00dcdb54942c1da7b2f6cfd9fef8c4899115206d940931f6c040bac08b6b79"
|
||||
|
|
|
|||
|
|
@ -413,10 +413,10 @@ class ConanSkia(ConanFile):
|
|||
self.tool_requires("ninja/[>=1.11.0]")
|
||||
|
||||
if self.options.use_harfbuzz and self.options.use_system_harfbuzz and self.options.use_conan_harfbuzz:
|
||||
self.requires("harfbuzz/[>=7.3.0]", options = {"with_subset":True, "with_glib":False})
|
||||
self.requires("harfbuzz/10.4.0", options = {"with_subset":True, "with_glib":False})
|
||||
|
||||
if self.options.use_freetype and self.options.use_system_freetype and self.options.use_conan_freetype:
|
||||
self.requires("freetype/[>=2.11.1]")
|
||||
self.requires("freetype/2.13.2")
|
||||
|
||||
if self.options.use_fontconfig and self.options.use_conan_fontconfig:
|
||||
self.requires("fontconfig/[>=2.14.2]")
|
||||
|
|
@ -629,6 +629,27 @@ class ConanSkia(ConanFile):
|
|||
else:
|
||||
raise RuntimeError("Unexpected settings.arch")
|
||||
|
||||
if self.settings.os == "Emscripten":
|
||||
args += f"skia_canvaskit_enable_alias_font = false\n"
|
||||
args += f"skia_canvaskit_enable_bidi = false\n"
|
||||
args += f"skia_canvaskit_enable_canvas_bindings = false\n"
|
||||
args += f"skia_canvaskit_enable_debugger = false\n"
|
||||
args += f"skia_canvaskit_enable_effects_deserialization = false\n"
|
||||
args += f"skia_canvaskit_enable_embedded_font = false\n"
|
||||
args += f"skia_canvaskit_enable_font = false\n"
|
||||
args += f"skia_canvaskit_enable_matrix_helper = false\n"
|
||||
args += f"skia_canvaskit_enable_paragraph = false\n"
|
||||
args += f"skia_canvaskit_enable_pathops = false\n"
|
||||
args += f"skia_canvaskit_enable_rt_shader = false\n"
|
||||
args += f"skia_canvaskit_enable_skp_serialization = false\n"
|
||||
args += f"skia_canvaskit_enable_sksl_trace = false\n"
|
||||
args += f"skia_canvaskit_enable_webgl = false\n"
|
||||
args += f"skia_canvaskit_enable_webgpu = false\n"
|
||||
args += f"skia_canvaskit_force_tracing = false\n"
|
||||
args += f"skia_canvaskit_include_viewer = false\n"
|
||||
args += f"skia_canvaskit_legacy_draw_vertices_blend_mode = false\n"
|
||||
args += f"skia_canvaskit_profile_build = false\n"
|
||||
|
||||
cflags = []
|
||||
ldflags = []
|
||||
asmflags = []
|
||||
|
|
@ -706,7 +727,7 @@ class ConanSkia(ConanFile):
|
|||
else:
|
||||
self.run("bin/gn gen out/conan")
|
||||
|
||||
self.run("ninja -C out/conan")
|
||||
self.run("ninja -C out/conan skia svg skresources skcms skunicode skshaper skparagraph skottie bentleyottmann")
|
||||
|
||||
def package(self):
|
||||
source_folder_include = join(self.source_folder, "include")
|
||||
|
|
@ -751,9 +772,9 @@ class ConanSkia(ConanFile):
|
|||
else:
|
||||
copy(self, "*.a", build_folder_out, package_folder_lib, keep_path=False)
|
||||
|
||||
if self.settings.os == "Emscripten" and self.settings.arch == "wasm":
|
||||
copy(self, "canvaskit.js", build_folder_out, package_folder_bin)
|
||||
copy(self, "canvaskit.wasm", build_folder_out, package_folder_bin)
|
||||
#if self.settings.os == "Emscripten" and self.settings.arch == "wasm":
|
||||
# copy(self, "canvaskit.js", build_folder_out, package_folder_bin)
|
||||
# copy(self, "canvaskit.wasm", build_folder_out, package_folder_bin)
|
||||
|
||||
def package_info(self):
|
||||
|
||||
|
|
@ -897,9 +918,10 @@ class ConanSkia(ConanFile):
|
|||
self.cpp_info.system_libs += ["gdi32"]
|
||||
|
||||
# component: pathkit
|
||||
# not in program's build, so it'll be commented for now
|
||||
|
||||
if not self.options.shared:
|
||||
self.cpp_info.libs += ["pathkit"]
|
||||
#if not self.options.shared:
|
||||
# self.cpp_info.libs += ["pathkit"]
|
||||
|
||||
# component: skcms
|
||||
|
||||
|
|
@ -963,5 +985,3 @@ class ConanSkia(ConanFile):
|
|||
if self.options.enable_bentleyottmann:
|
||||
if not (self.settings.os == "Windows" and self.options.shared):
|
||||
self.cpp_info.libs += ["bentleyottmann"]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -17,3 +17,13 @@ versions:
|
|||
folder: all
|
||||
"134.20250327.0":
|
||||
folder: all
|
||||
"135.20250607.0":
|
||||
folder: all
|
||||
"136.20250607.0":
|
||||
folder: all
|
||||
"137.20250607.0":
|
||||
folder: all
|
||||
"138.20250708.0":
|
||||
folder: all
|
||||
"142.20250802.0":
|
||||
folder: all
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd conan-skia/recipes/skia/all
|
||||
conan create . -o use_system_expat=False -o use_system_freetype=False -o use_system_harfbuzz=False -o use_system_icu=False -o use_system_libjpeg_turbo=False -o use_system_libpng=False -o use_system_libwebp=False -o use_system_zlib=False --build=missing --version=134.20250327.0
|
||||
cd ../../../..
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
conan export %0/../libjuice/all/conanfile.py --version=1.6.1
|
||||
conan export %0/../libdatachannel/all/conanfile.py --version=0.23.1
|
||||
conan export %0/../conan-skia/recipes/skia/all/conanfile.py --version=134.20250327.0
|
||||
conan export %0/../conan-skia/recipes/skia/all/conanfile.py --version=142.20250802.0
|
||||
conan export %0/../sdl3/3.x/conanfile.py --version=3.2.24
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|||
conan export "$(dirname "$0")/libjuice/all/conanfile.py" --version=1.6.1
|
||||
conan export "$(dirname "$0")/libdatachannel/all/conanfile.py" --version=0.23.1
|
||||
conan export "$(dirname "$0")/mpg123/all/conanfile.py" --version=1.32.10
|
||||
conan export "$(dirname "$0")/conan-skia/recipes/skia/all/conanfile.py" --version=134.20250327.0
|
||||
conan export "$(dirname "$0")/conan-skia/recipes/skia/all/conanfile.py" --version=142.20250802.0
|
||||
conan export "$(dirname "$0")/sdl3/3.x/conanfile.py" --version=3.2.24
|
||||
#conan create . -o use_system_expat=False -o use_system_freetype=False -o use_system_harfbuzz=False -o use_system_icu=False -o use_system_libjpeg_turbo=False -o use_system_libpng=False -o use_system_libwebp=False -o use_system_zlib=False --build=missing --version=134.20250327.0
|
||||
#cd ../../../..
|
||||
|
|
|
|||
27
conanfile.py
27
conanfile.py
|
|
@ -7,18 +7,33 @@ class CompressorRecipe(ConanFile):
|
|||
|
||||
def requirements(self):
|
||||
if self.settings.os == "Emscripten":
|
||||
self.requires("skia/134.20250327.0", options = {
|
||||
self.requires("skia/142.20250802.0", options = {
|
||||
"enable_svg": True,
|
||||
"use_freetype":True,
|
||||
"use_system_freetype":True,
|
||||
"use_expat": True,
|
||||
"use_harfbuzz": True,
|
||||
"use_system_harfbuzz":False,
|
||||
"use_conan_harfbuzz":True,
|
||||
"enable_skshaper": True
|
||||
"use_system_harfbuzz":True,
|
||||
"use_conan_harfbuzz":False,
|
||||
"enable_skshaper": True,
|
||||
"canvaskit_enable_alias_font" : False,
|
||||
"canvaskit_enable_canvas_bindings" : False,
|
||||
"canvaskit_enable_effects_deserialization" : False,
|
||||
"canvaskit_enable_embedded_font" : False,
|
||||
"canvaskit_enable_font" : False,
|
||||
"canvaskit_enable_matrix_helper" : False,
|
||||
"canvaskit_enable_pathops" : False,
|
||||
"canvaskit_enable_rt_shader" : False,
|
||||
"canvaskit_enable_skp_serialization" : False,
|
||||
"canvaskit_enable_sksl_trace" : False,
|
||||
"canvaskit_enable_webgpu " : False,
|
||||
"canvaskit_enable_webgl " : False
|
||||
})
|
||||
else:
|
||||
self.requires("skia/134.20250327.0", options = {
|
||||
self.requires("skia/142.20250802.0", options = {
|
||||
"use_system_expat":False,
|
||||
"use_system_freetype":False,
|
||||
"use_system_freetype":True,
|
||||
"use_conan_freetype":True,
|
||||
"use_system_harfbuzz":False,
|
||||
"use_system_icu":False,
|
||||
"use_system_libjpeg_turbo":False,
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ static void set_character_bounds(void* context,
|
|||
SkFontMetrics metrics;
|
||||
font.getMetrics(&metrics);
|
||||
std::unique_ptr<float[]> advances(new float[glyphCount]);
|
||||
font.getWidths(glyphs, glyphCount, advances.get());
|
||||
font.getWidths({glyphs, glyphCount}, {advances.get(), glyphCount});
|
||||
|
||||
// Loop over each cluster in this run.
|
||||
size_t clusterStart = 0;
|
||||
|
|
@ -284,10 +284,11 @@ CollabTextBox::ShapeResult CollabTextBox::shape(const char* utf8Text,
|
|||
std::unique_ptr<SkShaper> shaper = nullptr;
|
||||
auto unicode = get_unicode_2();
|
||||
|
||||
// USING PRIMITIVE WRAPPER INSTEAD OF HARFBUZZ, BECAUSE HARFBUZZ HAS ISSUES ON EMSCRIPTEN
|
||||
// WE MIGHT HAVE TO CHANGE THIS BACK LATER WHEN THERE'S A FIX
|
||||
//shaper = SkShapers::HB::ShaperDrivenWrapper(unicode, fontMgr);
|
||||
shaper = SkShaper::MakePrimitive();
|
||||
//#ifdef __EMSCRIPTEN__
|
||||
//shaper = SkShaper::MakePrimitive();
|
||||
//#else
|
||||
shaper = SkShapers::HB::ShaperDrivenWrapper(unicode, fontMgr);
|
||||
//#endif
|
||||
|
||||
SkASSERT(shaper);
|
||||
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ void DrawBrushStroke::create_triangles(const std::function<bool(Vector2f, Vector
|
|||
|
||||
if(pointsN.size() < 2) {
|
||||
if(bPath && !topPoints.empty())
|
||||
bPath->addPoly(topPoints.data(), topPoints.size(), false);
|
||||
bPath->addPoly({topPoints.data(), topPoints.size()}, false);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -381,7 +381,7 @@ void DrawBrushStroke::create_triangles(const std::function<bool(Vector2f, Vector
|
|||
|
||||
if(bPath && !topPoints.empty()) {
|
||||
topPoints.insert(topPoints.begin(), bottomPoints.rbegin(), bottomPoints.rend());
|
||||
bPath->addPoly(topPoints.data(), topPoints.size(), false);
|
||||
bPath->addPoly({topPoints.data(), topPoints.size()}, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -408,7 +408,7 @@ bool DrawingProgram::prevent_undo_or_redo() {
|
|||
SkPaint DrawingProgram::select_tool_line_paint() {
|
||||
SkScalar intervals[] = {10, 5};
|
||||
float timeSinceEpoch = std::chrono::duration_cast<std::chrono::duration<float>>(std::chrono::steady_clock::now().time_since_epoch()).count();
|
||||
sk_sp<SkPathEffect> lassoLineDashEffect = SkDashPathEffect::Make(intervals, 2, -std::fmod(timeSinceEpoch * 50, 15));
|
||||
sk_sp<SkPathEffect> lassoLineDashEffect = SkDashPathEffect::Make({intervals, 2}, -std::fmod(timeSinceEpoch * 50, 15));
|
||||
|
||||
SkPaint selectLinePaint;
|
||||
selectLinePaint.setStyle(SkPaint::kStroke_Style);
|
||||
|
|
|
|||
|
|
@ -5,9 +5,29 @@
|
|||
#include <include/core/SkTextBlob.h>
|
||||
#include <iostream>
|
||||
|
||||
FontData::FontData():
|
||||
mgr(SkFontMgr_New_Custom_Empty())
|
||||
#ifdef __EMSCRIPTEN__
|
||||
#elif _WIN32
|
||||
#include <include/ports/SkTypeface_win.h>
|
||||
#elif __APPLE__
|
||||
#include <include/ports/SkFontMgr_mac_ct.h>
|
||||
#elif __linux__
|
||||
#include <include/ports/SkFontMgr_fontconfig.h>
|
||||
#include <include/ports/SkFontScanner_FreeType.h>
|
||||
#endif
|
||||
|
||||
FontData::FontData()
|
||||
{
|
||||
#ifdef __EMSCRIPTEN__
|
||||
mgr = SkFontMgr_New_Custom_Empty();
|
||||
#elif _WIN32
|
||||
mgr = SkFontMgr_New_GDI();
|
||||
#elif __APPLE__
|
||||
mgr = SkFontMgr_New_Custom_Empty();
|
||||
#elif __linux__
|
||||
mgr = SkFontMgr_New_FontConfig(nullptr, SkFontScanner_Make_FreeType());
|
||||
#else
|
||||
mgr = SkFontMgr_New_Custom_Empty();
|
||||
#endif
|
||||
map["Roboto"] = mgr->makeFromFile("data/fonts/Roboto-variable.ttf");
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue