diff --git a/CMakeLists.txt b/CMakeLists.txt index 9aaa601..d19e2e9 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -286,7 +286,7 @@ if((NOT EMSCRIPTEN) AND (NOT APPLE)) endif() endif() -target_link_libraries(infinipaint SDL3::SDL3 zstd::libzstd_static) +target_link_libraries(infinipaint zstd::libzstd_static) if(EMSCRIPTEN) add_subdirectory(deps/datachannel-wasm EXCLUDE_FROM_ALL) @@ -298,10 +298,9 @@ endif() if(NO_CONAN_BUILD) target_link_libraries(infinipaint ${SKIA_SVG_LIB} ${SKIA_RESOURCES_LIB} ${SKIA_LIB} ${SKIA_UNICODE_CORE_LIB} ${SKIA_UNICODE_ICU_LIB} ${SKIA_UNICODE_CORE_LIB} ${SKIA_PARAGRAPH_LIB} ${SKIA_SHAPER_LIB}) target_include_directories(infinipaint PRIVATE ${SKIA_INCLUDE}) - target_link_libraries(infinipaint ICU::uc Fontconfig::Fontconfig Freetype::Freetype PNG::PNG ZLIB::ZLIB) + target_link_libraries(infinipaint SDL3::SDL3 ICU::uc Fontconfig::Fontconfig Freetype::Freetype PNG::PNG ZLIB::ZLIB) else() - target_link_libraries(infinipaint skia::skia) - target_link_libraries(infinipaint icu::icu) + target_link_libraries(infinipaint skia::skia sdl::sdl icu::icu) endif() if(NOT EMSCRIPTEN) @@ -309,7 +308,7 @@ if(NOT EMSCRIPTEN) endif() if((NOT (GRAPHICS_BACKEND STREQUAL "Vulkan")) AND (NOT EMSCRIPTEN) AND LINUX) - target_link_libraries(infinipaint OpenGL::GLX) + target_link_libraries(infinipaint OpenGL::EGL) endif() if(GRAPHICS_BACKEND STREQUAL "Vulkan") diff --git a/conan/conan-skia/recipes/skia/all/conanfile.py b/conan/conan-skia/recipes/skia/all/conanfile.py index ec8d0dd..2d26502 100644 --- a/conan/conan-skia/recipes/skia/all/conanfile.py +++ b/conan/conan-skia/recipes/skia/all/conanfile.py @@ -81,6 +81,7 @@ class ConanSkia(ConanFile): "use_fontconfig" : [True, False], "use_fonthost_mac" : [True, False], "use_perfetto" : [True, False], + "use_egl": [True, False], # backend toggles "enable_ganesh" : [True, False], "enable_graphite" : [True, False], @@ -162,6 +163,7 @@ class ConanSkia(ConanFile): "use_wuffs" : True, "use_libavif" : False, "use_libjxl_decode" : False, + "use_egl": False, # backend toggles "enable_ganesh" : True, "enable_graphite" : False, @@ -268,6 +270,10 @@ class ConanSkia(ConanFile): if self.options.use_x11 == None: enabled = (os == "Linux") self.options.use_x11 = enabled + + if self.options.use_egl == None: + enabled = (os == "Linux") + self.options.use_egl = enabled if self.options.use_fontconfig == None: enabled = (os == "Linux") @@ -647,6 +653,16 @@ class ConanSkia(ConanFile): args += f"skia_canvaskit_legacy_draw_vertices_blend_mode = false\n" args += f"skia_canvaskit_profile_build = false\n" + if self.settings.os == "Linux" and self.options.use_egl == True: + args += f"skia_use_egl = true\n" + else: + args += f"skia_use_egl = false\n" + + if self.settings.os == "Linux" and self.options.use_x11 == True: + args += f"skia_use_x11 = true\n" + else: + args += f"skia_use_x11 = false\n" + cflags = [] ldflags = [] asmflags = [] diff --git a/conanfile.py b/conanfile.py index b3b86f0..6bef3ae 100644 --- a/conanfile.py +++ b/conanfile.py @@ -47,6 +47,8 @@ class CompressorRecipe(ConanFile): "use_system_libpng": False, "use_system_libwebp": False, "use_system_zlib": False, + "use_x11": False, + "use_egl": True, "enable_svg": True, "enable_skottie": False, "enable_bentleyottmann": True # for some reason, setting this to False results in an error when creating the project @@ -56,6 +58,7 @@ class CompressorRecipe(ConanFile): if self.settings.os == "Linux": self.requires("sdl/3.2.26", options = { "wayland": False, + "x11": True, "pulseaudio": False, "alsa": False, "sndio": False, diff --git a/linuxinstall/com.infinipaint.infinipaint.yml b/linuxinstall/com.infinipaint.infinipaint.yml index 4f82409..ae6f8d9 100644 --- a/linuxinstall/com.infinipaint.infinipaint.yml +++ b/linuxinstall/com.infinipaint.infinipaint.yml @@ -63,7 +63,7 @@ modules: buildsystem: simple build-commands: - python3 tools/git-sync-deps - - bin/gn gen out/Static --args='is_official_build=true skia_use_system_expat=false skia_use_system_freetype2=true skia_use_system_harfbuzz=true skia_use_system_icu=true skia_use_system_libjpeg_turbo=false skia_use_system_libpng=true skia_use_system_libwebp=false skia_use_system_zlib=true' + - bin/gn gen out/Static --args='is_official_build=true skia_use_system_expat=false skia_use_system_freetype2=true skia_use_system_harfbuzz=true skia_use_system_icu=true skia_use_system_libjpeg_turbo=false skia_use_system_libpng=true skia_use_system_libwebp=false skia_use_system_zlib=true skia_use_egl=true skia_use_x11=false' - ninja -C out/Static skia svg skunicode_core skunicode_icu skparagraph skresources skshaper - mkdir /app/Skia - mv out /app/Skia diff --git a/src/GUIStuff/Elements/FontPicker.cpp b/src/GUIStuff/Elements/FontPicker.cpp index 783811d..6a78d09 100644 --- a/src/GUIStuff/Elements/FontPicker.cpp +++ b/src/GUIStuff/Elements/FontPicker.cpp @@ -10,15 +10,15 @@ bool GUIStuff::FontPicker::update(UpdateInputData& io, std::string* fontName, GUIManager* gui) { if(sortedFontList.empty()) { auto icu = SkUnicodes::ICU::Make(); + std::set sortedFontSet; + for(int i = 0; i < io.textFontMgrLocal->countFamilies(); i++) { SkString familyNameSkString; io.textFontMgrLocal->getFamilyName(i, &familyNameSkString); if(familyNameSkString.isEmpty()) continue; std::string familyName(familyNameSkString.c_str(), familyNameSkString.size()); - sortedFontList.emplace_back(familyName); - std::transform(familyName.begin(), familyName.end(), familyName.begin(), ::tolower); - sortedFontListLowercase.emplace_back(familyName); + sortedFontSet.emplace(familyName); } for(int i = 0; i < io.textFontMgrFallback->countFamilies(); i++) { SkString familyNameSkString; @@ -26,12 +26,12 @@ bool GUIStuff::FontPicker::update(UpdateInputData& io, std::string* fontName, GU if(familyNameSkString.isEmpty()) continue; std::string familyName(familyNameSkString.c_str(), familyNameSkString.size()); - sortedFontList.emplace_back(familyName); - std::transform(familyName.begin(), familyName.end(), familyName.begin(), ::tolower); - sortedFontListLowercase.emplace_back(familyName); + sortedFontSet.emplace(familyName); } - std::sort(sortedFontList.begin(), sortedFontList.end()); - std::sort(sortedFontListLowercase.begin(), sortedFontListLowercase.end()); + sortedFontList = std::vector(sortedFontSet.begin(), sortedFontSet.end()); + sortedFontListLowercase = sortedFontList; + for(std::string& s : sortedFontListLowercase) + std::transform(s.begin(), s.end(), s.begin(), ::tolower); } if(!fontName)