diff --git a/BUILD.gn b/BUILD.gn deleted file mode 100644 index 8d5da39c670ea6703130135c0623bf7bd62721ac..0000000000000000000000000000000000000000 --- a/BUILD.gn +++ /dev/null @@ -1,4653 +0,0 @@ -# Copyright (c) 2021 Huawei Device Co., Ltd. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/ohos.gni") -import("flutter_ace_config.gni") -import("flutter_engine.gni") -import("skia/gn/flutter_defines.gni") - -# ------------------------------------------------ -# Main block begin of skia -# ------------------------------------------------ - -# symbol link for skia include dirs -system_skia_override_path = root_out_dir + "/override/system" -third_party_skia_override_path = root_out_dir + "/override/third_party" - -template("make_skia_include_dir") { - forward_variables_from(invoker, "*") - - action("make_${target_name}_skia_include_dir") { - script = "make_skia_include_dir.py" - inputs = [ src_path ] - outputs = [ dst_path ] - args = [ - rebase_path(dst_path, root_build_dir), - rebase_path(src_path, root_build_dir), - ] - } -} - -make_skia_include_dir("third_party") { - src_path = "skia" - dst_path = third_party_skia_override_path + "/third_party" -} - -# if need the stack unwind information for debugging, remove this config from the target configs. -config("reduce_eh_frame_config") { - if (!use_mingw_win && !use_mac) { - cflags = [ - "-fno-unwind-tables", - "-fomit-frame-pointer", - ] - cflags_cc = cflags - } -} - -template("make_skia_deps") { - forward_variables_from(invoker, "*") - - platform = target_name - - ohos_source_set("ace_skia_$platform") { - public_configs = [ - ":skia_config", - ":harfbuzz_config", - ] - - deps = [ - ":ace_fontmgr_$platform", - ":ace_gif", - - #":ace_gpu", - ":ace_heif", - ":ace_jpeg", - ":ace_libexpat", - ":ace_libfreetype2", - ":ace_libharfbuzz_$platform", - ":ace_libicu_$platform", - ":ace_libjpeg", - ":ace_libpng", - ":ace_libsfntly_$platform", - ":ace_libwebp", - ":ace_pdf_$platform", - ":ace_png", - ":ace_skcms", - ":ace_skia_core", - ":ace_skia_opts", - ":ace_svg_model_$platform", - ":ace_typeface_freetype", - ":ace_webp", - ":ace_xml_$platform", - ] - - public_configs += [ ":ace_svg_model_config" ] - - if (is_standard_system) { - deps += [ ":make_third_party_skia_include_dir" ] - } - } -} - -make_skia_deps("ohos") { -} - -make_skia_deps("windows") { -} - -make_skia_deps("mac") { -} - -# ------------------------------------------------ -# Main block end of skia -# ------------------------------------------------ - -template("flutter_engine") { - # get is_ohos_platform - forward_variables_from(invoker, "*") - - if (use_mingw_win || use_mac) { - ohos_source_set(target_name) { - defines += invoker.defines - deps = [ ":flutter_glfw_preview_$platform" ] - } - } else { - ohos_static_library(target_name) { - defines += invoker.defines - deps = [ - ":flutter_engine_common_$platform", - ":flutter_engine_flow_$platform", - ":flutter_engine_fml_$platform", - ":flutter_engine_lib_ui_$platform", - ":flutter_engine_shell_$platform", - ":thirdparty_lib_txt_$platform", - ] - } - } -} - -flutter_engine("third_party_flutter_engine_ohos") { - defines = ace_ohos_defines - platform = "ohos" -} - -flutter_engine("third_party_flutter_engine_windows") { - defines = ace_windows_defines - platform = "windows" -} - -flutter_engine("third_party_flutter_engine_mac") { - defines = ace_mac_defines - platform = "mac" -} - -# Common config for flutter source -config("flutter_config") { - visibility = [ ":*" ] - - include_dirs = [ - "$flutter_root", - "engine", - "engine/flutter", - "engine/flutter/third_party/txt/src", - ] - - cflags = [ - "-fvisibility=hidden", - "-fdata-sections", - "-ffunction-sections", - "-Os", - ] - - cflags_cc = [ - "-fvisibility-inlines-hidden", - "-Os", - ] - defines = [] - - if (use_mingw_win || use_mac) { - defines += ace_common_defines - - cflags_cc += [ - "-std=c++17", - "-Wno-thread-safety-attributes", - "-Wno-thread-safety-analysis", - "-Wno-ignored-attributes", - ] - } - if (is_standard_system) { - cflags_cc += [ - "-Wno-thread-safety-attributes", - "-Wno-thread-safety-analysis", - ] - defines += [ "SK_BUILD_FOR_UNIX" ] - } -} - -config("flutter_engine_fml_mac_config") { - cflags = [ - "-Wno-thread-safety-attributes", - "-Wno-thread-safety-analysis", - ] -} - -template("flutter_engine_fml") { - forward_variables_from(invoker, "*") - ohos_source_set(target_name) { - configs = [ - ":flutter_config", - ":icu_config_$platform", - ] - defines += invoker.defines - sources = [ - "engine/flutter/fml/base32.cc", - "engine/flutter/fml/command_line.cc", - "engine/flutter/fml/concurrent_message_loop.cc", - "engine/flutter/fml/delayed_task.cc", - "engine/flutter/fml/file.cc", - "engine/flutter/fml/gpu_thread_merger.cc", - "engine/flutter/fml/icu_util.cc", - "engine/flutter/fml/log_settings.cc", - "engine/flutter/fml/log_settings_state.cc", - "engine/flutter/fml/logging.cc", - "engine/flutter/fml/mapping.cc", - "engine/flutter/fml/memory/weak_ptr_internal.cc", - "engine/flutter/fml/message.cc", - "engine/flutter/fml/message_loop.cc", - "engine/flutter/fml/message_loop_impl.cc", - "engine/flutter/fml/message_loop_task_queues.cc", - "engine/flutter/fml/paths.cc", - "engine/flutter/fml/synchronization/count_down_latch.cc", - "engine/flutter/fml/synchronization/semaphore.cc", - "engine/flutter/fml/synchronization/waitable_event.cc", - "engine/flutter/fml/task_runner.cc", - "engine/flutter/fml/thread.cc", - "engine/flutter/fml/thread_local.cc", - "engine/flutter/fml/time/time_point.cc", - "engine/flutter/fml/trace_event.cc", - "engine/flutter/fml/unique_fd.cc", - ] - - if (use_mingw_win) { - defines += [ "UNICODE" ] - - cflags_cc = [ - "-Wno-macro-redefined", - "-Wno-missing-braces", - ] - - sources += [ - "engine/flutter/fml/platform/win/errors_win.cc", - "engine/flutter/fml/platform/win/file_win.cc", - "engine/flutter/fml/platform/win/mapping_win.cc", - "engine/flutter/fml/platform/win/message_loop_win.cc", - "engine/flutter/fml/platform/win/native_library_win.cc", - "engine/flutter/fml/platform/win/paths_win.cc", - ] - - libs = [ "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/librpcrt4.a" ] - } else if (use_mac) { - sources += [ - "engine/flutter/fml/platform/darwin/cf_utils.cc", - "engine/flutter/fml/platform/darwin/message_loop_darwin.mm", - "engine/flutter/fml/platform/darwin/paths_darwin.mm", - "engine/flutter/fml/platform/darwin/platform_version.mm", - "engine/flutter/fml/platform/darwin/scoped_block.mm", - "engine/flutter/fml/platform/darwin/scoped_nsobject.mm", - "engine/flutter/fml/platform/darwin/string_range_sanitization.mm", - "engine/flutter/fml/platform/posix/file_posix.cc", - "engine/flutter/fml/platform/posix/mapping_posix.cc", - "engine/flutter/fml/platform/posix/native_library_posix.cc", - "engine/flutter/fml/platform/posix/paths_posix.cc", - "engine/flutter/fml/platform/posix/shared_mutex_posix.cc", - ] - public_configs = [ ":flutter_engine_fml_mac_config" ] - libs = [ - "CoreFoundation.framework", - "Foundation.framework", - ] - } else { - sources += [ - "engine/flutter/fml/platform/linux/paths_linux.cc", - "engine/flutter/fml/platform/linux/timerfd.cc", - "engine/flutter/fml/platform/posix/file_posix.cc", - "engine/flutter/fml/platform/posix/mapping_posix.cc", - "engine/flutter/fml/platform/posix/native_library_posix.cc", - "engine/flutter/fml/platform/posix/paths_posix.cc", - ] - - if (is_standard_system) { - sources += [ "engine/flutter/fml/platform/linux/message_loop_linux.cc" ] - } - external_deps = [ "hiviewdfx_hilog_native:libhilog" ] - } - } -} - -flutter_engine_fml("flutter_engine_fml_ohos") { - defines = ace_ohos_defines - platform = "ohos" -} - -flutter_engine_fml("flutter_engine_fml_windows") { - defines = ace_windows_defines - platform = "windows" -} - -flutter_engine_fml("flutter_engine_fml_mac") { - defines = ace_mac_defines - platform = "mac" -} - -template("flutter_engine_common") { - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - configs = [ ":flutter_config" ] - defines += invoker.defines - - sources = [ - "engine/flutter/common/settings.cc", - "engine/flutter/common/task_runners.cc", - ] - - deps = [ ":flutter_engine_fml_$platform" ] - if (use_mac) { - cflags_cc = [ "-Wno-thread-safety-attributes" ] - } - } -} - -flutter_engine_common("flutter_engine_common_ohos") { - defines = ace_ohos_defines - platform = "ohos" -} - -flutter_engine_common("flutter_engine_common_windows") { - defines = ace_windows_defines - platform = "windows" -} - -flutter_engine_common("flutter_engine_common_mac") { - defines = ace_mac_defines - platform = "mac" -} - -template("flutter_engine_flow") { - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - defines += invoker.defines - - configs = [ ":flutter_config" ] - - if (use_mac) { - cflags = [ "-Wno-thread-safety-attributes" ] - } - - sources = [ - "engine/flutter/flow/compositor_context.cc", - "engine/flutter/flow/debug_print.cc", - "engine/flutter/flow/embedded_views.cc", - "engine/flutter/flow/instrumentation.cc", - "engine/flutter/flow/layers/backdrop_filter_layer.cc", - "engine/flutter/flow/layers/clip_path_layer.cc", - "engine/flutter/flow/layers/clip_rect_layer.cc", - "engine/flutter/flow/layers/clip_rrect_layer.cc", - "engine/flutter/flow/layers/color_filter_layer.cc", - "engine/flutter/flow/layers/container_layer.cc", - "engine/flutter/flow/layers/filter_layer.cc", - "engine/flutter/flow/layers/layer.cc", - "engine/flutter/flow/layers/layer_tree.cc", - "engine/flutter/flow/layers/mask_layer.cc", - "engine/flutter/flow/layers/opacity_layer.cc", - "engine/flutter/flow/layers/performance_overlay_layer.cc", - "engine/flutter/flow/layers/physical_shape_layer.cc", - "engine/flutter/flow/layers/picture_layer.cc", - "engine/flutter/flow/layers/platform_view_layer.cc", - "engine/flutter/flow/layers/shader_mask_layer.cc", - "engine/flutter/flow/layers/texture_layer.cc", - "engine/flutter/flow/layers/transform_layer.cc", - "engine/flutter/flow/matrix_decomposition.cc", - "engine/flutter/flow/paint_utils.cc", - "engine/flutter/flow/raster_cache.cc", - "engine/flutter/flow/raster_cache_key.cc", - "engine/flutter/flow/skia_gpu_object.cc", - "engine/flutter/flow/texture.cc", - ] - deps = [ - ":ace_skia_$platform", - ":flutter_engine_fml_$platform", - ] - } -} - -flutter_engine_flow("flutter_engine_flow_ohos") { - defines = ace_ohos_defines - platform = "ohos" -} - -flutter_engine_flow("flutter_engine_flow_windows") { - defines = ace_windows_defines - platform = "windows" -} - -flutter_engine_flow("flutter_engine_flow_mac") { - defines = ace_mac_defines - platform = "mac" -} - -template("flutter_engine_shell") { - # get is_ohos_platform - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - defines += invoker.defines - - configs = [ - ":flutter_config", - ":icu_config_$platform", - ] - - sources = [ - "engine/flutter/shell/common/animator.cc", - "engine/flutter/shell/common/persistent_cache.cc", - "engine/flutter/shell/common/pipeline.cc", - "engine/flutter/shell/common/rasterizer.cc", - "engine/flutter/shell/common/shell_io_manager.cc", - "engine/flutter/shell/common/surface.cc", - "engine/flutter/shell/common/thread_host.cc", - "engine/flutter/shell/common/vsync_waiter.cc", - "engine/flutter/shell/common/vsync_waiter_fallback.cc", - - # only support gl and software - "engine/flutter/shell/gpu/gpu_surface_gl.cc", - "engine/flutter/shell/gpu/gpu_surface_gl_delegate.cc", - "engine/flutter/shell/gpu/gpu_surface_software.cc", - "engine/flutter/shell/gpu/gpu_surface_software_delegate.cc", - "engine/flutter/shell/version/version.cc", - - # Ability Cross-platform Environment(ACE) override implementation - "engine/flutter/runtime/ace_runtime_controller.cc", - "engine/flutter/runtime/window_manager.cc", - "engine/flutter/shell/common/ace_engine.cc", - "engine/flutter/shell/common/ace_platform_view.cc", - "engine/flutter/shell/common/ace_run_configuration.cc", - "engine/flutter/shell/common/ace_shell.cc", - ] - - defines += [ - "FLUTTER_ENGINE_VERSION=\"cc88fa45dbf4c55bc23cecea17fb90f43bccf588\"", - "SKIA_VERSION=\"4b567cd679ab964b5f6281a67a96c694c950f597\"", - "DART_VERSION=\"fake version\"", - ] - - deps = [ - ":ace_skia_$platform", - ":flutter_engine_fml_$platform", - ] - - if (use_mingw_win || use_mac) { - defines += [ "UNICODE" ] - } else if (is_standard_system) { - include_dirs = [ "//utils/native/base/include" ] - deps += [ "//foundation/graphic/standard:libwmclient" ] - sources += [ - "engine/flutter/shell/platform/ohos/ohos_shell_holder.cc", - "engine/flutter/shell/platform/ohos/ohos_surface_software.cc", - "engine/flutter/shell/platform/ohos/platform_task_runner_adapter.cc", - "engine/flutter/shell/platform/ohos/platform_view_ohos.cc", - ] - external_deps = [ - "appexecfwk_standard:libeventhandler", - "ipc:ipc_core", - ] - } - - if (is_ohos_platform) { - if (!enable_native_view) { - sources += [ - # Ability Cross-platform Environment(ACE) override implementation for ohos platform - "engine/flutter/shell/platform/ohos/ace_vsync_waiter_embedder.cc", - ] - if (is_standard_system) { - deps += [ "//foundation/graphic/standard:libvsync_client" ] - external_deps += [ "appexecfwk_standard:libeventhandler" ] - } - } - } - } -} - -flutter_engine_shell("flutter_engine_shell_ohos") { - defines = ace_ohos_defines - is_ohos_platform = true - platform = "ohos" -} - -flutter_engine_shell("flutter_engine_shell_windows") { - defines = ace_windows_defines - is_ohos_platform = false - platform = "windows" -} - -flutter_engine_shell("flutter_engine_shell_mac") { - defines = ace_mac_defines - is_ohos_platform = false - platform = "mac" -} - -ohos_source_set("flutter_engine_asset_manager") { - sources = [ - "engine/flutter/assets/asset_manager.cc", - "engine/flutter/assets/directory_asset_bundle.cc", - ] - - configs = [ ":flutter_config" ] -} - -template("flutter_engine_lib_ui") { - forward_variables_from(invoker, "*") - ohos_source_set(target_name) { - defines += invoker.defines - - configs = [ - ":flutter_config", - ":icu_config_$platform", - ] - - sources = [ - "engine/flutter/lib/ui/compositing/scene.cc", - "engine/flutter/lib/ui/compositing/scene_builder.cc", - "engine/flutter/lib/ui/painting/canvas.cc", - "engine/flutter/lib/ui/painting/color_filter.cc", - "engine/flutter/lib/ui/painting/engine_layer.cc", - "engine/flutter/lib/ui/painting/gradient.cc", - "engine/flutter/lib/ui/painting/image.cc", - "engine/flutter/lib/ui/painting/image_filter.cc", - "engine/flutter/lib/ui/painting/matrix.cc", - "engine/flutter/lib/ui/painting/path.cc", - "engine/flutter/lib/ui/painting/picture_recorder.cc", - "engine/flutter/lib/ui/painting/shader.cc", - "engine/flutter/lib/ui/painting/vertices.cc", - "engine/flutter/lib/ui/window/platform_message.cc", - "engine/flutter/lib/ui/window/platform_message_response.cc", - "engine/flutter/lib/ui/window/pointer_data_packet.cc", - "engine/flutter/lib/ui/window/viewport_metrics.cc", - - # Ability Cross-platform Environment(ACE) override implementation - "engine/flutter/lib/ui/painting/image_encoding.cc", - "engine/flutter/lib/ui/painting/paint.cc", - "engine/flutter/lib/ui/painting/picture.cc", - "engine/flutter/lib/ui/text/font_collection.cc", - "engine/flutter/lib/ui/text/text_box.cc", - "engine/flutter/lib/ui/ui_dart_state.cc", - "engine/flutter/lib/ui/window/window.cc", - ] - - deps = [ - ":ace_skia_$platform", - ":flutter_engine_asset_manager", - ":flutter_engine_fml_$platform", - ] - - if (use_mingw_win) { - defines += [ "_USE_MATH_DEFINES" ] - sources += [ "engine/flutter/lib/ui/window/pointer_data.cc" ] - } else if (use_mac) { - sources += [ "engine/flutter/lib/ui/window/pointer_data.cc" ] - } - } -} - -flutter_engine_lib_ui("flutter_engine_lib_ui_ohos") { - defines = ace_ohos_defines - platform = "ohos" -} - -flutter_engine_lib_ui("flutter_engine_lib_ui_windows") { - defines = ace_windows_defines - platform = "windows" -} - -flutter_engine_lib_ui("flutter_engine_lib_ui_mac") { - defines = ace_mac_defines - platform = "mac" -} - -config("thirdparty_lib_txt_config") { - cflags_cc = [ - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] -} -template("thirdparty_lib_txt") { - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - defines += invoker.defines - - configs = [ - ":flutter_config", - ":icu_config_$platform", - ":thirdparty_lib_txt_config", - ] - - sources = [ - "engine/flutter/third_party/txt/src/log/log.cc", - "engine/flutter/third_party/txt/src/minikin/CmapCoverage.cpp", - "engine/flutter/third_party/txt/src/minikin/Emoji.cpp", - "engine/flutter/third_party/txt/src/minikin/FontCollection.cpp", - "engine/flutter/third_party/txt/src/minikin/FontFamily.cpp", - "engine/flutter/third_party/txt/src/minikin/FontLanguage.cpp", - "engine/flutter/third_party/txt/src/minikin/FontLanguageListCache.cpp", - "engine/flutter/third_party/txt/src/minikin/FontUtils.cpp", - "engine/flutter/third_party/txt/src/minikin/GraphemeBreak.cpp", - "engine/flutter/third_party/txt/src/minikin/HbFontCache.cpp", - "engine/flutter/third_party/txt/src/minikin/Hyphenator.cpp", - "engine/flutter/third_party/txt/src/minikin/Layout.cpp", - "engine/flutter/third_party/txt/src/minikin/LayoutUtils.cpp", - "engine/flutter/third_party/txt/src/minikin/LineBreaker.cpp", - "engine/flutter/third_party/txt/src/minikin/Measurement.cpp", - "engine/flutter/third_party/txt/src/minikin/MinikinFont.cpp", - "engine/flutter/third_party/txt/src/minikin/MinikinInternal.cpp", - "engine/flutter/third_party/txt/src/minikin/SparseBitSet.cpp", - "engine/flutter/third_party/txt/src/minikin/WordBreaker.cpp", - "engine/flutter/third_party/txt/src/txt/asset_font_manager.cc", - "engine/flutter/third_party/txt/src/txt/font_asset_provider.cc", - "engine/flutter/third_party/txt/src/txt/font_collection.cc", - "engine/flutter/third_party/txt/src/txt/font_features.cc", - "engine/flutter/third_party/txt/src/txt/font_skia.cc", - "engine/flutter/third_party/txt/src/txt/paint_record.cc", - "engine/flutter/third_party/txt/src/txt/paragraph_builder.cc", - "engine/flutter/third_party/txt/src/txt/paragraph_builder_txt.cc", - "engine/flutter/third_party/txt/src/txt/paragraph_style.cc", - "engine/flutter/third_party/txt/src/txt/paragraph_txt.cc", - "engine/flutter/third_party/txt/src/txt/placeholder_run.cc", - "engine/flutter/third_party/txt/src/txt/styled_runs.cc", - "engine/flutter/third_party/txt/src/txt/test_font_manager.cc", - "engine/flutter/third_party/txt/src/txt/text_decoration.cc", - "engine/flutter/third_party/txt/src/txt/text_shadow.cc", - "engine/flutter/third_party/txt/src/txt/text_style.cc", - "engine/flutter/third_party/txt/src/txt/typeface_font_asset_provider.cc", - "engine/flutter/third_party/txt/src/utils/JenkinsHash.cpp", - ] - - deps = [ - ":ace_skia_$platform", - ":flutter_engine_fml_$platform", - ] - - if (is_ohos_platform) { - sources += [ "engine/flutter/third_party/txt/src/txt/platform_ohos.cc" ] - } else if (use_mingw_win) { - sources += [ "engine/flutter/third_party/txt/src/txt/platform.cc" ] - } else if (use_mac) { - sources += [ "engine/flutter/third_party/txt/src/txt/platform_mac.mm" ] - } - } -} - -thirdparty_lib_txt("thirdparty_lib_txt_ohos") { - defines = ace_ohos_defines - platform = "ohos" - is_ohos_platform = true -} - -thirdparty_lib_txt("thirdparty_lib_txt_windows") { - defines = ace_windows_defines - platform = "windows" - is_ohos_platform = false -} - -thirdparty_lib_txt("thirdparty_lib_txt_mac") { - defines = ace_mac_defines - platform = "mac" - is_ohos_platform = false -} - -# ------------------------------------------------ -# Main block begin of Ability Cross-platform Environment(ACE) Preview -# ------------------------------------------------ -config("flutter_glfw_config") { - visibility = [ ":*" ] - - include_dirs = [ - "engine/flutter/shell/platform/common/cpp/public", - "engine/flutter/shell/platform/glfw/public", - ] -} - -ohos_source_set("flutter_platform_common_client_wrapper") { - sources = [ - "engine/flutter/shell/platform/common/cpp/client_wrapper/engine_method_result.cc", - "engine/flutter/shell/platform/common/cpp/client_wrapper/standard_codec.cc", - ] - - public = [ - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/basic_message_channel.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/binary_messenger.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/encodable_value.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/engine_method_result.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/message_codec.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_call.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_channel.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_codec.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/method_result.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/standard_message_codec.h", - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter/standard_method_codec.h", - ] - - defines = [ "FLUTTER_DESKTOP_LIBRARY" ] -} - -template("flutter_embedder_with_symbol_prefix") { - forward_variables_from(invoker, "*") - ohos_source_set(target_name) { - defines += invoker.defines - defines += [ - "FLUTTER_API_SYMBOL_PREFIX=Embedder", - "NOGDI", - ] - - configs = [ - ":flutter_config", - ":icu_config_$platform", - ] - - sources = [ - # Ability Cross-platform Environment(ACE) override - "engine/flutter/shell/platform/embedder/ace_embedder.cc", - "engine/flutter/shell/platform/embedder/ace_embedder_engine.cc", - "engine/flutter/shell/platform/embedder/ace_platform_view_embedder.cc", - "engine/flutter/shell/platform/embedder/embedder_external_texture_gl.cc", - "engine/flutter/shell/platform/embedder/embedder_external_view_embedder.cc", - "engine/flutter/shell/platform/embedder/embedder_platform_message_response.cc", - "engine/flutter/shell/platform/embedder/embedder_render_target.cc", - "engine/flutter/shell/platform/embedder/embedder_surface.cc", - "engine/flutter/shell/platform/embedder/embedder_surface_gl.cc", - "engine/flutter/shell/platform/embedder/embedder_surface_software.cc", - "engine/flutter/shell/platform/embedder/embedder_task_runner.cc", - "engine/flutter/shell/platform/embedder/embedder_thread_host.cc", - "engine/flutter/shell/platform/embedder/vsync_waiter_embedder.cc", - ] - - deps = [ - ":ace_skia_$platform", - ":flutter_engine_asset_manager", - ":flutter_engine_common_$platform", - ":flutter_engine_flow_$platform", - ":flutter_engine_fml_$platform", - ":flutter_engine_lib_ui_$platform", - ":flutter_engine_shell_$platform", - ":thirdparty_lib_txt_$platform", - ] - public_configs = [ ":flutter_config" ] - } -} - -flutter_embedder_with_symbol_prefix( - "flutter_embedder_with_symbol_prefix_windows") { - defines = ace_windows_defines - platform = "windows" -} - -flutter_embedder_with_symbol_prefix("flutter_embedder_with_symbol_prefix_mac") { - defines = ace_mac_defines - platform = "mac" -} - -template("flutter_platform_glfw") { - forward_variables_from(invoker, "*") - ohos_source_set(target_name) { - defines += invoker.defines - defines += [ "FLUTTER_DESKTOP_LIBRARY" ] - - configs = [ ":flutter_config" ] - - sources = [ - "engine/flutter/shell/platform/glfw/glfw_event_loop.cc", - - # Ability Cross-platform Environment(ACE) override - "engine/flutter/shell/platform/glfw/flutter_glfw.cc", - ] - - # GLFW client wrapper build - public = [ "engine/flutter/shell/platform/glfw/client_wrapper/include/flutter/flutter_window.h" ] - - include_dirs = [ - "engine/flutter/shell/platform/common/cpp/client_wrapper/include/flutter", - "engine/flutter/shell/platform/common/cpp/public", - ] - - deps = [ - ":flutter_embedder_with_symbol_prefix_$platform", - ":flutter_platform_common_client_wrapper", - - # "//third_party/glfw:glfw_$platform", - ] - } -} - -flutter_platform_glfw("flutter_glfw_preview_windows") { - defines = ace_windows_defines - platform = "windows" -} - -flutter_platform_glfw("flutter_glfw_preview_mac") { - defines = ace_mac_defines - platform = "mac" -} - -# ------------------------------------------------ -# Main block end of Ability Cross-platform Environment(ACE) Preview -# ------------------------------------------------ - -config("icu_config_ohos") { - visibility = [ ":*" ] - include_dirs = flutter_external_icu_include_dirs -} - -config("icu_config_windows") { - visibility = [ ":*" ] - - include_dirs = flutter_internal_icu_include_dirs -} - -config("icu_config_mac") { - visibility = [ ":*" ] - - include_dirs = flutter_internal_icu_include_dirs -} - -config("icu_compile_flags") { - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-w", - "-fstrict-aliasing", - "-O3", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wno-unused-parameter", - "-fvisibility=hidden", - "-Os", - ] - if (use_mingw_win) { - cflags_cc += [ "-DWINVER=0x0601" ] - } -} - -template("ace_libicu") { - # get is_ohos_platform flag. - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - configs = [ - ":icu_config_$platform", - ":icu_compile_flags", - ] - defines += invoker.defines - - if (use_mingw_win || use_mac) { - configs += [ "//build/config/compiler:rtti" ] - } - - if (is_ohos_platform) { - if (is_wearable_product) { - deps = [ - "//third_party/icu/icu4c:static_icui18n", - "//third_party/icu/icu4c:static_icuuc", - ] - } else { - deps = [ - "//third_party/icu/icu4c:shared_icui18n", - "//third_party/icu/icu4c:shared_icuuc", - ] - } - } else { - deps = [ ":ace_icu_make_data_assembly" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "$root_out_dir/ace_icu/icudtl_dat.S", - "skia/third_party/externals/icu/source/common/appendable.cpp", - "skia/third_party/externals/icu/source/common/bmpset.cpp", - "skia/third_party/externals/icu/source/common/brkeng.cpp", - "skia/third_party/externals/icu/source/common/brkiter.cpp", - "skia/third_party/externals/icu/source/common/bytesinkutil.cpp", - "skia/third_party/externals/icu/source/common/bytestream.cpp", - "skia/third_party/externals/icu/source/common/bytestrie.cpp", - "skia/third_party/externals/icu/source/common/bytestriebuilder.cpp", - "skia/third_party/externals/icu/source/common/bytestrieiterator.cpp", - "skia/third_party/externals/icu/source/common/caniter.cpp", - "skia/third_party/externals/icu/source/common/characterproperties.cpp", - "skia/third_party/externals/icu/source/common/chariter.cpp", - "skia/third_party/externals/icu/source/common/charstr.cpp", - "skia/third_party/externals/icu/source/common/cmemory.cpp", - "skia/third_party/externals/icu/source/common/cstr.cpp", - "skia/third_party/externals/icu/source/common/cstring.cpp", - "skia/third_party/externals/icu/source/common/cwchar.cpp", - "skia/third_party/externals/icu/source/common/dictbe.cpp", - "skia/third_party/externals/icu/source/common/dictionarydata.cpp", - "skia/third_party/externals/icu/source/common/dtintrv.cpp", - "skia/third_party/externals/icu/source/common/edits.cpp", - "skia/third_party/externals/icu/source/common/errorcode.cpp", - "skia/third_party/externals/icu/source/common/filteredbrk.cpp", - "skia/third_party/externals/icu/source/common/filterednormalizer2.cpp", - "skia/third_party/externals/icu/source/common/icudataver.cpp", - "skia/third_party/externals/icu/source/common/icuplug.cpp", - "skia/third_party/externals/icu/source/common/loadednormalizer2impl.cpp", - "skia/third_party/externals/icu/source/common/locavailable.cpp", - "skia/third_party/externals/icu/source/common/locbased.cpp", - "skia/third_party/externals/icu/source/common/locdispnames.cpp", - "skia/third_party/externals/icu/source/common/locdspnm.cpp", - "skia/third_party/externals/icu/source/common/locid.cpp", - "skia/third_party/externals/icu/source/common/loclikely.cpp", - "skia/third_party/externals/icu/source/common/locmap.cpp", - "skia/third_party/externals/icu/source/common/locresdata.cpp", - "skia/third_party/externals/icu/source/common/locutil.cpp", - "skia/third_party/externals/icu/source/common/messagepattern.cpp", - "skia/third_party/externals/icu/source/common/normalizer2.cpp", - "skia/third_party/externals/icu/source/common/normalizer2impl.cpp", - "skia/third_party/externals/icu/source/common/normlzr.cpp", - "skia/third_party/externals/icu/source/common/parsepos.cpp", - "skia/third_party/externals/icu/source/common/patternprops.cpp", - "skia/third_party/externals/icu/source/common/pluralmap.cpp", - "skia/third_party/externals/icu/source/common/propname.cpp", - "skia/third_party/externals/icu/source/common/propsvec.cpp", - "skia/third_party/externals/icu/source/common/punycode.cpp", - "skia/third_party/externals/icu/source/common/putil.cpp", - "skia/third_party/externals/icu/source/common/rbbi.cpp", - "skia/third_party/externals/icu/source/common/rbbi_cache.cpp", - "skia/third_party/externals/icu/source/common/rbbidata.cpp", - "skia/third_party/externals/icu/source/common/rbbinode.cpp", - "skia/third_party/externals/icu/source/common/rbbirb.cpp", - "skia/third_party/externals/icu/source/common/rbbiscan.cpp", - "skia/third_party/externals/icu/source/common/rbbisetb.cpp", - "skia/third_party/externals/icu/source/common/rbbistbl.cpp", - "skia/third_party/externals/icu/source/common/rbbitblb.cpp", - "skia/third_party/externals/icu/source/common/resbund.cpp", - "skia/third_party/externals/icu/source/common/resbund_cnv.cpp", - "skia/third_party/externals/icu/source/common/resource.cpp", - "skia/third_party/externals/icu/source/common/ruleiter.cpp", - "skia/third_party/externals/icu/source/common/schriter.cpp", - "skia/third_party/externals/icu/source/common/serv.cpp", - "skia/third_party/externals/icu/source/common/servlk.cpp", - "skia/third_party/externals/icu/source/common/servlkf.cpp", - "skia/third_party/externals/icu/source/common/servls.cpp", - "skia/third_party/externals/icu/source/common/servnotf.cpp", - "skia/third_party/externals/icu/source/common/servrbf.cpp", - "skia/third_party/externals/icu/source/common/servslkf.cpp", - "skia/third_party/externals/icu/source/common/sharedobject.cpp", - "skia/third_party/externals/icu/source/common/simpleformatter.cpp", - "skia/third_party/externals/icu/source/common/static_unicode_sets.cpp", - "skia/third_party/externals/icu/source/common/stringpiece.cpp", - "skia/third_party/externals/icu/source/common/stringtriebuilder.cpp", - "skia/third_party/externals/icu/source/common/uarrsort.cpp", - "skia/third_party/externals/icu/source/common/ubidi.cpp", - "skia/third_party/externals/icu/source/common/ubidi_props.cpp", - "skia/third_party/externals/icu/source/common/ubidiln.cpp", - "skia/third_party/externals/icu/source/common/ubiditransform.cpp", - "skia/third_party/externals/icu/source/common/ubidiwrt.cpp", - "skia/third_party/externals/icu/source/common/ubrk.cpp", - "skia/third_party/externals/icu/source/common/ucase.cpp", - "skia/third_party/externals/icu/source/common/ucasemap.cpp", - "skia/third_party/externals/icu/source/common/ucasemap_titlecase_brkiter.cpp", - "skia/third_party/externals/icu/source/common/ucat.cpp", - "skia/third_party/externals/icu/source/common/uchar.cpp", - "skia/third_party/externals/icu/source/common/ucharstrie.cpp", - "skia/third_party/externals/icu/source/common/ucharstriebuilder.cpp", - "skia/third_party/externals/icu/source/common/ucharstrieiterator.cpp", - "skia/third_party/externals/icu/source/common/uchriter.cpp", - "skia/third_party/externals/icu/source/common/ucln_cmn.cpp", - "skia/third_party/externals/icu/source/common/ucmndata.cpp", - "skia/third_party/externals/icu/source/common/ucnv.cpp", - "skia/third_party/externals/icu/source/common/ucnv2022.cpp", - "skia/third_party/externals/icu/source/common/ucnv_bld.cpp", - "skia/third_party/externals/icu/source/common/ucnv_cb.cpp", - "skia/third_party/externals/icu/source/common/ucnv_cnv.cpp", - "skia/third_party/externals/icu/source/common/ucnv_ct.cpp", - "skia/third_party/externals/icu/source/common/ucnv_err.cpp", - "skia/third_party/externals/icu/source/common/ucnv_ext.cpp", - "skia/third_party/externals/icu/source/common/ucnv_io.cpp", - "skia/third_party/externals/icu/source/common/ucnv_lmb.cpp", - "skia/third_party/externals/icu/source/common/ucnv_set.cpp", - "skia/third_party/externals/icu/source/common/ucnv_u16.cpp", - "skia/third_party/externals/icu/source/common/ucnv_u32.cpp", - "skia/third_party/externals/icu/source/common/ucnv_u7.cpp", - "skia/third_party/externals/icu/source/common/ucnv_u8.cpp", - "skia/third_party/externals/icu/source/common/ucnvbocu.cpp", - "skia/third_party/externals/icu/source/common/ucnvdisp.cpp", - "skia/third_party/externals/icu/source/common/ucnvhz.cpp", - "skia/third_party/externals/icu/source/common/ucnvisci.cpp", - "skia/third_party/externals/icu/source/common/ucnvlat1.cpp", - "skia/third_party/externals/icu/source/common/ucnvmbcs.cpp", - "skia/third_party/externals/icu/source/common/ucnvscsu.cpp", - "skia/third_party/externals/icu/source/common/ucnvsel.cpp", - "skia/third_party/externals/icu/source/common/ucol_swp.cpp", - "skia/third_party/externals/icu/source/common/ucptrie.cpp", - "skia/third_party/externals/icu/source/common/ucurr.cpp", - "skia/third_party/externals/icu/source/common/udata.cpp", - "skia/third_party/externals/icu/source/common/udatamem.cpp", - "skia/third_party/externals/icu/source/common/udataswp.cpp", - "skia/third_party/externals/icu/source/common/uenum.cpp", - "skia/third_party/externals/icu/source/common/uhash.cpp", - "skia/third_party/externals/icu/source/common/uhash_us.cpp", - "skia/third_party/externals/icu/source/common/uidna.cpp", - "skia/third_party/externals/icu/source/common/uinit.cpp", - "skia/third_party/externals/icu/source/common/uinvchar.cpp", - "skia/third_party/externals/icu/source/common/uiter.cpp", - "skia/third_party/externals/icu/source/common/ulist.cpp", - "skia/third_party/externals/icu/source/common/uloc.cpp", - "skia/third_party/externals/icu/source/common/uloc_keytype.cpp", - "skia/third_party/externals/icu/source/common/uloc_tag.cpp", - "skia/third_party/externals/icu/source/common/umapfile.cpp", - "skia/third_party/externals/icu/source/common/umath.cpp", - "skia/third_party/externals/icu/source/common/umutablecptrie.cpp", - "skia/third_party/externals/icu/source/common/umutex.cpp", - "skia/third_party/externals/icu/source/common/unames.cpp", - "skia/third_party/externals/icu/source/common/unifiedcache.cpp", - "skia/third_party/externals/icu/source/common/unifilt.cpp", - "skia/third_party/externals/icu/source/common/unifunct.cpp", - "skia/third_party/externals/icu/source/common/uniset.cpp", - "skia/third_party/externals/icu/source/common/uniset_closure.cpp", - "skia/third_party/externals/icu/source/common/uniset_props.cpp", - "skia/third_party/externals/icu/source/common/unisetspan.cpp", - "skia/third_party/externals/icu/source/common/unistr.cpp", - "skia/third_party/externals/icu/source/common/unistr_case.cpp", - "skia/third_party/externals/icu/source/common/unistr_case_locale.cpp", - "skia/third_party/externals/icu/source/common/unistr_cnv.cpp", - "skia/third_party/externals/icu/source/common/unistr_props.cpp", - "skia/third_party/externals/icu/source/common/unistr_titlecase_brkiter.cpp", - "skia/third_party/externals/icu/source/common/unorm.cpp", - "skia/third_party/externals/icu/source/common/unormcmp.cpp", - "skia/third_party/externals/icu/source/common/uobject.cpp", - "skia/third_party/externals/icu/source/common/uprops.cpp", - "skia/third_party/externals/icu/source/common/ures_cnv.cpp", - "skia/third_party/externals/icu/source/common/uresbund.cpp", - "skia/third_party/externals/icu/source/common/uresdata.cpp", - "skia/third_party/externals/icu/source/common/usc_impl.cpp", - "skia/third_party/externals/icu/source/common/uscript.cpp", - "skia/third_party/externals/icu/source/common/uscript_props.cpp", - "skia/third_party/externals/icu/source/common/uset.cpp", - "skia/third_party/externals/icu/source/common/uset_props.cpp", - "skia/third_party/externals/icu/source/common/usetiter.cpp", - "skia/third_party/externals/icu/source/common/ushape.cpp", - "skia/third_party/externals/icu/source/common/usprep.cpp", - "skia/third_party/externals/icu/source/common/ustack.cpp", - "skia/third_party/externals/icu/source/common/ustr_cnv.cpp", - "skia/third_party/externals/icu/source/common/ustr_titlecase_brkiter.cpp", - "skia/third_party/externals/icu/source/common/ustr_wcs.cpp", - "skia/third_party/externals/icu/source/common/ustrcase.cpp", - "skia/third_party/externals/icu/source/common/ustrcase_locale.cpp", - "skia/third_party/externals/icu/source/common/ustrenum.cpp", - "skia/third_party/externals/icu/source/common/ustrfmt.cpp", - "skia/third_party/externals/icu/source/common/ustring.cpp", - "skia/third_party/externals/icu/source/common/ustrtrns.cpp", - "skia/third_party/externals/icu/source/common/utext.cpp", - "skia/third_party/externals/icu/source/common/utf_impl.cpp", - "skia/third_party/externals/icu/source/common/util.cpp", - "skia/third_party/externals/icu/source/common/util_props.cpp", - "skia/third_party/externals/icu/source/common/utrace.cpp", - "skia/third_party/externals/icu/source/common/utrie.cpp", - "skia/third_party/externals/icu/source/common/utrie2.cpp", - "skia/third_party/externals/icu/source/common/utrie2_builder.cpp", - "skia/third_party/externals/icu/source/common/utrie_swap.cpp", - "skia/third_party/externals/icu/source/common/uts46.cpp", - "skia/third_party/externals/icu/source/common/utypes.cpp", - "skia/third_party/externals/icu/source/common/uvector.cpp", - "skia/third_party/externals/icu/source/common/uvectr32.cpp", - "skia/third_party/externals/icu/source/common/uvectr64.cpp", - "skia/third_party/externals/icu/source/common/wintz.cpp", - "skia/third_party/externals/icu/source/i18n/alphaindex.cpp", - "skia/third_party/externals/icu/source/i18n/anytrans.cpp", - "skia/third_party/externals/icu/source/i18n/astro.cpp", - "skia/third_party/externals/icu/source/i18n/basictz.cpp", - "skia/third_party/externals/icu/source/i18n/bocsu.cpp", - "skia/third_party/externals/icu/source/i18n/brktrans.cpp", - "skia/third_party/externals/icu/source/i18n/buddhcal.cpp", - "skia/third_party/externals/icu/source/i18n/calendar.cpp", - "skia/third_party/externals/icu/source/i18n/casetrn.cpp", - "skia/third_party/externals/icu/source/i18n/cecal.cpp", - "skia/third_party/externals/icu/source/i18n/chnsecal.cpp", - "skia/third_party/externals/icu/source/i18n/choicfmt.cpp", - "skia/third_party/externals/icu/source/i18n/coleitr.cpp", - "skia/third_party/externals/icu/source/i18n/coll.cpp", - "skia/third_party/externals/icu/source/i18n/collation.cpp", - "skia/third_party/externals/icu/source/i18n/collationbuilder.cpp", - "skia/third_party/externals/icu/source/i18n/collationcompare.cpp", - "skia/third_party/externals/icu/source/i18n/collationdata.cpp", - "skia/third_party/externals/icu/source/i18n/collationdatabuilder.cpp", - "skia/third_party/externals/icu/source/i18n/collationdatareader.cpp", - "skia/third_party/externals/icu/source/i18n/collationdatawriter.cpp", - "skia/third_party/externals/icu/source/i18n/collationfastlatin.cpp", - "skia/third_party/externals/icu/source/i18n/collationfastlatinbuilder.cpp", - "skia/third_party/externals/icu/source/i18n/collationfcd.cpp", - "skia/third_party/externals/icu/source/i18n/collationiterator.cpp", - "skia/third_party/externals/icu/source/i18n/collationkeys.cpp", - "skia/third_party/externals/icu/source/i18n/collationroot.cpp", - "skia/third_party/externals/icu/source/i18n/collationrootelements.cpp", - "skia/third_party/externals/icu/source/i18n/collationruleparser.cpp", - "skia/third_party/externals/icu/source/i18n/collationsets.cpp", - "skia/third_party/externals/icu/source/i18n/collationsettings.cpp", - "skia/third_party/externals/icu/source/i18n/collationtailoring.cpp", - "skia/third_party/externals/icu/source/i18n/collationweights.cpp", - "skia/third_party/externals/icu/source/i18n/compactdecimalformat.cpp", - "skia/third_party/externals/icu/source/i18n/coptccal.cpp", - "skia/third_party/externals/icu/source/i18n/cpdtrans.cpp", - "skia/third_party/externals/icu/source/i18n/csdetect.cpp", - "skia/third_party/externals/icu/source/i18n/csmatch.cpp", - "skia/third_party/externals/icu/source/i18n/csr2022.cpp", - "skia/third_party/externals/icu/source/i18n/csrecog.cpp", - "skia/third_party/externals/icu/source/i18n/csrmbcs.cpp", - "skia/third_party/externals/icu/source/i18n/csrsbcs.cpp", - "skia/third_party/externals/icu/source/i18n/csrucode.cpp", - "skia/third_party/externals/icu/source/i18n/csrutf8.cpp", - "skia/third_party/externals/icu/source/i18n/curramt.cpp", - "skia/third_party/externals/icu/source/i18n/currfmt.cpp", - "skia/third_party/externals/icu/source/i18n/currpinf.cpp", - "skia/third_party/externals/icu/source/i18n/currunit.cpp", - "skia/third_party/externals/icu/source/i18n/dangical.cpp", - "skia/third_party/externals/icu/source/i18n/datefmt.cpp", - "skia/third_party/externals/icu/source/i18n/dayperiodrules.cpp", - "skia/third_party/externals/icu/source/i18n/dcfmtsym.cpp", - "skia/third_party/externals/icu/source/i18n/decContext.cpp", - "skia/third_party/externals/icu/source/i18n/decNumber.cpp", - "skia/third_party/externals/icu/source/i18n/decimfmt.cpp", - "skia/third_party/externals/icu/source/i18n/double-conversion-bignum-dtoa.cpp", - "skia/third_party/externals/icu/source/i18n/double-conversion-bignum.cpp", - "skia/third_party/externals/icu/source/i18n/double-conversion-cached-powers.cpp", - "skia/third_party/externals/icu/source/i18n/double-conversion-diy-fp.cpp", - "skia/third_party/externals/icu/source/i18n/double-conversion-fast-dtoa.cpp", - "skia/third_party/externals/icu/source/i18n/double-conversion-strtod.cpp", - "skia/third_party/externals/icu/source/i18n/double-conversion.cpp", - "skia/third_party/externals/icu/source/i18n/dtfmtsym.cpp", - "skia/third_party/externals/icu/source/i18n/dtitvfmt.cpp", - "skia/third_party/externals/icu/source/i18n/dtitvinf.cpp", - "skia/third_party/externals/icu/source/i18n/dtptngen.cpp", - "skia/third_party/externals/icu/source/i18n/dtrule.cpp", - "skia/third_party/externals/icu/source/i18n/erarules.cpp", - "skia/third_party/externals/icu/source/i18n/esctrn.cpp", - "skia/third_party/externals/icu/source/i18n/ethpccal.cpp", - "skia/third_party/externals/icu/source/i18n/fmtable.cpp", - "skia/third_party/externals/icu/source/i18n/fmtable_cnv.cpp", - "skia/third_party/externals/icu/source/i18n/format.cpp", - "skia/third_party/externals/icu/source/i18n/fphdlimp.cpp", - "skia/third_party/externals/icu/source/i18n/fpositer.cpp", - "skia/third_party/externals/icu/source/i18n/funcrepl.cpp", - "skia/third_party/externals/icu/source/i18n/gender.cpp", - "skia/third_party/externals/icu/source/i18n/gregocal.cpp", - "skia/third_party/externals/icu/source/i18n/gregoimp.cpp", - "skia/third_party/externals/icu/source/i18n/hebrwcal.cpp", - "skia/third_party/externals/icu/source/i18n/indiancal.cpp", - "skia/third_party/externals/icu/source/i18n/inputext.cpp", - "skia/third_party/externals/icu/source/i18n/islamcal.cpp", - "skia/third_party/externals/icu/source/i18n/japancal.cpp", - "skia/third_party/externals/icu/source/i18n/listformatter.cpp", - "skia/third_party/externals/icu/source/i18n/measfmt.cpp", - "skia/third_party/externals/icu/source/i18n/measunit.cpp", - "skia/third_party/externals/icu/source/i18n/measure.cpp", - "skia/third_party/externals/icu/source/i18n/msgfmt.cpp", - "skia/third_party/externals/icu/source/i18n/name2uni.cpp", - "skia/third_party/externals/icu/source/i18n/nfrs.cpp", - "skia/third_party/externals/icu/source/i18n/nfrule.cpp", - "skia/third_party/externals/icu/source/i18n/nfsubs.cpp", - "skia/third_party/externals/icu/source/i18n/nortrans.cpp", - "skia/third_party/externals/icu/source/i18n/nounit.cpp", - "skia/third_party/externals/icu/source/i18n/nultrans.cpp", - "skia/third_party/externals/icu/source/i18n/number_affixutils.cpp", - "skia/third_party/externals/icu/source/i18n/number_asformat.cpp", - "skia/third_party/externals/icu/source/i18n/number_capi.cpp", - "skia/third_party/externals/icu/source/i18n/number_compact.cpp", - "skia/third_party/externals/icu/source/i18n/number_currencysymbols.cpp", - "skia/third_party/externals/icu/source/i18n/number_decimalquantity.cpp", - "skia/third_party/externals/icu/source/i18n/number_decimfmtprops.cpp", - "skia/third_party/externals/icu/source/i18n/number_fluent.cpp", - "skia/third_party/externals/icu/source/i18n/number_formatimpl.cpp", - "skia/third_party/externals/icu/source/i18n/number_grouping.cpp", - "skia/third_party/externals/icu/source/i18n/number_integerwidth.cpp", - "skia/third_party/externals/icu/source/i18n/number_longnames.cpp", - "skia/third_party/externals/icu/source/i18n/number_mapper.cpp", - "skia/third_party/externals/icu/source/i18n/number_modifiers.cpp", - "skia/third_party/externals/icu/source/i18n/number_multiplier.cpp", - "skia/third_party/externals/icu/source/i18n/number_notation.cpp", - "skia/third_party/externals/icu/source/i18n/number_padding.cpp", - "skia/third_party/externals/icu/source/i18n/number_patternmodifier.cpp", - "skia/third_party/externals/icu/source/i18n/number_patternstring.cpp", - "skia/third_party/externals/icu/source/i18n/number_rounding.cpp", - "skia/third_party/externals/icu/source/i18n/number_scientific.cpp", - "skia/third_party/externals/icu/source/i18n/number_skeletons.cpp", - "skia/third_party/externals/icu/source/i18n/number_stringbuilder.cpp", - "skia/third_party/externals/icu/source/i18n/number_utils.cpp", - "skia/third_party/externals/icu/source/i18n/numfmt.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_affixes.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_compositions.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_currency.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_decimal.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_impl.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_parsednumber.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_scientific.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_stringsegment.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_symbols.cpp", - "skia/third_party/externals/icu/source/i18n/numparse_validators.cpp", - "skia/third_party/externals/icu/source/i18n/numrange_fluent.cpp", - "skia/third_party/externals/icu/source/i18n/numrange_impl.cpp", - "skia/third_party/externals/icu/source/i18n/numsys.cpp", - "skia/third_party/externals/icu/source/i18n/olsontz.cpp", - "skia/third_party/externals/icu/source/i18n/persncal.cpp", - "skia/third_party/externals/icu/source/i18n/plurfmt.cpp", - "skia/third_party/externals/icu/source/i18n/plurrule.cpp", - "skia/third_party/externals/icu/source/i18n/quant.cpp", - "skia/third_party/externals/icu/source/i18n/quantityformatter.cpp", - "skia/third_party/externals/icu/source/i18n/rbnf.cpp", - "skia/third_party/externals/icu/source/i18n/rbt.cpp", - "skia/third_party/externals/icu/source/i18n/rbt_data.cpp", - "skia/third_party/externals/icu/source/i18n/rbt_pars.cpp", - "skia/third_party/externals/icu/source/i18n/rbt_rule.cpp", - "skia/third_party/externals/icu/source/i18n/rbt_set.cpp", - "skia/third_party/externals/icu/source/i18n/rbtz.cpp", - "skia/third_party/externals/icu/source/i18n/regexcmp.cpp", - "skia/third_party/externals/icu/source/i18n/regeximp.cpp", - "skia/third_party/externals/icu/source/i18n/regexst.cpp", - "skia/third_party/externals/icu/source/i18n/regextxt.cpp", - "skia/third_party/externals/icu/source/i18n/region.cpp", - "skia/third_party/externals/icu/source/i18n/reldatefmt.cpp", - "skia/third_party/externals/icu/source/i18n/reldtfmt.cpp", - "skia/third_party/externals/icu/source/i18n/rematch.cpp", - "skia/third_party/externals/icu/source/i18n/remtrans.cpp", - "skia/third_party/externals/icu/source/i18n/repattrn.cpp", - "skia/third_party/externals/icu/source/i18n/rulebasedcollator.cpp", - "skia/third_party/externals/icu/source/i18n/scientificnumberformatter.cpp", - "skia/third_party/externals/icu/source/i18n/scriptset.cpp", - "skia/third_party/externals/icu/source/i18n/search.cpp", - "skia/third_party/externals/icu/source/i18n/selfmt.cpp", - "skia/third_party/externals/icu/source/i18n/sharedbreakiterator.cpp", - "skia/third_party/externals/icu/source/i18n/simpletz.cpp", - "skia/third_party/externals/icu/source/i18n/smpdtfmt.cpp", - "skia/third_party/externals/icu/source/i18n/smpdtfst.cpp", - "skia/third_party/externals/icu/source/i18n/sortkey.cpp", - "skia/third_party/externals/icu/source/i18n/standardplural.cpp", - "skia/third_party/externals/icu/source/i18n/strmatch.cpp", - "skia/third_party/externals/icu/source/i18n/strrepl.cpp", - "skia/third_party/externals/icu/source/i18n/stsearch.cpp", - "skia/third_party/externals/icu/source/i18n/taiwncal.cpp", - "skia/third_party/externals/icu/source/i18n/timezone.cpp", - "skia/third_party/externals/icu/source/i18n/titletrn.cpp", - "skia/third_party/externals/icu/source/i18n/tmunit.cpp", - "skia/third_party/externals/icu/source/i18n/tmutamt.cpp", - "skia/third_party/externals/icu/source/i18n/tmutfmt.cpp", - "skia/third_party/externals/icu/source/i18n/tolowtrn.cpp", - "skia/third_party/externals/icu/source/i18n/toupptrn.cpp", - "skia/third_party/externals/icu/source/i18n/translit.cpp", - "skia/third_party/externals/icu/source/i18n/transreg.cpp", - "skia/third_party/externals/icu/source/i18n/tridpars.cpp", - "skia/third_party/externals/icu/source/i18n/tzfmt.cpp", - "skia/third_party/externals/icu/source/i18n/tzgnames.cpp", - "skia/third_party/externals/icu/source/i18n/tznames.cpp", - "skia/third_party/externals/icu/source/i18n/tznames_impl.cpp", - "skia/third_party/externals/icu/source/i18n/tzrule.cpp", - "skia/third_party/externals/icu/source/i18n/tztrans.cpp", - "skia/third_party/externals/icu/source/i18n/ucal.cpp", - "skia/third_party/externals/icu/source/i18n/ucln_in.cpp", - "skia/third_party/externals/icu/source/i18n/ucol.cpp", - "skia/third_party/externals/icu/source/i18n/ucol_res.cpp", - "skia/third_party/externals/icu/source/i18n/ucol_sit.cpp", - "skia/third_party/externals/icu/source/i18n/ucoleitr.cpp", - "skia/third_party/externals/icu/source/i18n/ucsdet.cpp", - "skia/third_party/externals/icu/source/i18n/udat.cpp", - "skia/third_party/externals/icu/source/i18n/udateintervalformat.cpp", - "skia/third_party/externals/icu/source/i18n/udatpg.cpp", - "skia/third_party/externals/icu/source/i18n/ufieldpositer.cpp", - "skia/third_party/externals/icu/source/i18n/uitercollationiterator.cpp", - "skia/third_party/externals/icu/source/i18n/ulistformatter.cpp", - "skia/third_party/externals/icu/source/i18n/ulocdata.cpp", - "skia/third_party/externals/icu/source/i18n/umsg.cpp", - "skia/third_party/externals/icu/source/i18n/unesctrn.cpp", - "skia/third_party/externals/icu/source/i18n/uni2name.cpp", - "skia/third_party/externals/icu/source/i18n/unum.cpp", - "skia/third_party/externals/icu/source/i18n/unumsys.cpp", - "skia/third_party/externals/icu/source/i18n/upluralrules.cpp", - "skia/third_party/externals/icu/source/i18n/uregex.cpp", - "skia/third_party/externals/icu/source/i18n/uregexc.cpp", - "skia/third_party/externals/icu/source/i18n/uregion.cpp", - "skia/third_party/externals/icu/source/i18n/usearch.cpp", - "skia/third_party/externals/icu/source/i18n/uspoof.cpp", - "skia/third_party/externals/icu/source/i18n/uspoof_build.cpp", - "skia/third_party/externals/icu/source/i18n/uspoof_conf.cpp", - "skia/third_party/externals/icu/source/i18n/uspoof_impl.cpp", - "skia/third_party/externals/icu/source/i18n/utf16collationiterator.cpp", - "skia/third_party/externals/icu/source/i18n/utf8collationiterator.cpp", - "skia/third_party/externals/icu/source/i18n/utmscale.cpp", - "skia/third_party/externals/icu/source/i18n/utrans.cpp", - "skia/third_party/externals/icu/source/i18n/vtzone.cpp", - "skia/third_party/externals/icu/source/i18n/vzone.cpp", - "skia/third_party/externals/icu/source/i18n/windtfmt.cpp", - "skia/third_party/externals/icu/source/i18n/winnmfmt.cpp", - "skia/third_party/externals/icu/source/i18n/wintzimpl.cpp", - "skia/third_party/externals/icu/source/i18n/zonemeta.cpp", - "skia/third_party/externals/icu/source/i18n/zrule.cpp", - "skia/third_party/externals/icu/source/i18n/ztrans.cpp", - ] - - if (use_mingw_win) { - defines += [ "U_CHARSET_IS_UTF8=1" ] - } - - defines += [ - "U_COMMON_IMPLEMENTATION", - "U_STATIC_IMPLEMENTATION", - "U_ENABLE_DYLOAD=0", - "U_I18N_IMPLEMENTATION", - "U_USING_ICU_NAMESPACE=0", - "SK_USING_THIRD_PARTY_ICU", - ] - } - } -} - -ace_libicu("ace_libicu_ohos") { - defines = ace_ohos_defines - is_ohos_platform = true - platform = "ohos" -} - -ace_libicu("ace_libicu_windows") { - defines = ace_windows_defines - is_ohos_platform = false - platform = "windows" -} - -ace_libicu("ace_libicu_mac") { - defines = ace_mac_defines - is_ohos_platform = false - platform = "mac" -} - -action("ace_icu_make_data_assembly") { - script = "skia/third_party/externals/icu/scripts/make_data_assembly.py" - if (use_mingw_win || use_mac) { - inputs = [ "skia/third_party/externals/icu/common/icudtl.dat" ] - } else { - inputs = [ "skia/third_party/externals/icu/flutter/icudtl.dat" ] - } - outputs = [ "$root_out_dir/ace_icu/icudtl_dat.S" ] - args = [ - rebase_path(inputs[0], root_build_dir), - rebase_path(outputs[0], root_build_dir), - ] - if (use_mac) { - args += [ "--mac" ] - } -} - -config("harfbuzz_config") { - visibility = [ ":*" ] - - include_dirs = [ "skia/third_party/externals/harfbuzz/src" ] - - defines = [ - "HAVE_ICU", - "HAVE_ICU_BUILTIN", - "HAVE_INTEL_ATOMIC_PRIMITIVES", - "HAVE_OT", - ] -} - -config("skia_config") { - visibility = [ ":*" ] - - include_dirs = [ - "$third_party_skia_override_path", - "skia", - "$third_party_skia_override_path/third_party/skia", - ] - - defines = flutter_defines - defines += [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_GL", - "SK_SUPPORT_PDF", - "SK_HAS_JPEG_LIBRARY", - "SK_HAS_HEIF_LIBRARY", - "SK_HAS_PNG_LIBRARY", - "SK_ENABLE_SKSL_INTERPRETER", - "SKVM_JIT", - "SK_HAS_WEBP_LIBRARY", - "SK_XML", - "XML_STATIC", - "XML_POOR_ENTROPY", - "SK_DISABLE_AAA", - "SK_DISABLE_READBUFFER", - "SK_DISABLE_EFFECT_DESERIALIZATION", - "SK_DISABLE_LEGACY_SHADERCONTEXT", - "SK_DISABLE_LOWP_RASTER_PIPELINE", - "SK_FORCE_RASTER_PIPELINE_BLITTER", - ] -} - -config("ace_skia_opts_config") { - visibility = [ ":*" ] - include_dirs = [ "skia" ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-march=armv8-a+crc", - "-fstrict-aliasing", - "-O3", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - "-Os", - ] - if (target_cpu == "x86_64" || (use_mingw_win || use_mac)) { - cflags -= [ "-march=armv8-a+crc" ] - } - if (use_mac) { - cflags += [ - "-march=haswell", - "-mavx", - "-mssse3", - "-msse4.1", - "-msse4.2", - ] - } -} - -ohos_source_set("ace_skia_opts") { - configs = [ ":ace_skia_opts_config" ] - - sources = [ "skia/src/opts/SkOpts_crc32.cpp" ] - - if (target_cpu == "x86_64" || (use_mingw_win || use_mac)) { - sources += [ - "skia/src/opts/SkOpts_avx.cpp", - "skia/src/opts/SkOpts_hsw.cpp", - ] - } - - if (use_mingw_win) { - sources -= [ "skia/src/opts/SkOpts_crc32.cpp" ] - - sources += [ - "skia/src/opts/SkOpts_sse41.cpp", - "skia/src/opts/SkOpts_sse42.cpp", - "skia/src/opts/SkOpts_ssse3.cpp", - ] - } - - if (use_mac) { - sources -= [ "skia/src/opts/SkOpts_crc32.cpp" ] - - sources += [ - "skia/src/opts/SkOpts_sse41.cpp", - "skia/src/opts/SkOpts_sse42.cpp", - "skia/src/opts/SkOpts_ssse3.cpp", - ] - } - - defines = [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - ] -} - -config("ace_skia_core_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia", - "//third_party/expat/lib", - ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - "-Wno-extra-semi", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - "-Wno-extra-semi", - ] - if (use_mingw_win) { - cflags += [ "-Wno-used-but-marked-unused" ] - - cflags_cc += [ "-Wno-unknown-pragmas" ] - } -} - -ohos_source_set("ace_skia_core") { - configs = [ - ":ace_skia_core_config", - ":flutter_config", - ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "skia/src/android/SkAndroidFrameworkUtils.cpp", - "skia/src/android/SkAnimatedImage.cpp", - "skia/src/android/SkBitmapRegionCodec.cpp", - "skia/src/android/SkBitmapRegionDecoder.cpp", - "skia/src/c/sk_effects.cpp", - "skia/src/c/sk_imageinfo.cpp", - "skia/src/c/sk_paint.cpp", - "skia/src/c/sk_surface.cpp", - "skia/src/codec/SkAndroidCodec.cpp", - "skia/src/codec/SkAndroidCodecAdapter.cpp", - "skia/src/codec/SkBmpBaseCodec.cpp", - "skia/src/codec/SkBmpCodec.cpp", - "skia/src/codec/SkBmpMaskCodec.cpp", - "skia/src/codec/SkBmpRLECodec.cpp", - "skia/src/codec/SkBmpStandardCodec.cpp", - "skia/src/codec/SkCodec.cpp", - "skia/src/codec/SkCodecImageGenerator.cpp", - "skia/src/codec/SkColorTable.cpp", - "skia/src/codec/SkEncodedInfo.cpp", - "skia/src/codec/SkMaskSwizzler.cpp", - "skia/src/codec/SkMasks.cpp", - "skia/src/codec/SkSampledCodec.cpp", - "skia/src/codec/SkSampler.cpp", - "skia/src/codec/SkStreamBuffer.cpp", - "skia/src/codec/SkSwizzler.cpp", - "skia/src/codec/SkWbmpCodec.cpp", - "skia/src/core/SkAAClip.cpp", - "skia/src/core/SkATrace.cpp", - "skia/src/core/SkAlphaRuns.cpp", - "skia/src/core/SkAnalyticEdge.cpp", - "skia/src/core/SkAnnotation.cpp", - "skia/src/core/SkArenaAlloc.cpp", - "skia/src/core/SkAutoPixmapStorage.cpp", - "skia/src/core/SkBBHFactory.cpp", - "skia/src/core/SkBigPicture.cpp", - "skia/src/core/SkBitmap.cpp", - "skia/src/core/SkBitmapCache.cpp", - "skia/src/core/SkBitmapController.cpp", - "skia/src/core/SkBitmapDevice.cpp", - "skia/src/core/SkBitmapProcState.cpp", - "skia/src/core/SkBitmapProcState_matrixProcs.cpp", - "skia/src/core/SkBlendMode.cpp", - "skia/src/core/SkBlitRow_D32.cpp", - "skia/src/core/SkBlitter.cpp", - "skia/src/core/SkBlitter_A8.cpp", - "skia/src/core/SkBlitter_ARGB32.cpp", - "skia/src/core/SkBlitter_RGB565.cpp", - "skia/src/core/SkBlitter_Sprite.cpp", - "skia/src/core/SkBlurMF.cpp", - "skia/src/core/SkBlurMask.cpp", - "skia/src/core/SkBuffer.cpp", - "skia/src/core/SkCachedData.cpp", - "skia/src/core/SkCanvas.cpp", - "skia/src/core/SkCanvasPriv.cpp", - "skia/src/core/SkClipStack.cpp", - "skia/src/core/SkClipStackDevice.cpp", - "skia/src/core/SkColor.cpp", - "skia/src/core/SkColorFilter.cpp", - "skia/src/core/SkColorFilter_Matrix.cpp", - "skia/src/core/SkColorSpace.cpp", - "skia/src/core/SkColorSpaceXformSteps.cpp", - "skia/src/core/SkContourMeasure.cpp", - "skia/src/core/SkConvertPixels.cpp", - "skia/src/core/SkCpu.cpp", - "skia/src/core/SkCubicClipper.cpp", - "skia/src/core/SkCubicMap.cpp", - "skia/src/core/SkData.cpp", - "skia/src/core/SkDataTable.cpp", - "skia/src/core/SkDebug.cpp", - "skia/src/core/SkDeferredDisplayList.cpp", - "skia/src/core/SkDeferredDisplayListRecorder.cpp", - "skia/src/core/SkDeque.cpp", - "skia/src/core/SkDescriptor.cpp", - "skia/src/core/SkDevice.cpp", - "skia/src/core/SkDistanceFieldGen.cpp", - "skia/src/core/SkDocument.cpp", - "skia/src/core/SkDraw.cpp", - "skia/src/core/SkDrawLooper.cpp", - "skia/src/core/SkDrawShadowInfo.cpp", - "skia/src/core/SkDraw_atlas.cpp", - "skia/src/core/SkDraw_text.cpp", - "skia/src/core/SkDraw_vertices.cpp", - "skia/src/core/SkDrawable.cpp", - "skia/src/core/SkEdge.cpp", - "skia/src/core/SkEdgeBuilder.cpp", - "skia/src/core/SkEdgeClipper.cpp", - "skia/src/core/SkExecutor.cpp", - "skia/src/core/SkFlattenable.cpp", - "skia/src/core/SkFont.cpp", - "skia/src/core/SkFontDescriptor.cpp", - "skia/src/core/SkFontLCDConfig.cpp", - "skia/src/core/SkFontMgr.cpp", - "skia/src/core/SkFontStream.cpp", - "skia/src/core/SkGaussFilter.cpp", - "skia/src/core/SkGeometry.cpp", - "skia/src/core/SkGlobalInitialization_core.cpp", - "skia/src/core/SkGlyph.cpp", - "skia/src/core/SkGlyphRun.cpp", - "skia/src/core/SkGlyphRunPainter.cpp", - "skia/src/core/SkGpuBlurUtils.cpp", - "skia/src/core/SkGraphics.cpp", - "skia/src/core/SkHalf.cpp", - "skia/src/core/SkICC.cpp", - "skia/src/core/SkImageFilter.cpp", - "skia/src/core/SkImageFilterCache.cpp", - "skia/src/core/SkImageGenerator.cpp", - "skia/src/core/SkImageInfo.cpp", - "skia/src/core/SkLatticeIter.cpp", - "skia/src/core/SkLineClipper.cpp", - "skia/src/core/SkLocalMatrixImageFilter.cpp", - "skia/src/core/SkMD5.cpp", - "skia/src/core/SkMallocPixelRef.cpp", - "skia/src/core/SkMask.cpp", - "skia/src/core/SkMaskBlurFilter.cpp", - "skia/src/core/SkMaskCache.cpp", - "skia/src/core/SkMaskFilter.cpp", - "skia/src/core/SkMaskGamma.cpp", - "skia/src/core/SkMath.cpp", - "skia/src/core/SkMatrix.cpp", - "skia/src/core/SkMatrix44.cpp", - "skia/src/core/SkMatrixImageFilter.cpp", - "skia/src/core/SkMiniRecorder.cpp", - "skia/src/core/SkMipMap.cpp", - "skia/src/core/SkModeColorFilter.cpp", - "skia/src/core/SkMultiPictureDraw.cpp", - "skia/src/core/SkNormalFlatSource.cpp", - "skia/src/core/SkNormalMapSource.cpp", - "skia/src/core/SkNormalSource.cpp", - "skia/src/core/SkOpts.cpp", - "skia/src/core/SkOverdrawCanvas.cpp", - "skia/src/core/SkPaint.cpp", - "skia/src/core/SkPaintPriv.cpp", - "skia/src/core/SkPath.cpp", - "skia/src/core/SkPathEffect.cpp", - "skia/src/core/SkPathMeasure.cpp", - "skia/src/core/SkPathRef.cpp", - "skia/src/core/SkPath_serial.cpp", - "skia/src/core/SkPicture.cpp", - "skia/src/core/SkPictureData.cpp", - "skia/src/core/SkPictureFlat.cpp", - "skia/src/core/SkPictureImageGenerator.cpp", - "skia/src/core/SkPicturePlayback.cpp", - "skia/src/core/SkPictureRecord.cpp", - "skia/src/core/SkPictureRecorder.cpp", - "skia/src/core/SkPixelRef.cpp", - "skia/src/core/SkPixmap.cpp", - "skia/src/core/SkPoint.cpp", - "skia/src/core/SkPoint3.cpp", - "skia/src/core/SkPromiseImageTexture.cpp", - "skia/src/core/SkPtrRecorder.cpp", - "skia/src/core/SkQuadClipper.cpp", - "skia/src/core/SkRRect.cpp", - "skia/src/core/SkRTree.cpp", - "skia/src/core/SkRWBuffer.cpp", - "skia/src/core/SkRasterClip.cpp", - "skia/src/core/SkRasterPipeline.cpp", - "skia/src/core/SkRasterPipelineBlitter.cpp", - "skia/src/core/SkReadBuffer.cpp", - "skia/src/core/SkRecord.cpp", - "skia/src/core/SkRecordDraw.cpp", - "skia/src/core/SkRecordOpts.cpp", - "skia/src/core/SkRecordedDrawable.cpp", - "skia/src/core/SkRecorder.cpp", - "skia/src/core/SkRecords.cpp", - "skia/src/core/SkRect.cpp", - "skia/src/core/SkRegion.cpp", - "skia/src/core/SkRegion_path.cpp", - "skia/src/core/SkRemoteGlyphCache.cpp", - "skia/src/core/SkResourceCache.cpp", - "skia/src/core/SkScalar.cpp", - "skia/src/core/SkScalerContext.cpp", - "skia/src/core/SkScan.cpp", - "skia/src/core/SkScan_AAAPath.cpp", - "skia/src/core/SkScan_AntiPath.cpp", - "skia/src/core/SkScan_Antihair.cpp", - "skia/src/core/SkScan_Hairline.cpp", - "skia/src/core/SkScan_Path.cpp", - "skia/src/core/SkSemaphore.cpp", - "skia/src/core/SkSharedMutex.cpp", - "skia/src/core/SkSpecialImage.cpp", - "skia/src/core/SkSpecialSurface.cpp", - "skia/src/core/SkSpinlock.cpp", - "skia/src/core/SkSpriteBlitter_ARGB32.cpp", - "skia/src/core/SkSpriteBlitter_RGB565.cpp", - "skia/src/core/SkStream.cpp", - "skia/src/core/SkStrike.cpp", - "skia/src/core/SkStrikeCache.cpp", - "skia/src/core/SkStrikeSpec.cpp", - "skia/src/core/SkString.cpp", - "skia/src/core/SkStringUtils.cpp", - "skia/src/core/SkStroke.cpp", - "skia/src/core/SkStrokeRec.cpp", - "skia/src/core/SkStrokerPriv.cpp", - "skia/src/core/SkSurfaceCharacterization.cpp", - "skia/src/core/SkSwizzle.cpp", - "skia/src/core/SkTLS.cpp", - "skia/src/core/SkTSearch.cpp", - "skia/src/core/SkTaskGroup.cpp", - "skia/src/core/SkTextBlob.cpp", - "skia/src/core/SkThreadID.cpp", - "skia/src/core/SkTime.cpp", - "skia/src/core/SkTypeface.cpp", - "skia/src/core/SkTypefaceCache.cpp", - "skia/src/core/SkTypeface_remote.cpp", - "skia/src/core/SkUnPreMultiply.cpp", - "skia/src/core/SkUtils.cpp", - "skia/src/core/SkVM.cpp", - "skia/src/core/SkVMBlitter.cpp", - "skia/src/core/SkVertState.cpp", - "skia/src/core/SkVertices.cpp", - "skia/src/core/SkWriteBuffer.cpp", - "skia/src/core/SkWriter32.cpp", - "skia/src/core/SkXfermode.cpp", - "skia/src/core/SkXfermodeInterpretation.cpp", - "skia/src/core/SkYUVASizeInfo.cpp", - "skia/src/core/SkYUVMath.cpp", - "skia/src/core/SkYUVPlanesCache.cpp", - "skia/src/effects/Sk1DPathEffect.cpp", - "skia/src/effects/Sk2DPathEffect.cpp", - "skia/src/effects/SkColorMatrix.cpp", - "skia/src/effects/SkColorMatrixFilter.cpp", - "skia/src/effects/SkCornerPathEffect.cpp", - "skia/src/effects/SkDashPathEffect.cpp", - "skia/src/effects/SkDiscretePathEffect.cpp", - "skia/src/effects/SkEmbossMask.cpp", - "skia/src/effects/SkEmbossMaskFilter.cpp", - "skia/src/effects/SkHighContrastFilter.cpp", - "skia/src/effects/SkLayerDrawLooper.cpp", - "skia/src/effects/SkLumaColorFilter.cpp", - "skia/src/effects/SkOpPathEffect.cpp", - "skia/src/effects/SkOverdrawColorFilter.cpp", - "skia/src/effects/SkPackBits.cpp", - "skia/src/effects/SkShaderMaskFilter.cpp", - "skia/src/effects/SkTableColorFilter.cpp", - "skia/src/effects/SkTableMaskFilter.cpp", - "skia/src/effects/SkTrimPathEffect.cpp", - "skia/src/effects/imagefilters/SkAlphaThresholdFilter.cpp", - "skia/src/effects/imagefilters/SkArithmeticImageFilter.cpp", - "skia/src/effects/imagefilters/SkBlurImageFilter.cpp", - "skia/src/effects/imagefilters/SkColorFilterImageFilter.cpp", - "skia/src/effects/imagefilters/SkComposeImageFilter.cpp", - "skia/src/effects/imagefilters/SkDisplacementMapEffect.cpp", - "skia/src/effects/imagefilters/SkDropShadowImageFilter.cpp", - "skia/src/effects/imagefilters/SkImageFilters.cpp", - "skia/src/effects/imagefilters/SkImageSource.cpp", - "skia/src/effects/imagefilters/SkLightingImageFilter.cpp", - "skia/src/effects/imagefilters/SkMagnifierImageFilter.cpp", - "skia/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp", - "skia/src/effects/imagefilters/SkMergeImageFilter.cpp", - "skia/src/effects/imagefilters/SkMorphologyImageFilter.cpp", - "skia/src/effects/imagefilters/SkOffsetImageFilter.cpp", - "skia/src/effects/imagefilters/SkPaintImageFilter.cpp", - "skia/src/effects/imagefilters/SkPictureImageFilter.cpp", - "skia/src/effects/imagefilters/SkTileImageFilter.cpp", - "skia/src/effects/imagefilters/SkXfermodeImageFilter.cpp", - "skia/src/image/SkImage.cpp", - "skia/src/image/SkImage_Lazy.cpp", - "skia/src/image/SkImage_Raster.cpp", - "skia/src/image/SkSurface.cpp", - "skia/src/image/SkSurface_Raster.cpp", - "skia/src/images/SkImageEncoder.cpp", - "skia/src/lazy/SkDiscardableMemoryPool.cpp", - "skia/src/pathops/SkAddIntersections.cpp", - "skia/src/pathops/SkDConicLineIntersection.cpp", - "skia/src/pathops/SkDCubicLineIntersection.cpp", - "skia/src/pathops/SkDCubicToQuads.cpp", - "skia/src/pathops/SkDLineIntersection.cpp", - "skia/src/pathops/SkDQuadLineIntersection.cpp", - "skia/src/pathops/SkIntersections.cpp", - "skia/src/pathops/SkOpAngle.cpp", - "skia/src/pathops/SkOpBuilder.cpp", - "skia/src/pathops/SkOpCoincidence.cpp", - "skia/src/pathops/SkOpContour.cpp", - "skia/src/pathops/SkOpCubicHull.cpp", - "skia/src/pathops/SkOpEdgeBuilder.cpp", - "skia/src/pathops/SkOpSegment.cpp", - "skia/src/pathops/SkOpSpan.cpp", - "skia/src/pathops/SkPathOpsAsWinding.cpp", - "skia/src/pathops/SkPathOpsCommon.cpp", - "skia/src/pathops/SkPathOpsConic.cpp", - "skia/src/pathops/SkPathOpsCubic.cpp", - "skia/src/pathops/SkPathOpsCurve.cpp", - "skia/src/pathops/SkPathOpsDebug.cpp", - "skia/src/pathops/SkPathOpsLine.cpp", - "skia/src/pathops/SkPathOpsOp.cpp", - "skia/src/pathops/SkPathOpsQuad.cpp", - "skia/src/pathops/SkPathOpsRect.cpp", - "skia/src/pathops/SkPathOpsSimplify.cpp", - "skia/src/pathops/SkPathOpsTSect.cpp", - "skia/src/pathops/SkPathOpsTightBounds.cpp", - "skia/src/pathops/SkPathOpsTypes.cpp", - "skia/src/pathops/SkPathOpsWinding.cpp", - "skia/src/pathops/SkPathWriter.cpp", - "skia/src/pathops/SkReduceOrder.cpp", - "skia/src/ports/SkDiscardableMemory_none.cpp", - "skia/src/ports/SkGlobalInitialization_default.cpp", - "skia/src/ports/SkImageGenerator_skia.cpp", - "skia/src/ports/SkMemory_malloc.cpp", - "skia/src/ports/SkOSFile_posix.cpp", - "skia/src/ports/SkOSFile_stdio.cpp", - "skia/src/ports/SkOSLibrary_posix.cpp", - "skia/src/ports/SkTLS_pthread.cpp", - "skia/src/sfnt/SkOTTable_name.cpp", - "skia/src/sfnt/SkOTUtils.cpp", - "skia/src/shaders/SkBitmapProcShader.cpp", - "skia/src/shaders/SkColorFilterShader.cpp", - "skia/src/shaders/SkColorShader.cpp", - "skia/src/shaders/SkComposeShader.cpp", - "skia/src/shaders/SkImageShader.cpp", - "skia/src/shaders/SkLightingShader.cpp", - "skia/src/shaders/SkLights.cpp", - "skia/src/shaders/SkLocalMatrixShader.cpp", - "skia/src/shaders/SkPerlinNoiseShader.cpp", - "skia/src/shaders/SkPictureShader.cpp", - "skia/src/shaders/SkRTShader.cpp", - "skia/src/shaders/SkShader.cpp", - "skia/src/shaders/gradients/Sk4fGradientBase.cpp", - "skia/src/shaders/gradients/Sk4fLinearGradient.cpp", - "skia/src/shaders/gradients/SkGradientShader.cpp", - "skia/src/shaders/gradients/SkLinearGradient.cpp", - "skia/src/shaders/gradients/SkRadialGradient.cpp", - "skia/src/shaders/gradients/SkSweepGradient.cpp", - "skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp", - "skia/src/sksl/SkSLASTNode.cpp", - "skia/src/sksl/SkSLByteCode.cpp", - "skia/src/sksl/SkSLByteCodeGenerator.cpp", - "skia/src/sksl/SkSLCFGGenerator.cpp", - "skia/src/sksl/SkSLCompiler.cpp", - "skia/src/sksl/SkSLIRGenerator.cpp", - "skia/src/sksl/SkSLJIT.cpp", - "skia/src/sksl/SkSLLexer.cpp", - "skia/src/sksl/SkSLParser.cpp", - "skia/src/sksl/SkSLString.cpp", - "skia/src/sksl/SkSLUtil.cpp", - "skia/src/sksl/ir/SkSLSetting.cpp", - "skia/src/sksl/ir/SkSLSymbolTable.cpp", - "skia/src/sksl/ir/SkSLType.cpp", - "skia/src/sksl/ir/SkSLVariableReference.cpp", - "skia/src/utils/Sk3D.cpp", - "skia/src/utils/SkAnimCodecPlayer.cpp", - "skia/src/utils/SkBase64.cpp", - "skia/src/utils/SkCamera.cpp", - "skia/src/utils/SkCanvasStack.cpp", - "skia/src/utils/SkCanvasStateUtils.cpp", - "skia/src/utils/SkCharToGlyphCache.cpp", - "skia/src/utils/SkDashPath.cpp", - "skia/src/utils/SkEventTracer.cpp", - "skia/src/utils/SkFloatToDecimal.cpp", - "skia/src/utils/SkFrontBufferedStream.cpp", - "skia/src/utils/SkInterpolator.cpp", - "skia/src/utils/SkJSON.cpp", - "skia/src/utils/SkJSONWriter.cpp", - "skia/src/utils/SkMatrix22.cpp", - "skia/src/utils/SkMultiPictureDocument.cpp", - "skia/src/utils/SkNWayCanvas.cpp", - "skia/src/utils/SkNullCanvas.cpp", - "skia/src/utils/SkOSPath.cpp", - "skia/src/utils/SkPaintFilterCanvas.cpp", - "skia/src/utils/SkParse.cpp", - "skia/src/utils/SkParseColor.cpp", - "skia/src/utils/SkParsePath.cpp", - "skia/src/utils/SkPatchUtils.cpp", - "skia/src/utils/SkPolyUtils.cpp", - "skia/src/utils/SkShadowTessellator.cpp", - "skia/src/utils/SkShadowUtils.cpp", - "skia/src/utils/SkShaperJSONWriter.cpp", - "skia/src/utils/SkTextUtils.cpp", - "skia/src/utils/SkThreadUtils_pthread.cpp", - "skia/src/utils/SkThreadUtils_win.cpp", - "skia/src/utils/SkUTF.cpp", - "skia/src/utils/SkWhitelistTypefaces.cpp", - "skia/src/utils/mac/SkCreateCGImageRef.cpp", - "skia/src/utils/mac/SkStream_mac.cpp", - "skia/src/utils/win/SkAutoCoInitialize.cpp", - "skia/src/utils/win/SkDWrite.cpp", - "skia/src/utils/win/SkDWriteFontFileStream.cpp", - "skia/src/utils/win/SkDWriteGeometrySink.cpp", - "skia/src/utils/win/SkHRESULT.cpp", - "skia/src/utils/win/SkIStream.cpp", - "skia/src/utils/win/SkWGL_win.cpp", - "skia/src/xps/SkXPSDevice.cpp", - "skia/src/xps/SkXPSDocument.cpp", - ] - - defines = [ - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_SUPPORT_PDF", - "SK_HAS_JPEG_LIBRARY", - "SK_HAS_HEIF_LIBRARY", - "SK_HAS_PNG_LIBRARY", - "SK_ENABLE_SKSL_INTERPRETER", - "SK_HAS_WEBP_LIBRARY", - "SK_XML", - "XML_STATIC", - "XML_POOR_ENTROPY", - "SK_DISABLE_AAA", - "SK_DISABLE_READBUFFER", - "SK_DISABLE_EFFECT_DESERIALIZATION", - "SK_DISABLE_LEGACY_SHADERCONTEXT", - "SK_DISABLE_LOWP_RASTER_PIPELINE", - "SK_FORCE_RASTER_PIPELINE_BLITTER", - ] - - if (is_standard_system) { - defines += [ - "SK_SUPPORT_ATLAS_TEXT=0", - "SK_SUPPORT_GPU=0", - ] - } else { - defines += [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GL", - ] - } - - if (enable_dump_drawcmd) { - defines += [ "DUMP_DRAW_CMD" ] - } - - if (use_mingw_win) { - defines += ace_windows_defines - - sources -= [ - "skia/src/ports/SkOSFile_posix.cpp", - "skia/src/ports/SkOSLibrary_posix.cpp", - "skia/src/ports/SkTLS_pthread.cpp", - - # SkXPS - Experimental XPS backend, maybe we can remove this. - "skia/src/xps/SkXPSDevice.cpp", - "skia/src/xps/SkXPSDocument.cpp", - ] - - sources += [ - "skia/src/ports/SkDebug_win.cpp", - "skia/src/ports/SkImageEncoder_WIC.cpp", - "skia/src/ports/SkImageGeneratorWIC.cpp", - "skia/src/ports/SkOSFile_win.cpp", - "skia/src/ports/SkOSLibrary_win.cpp", - "skia/src/ports/SkTLS_win.cpp", - ] - - libs = [ - "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libfontsub.a", - "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libole32.a", - "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/liboleaut32.a", - "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libuser32.a", - "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libusp10.a", - "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libwindowscodecs.a", - ] - } else if (use_mac) { - sources += [ - "skia/src/ports/SkDebug_stdio.cpp", - "skia/src/ports/SkFontHost_mac.cpp", - "skia/src/ports/SkImageEncoder_CG.cpp", - "skia/src/ports/SkImageGeneratorCG.cpp", - ] - - libs = [ - # AppKit symbols NSFontWeightXXX may be dlsym'ed. - "AppKit.framework", - "ApplicationServices.framework", - "OpenGL.framework", - ] - } else { - if (target_cpu != "arm") { - defines += [ "SKVM_JIT" ] - } - - if (is_standard_system) { - defines += ace_ohos_defines - sources += [ "skia/src/ports/SkDebug_ohos.cpp" ] - external_deps = [ "hiviewdfx_hilog_native:libhilog" ] - } - } -} - -config("ace_skia_ext_config") { - visibility = [ ":*" ] - include_dirs = [ - "//third_party/aosp/external/skia/src/core", - "//third_party/aosp/external/skia/src/opts", - "//third_party/aosp/external/skia/src/shaders", - "//third_party/aosp/external/skia/src/gpu", - "$libs_root/shared_library/${target_os}_${target_cpu}/include/frameworks/native/libs/nativewindow/include", - "$libs_root/shared_library/${target_os}_${target_cpu}/include/frameworks/native/libs/arect/include", - "$flutter_root", - "skia", - "engine", - ] -} - -ohos_source_set("ace_skia_ext") { - configs = [ - ":ace_skia_ext_config", - ":flutter_config", - ] - - sources = [ - # enable ext utils - "//third_party/aosp/external/skia/src/core/SkArenaAlloc.cpp", - "//third_party/aosp/external/skia/src/core/SkOpts.cpp", - "//third_party/aosp/external/skia/src/core/SkTSearch.cpp", - "//third_party/aosp/external/skia/src/utils/SkBase64.cpp", - "//third_party/aosp/external/skia/src/utils/SkParsePath.cpp", - - # use ohos fontmgr - "skia/src/ports/SkFontMgr_ohos.cpp", - ] - - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - defines = [ "OHOS_ACE_SKIA_EXT" ] - - deps = [ - ":ace_skia_opts", - ":ace_svg_model_ohos", - ":ace_xml_ohos", - ] - - if (use_mingw_win) { - cflags_cc += [ "-Wno-unknown-pragmas" ] - } -} - -config("ace_jpeg_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia", - "skia/third_party/libjpeg-turbo", - "skia/third_party/externals/libjpeg-turbo", - ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_jpeg") { - configs = [ ":ace_jpeg_config" ] - configs += [ ":reduce_eh_frame_config" ] - - sources = [ - "skia/src/codec/SkJpegCodec.cpp", - "skia/src/codec/SkJpegDecoderMgr.cpp", - "skia/src/codec/SkJpegUtility.cpp", - "skia/src/images/SkJPEGWriteUtility.cpp", - "skia/src/images/SkJpegEncoder.cpp", - ] - - defines = [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_HAS_JPEG_LIBRARY", - ] -} - -config("ace_skcms_config") { - visibility = [ ":*" ] - include_dirs = [ "skia/include/third_party/skcms" ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-w", - "-std=c11", - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_skcms") { - configs = [ ":ace_skcms_config" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ "skia/third_party/skcms/skcms.cc" ] -} - -config("pdf_compile_flags") { - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - "-Wno-extra-semi", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - "-Wno-extra-semi", - ] - if (use_mingw_win) { - cflags_cc += [ "-Wno-unknown-pragmas" ] - } -} - -config("ace_pdf_config_ohos") { - visibility = [ ":*" ] - include_dirs = ace_pdf_config_ohos_include_dirs -} - -config("ace_pdf_config_windows") { - visibility = [ ":*" ] - include_dirs = ace_pdf_config_preview_include_dirs -} - -config("ace_pdf_config_mac") { - visibility = [ ":*" ] - include_dirs = ace_pdf_config_preview_include_dirs -} - -template("ace_pdf") { - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - configs = [ - ":ace_pdf_config_$platform", - ":flutter_config", - ":pdf_compile_flags", - ] - defines += invoker.defines - - deps = [ "//third_party/zlib:libz" ] - - sources = [ - "skia/src/pdf/SkClusterator.cpp", - "skia/src/pdf/SkDeflate.cpp", - "skia/src/pdf/SkJpegInfo.cpp", - "skia/src/pdf/SkKeyedImage.cpp", - "skia/src/pdf/SkPDFBitmap.cpp", - "skia/src/pdf/SkPDFDevice.cpp", - "skia/src/pdf/SkPDFDocument.cpp", - "skia/src/pdf/SkPDFFont.cpp", - "skia/src/pdf/SkPDFFormXObject.cpp", - "skia/src/pdf/SkPDFGradientShader.cpp", - "skia/src/pdf/SkPDFGraphicStackState.cpp", - "skia/src/pdf/SkPDFGraphicState.cpp", - "skia/src/pdf/SkPDFMakeCIDGlyphWidthsArray.cpp", - "skia/src/pdf/SkPDFMakeToUnicodeCmap.cpp", - "skia/src/pdf/SkPDFMetadata.cpp", - "skia/src/pdf/SkPDFResourceDict.cpp", - "skia/src/pdf/SkPDFShader.cpp", - "skia/src/pdf/SkPDFSubsetFont.cpp", - "skia/src/pdf/SkPDFTag.cpp", - "skia/src/pdf/SkPDFType1Font.cpp", - "skia/src/pdf/SkPDFTypes.cpp", - "skia/src/pdf/SkPDFUtils.cpp", - ] - - if (use_mingw_win) { - sources += [ "skia/third_party/icu/SkLoadICU.cpp" ] - } - - defines += [ - "SK_PDF_USE_SFNTLY", - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_SUPPORT_PDF", - "SK_HAS_JPEG_LIBRARY", - "U_USING_ICU_NAMESPACE=0", - "SK_USING_THIRD_PARTY_ICU", - ] - } -} - -ace_pdf("ace_pdf_ohos") { - defines = ace_ohos_defines - platform = "ohos" -} - -ace_pdf("ace_pdf_windows") { - defines = ace_windows_defines - platform = "windows" -} - -ace_pdf("ace_pdf_mac") { - defines = ace_mac_defines - platform = "mac" -} - -config("ace_gpu_config") { - visibility = [ ":*" ] - include_dirs = [ "skia" ] - - if (use_mingw_win) { - include_dirs += [ "skia/third_party/externals/angle2/include" ] - } - - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - "-Wno-extra-semi", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - "-Wno-extra-semi", - ] - if (use_mingw_win) { - cflags_cc += [ - "-Wno-unknown-pragmas", - "-Wno-used-but-marked-unused", - ] - } -} - -ohos_source_set("ace_gpu") { - configs = [ ":ace_gpu_config" ] - configs += [ ":reduce_eh_frame_config" ] - - sources = [ - "skia/src/atlastext/SkAtlasTextContext.cpp", - "skia/src/atlastext/SkAtlasTextTarget.cpp", - "skia/src/atlastext/SkInternalAtlasTextContext.cpp", - "skia/src/gpu/GrAHardwareBufferImageGenerator.cpp", - "skia/src/gpu/GrAHardwareBufferUtils.cpp", - "skia/src/gpu/GrAuditTrail.cpp", - "skia/src/gpu/GrBackendSurface.cpp", - "skia/src/gpu/GrBackendTextureImageGenerator.cpp", - "skia/src/gpu/GrBitmapTextureMaker.cpp", - "skia/src/gpu/GrBlurUtils.cpp", - "skia/src/gpu/GrBufferAllocPool.cpp", - "skia/src/gpu/GrCaps.cpp", - "skia/src/gpu/GrClipStackClip.cpp", - "skia/src/gpu/GrColorSpaceInfo.cpp", - "skia/src/gpu/GrColorSpaceXform.cpp", - "skia/src/gpu/GrContext.cpp", - "skia/src/gpu/GrContextPriv.cpp", - "skia/src/gpu/GrContextThreadSafeProxy.cpp", - "skia/src/gpu/GrContext_Base.cpp", - "skia/src/gpu/GrDDLContext.cpp", - "skia/src/gpu/GrDataUtils.cpp", - "skia/src/gpu/GrDefaultGeoProcFactory.cpp", - "skia/src/gpu/GrDeinstantiateProxyTracker.cpp", - "skia/src/gpu/GrDistanceFieldGenFromVector.cpp", - "skia/src/gpu/GrDrawOpAtlas.cpp", - "skia/src/gpu/GrDrawOpTest.cpp", - "skia/src/gpu/GrDrawingManager.cpp", - "skia/src/gpu/GrDriverBugWorkarounds.cpp", - "skia/src/gpu/GrFixedClip.cpp", - "skia/src/gpu/GrFragmentProcessor.cpp", - "skia/src/gpu/GrGpu.cpp", - "skia/src/gpu/GrGpuBuffer.cpp", - "skia/src/gpu/GrGpuCommandBuffer.cpp", - "skia/src/gpu/GrGpuResource.cpp", - "skia/src/gpu/GrImageContext.cpp", - "skia/src/gpu/GrImageTextureMaker.cpp", - "skia/src/gpu/GrLegacyDirectContext.cpp", - "skia/src/gpu/GrMemoryPool.cpp", - "skia/src/gpu/GrOnFlushResourceProvider.cpp", - "skia/src/gpu/GrOpFlushState.cpp", - "skia/src/gpu/GrOpList.cpp", - "skia/src/gpu/GrPaint.cpp", - "skia/src/gpu/GrPath.cpp", - "skia/src/gpu/GrPathProcessor.cpp", - "skia/src/gpu/GrPathRenderer.cpp", - "skia/src/gpu/GrPathRendererChain.cpp", - "skia/src/gpu/GrPathRendering.cpp", - "skia/src/gpu/GrPipeline.cpp", - "skia/src/gpu/GrPrimitiveProcessor.cpp", - "skia/src/gpu/GrProcessor.cpp", - "skia/src/gpu/GrProcessorAnalysis.cpp", - "skia/src/gpu/GrProcessorSet.cpp", - "skia/src/gpu/GrProcessorUnitTest.cpp", - "skia/src/gpu/GrProgramDesc.cpp", - "skia/src/gpu/GrProxyProvider.cpp", - "skia/src/gpu/GrRecordingContext.cpp", - "skia/src/gpu/GrRectanizer_pow2.cpp", - "skia/src/gpu/GrRectanizer_skyline.cpp", - "skia/src/gpu/GrReducedClip.cpp", - "skia/src/gpu/GrRenderTarget.cpp", - "skia/src/gpu/GrRenderTargetContext.cpp", - "skia/src/gpu/GrRenderTargetOpList.cpp", - "skia/src/gpu/GrRenderTargetProxy.cpp", - "skia/src/gpu/GrRenderTask.cpp", - "skia/src/gpu/GrResourceAllocator.cpp", - "skia/src/gpu/GrResourceCache.cpp", - "skia/src/gpu/GrResourceProvider.cpp", - "skia/src/gpu/GrSWMaskHelper.cpp", - "skia/src/gpu/GrSamplePatternDictionary.cpp", - "skia/src/gpu/GrShaderCaps.cpp", - "skia/src/gpu/GrShaderUtils.cpp", - "skia/src/gpu/GrShaderVar.cpp", - "skia/src/gpu/GrSoftwarePathRenderer.cpp", - "skia/src/gpu/GrStencilAttachment.cpp", - "skia/src/gpu/GrStencilSettings.cpp", - "skia/src/gpu/GrStyle.cpp", - "skia/src/gpu/GrSurface.cpp", - "skia/src/gpu/GrSurfaceContext.cpp", - "skia/src/gpu/GrSurfaceProxy.cpp", - "skia/src/gpu/GrSwizzle.cpp", - "skia/src/gpu/GrTessellator.cpp", - "skia/src/gpu/GrTestUtils.cpp", - "skia/src/gpu/GrTexture.cpp", - "skia/src/gpu/GrTextureAdjuster.cpp", - "skia/src/gpu/GrTextureContext.cpp", - "skia/src/gpu/GrTextureMaker.cpp", - "skia/src/gpu/GrTextureOpList.cpp", - "skia/src/gpu/GrTextureProducer.cpp", - "skia/src/gpu/GrTextureProxy.cpp", - "skia/src/gpu/GrTextureRenderTargetProxy.cpp", - "skia/src/gpu/GrTextureResolveRenderTask.cpp", - "skia/src/gpu/GrXferProcessor.cpp", - "skia/src/gpu/GrYUVProvider.cpp", - "skia/src/gpu/SkGpuDevice.cpp", - "skia/src/gpu/SkGpuDevice_drawTexture.cpp", - "skia/src/gpu/SkGr.cpp", - "skia/src/gpu/ccpr/GrCCAtlas.cpp", - "skia/src/gpu/ccpr/GrCCClipPath.cpp", - "skia/src/gpu/ccpr/GrCCClipProcessor.cpp", - "skia/src/gpu/ccpr/GrCCConicShader.cpp", - "skia/src/gpu/ccpr/GrCCCoverageProcessor.cpp", - "skia/src/gpu/ccpr/GrCCCubicShader.cpp", - "skia/src/gpu/ccpr/GrCCDrawPathsOp.cpp", - "skia/src/gpu/ccpr/GrCCFillGeometry.cpp", - "skia/src/gpu/ccpr/GrCCFiller.cpp", - "skia/src/gpu/ccpr/GrCCPathCache.cpp", - "skia/src/gpu/ccpr/GrCCPathProcessor.cpp", - "skia/src/gpu/ccpr/GrCCPerFlushResources.cpp", - "skia/src/gpu/ccpr/GrCCQuadraticShader.cpp", - "skia/src/gpu/ccpr/GrCCStrokeGeometry.cpp", - "skia/src/gpu/ccpr/GrCCStroker.cpp", - "skia/src/gpu/ccpr/GrCoverageCountingPathRenderer.cpp", - "skia/src/gpu/ccpr/GrGSCoverageProcessor.cpp", - "skia/src/gpu/ccpr/GrOctoBounds.cpp", - "skia/src/gpu/ccpr/GrSampleMaskProcessor.cpp", - "skia/src/gpu/ccpr/GrStencilAtlasOp.cpp", - "skia/src/gpu/ccpr/GrVSCoverageProcessor.cpp", - "skia/src/gpu/effects/GrBezierEffect.cpp", - "skia/src/gpu/effects/GrBicubicEffect.cpp", - "skia/src/gpu/effects/GrBitmapTextGeoProc.cpp", - "skia/src/gpu/effects/GrConvexPolyEffect.cpp", - "skia/src/gpu/effects/GrCoverageSetOpXP.cpp", - "skia/src/gpu/effects/GrCustomXfermode.cpp", - "skia/src/gpu/effects/GrDisableColorXP.cpp", - "skia/src/gpu/effects/GrDistanceFieldGeoProc.cpp", - "skia/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp", - "skia/src/gpu/effects/GrMatrixConvolutionEffect.cpp", - "skia/src/gpu/effects/GrOvalEffect.cpp", - "skia/src/gpu/effects/GrPorterDuffXferProcessor.cpp", - "skia/src/gpu/effects/GrRRectEffect.cpp", - "skia/src/gpu/effects/GrSRGBEffect.cpp", - "skia/src/gpu/effects/GrShadowGeoProc.cpp", - "skia/src/gpu/effects/GrSkSLFP.cpp", - "skia/src/gpu/effects/GrTextureDomain.cpp", - "skia/src/gpu/effects/GrXfermodeFragmentProcessor.cpp", - "skia/src/gpu/effects/GrYUVtoRGBEffect.cpp", - "skia/src/gpu/effects/generated/GrAARectEffect.cpp", - "skia/src/gpu/effects/generated/GrAlphaThresholdFragmentProcessor.cpp", - "skia/src/gpu/effects/generated/GrBlurredEdgeFragmentProcessor.cpp", - "skia/src/gpu/effects/generated/GrCircleBlurFragmentProcessor.cpp", - "skia/src/gpu/effects/generated/GrCircleEffect.cpp", - "skia/src/gpu/effects/generated/GrColorMatrixFragmentProcessor.cpp", - "skia/src/gpu/effects/generated/GrComposeLerpEffect.cpp", - "skia/src/gpu/effects/generated/GrComposeLerpRedEffect.cpp", - "skia/src/gpu/effects/generated/GrConfigConversionEffect.cpp", - "skia/src/gpu/effects/generated/GrConstColorProcessor.cpp", - "skia/src/gpu/effects/generated/GrEllipseEffect.cpp", - "skia/src/gpu/effects/generated/GrLumaColorFilterEffect.cpp", - "skia/src/gpu/effects/generated/GrMagnifierEffect.cpp", - "skia/src/gpu/effects/generated/GrMixerEffect.cpp", - "skia/src/gpu/effects/generated/GrOverrideInputFragmentProcessor.cpp", - "skia/src/gpu/effects/generated/GrPremulInputFragmentProcessor.cpp", - "skia/src/gpu/effects/generated/GrRRectBlurEffect.cpp", - "skia/src/gpu/effects/generated/GrRectBlurEffect.cpp", - "skia/src/gpu/effects/generated/GrSimpleTextureEffect.cpp", - "skia/src/gpu/geometry/GrPathUtils.cpp", - "skia/src/gpu/geometry/GrQuad.cpp", - "skia/src/gpu/geometry/GrQuadUtils.cpp", - "skia/src/gpu/geometry/GrShape.cpp", - "skia/src/gpu/gl/GrGLAssembleGLESInterfaceAutogen.cpp", - "skia/src/gpu/gl/GrGLAssembleGLInterfaceAutogen.cpp", - "skia/src/gpu/gl/GrGLAssembleHelpers.cpp", - "skia/src/gpu/gl/GrGLAssembleInterface.cpp", - "skia/src/gpu/gl/GrGLAssembleWebGLInterfaceAutogen.cpp", - "skia/src/gpu/gl/GrGLBuffer.cpp", - "skia/src/gpu/gl/GrGLCaps.cpp", - "skia/src/gpu/gl/GrGLContext.cpp", - "skia/src/gpu/gl/GrGLExtensions.cpp", - "skia/src/gpu/gl/GrGLGLSL.cpp", - "skia/src/gpu/gl/GrGLGpu.cpp", - "skia/src/gpu/gl/GrGLGpuCommandBuffer.cpp", - "skia/src/gpu/gl/GrGLGpuProgramCache.cpp", - "skia/src/gpu/gl/GrGLInterfaceAutogen.cpp", - "skia/src/gpu/gl/GrGLPath.cpp", - "skia/src/gpu/gl/GrGLPathRendering.cpp", - "skia/src/gpu/gl/GrGLProgram.cpp", - "skia/src/gpu/gl/GrGLProgramDataManager.cpp", - "skia/src/gpu/gl/GrGLRenderTarget.cpp", - "skia/src/gpu/gl/GrGLSemaphore.cpp", - "skia/src/gpu/gl/GrGLStencilAttachment.cpp", - "skia/src/gpu/gl/GrGLTexture.cpp", - "skia/src/gpu/gl/GrGLTextureRenderTarget.cpp", - "skia/src/gpu/gl/GrGLTypesPriv.cpp", - "skia/src/gpu/gl/GrGLUniformHandler.cpp", - "skia/src/gpu/gl/GrGLUtil.cpp", - "skia/src/gpu/gl/GrGLVaryingHandler.cpp", - "skia/src/gpu/gl/GrGLVertexArray.cpp", - "skia/src/gpu/gl/builders/GrGLProgramBuilder.cpp", - "skia/src/gpu/gl/builders/GrGLShaderStringBuilder.cpp", - "skia/src/gpu/gl/egl/GrGLMakeNativeInterface_egl.cpp", - "skia/src/gpu/glsl/GrGLSL.cpp", - "skia/src/gpu/glsl/GrGLSLBlend.cpp", - "skia/src/gpu/glsl/GrGLSLFragmentProcessor.cpp", - "skia/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp", - "skia/src/gpu/glsl/GrGLSLGeometryProcessor.cpp", - "skia/src/gpu/glsl/GrGLSLPrimitiveProcessor.cpp", - "skia/src/gpu/glsl/GrGLSLProgramBuilder.cpp", - "skia/src/gpu/glsl/GrGLSLProgramDataManager.cpp", - "skia/src/gpu/glsl/GrGLSLShaderBuilder.cpp", - "skia/src/gpu/glsl/GrGLSLUtil.cpp", - "skia/src/gpu/glsl/GrGLSLVarying.cpp", - "skia/src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp", - "skia/src/gpu/glsl/GrGLSLXferProcessor.cpp", - "skia/src/gpu/gradients/GrGradientBitmapCache.cpp", - "skia/src/gpu/gradients/GrGradientShader.cpp", - "skia/src/gpu/gradients/generated/GrClampedGradientEffect.cpp", - "skia/src/gpu/gradients/generated/GrDualIntervalGradientColorizer.cpp", - "skia/src/gpu/gradients/generated/GrLinearGradientLayout.cpp", - "skia/src/gpu/gradients/generated/GrRadialGradientLayout.cpp", - "skia/src/gpu/gradients/generated/GrSingleIntervalGradientColorizer.cpp", - "skia/src/gpu/gradients/generated/GrSweepGradientLayout.cpp", - "skia/src/gpu/gradients/generated/GrTextureGradientColorizer.cpp", - "skia/src/gpu/gradients/generated/GrTiledGradientEffect.cpp", - "skia/src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.cpp", - "skia/src/gpu/gradients/generated/GrUnrolledBinaryGradientColorizer.cpp", - "skia/src/gpu/mock/GrMockCaps.cpp", - "skia/src/gpu/mock/GrMockGpu.cpp", - "skia/src/gpu/mock/GrMockTypes.cpp", - "skia/src/gpu/ops/GrAAConvexPathRenderer.cpp", - "skia/src/gpu/ops/GrAAConvexTessellator.cpp", - "skia/src/gpu/ops/GrAAHairLinePathRenderer.cpp", - "skia/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp", - "skia/src/gpu/ops/GrAtlasTextOp.cpp", - "skia/src/gpu/ops/GrClearOp.cpp", - "skia/src/gpu/ops/GrClearStencilClipOp.cpp", - "skia/src/gpu/ops/GrCopySurfaceOp.cpp", - "skia/src/gpu/ops/GrDashLinePathRenderer.cpp", - "skia/src/gpu/ops/GrDashOp.cpp", - "skia/src/gpu/ops/GrDebugMarkerOp.cpp", - "skia/src/gpu/ops/GrDefaultPathRenderer.cpp", - "skia/src/gpu/ops/GrDrawAtlasOp.cpp", - "skia/src/gpu/ops/GrDrawPathOp.cpp", - "skia/src/gpu/ops/GrDrawVerticesOp.cpp", - "skia/src/gpu/ops/GrDrawableOp.cpp", - "skia/src/gpu/ops/GrFillRRectOp.cpp", - "skia/src/gpu/ops/GrFillRectOp.cpp", - "skia/src/gpu/ops/GrLatticeOp.cpp", - "skia/src/gpu/ops/GrMeshDrawOp.cpp", - "skia/src/gpu/ops/GrOp.cpp", - "skia/src/gpu/ops/GrOvalOpFactory.cpp", - "skia/src/gpu/ops/GrQuadPerEdgeAA.cpp", - "skia/src/gpu/ops/GrRegionOp.cpp", - "skia/src/gpu/ops/GrSemaphoreOp.cpp", - "skia/src/gpu/ops/GrShadowRRectOp.cpp", - "skia/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp", - "skia/src/gpu/ops/GrSmallPathRenderer.cpp", - "skia/src/gpu/ops/GrStencilAndCoverPathRenderer.cpp", - "skia/src/gpu/ops/GrStencilPathOp.cpp", - "skia/src/gpu/ops/GrStrokeRectOp.cpp", - "skia/src/gpu/ops/GrTessellatingPathRenderer.cpp", - "skia/src/gpu/ops/GrTextureOp.cpp", - "skia/src/gpu/ops/GrTransferFromOp.cpp", - "skia/src/gpu/text/GrAtlasManager.cpp", - "skia/src/gpu/text/GrDistanceFieldAdjustTable.cpp", - "skia/src/gpu/text/GrSDFMaskFilter.cpp", - "skia/src/gpu/text/GrStrikeCache.cpp", - "skia/src/gpu/text/GrTextBlob.cpp", - "skia/src/gpu/text/GrTextBlobCache.cpp", - "skia/src/gpu/text/GrTextBlobVertexRegenerator.cpp", - "skia/src/gpu/text/GrTextContext.cpp", - "skia/src/image/SkImage_Gpu.cpp", - "skia/src/image/SkImage_GpuBase.cpp", - "skia/src/image/SkImage_GpuYUVA.cpp", - "skia/src/image/SkSurface_Gpu.cpp", - "skia/src/sksl/SkSLCPPCodeGenerator.cpp", - "skia/src/sksl/SkSLCPPUniformCTypes.cpp", - "skia/src/sksl/SkSLGLSLCodeGenerator.cpp", - "skia/src/sksl/SkSLHCodeGenerator.cpp", - "skia/src/sksl/SkSLMetalCodeGenerator.cpp", - "skia/src/sksl/SkSLOutputStream.cpp", - "skia/src/sksl/SkSLPipelineStageCodeGenerator.cpp", - "skia/src/sksl/SkSLSPIRVCodeGenerator.cpp", - ] - - defines = [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_GL", - "SK_DISABLE_REDUCE_OPLIST_SPLITTING", - ] - - if (use_mingw_win) { - defines += [ "SK_BUILD_FOR_WIN" ] - - sources -= [ "skia/src/gpu/gl/egl/GrGLMakeNativeInterface_egl.cpp" ] - sources += [ "skia/src/gpu/gl/win/GrGLMakeNativeInterface_win.cpp" ] - - libs = [ "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libopengl32.a" ] - } else if (use_mac) { - defines += [ "SK_ASSUME_GL=1" ] - - sources -= [ "skia/src/gpu/gl/egl/GrGLMakeNativeInterface_egl.cpp" ] - sources += [ "skia/src/gpu/gl/mac/GrGLMakeNativeInterface_mac.cpp" ] - } -} - -config("ace_typeface_freetype_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia", - "skia/third_party/externals/freetype/include", - ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_typeface_freetype") { - configs = [ - ":ace_typeface_freetype_config", - ":flutter_config", - ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "skia/src/ports/SkFontHost_FreeType.cpp", - "skia/src/ports/SkFontHost_FreeType_common.cpp", - ] - - defines = [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_FREETYPE_MINIMUM_RUNTIME_VERSION=(((FREETYPE_MAJOR) << 24) | ((FREETYPE_MINOR) << 16) | ((FREETYPE_PATCH) << 8))", - ] -} - -config("ace_gif_config") { - visibility = [ ":*" ] - include_dirs = [ "skia" ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_gif") { - configs = [ ":ace_gif_config" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "skia/src/codec/SkGifCodec.cpp", - "skia/third_party/gif/SkGifImageReader.cpp", - ] - - defines = [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - ] -} - -config("ace_xml_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia", - "//third_party/expat/lib", - ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] - if (use_mingw_win || use_mac) { - cflags_cc += [ "-Wno-unknown-pragmas" ] - } -} - -template("ace_xml") { - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - configs = [ ":ace_xml_config" ] - configs += [ ":reduce_eh_frame_config" ] - - defines += invoker.defines - - sources = [ - "skia/src/xml/SkXMLParser.cpp", - "skia/src/xml/SkXMLWriter.cpp", - ] - - defines += [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_XML", - "XML_STATIC", - "XML_POOR_ENTROPY", - ] - } -} - -ace_xml("ace_xml_ohos") { - defines = ace_ohos_defines -} - -ace_xml("ace_xml_windows") { - defines = ace_windows_defines -} - -ace_xml("ace_xml_mac") { - defines = ace_mac_defines -} - -config("ace_fontmgr_config") { - visibility = [ ":*" ] - include_dirs = [ - "$flutter_root", - "skia", - "//third_party/expat/lib", - ] - - if (is_standard_system) { - include_dirs += [ - "skia/include/private", - "skia/include/core", - "skia/src/core", - "skia/src/ports", - "skia/src/ports/skia_ohos", - "//third_party/jsoncpp/include", - "//utils/native/base/include", - ] - } - - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] - if (use_mingw_win) { - cflags_cc += [ "-Wno-unknown-pragmas" ] - } -} - -template("ace_fontmgr") { - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - configs = [ - ":ace_fontmgr_config", - ":flutter_config", - ] - - defines += invoker.defines - - if (use_mingw_win) { - sources = [ - "skia/src/fonts/SkFontMgr_indirect.cpp", - "skia/src/ports/SkFontHost_win.cpp", - "skia/src/ports/SkFontMgr_win_dw.cpp", - "skia/src/ports/SkFontMgr_win_dw_factory.cpp", - "skia/src/ports/SkScalerContext_win_dw.cpp", - "skia/src/ports/SkTypeface_win_dw.cpp", - ] - - libs = [ - "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libgdi32.a", - "//prebuilts/mingw-w64/ohos/linux-x86_64/clang-mingw/x86_64-w64-mingw32/lib/libuuid.a", - ] - } else if (is_standard_system) { - sources = [] - deps = [ ":ace_fontmgr_standard" ] - } else if (use_mac) { - # No source file on the mac platform - sources = [] - } - - defines += [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "XML_STATIC", - "XML_POOR_ENTROPY", - ] - - if (use_mingw_win) { - defines += [ "SK_BUILD_FOR_WIN" ] - } - } -} - -ace_fontmgr("ace_fontmgr_ohos") { - defines = ace_ohos_defines -} - -ace_fontmgr("ace_fontmgr_windows") { - defines = ace_windows_defines -} - -ace_fontmgr("ace_fontmgr_mac") { - defines = ace_mac_defines -} - -ohos_source_set("ace_fontmgr_standard") { - configs = [ - ":ace_fontmgr_config", - ":flutter_config", - ] - - sources = [ - "skia/src/ports/skia_ohos/FontConfig_ohos.cpp", - "skia/src/ports/skia_ohos/SkFontMgr_ohos.cpp", - "skia/src/ports/skia_ohos/SkFontMgr_ohos_factory.cpp", - "skia/src/ports/skia_ohos/SkFontStyleSet_ohos.cpp", - "skia/src/ports/skia_ohos/SkTypeface_ohos.cpp", - ] - - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - "-Wsign-compare", - "-Wno-vla", - "-Wno-tautological-unsigned-enum-zero-compare", - ] - - deps = [ - ":ace_fontconfig.json", - ":ace_jsoncpp", - "//utils/resources:ohos_fonts", - ] - - defines = [ "SK_BUILD_FONT_MGR_FOR_OHOS" ] -} - -ohos_prebuilt_etc("ace_fontconfig.json") { - source = "skia/src/ports/skia_ohos/config/fontconfig.json" - subsystem_name = "ace" - part_name = "ace_engine_standard" -} - -config("ace_jsoncpp_config") { - visibility = [ ":*" ] - include_dirs = [ "//third_party/jsoncpp/include" ] -} - -ohos_source_set("ace_jsoncpp") { - configs = [ ":ace_jsoncpp_config" ] - - sources = [ - "//third_party/jsoncpp/src/lib_json/json_reader.cpp", - "//third_party/jsoncpp/src/lib_json/json_value.cpp", - "//third_party/jsoncpp/src/lib_json/json_writer.cpp", - ] - - cflags_cc = [ - "-DJSON_USE_EXCEPTION=0", - "-Wall", - "-Werror", - "-Wno-implicit-fallthrough", - ] -} - -config("ace_libjpeg_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia/third_party/libjpeg-turbo", - "skia/third_party/externals/libjpeg-turbo", - ] - cflags = [ - "-w", - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_libjpeg") { - configs = [ ":ace_libjpeg_config" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "skia/third_party/externals/libjpeg-turbo/jaricom.c", - "skia/third_party/externals/libjpeg-turbo/jcapimin.c", - "skia/third_party/externals/libjpeg-turbo/jcapistd.c", - "skia/third_party/externals/libjpeg-turbo/jcarith.c", - "skia/third_party/externals/libjpeg-turbo/jccoefct.c", - "skia/third_party/externals/libjpeg-turbo/jccolor.c", - "skia/third_party/externals/libjpeg-turbo/jcdctmgr.c", - "skia/third_party/externals/libjpeg-turbo/jchuff.c", - "skia/third_party/externals/libjpeg-turbo/jcinit.c", - "skia/third_party/externals/libjpeg-turbo/jcmainct.c", - "skia/third_party/externals/libjpeg-turbo/jcmarker.c", - "skia/third_party/externals/libjpeg-turbo/jcmaster.c", - "skia/third_party/externals/libjpeg-turbo/jcomapi.c", - "skia/third_party/externals/libjpeg-turbo/jcparam.c", - "skia/third_party/externals/libjpeg-turbo/jcphuff.c", - "skia/third_party/externals/libjpeg-turbo/jcprepct.c", - "skia/third_party/externals/libjpeg-turbo/jcsample.c", - "skia/third_party/externals/libjpeg-turbo/jdapimin.c", - "skia/third_party/externals/libjpeg-turbo/jdapistd.c", - "skia/third_party/externals/libjpeg-turbo/jdarith.c", - "skia/third_party/externals/libjpeg-turbo/jdcoefct.c", - "skia/third_party/externals/libjpeg-turbo/jdcolor.c", - "skia/third_party/externals/libjpeg-turbo/jddctmgr.c", - "skia/third_party/externals/libjpeg-turbo/jdhuff.c", - "skia/third_party/externals/libjpeg-turbo/jdinput.c", - "skia/third_party/externals/libjpeg-turbo/jdmainct.c", - "skia/third_party/externals/libjpeg-turbo/jdmarker.c", - "skia/third_party/externals/libjpeg-turbo/jdmaster.c", - "skia/third_party/externals/libjpeg-turbo/jdmerge.c", - "skia/third_party/externals/libjpeg-turbo/jdphuff.c", - "skia/third_party/externals/libjpeg-turbo/jdpostct.c", - "skia/third_party/externals/libjpeg-turbo/jdsample.c", - "skia/third_party/externals/libjpeg-turbo/jerror.c", - "skia/third_party/externals/libjpeg-turbo/jfdctflt.c", - "skia/third_party/externals/libjpeg-turbo/jfdctfst.c", - "skia/third_party/externals/libjpeg-turbo/jfdctint.c", - "skia/third_party/externals/libjpeg-turbo/jidctflt.c", - "skia/third_party/externals/libjpeg-turbo/jidctfst.c", - "skia/third_party/externals/libjpeg-turbo/jidctint.c", - "skia/third_party/externals/libjpeg-turbo/jidctred.c", - "skia/third_party/externals/libjpeg-turbo/jmemmgr.c", - "skia/third_party/externals/libjpeg-turbo/jmemnobs.c", - "skia/third_party/externals/libjpeg-turbo/jquant1.c", - "skia/third_party/externals/libjpeg-turbo/jquant2.c", - "skia/third_party/externals/libjpeg-turbo/jutils.c", - ] - - if (use_mingw_win || target_cpu == "x86_64" || use_mac) { - sources += [ "skia/third_party/externals/libjpeg-turbo/jsimd_none.c" ] - } else if (target_cpu == "arm") { - sources += [ - "skia/third_party/externals/libjpeg-turbo/simd/arm/jsimd.c", - "skia/third_party/externals/libjpeg-turbo/simd/arm/jsimd_neon.S", - ] - } else { - sources += [ - "skia/third_party/externals/libjpeg-turbo/simd/arm64/jsimd.c", - "skia/third_party/externals/libjpeg-turbo/simd/arm64/jsimd_neon.S", - ] - } - - defines = [ "TURBO_FOR_WINDOWS" ] -} - -config("ace_libexpat_config") { - visibility = [ ":*" ] - include_dirs = [ "//third_party/expat/lib" ] - cflags = [ - "-w", - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_libexpat") { - configs = [ ":ace_libexpat_config" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "//third_party/expat/lib/xmlparse.c", - "//third_party/expat/lib/xmlrole.c", - "//third_party/expat/lib/xmltok.c", - ] - - defines = [ - "HAVE_MEMMOVE", - "XML_STATIC", - "XML_POOR_ENTROPY", - ] -} -config("libharfbuzz_compile_flags") { - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-w", - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -config("ace_libharfbuzz_config_ohos") { - visibility = [ ":*" ] - include_dirs = ace_external_libharfbuzz_config_include_dirs -} - -config("ace_libharfbuzz_config_windows") { - visibility = [ ":*" ] - include_dirs = ace_internal_libharfbuzz_config_include_dirs -} - -config("ace_libharfbuzz_config_mac") { - visibility = [ ":*" ] - include_dirs = ace_internal_libharfbuzz_config_include_dirs -} - -template("ace_libharfbuzz") { - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - configs = [ - ":ace_libharfbuzz_config_$platform", - ":libharfbuzz_compile_flags", - ] - - defines += invoker.defines - - sources = [ - "skia/third_party/externals/harfbuzz/src/hb-aat-layout.cc", - "skia/third_party/externals/harfbuzz/src/hb-aat-map.cc", - "skia/third_party/externals/harfbuzz/src/hb-blob.cc", - "skia/third_party/externals/harfbuzz/src/hb-buffer-serialize.cc", - "skia/third_party/externals/harfbuzz/src/hb-buffer.cc", - "skia/third_party/externals/harfbuzz/src/hb-common.cc", - "skia/third_party/externals/harfbuzz/src/hb-face.cc", - "skia/third_party/externals/harfbuzz/src/hb-font.cc", - "skia/third_party/externals/harfbuzz/src/hb-icu.cc", - "skia/third_party/externals/harfbuzz/src/hb-map.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-cff1-table.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-cff2-table.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-color.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-face.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-font.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-layout.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-map.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-math.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-name.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-arabic.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-default.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-hangul.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-hebrew.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-indic-table.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-indic.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-khmer.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-myanmar.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-thai.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-use-table.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-use.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-complex-vowel-constraints.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-fallback.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape-normalize.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-shape.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-tag.cc", - "skia/third_party/externals/harfbuzz/src/hb-ot-var.cc", - "skia/third_party/externals/harfbuzz/src/hb-set.cc", - "skia/third_party/externals/harfbuzz/src/hb-shape-plan.cc", - "skia/third_party/externals/harfbuzz/src/hb-shape.cc", - "skia/third_party/externals/harfbuzz/src/hb-shaper.cc", - "skia/third_party/externals/harfbuzz/src/hb-static.cc", - "skia/third_party/externals/harfbuzz/src/hb-subset-cff-common.cc", - "skia/third_party/externals/harfbuzz/src/hb-subset-cff1.cc", - "skia/third_party/externals/harfbuzz/src/hb-subset-cff2.cc", - "skia/third_party/externals/harfbuzz/src/hb-subset-input.cc", - "skia/third_party/externals/harfbuzz/src/hb-subset-plan.cc", - "skia/third_party/externals/harfbuzz/src/hb-subset.cc", - "skia/third_party/externals/harfbuzz/src/hb-ucd.cc", - "skia/third_party/externals/harfbuzz/src/hb-unicode.cc", - "skia/third_party/externals/harfbuzz/src/hb-warning.cc", - ] - - defines += [ - "HAVE_ICU", - "HAVE_ICU_BUILTIN", - "HAVE_INTEL_ATOMIC_PRIMITIVES", - "HAVE_OT", - "U_USING_ICU_NAMESPACE=0", - "SK_USING_THIRD_PARTY_ICU", - "UPRV_BLOCK_MACRO_BEGIN=", - "UPRV_BLOCK_MACRO_END=", - ] - } -} - -ace_libharfbuzz("ace_libharfbuzz_ohos") { - defines = ace_ohos_defines - platform = "ohos" -} - -ace_libharfbuzz("ace_libharfbuzz_windows") { - defines = ace_windows_defines - platform = "windows" -} - -ace_libharfbuzz("ace_libharfbuzz_mac") { - defines = ace_mac_defines - platform = "mac" -} - -config("ace_libpng_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia/third_party/libpng", - "skia/third_party/externals/libpng", - ] - cflags = [ - "-w", - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_libpng") { - configs = [ ":ace_libpng_config" ] - configs += [ ":reduce_eh_frame_config" ] - - deps = [ "//third_party/zlib:libz" ] - - sources = [ - "skia/third_party/externals/libpng/arm/arm_init.c", - "skia/third_party/externals/libpng/arm/filter_neon_intrinsics.c", - "skia/third_party/externals/libpng/arm/palette_neon_intrinsics.c", - "skia/third_party/externals/libpng/png.c", - "skia/third_party/externals/libpng/pngerror.c", - "skia/third_party/externals/libpng/pngget.c", - "skia/third_party/externals/libpng/pngmem.c", - "skia/third_party/externals/libpng/pngpread.c", - "skia/third_party/externals/libpng/pngread.c", - "skia/third_party/externals/libpng/pngrio.c", - "skia/third_party/externals/libpng/pngrtran.c", - "skia/third_party/externals/libpng/pngrutil.c", - "skia/third_party/externals/libpng/pngset.c", - "skia/third_party/externals/libpng/pngtrans.c", - "skia/third_party/externals/libpng/pngwio.c", - "skia/third_party/externals/libpng/pngwrite.c", - "skia/third_party/externals/libpng/pngwtran.c", - "skia/third_party/externals/libpng/pngwutil.c", - ] - - defines = [ "PNG_SET_OPTION_SUPPORTED" ] -} - -config("ace_libfreetype2_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia/third_party/freetype2", - "skia/third_party/externals/freetype/include", - "skia/third_party/libpng", - "skia/third_party/externals/libpng", - ] - cflags = [ - "-w", - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_libfreetype2") { - configs = [ ":ace_libfreetype2_config" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "skia/third_party/externals/freetype/src/autofit/autofit.c", - "skia/third_party/externals/freetype/src/base/ftbase.c", - "skia/third_party/externals/freetype/src/base/ftbbox.c", - "skia/third_party/externals/freetype/src/base/ftbitmap.c", - "skia/third_party/externals/freetype/src/base/ftdebug.c", - "skia/third_party/externals/freetype/src/base/ftfstype.c", - "skia/third_party/externals/freetype/src/base/ftgasp.c", - "skia/third_party/externals/freetype/src/base/ftglyph.c", - "skia/third_party/externals/freetype/src/base/ftinit.c", - "skia/third_party/externals/freetype/src/base/ftmm.c", - "skia/third_party/externals/freetype/src/base/ftpatent.c", - "skia/third_party/externals/freetype/src/base/ftstroke.c", - "skia/third_party/externals/freetype/src/base/ftsynth.c", - "skia/third_party/externals/freetype/src/base/ftsystem.c", - "skia/third_party/externals/freetype/src/base/fttype1.c", - "skia/third_party/externals/freetype/src/base/ftwinfnt.c", - "skia/third_party/externals/freetype/src/cff/cff.c", - "skia/third_party/externals/freetype/src/cid/type1cid.c", - "skia/third_party/externals/freetype/src/gzip/ftgzip.c", - "skia/third_party/externals/freetype/src/psaux/psaux.c", - "skia/third_party/externals/freetype/src/pshinter/pshinter.c", - "skia/third_party/externals/freetype/src/psnames/psnames.c", - "skia/third_party/externals/freetype/src/raster/raster.c", - "skia/third_party/externals/freetype/src/sfnt/sfnt.c", - "skia/third_party/externals/freetype/src/smooth/smooth.c", - "skia/third_party/externals/freetype/src/truetype/truetype.c", - "skia/third_party/externals/freetype/src/type1/type1.c", - ] - - defines = [ - "FT2_BUILD_LIBRARY", - "FT_CONFIG_MODULES_H=", - "FT_CONFIG_OPTIONS_H=", - "SK_FREETYPE_MINIMUM_RUNTIME_VERSION=(((FREETYPE_MAJOR) << 24) | ((FREETYPE_MINOR) << 16) | ((FREETYPE_PATCH) << 8))", - ] -} - -config("libsfntly_compile_flags") { - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-w", - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -config("ace_libsfntly_config_ohos") { - visibility = [ ":*" ] - include_dirs = ace_libsfntly_config_ohos_include_dirs -} - -config("ace_libsfntly_config_windows") { - visibility = [ ":*" ] - include_dirs = ace_libsfntly_config_preview_include_dirs -} - -config("ace_libsfntly_config_mac") { - visibility = [ ":*" ] - include_dirs = ace_libsfntly_config_preview_include_dirs -} - -template("ace_libsfntly") { - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - configs = [ - ":ace_libsfntly_config_$platform", - ":libsfntly_compile_flags", - ] - - defines += invoker.defines - - sources = [ - "skia/third_party/externals/sfntly/cpp/src/sample/chromium/font_subsetter.cc", - "skia/third_party/externals/sfntly/cpp/src/sample/chromium/subsetter_impl.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/data/byte_array.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/data/font_data.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/data/font_input_stream.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/data/font_output_stream.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/data/growable_memory_byte_array.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/data/memory_byte_array.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/data/readable_font_data.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/data/writable_font_data.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/font.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/font_factory.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/port/file_input_stream.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/port/lock.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/port/memory_input_stream.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/port/memory_output_stream.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/big_glyph_metrics.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/bitmap_glyph.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/bitmap_glyph_info.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/bitmap_size_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/composite_bitmap_glyph.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/ebdt_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/eblc_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/ebsc_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/glyph_metrics.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/index_sub_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/index_sub_table_format1.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/index_sub_table_format2.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/index_sub_table_format3.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/index_sub_table_format4.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/index_sub_table_format5.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/simple_bitmap_glyph.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/bitmap/small_glyph_metrics.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/byte_array_table_builder.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/core/cmap_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/core/font_header_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/core/horizontal_device_metrics_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/core/horizontal_header_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/core/horizontal_metrics_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/core/maximum_profile_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/core/name_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/core/os2_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/font_data_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/generic_table_builder.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/header.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/subtable.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/table_based_table_builder.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/truetype/glyph_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/table/truetype/loca_table.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/tag.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/tools/subsetter/glyph_table_subsetter.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/tools/subsetter/subsetter.cc", - "skia/third_party/externals/sfntly/cpp/src/sfntly/tools/subsetter/table_subsetter_impl.cc", - ] - - if (use_mingw_win) { - libs = [ "pthread" ] - } - - defines += [ - "SFNTLY_NO_EXCEPTION", - "U_USING_ICU_NAMESPACE=0", - "SK_USING_THIRD_PARTY_ICU", - ] - } -} - -ace_libsfntly("ace_libsfntly_ohos") { - defines = ace_ohos_defines - platform = "ohos" -} - -ace_libsfntly("ace_libsfntly_windows") { - defines = ace_windows_defines - platform = "windows" -} - -ace_libsfntly("ace_libsfntly_mac") { - defines = ace_mac_defines - platform = "mac" -} - -config("ace_libwebp_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia/third_party/externals/libwebp/src", - "skia/third_party/externals/libwebp", - ] - cflags = [ - "-w", - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_libwebp") { - configs = [ ":ace_libwebp_config" ] - configs += [ ":reduce_eh_frame_config" ] - - if ((target_cpu == "x86_64" && !use_mingw_win) || use_mac) { - deps = [ ":ace_libwebp_sse41" ] - } - - sources = [ - "skia/third_party/externals/libwebp/src/dec/alpha_dec.c", - "skia/third_party/externals/libwebp/src/dec/buffer_dec.c", - "skia/third_party/externals/libwebp/src/dec/frame_dec.c", - "skia/third_party/externals/libwebp/src/dec/idec_dec.c", - "skia/third_party/externals/libwebp/src/dec/io_dec.c", - "skia/third_party/externals/libwebp/src/dec/quant_dec.c", - "skia/third_party/externals/libwebp/src/dec/tree_dec.c", - "skia/third_party/externals/libwebp/src/dec/vp8_dec.c", - "skia/third_party/externals/libwebp/src/dec/vp8l_dec.c", - "skia/third_party/externals/libwebp/src/dec/webp_dec.c", - "skia/third_party/externals/libwebp/src/demux/anim_decode.c", - "skia/third_party/externals/libwebp/src/demux/demux.c", - "skia/third_party/externals/libwebp/src/dsp/alpha_processing.c", - "skia/third_party/externals/libwebp/src/dsp/alpha_processing_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/alpha_processing_neon.c", - "skia/third_party/externals/libwebp/src/dsp/alpha_processing_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/cost.c", - "skia/third_party/externals/libwebp/src/dsp/cost_mips32.c", - "skia/third_party/externals/libwebp/src/dsp/cost_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/cost_neon.c", - "skia/third_party/externals/libwebp/src/dsp/cost_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/cpu.c", - "skia/third_party/externals/libwebp/src/dsp/dec.c", - "skia/third_party/externals/libwebp/src/dsp/dec_clip_tables.c", - "skia/third_party/externals/libwebp/src/dsp/dec_mips32.c", - "skia/third_party/externals/libwebp/src/dsp/dec_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/dec_msa.c", - "skia/third_party/externals/libwebp/src/dsp/dec_neon.c", - "skia/third_party/externals/libwebp/src/dsp/dec_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/enc.c", - "skia/third_party/externals/libwebp/src/dsp/enc_mips32.c", - "skia/third_party/externals/libwebp/src/dsp/enc_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/enc_msa.c", - "skia/third_party/externals/libwebp/src/dsp/enc_neon.c", - "skia/third_party/externals/libwebp/src/dsp/enc_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/filters.c", - "skia/third_party/externals/libwebp/src/dsp/filters_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/filters_msa.c", - "skia/third_party/externals/libwebp/src/dsp/filters_neon.c", - "skia/third_party/externals/libwebp/src/dsp/filters_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/lossless.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_enc.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_enc_mips32.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_enc_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_enc_msa.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_enc_neon.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_enc_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_msa.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_neon.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/rescaler.c", - "skia/third_party/externals/libwebp/src/dsp/rescaler_mips32.c", - "skia/third_party/externals/libwebp/src/dsp/rescaler_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/rescaler_msa.c", - "skia/third_party/externals/libwebp/src/dsp/rescaler_neon.c", - "skia/third_party/externals/libwebp/src/dsp/rescaler_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/ssim.c", - "skia/third_party/externals/libwebp/src/dsp/ssim_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/upsampling.c", - "skia/third_party/externals/libwebp/src/dsp/upsampling_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/upsampling_msa.c", - "skia/third_party/externals/libwebp/src/dsp/upsampling_neon.c", - "skia/third_party/externals/libwebp/src/dsp/upsampling_sse2.c", - "skia/third_party/externals/libwebp/src/dsp/yuv.c", - "skia/third_party/externals/libwebp/src/dsp/yuv_mips32.c", - "skia/third_party/externals/libwebp/src/dsp/yuv_mips_dsp_r2.c", - "skia/third_party/externals/libwebp/src/dsp/yuv_neon.c", - "skia/third_party/externals/libwebp/src/dsp/yuv_sse2.c", - "skia/third_party/externals/libwebp/src/enc/alpha_enc.c", - "skia/third_party/externals/libwebp/src/enc/analysis_enc.c", - "skia/third_party/externals/libwebp/src/enc/backward_references_cost_enc.c", - "skia/third_party/externals/libwebp/src/enc/backward_references_enc.c", - "skia/third_party/externals/libwebp/src/enc/config_enc.c", - "skia/third_party/externals/libwebp/src/enc/cost_enc.c", - "skia/third_party/externals/libwebp/src/enc/filter_enc.c", - "skia/third_party/externals/libwebp/src/enc/frame_enc.c", - "skia/third_party/externals/libwebp/src/enc/histogram_enc.c", - "skia/third_party/externals/libwebp/src/enc/iterator_enc.c", - "skia/third_party/externals/libwebp/src/enc/near_lossless_enc.c", - "skia/third_party/externals/libwebp/src/enc/picture_csp_enc.c", - "skia/third_party/externals/libwebp/src/enc/picture_enc.c", - "skia/third_party/externals/libwebp/src/enc/picture_psnr_enc.c", - "skia/third_party/externals/libwebp/src/enc/picture_rescale_enc.c", - "skia/third_party/externals/libwebp/src/enc/picture_tools_enc.c", - "skia/third_party/externals/libwebp/src/enc/predictor_enc.c", - "skia/third_party/externals/libwebp/src/enc/quant_enc.c", - "skia/third_party/externals/libwebp/src/enc/syntax_enc.c", - "skia/third_party/externals/libwebp/src/enc/token_enc.c", - "skia/third_party/externals/libwebp/src/enc/tree_enc.c", - "skia/third_party/externals/libwebp/src/enc/vp8l_enc.c", - "skia/third_party/externals/libwebp/src/enc/webp_enc.c", - "skia/third_party/externals/libwebp/src/mux/anim_encode.c", - "skia/third_party/externals/libwebp/src/mux/muxedit.c", - "skia/third_party/externals/libwebp/src/mux/muxinternal.c", - "skia/third_party/externals/libwebp/src/mux/muxread.c", - "skia/third_party/externals/libwebp/src/utils/bit_reader_utils.c", - "skia/third_party/externals/libwebp/src/utils/bit_writer_utils.c", - "skia/third_party/externals/libwebp/src/utils/color_cache_utils.c", - "skia/third_party/externals/libwebp/src/utils/filters_utils.c", - "skia/third_party/externals/libwebp/src/utils/huffman_encode_utils.c", - "skia/third_party/externals/libwebp/src/utils/huffman_utils.c", - "skia/third_party/externals/libwebp/src/utils/quant_levels_dec_utils.c", - "skia/third_party/externals/libwebp/src/utils/quant_levels_utils.c", - "skia/third_party/externals/libwebp/src/utils/random_utils.c", - "skia/third_party/externals/libwebp/src/utils/rescaler_utils.c", - "skia/third_party/externals/libwebp/src/utils/thread_utils.c", - "skia/third_party/externals/libwebp/src/utils/utils.c", - ] - - defines = [ "WEBP_SWAP_16BIT_CSP" ] -} - -config("ace_libwebp_sse41_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia/third_party/externals/libwebp/src", - "skia/third_party/externals/libwebp", - ] - cflags = [ - "-w", - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_libwebp_sse41") { - configs = [ ":ace_libwebp_sse41_config" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "skia/third_party/externals/libwebp/src/dsp/alpha_processing_sse41.c", - "skia/third_party/externals/libwebp/src/dsp/dec_sse41.c", - "skia/third_party/externals/libwebp/src/dsp/enc_sse41.c", - "skia/third_party/externals/libwebp/src/dsp/lossless_enc_sse41.c", - "skia/third_party/externals/libwebp/src/dsp/upsampling_sse41.c", - "skia/third_party/externals/libwebp/src/dsp/yuv_sse41.c", - ] - - defines = [ "WEBP_SWAP_16BIT_CSP" ] -} - -config("ace_webp_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia", - "skia/third_party/externals/libwebp/src", - "skia/third_party/externals/libwebp", - ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_webp") { - configs = [ ":ace_webp_config" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "skia/src/codec/SkWebpCodec.cpp", - "skia/src/images/SkWebpEncoder.cpp", - ] - - defines = [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_HAS_WEBP_LIBRARY", - ] -} - -config("ace_png_config") { - visibility = [ ":*" ] - include_dirs = [ - "skia", - "skia/third_party/libpng", - "skia/third_party/externals/libpng", - ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] - - if (use_mingw_win) { - cflags_cc += [ "-Wno-unknown-pragmas" ] - } -} - -ohos_source_set("ace_png") { - configs = [ ":ace_png_config" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ - "skia/src/codec/SkIcoCodec.cpp", - "skia/src/codec/SkPngCodec.cpp", - "skia/src/images/SkPngEncoder.cpp", - ] - - defines = [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_HAS_PNG_LIBRARY", - ] -} - -config("ace_heif_config") { - visibility = [ ":*" ] - include_dirs = [ "skia" ] - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - ] -} - -ohos_source_set("ace_heif") { - configs = [ ":ace_heif_config" ] - configs += [ ":reduce_eh_frame_config" ] - sources = [ "skia/src/codec/SkHeifCodec.cpp" ] - - defines = [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_HAS_HEIF_LIBRARY", - ] -} - -config("ace_svg_model_config") { - visibility = [ ":*" ] - include_dirs = [ "skia" ] -} -config("svg_compile_flags") { - cflags_cc = [ - "-std=c++14", - "-fno-exceptions", - "-fno-rtti", - "-Wnon-virtual-dtor", - "-Wno-noexcept-type", - "-Wno-abstract-vbase-init", - "-Wno-weak-vtables", - "-Wno-c++98-compat", - "-Wno-c++98-compat-pedantic", - "-Wno-undefined-func-template", - "-Wno-return-std-move-in-c++11", - "-Wno-implicit-fallthrough", - "-fvisibility-inlines-hidden", - "-Os", - "-Wno-extra-semi", - ] - - cflags = [ - "-fstrict-aliasing", - "-Os", - "-fdata-sections", - "-ffunction-sections", - "-gline-tables-only", - "-funwind-tables", - "-Wall", - "-Wextra", - "-Winit-self", - "-Wpointer-arith", - "-Wsign-compare", - "-Wvla", - "-Wno-deprecated-declarations", - "-Wno-maybe-uninitialized", - "-fcolor-diagnostics", - "-Weverything", - "-Wno-unknown-warning-option", - "-Wno-nonportable-include-path", - "-Wno-nonportable-system-include-path", - "-Wno-cast-align", - "-Wno-cast-qual", - "-Wno-conversion", - "-Wno-disabled-macro-expansion", - "-Wno-documentation", - "-Wno-documentation-unknown-command", - "-Wno-double-promotion", - "-Wno-exit-time-destructors", - "-Wno-float-equal", - "-Wno-format-nonliteral", - "-Wno-global-constructors", - "-Wno-missing-prototypes", - "-Wno-missing-variable-declarations", - "-Wno-pedantic", - "-Wno-reserved-id-macro", - "-Wno-shadow", - "-Wno-shift-sign-overflow", - "-Wno-signed-enum-bitfield", - "-Wno-switch-enum", - "-Wno-undef", - "-Wno-unreachable-code", - "-Wno-unreachable-code-break", - "-Wno-unreachable-code-return", - "-Wno-unused-macros", - "-Wno-unused-member-function", - "-Wno-unused-template", - "-Wno-zero-as-null-pointer-constant", - "-Wno-thread-safety-negative", - "-Wno-bad-function-cast", - "-Wno-covered-switch-default", - "-Wno-deprecated", - "-Wno-missing-noreturn", - "-Wno-old-style-cast", - "-Wno-padded", - "-Wno-newline-eof", - "-Wno-implicit-fallthrough", - "-Wno-unused-parameter", - "-fvisibility=hidden", - "-Wno-extra-semi", - ] - ldflags = [ "-Wl,–gc-sections" ] -} - -template("ace_svg_model") { - forward_variables_from(invoker, "*") - - ohos_source_set(target_name) { - defines += invoker.defines - sources = [ - "skia/experimental/svg/model/CssStyleParser.cpp", - "skia/experimental/svg/model/SkSVGAttribute.cpp", - "skia/experimental/svg/model/SkSVGAttributeParser.cpp", - "skia/experimental/svg/model/SkSVGCircle.cpp", - "skia/experimental/svg/model/SkSVGClipPath.cpp", - "skia/experimental/svg/model/SkSVGContainer.cpp", - "skia/experimental/svg/model/SkSVGDOM.cpp", - "skia/experimental/svg/model/SkSVGEllipse.cpp", - "skia/experimental/svg/model/SkSVGGradient.cpp", - "skia/experimental/svg/model/SkSVGLine.cpp", - "skia/experimental/svg/model/SkSVGLinearGradient.cpp", - "skia/experimental/svg/model/SkSVGNode.cpp", - "skia/experimental/svg/model/SkSVGPath.cpp", - "skia/experimental/svg/model/SkSVGPattern.cpp", - "skia/experimental/svg/model/SkSVGPoly.cpp", - "skia/experimental/svg/model/SkSVGRadialGradient.cpp", - "skia/experimental/svg/model/SkSVGRect.cpp", - "skia/experimental/svg/model/SkSVGRenderContext.cpp", - "skia/experimental/svg/model/SkSVGSVG.cpp", - "skia/experimental/svg/model/SkSVGShape.cpp", - "skia/experimental/svg/model/SkSVGStop.cpp", - "skia/experimental/svg/model/SkSVGTransformableNode.cpp", - "skia/experimental/svg/model/SkSVGUse.cpp", - "skia/experimental/svg/model/SkSVGValue.cpp", - "skia/experimental/svg/model/SkSVGXMLDOM.cpp", - ] - - configs = [] - - if (is_standard_system) { - defines += [ - "SK_SUPPORT_ATLAS_TEXT=1", - "SK_GAMMA_APPLY_TO_A8", - "SK_GAMMA_EXPONENT=1.4", - "SK_GAMMA_CONTRAST=0.0", - "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", - "GR_TEST_UTILS=1", - "SKIA_IMPLEMENTATION=1", - "SK_HAS_SVG_LIBRARY", - ] - } - - configs += [ - ":ace_svg_model_config", - ":svg_compile_flags", - ] - } -} - -ace_svg_model("ace_svg_model_ohos") { - defines = ace_ohos_defines -} - -ace_svg_model("ace_svg_model_windows") { - defines = ace_windows_defines -} - -ace_svg_model("ace_svg_model_mac") { - defines = ace_mac_defines -} diff --git a/engine/flutter/flow/ohos_layers/BUILD.gn b/engine/flutter/flow/ohos_layers/BUILD.gn deleted file mode 100644 index 32032a240c39b414ee9584fc0d975d09f8bfea74..0000000000000000000000000000000000000000 --- a/engine/flutter/flow/ohos_layers/BUILD.gn +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright 2013 The Flutter Authors. All rights reserved. -# Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/ohos.gni") -import("//third_party/flutter/flutter_ace_config.gni") - -# build core flow sources -template("flutter_ohos_layers_set") { - forward_variables_from(invoker, "*") - ohos_source_set(target_name) { - defines += invoker.defines - configs = [ "$ace_flutter_engine_root:flutter_config" ] - - sources = [ - "backdrop_filter_layer.cpp", - "clip_path_layer.cpp", - "clip_rect_layer.cpp", - "clip_rrect_layer.cpp", - "container_layer.cpp", - "filter_layer.cpp", - "layer_tree.cpp", - "layer_tree_builder.cpp", - "mask_layer.cpp", - "opacity_layer.cpp", - "picture_layer.cpp", - "shader_mask_layer.cpp", - "texture_layer.cpp", - "texture_register.cpp", - "transform_layer.cpp", - ] - - deps = [ "$ace_flutter_engine_root:ace_skia_$platform" ] - } -} - -flutter_ohos_layers_set("flutter_ohos_layers_ohos") { - defines = ace_ohos_defines - platform = "ohos" -} - -flutter_ohos_layers_set("flutter_ohos_layers_multi") { - defines = ace_multi_platforms - platform = "multi" -} diff --git a/engine/flutter/fml/logging.cc b/engine/flutter/fml/logging.cc index f0d3241aa3741540a3e70141c55fa31d154d092f..5cd38e1e86b40dadeb042c54a646039ffe7ad557 100644 --- a/engine/flutter/fml/logging.cc +++ b/engine/flutter/fml/logging.cc @@ -9,7 +9,7 @@ #include "flutter/fml/log_settings.h" #include "flutter/fml/logging.h" -#if defined(OHOS_PLATFORM) +#if defined(OHOS_STANDARD_SYSTEM) #include "hilog/log.h" #elif defined(OS_ANDROID) #include @@ -64,7 +64,7 @@ LogMessage::LogMessage(LogSeverity severity, LogMessage::~LogMessage() { stream_ << std::endl; -#if defined(OHOS_PLATFORM) +#if defined(OHOS_STANDARD_SYSTEM) LogLevel priority = LogLevel::LOG_DEBUG; switch (severity_) { case LOG_INFO: diff --git a/engine/flutter/fml/message_loop_impl.cc b/engine/flutter/fml/message_loop_impl.cc index 40711895923b23a64a9687100761ac7a0f8f0893..7988ebf20878064378b4b8b1b722e9d26c5e5bc4 100644 --- a/engine/flutter/fml/message_loop_impl.cc +++ b/engine/flutter/fml/message_loop_impl.cc @@ -15,7 +15,7 @@ #if OS_MACOSX #include "flutter/fml/platform/darwin/message_loop_darwin.h" -#elif OHOS_PLATFORM +#elif OHOS_STANDARD_SYSTEM #include "flutter/fml/platform/linux/message_loop_linux.h" #elif OS_ANDROID #include "flutter/fml/platform/android/message_loop_android.h" @@ -30,7 +30,7 @@ namespace fml { fml::RefPtr MessageLoopImpl::Create() { #if OS_MACOSX return fml::MakeRefCounted(); -#elif OHOS_PLATFORM +#elif OHOS_STANDARD_SYSTEM return fml::MakeRefCounted(); #elif OS_ANDROID return fml::MakeRefCounted(); diff --git a/engine/flutter/shell/common/rasterizer.cc b/engine/flutter/shell/common/rasterizer.cc index fa8dcfd48381d9e2bb72adfc273a1fc04c2ddc32..ef2224b2a04c01a65f737e1df440bef9746914f4 100644 --- a/engine/flutter/shell/common/rasterizer.cc +++ b/engine/flutter/shell/common/rasterizer.cc @@ -18,6 +18,12 @@ namespace flutter { +#ifndef OHOS_STANDARD_SYSTEM +// The rasterizer will tell Skia to purge cached resources that have not been +// used within this interval. +static constexpr std::chrono::milliseconds kSkiaCleanupExpiration(15000); +#endif + // TODO(dnfield): Remove this once internal embedders have caught up. static Rasterizer::DummyDelegate dummy_delegate_; Rasterizer::Rasterizer( @@ -259,6 +265,11 @@ RasterStatus Rasterizer::DrawToSurface(flutter::LayerTree& layer_tree) { } FireNextFrameCallbackIfPresent(); +#ifndef OHOS_STANDARD_SYSTEM + if (surface_->GetContext()) { + surface_->GetContext()->performDeferredCleanup(kSkiaCleanupExpiration); + } +#endif return raster_status; } @@ -440,6 +451,14 @@ void Rasterizer::SetResourceCacheMaxBytes(size_t max_bytes, bool from_user) { if (!surface_) { return; } +#ifndef OHOS_STANDARD_SYSTEM + GrContext* context = surface_->GetContext(); + if (context) { + int max_resources; + context->getResourceCacheLimits(&max_resources, nullptr); + context->setResourceCacheLimits(max_resources, max_bytes); + } +#endif } std::optional Rasterizer::GetResourceCacheMaxBytes() const { diff --git a/engine/flutter/shell/gpu/gpu_surface_gl_delegate.h b/engine/flutter/shell/gpu/gpu_surface_gl_delegate.h index f711b22e35c55ead912be96b75747e67f69e63d6..9d0a66eba7497a52a84ab36f9186996dfb81b957 100644 --- a/engine/flutter/shell/gpu/gpu_surface_gl_delegate.h +++ b/engine/flutter/shell/gpu/gpu_surface_gl_delegate.h @@ -26,7 +26,12 @@ class GPUSurfaceGLDelegate { virtual bool GLContextPresent() = 0; // For PC preivew - virtual bool GLContextSendSurface(const void* pixels, size_t size) { return false; }; + virtual bool GLContextSendSurface(const void* pixels, + const size_t size, + const int32_t width, + const int32_t height) { + return false; + }; // The ID of the main window bound framebuffer. Typically FBO0. virtual intptr_t GLContextFBO() const = 0; diff --git a/engine/flutter/shell/platform/ohos/ace_vsync_waiter_embedder.cc b/engine/flutter/shell/platform/ohos/ace_vsync_waiter_embedder.cc index 48a76c8edd6c6ab729e37a1cc4a8066e7387a010..cc1adc7fd27490c5c390df767a0e3637fb2faff2 100644 --- a/engine/flutter/shell/platform/ohos/ace_vsync_waiter_embedder.cc +++ b/engine/flutter/shell/platform/ohos/ace_vsync_waiter_embedder.cc @@ -9,8 +9,11 @@ #include "flutter/common/task_runners.h" #include "flutter/shell/platform/ohos/vsync_waiter_embedder.h" +#ifdef OHOS_STANDARD_SYSTEM #include "vsync_helper.h" - +#else +#include "flutter/fml/platform/android/jni_util.h" +#endif namespace flutter { namespace { @@ -20,6 +23,10 @@ constexpr float TOLERATE_PERCENT = 0.96f; } // namespace +#ifndef OHOS_STANDARD_SYSTEM +static fml::jni::ScopedJavaGlobalRef* g_vsync_waiter_class = nullptr; +#endif + std::unique_ptr VsyncWaiterEmbedder::Create(flutter::TaskRunners task_runners) { return std::make_unique(task_runners); @@ -27,6 +34,9 @@ std::unique_ptr VsyncWaiterEmbedder::Create(flutter::TaskRunners ta VsyncWaiterEmbedder::VsyncWaiterEmbedder(flutter::TaskRunners task_runners) : VsyncWaiter(std::move(task_runners)) { +#ifndef OHOS_STANDARD_SYSTEM + vsync_scheduler_ = OHOS::AGP::VsyncScheduler::Create(); +#endif fps_ = GetDisplayRefreshRate(); if (fps_ != kUnknownRefreshRateFPS) { refreshPeriod_ = static_cast(ONE_SECOND_IN_NANO / fps_); @@ -75,6 +85,7 @@ void VsyncWaiterEmbedder::AwaitVSync() } std::weak_ptr weak_base(shared_from_this()); CallbackInfo* info = new CallbackInfo{ refreshPeriod_, fps_, weak_base }; +#ifdef OHOS_STANDARD_SYSTEM task_runners_.GetPlatformTaskRunner()->PostTask([info]() { struct OHOS::FrameCallback cb = { .timestamp_ = 0, @@ -83,11 +94,56 @@ void VsyncWaiterEmbedder::AwaitVSync() }; OHOS::VsyncHelper::Current()->RequestFrameCallback(cb); }); +#else + auto callback = [info](int64_t nanoTimestamp) { + VSyncCallback(nanoTimestamp, (void*)info); + }; + + if (!vsync_scheduler_) { + vsync_scheduler_ = OHOS::AGP::VsyncScheduler::Create(); + } + + auto vsync_scheduler = vsync_scheduler_; + task_runners_.GetPlatformTaskRunner()->PostTask([vsync_scheduler, callback]() { + if (vsync_scheduler) { + vsync_scheduler->RequestVsync(callback); + } + }); +#endif } float VsyncWaiterEmbedder::GetDisplayRefreshRate() const { +#ifndef OHOS_STANDARD_SYSTEM + JNIEnv* env = fml::jni::AttachCurrentThread(); + if (g_vsync_waiter_class == nullptr) { + return kUnknownRefreshRateFPS; + } + jclass clazz = g_vsync_waiter_class->obj(); + if (clazz == nullptr) { + return kUnknownRefreshRateFPS; + } + jfieldID fid = env->GetStaticFieldID(clazz, "refreshRateFPS", "F"); + return env->GetStaticFloatField(clazz, fid); +#else return 60.0f; +#endif +} + + +// static +#ifndef OHOS_STANDARD_SYSTEM +bool VsyncWaiterEmbedder::Register(JNIEnv* env) +{ + jclass clazz = env->FindClass("ohos/ace/AceDisplayManager"); + if (clazz == nullptr) { + return false; + } + + g_vsync_waiter_class = new fml::jni::ScopedJavaGlobalRef(env, clazz); + FML_CHECK(!g_vsync_waiter_class->is_null()); + return true; } +#endif } // namespace flutter diff --git a/engine/flutter/shell/platform/ohos/vsync_waiter_embedder.h b/engine/flutter/shell/platform/ohos/vsync_waiter_embedder.h index 86b06103c9b22e6d732aa6280862765acd9d28c0..6ec50bf2f16b2d784b33c3093635c2b789a67266 100644 --- a/engine/flutter/shell/platform/ohos/vsync_waiter_embedder.h +++ b/engine/flutter/shell/platform/ohos/vsync_waiter_embedder.h @@ -4,11 +4,18 @@ // 2021.2.10 Framework adapted to ACE. // Copyright (c) 2021 Huawei Device Co., Ltd. All rights reserved. -#ifndef SHELL_PLATFORM_OHOS_VSYNC_WAITER_EMBEDDER_H_ -#define SHELL_PLATFORM_OHOS_VSYNC_WAITER_EMBEDDER_H_ +#ifndef SHELL_PLATFORM_OHOS_VSYNC_WAITER_OHOS_H_ +#define SHELL_PLATFORM_OHOS_VSYNC_WAITER_OHOS_H_ +#ifndef OHOS_STANDARD_SYSTEM +#include +#endif #include +#ifndef OHOS_STANDARD_SYSTEM +#include "platform/vsync/agp_vsync_scheduler.h" +#endif + #include "flutter/fml/macros.h" #include "flutter/shell/common/vsync_waiter.h" @@ -16,6 +23,10 @@ namespace flutter { class VsyncWaiterEmbedder final : public VsyncWaiter { public: +#ifndef OHOS_STANDARD_SYSTEM + static bool Register(JNIEnv* env); +#endif + static std::unique_ptr Create(flutter::TaskRunners); static void VSyncCallback(int64_t nanoTimestamp, void* userdata); @@ -29,6 +40,10 @@ private: // |VsyncWaiter| void AwaitVSync() override; +#ifndef OHOS_STANDARD_SYSTEM + std::shared_ptr<::OHOS::AGP::VsyncScheduler> vsync_scheduler_; +#endif + float fps_ = kUnknownRefreshRateFPS; int64_t refreshPeriod_ = 0; diff --git a/engine/flutter/third_party/txt/src/txt/font_collection.cc b/engine/flutter/third_party/txt/src/txt/font_collection.cc index eb8ae349764f1485ac542dfd9a44cc8b699608a4..e44b8ad852cc0cea222ae08f049c5e552194a61b 100644 --- a/engine/flutter/third_party/txt/src/txt/font_collection.cc +++ b/engine/flutter/third_party/txt/src/txt/font_collection.cc @@ -81,6 +81,14 @@ class TxtFallbackFontProvider virtual const std::shared_ptr& matchFallbackFontFromHwFont( uint32_t ch, std::string locale) { +#if defined(OHOS_PLATFORM) && !defined(OHOS_STANDARD_SYSTEM) + std::shared_ptr fc = font_collection_.lock(); + if (fc) { + return fc->MatchFallbackFontFromHwFont(ch, locale); + } else { + return g_null_family; + } +#endif return g_null_family; } @@ -146,6 +154,9 @@ std::shared_ptr FontCollection::GetMinikinFontCollectionForFamilies( const std::vector& font_families, const std::string& locale) { +#if defined(OHOS_PLATFORM) && !defined(OHOS_STANDARD_SYSTEM) + return GetMinikinFontCollectionForFamiliesWithVariation(font_families, locale); +#endif // Look inside the font collections cache first. FamilyKey family_key(font_families, locale); { @@ -271,6 +282,9 @@ std::shared_ptr FontCollection::CreateMinikinFontFamily( const std::shared_ptr& FontCollection::MatchFallbackFont( uint32_t ch, std::string locale) { +#if defined(OHOS_PLATFORM) && !defined(OHOS_STANDARD_SYSTEM) + return MatchFallbackFontWithVariation(ch, locale); +#endif // Check if the ch's matched font has been cached. We cache the results of // this method as repeated matchFamilyStyleCharacter calls can become // extremely laggy when typing a large number of complex emojis. @@ -366,6 +380,19 @@ void FontCollection::VaryFontCollectionWithFontWeightScale(float font_weight_sca } void FontCollection::LoadSystemFont() { +#if defined(OHOS_PLATFORM) && !defined(OHOS_STANDARD_SYSTEM) + { + decltype(fallback_fonts_) fallback_fonts; + std::lock_guard lock(mutex_); + varied_fonts_.clear(); + fallback_fonts = std::move(fallback_fonts_); + fallback_match_cache_.clear(); + fallback_fonts_for_locale_.clear(); + } + + SetupDefaultFontManager(); + +#endif } void FontCollection::SetIsZawgyiMyanmar(bool is_zawgyi_myanmar) { @@ -376,6 +403,373 @@ void FontCollection::SetIsZawgyiMyanmar(bool is_zawgyi_myanmar) { LoadSystemFont(); } +#if defined(OHOS_PLATFORM) && !defined(OHOS_STANDARD_SYSTEM) +// Return the available font managers in the order they should be queried with +// type. +std::vector, txt::FontManagerType>> +FontCollection::GetFontManagerOrderWithType() const { + std::vector, txt::FontManagerType>> order; + if (dynamic_font_manager_) + order.push_back( + std::make_pair(dynamic_font_manager_, txt::FontManagerType::DYNAMIC)); + if (asset_font_manager_) + order.push_back( + std::make_pair(asset_font_manager_, txt::FontManagerType::ASSET)); + if (test_font_manager_) + order.push_back( + std::make_pair(test_font_manager_, txt::FontManagerType::TEST)); + auto defaultFontManager = GetDefaultFontManagerSafely(); + if (defaultFontManager) + order.push_back( + std::make_pair(defaultFontManager, GetDefaultFontManagerType())); + return order; +} + +std::shared_ptr +FontCollection::GetMinikinFontCollectionForFamiliesWithVariation( + const std::vector& font_families, + const std::string& locale) { + // Look inside the font collections cache first. + FamilyKey family_key(font_families, locale); + { + std::lock_guard lock(mutex_); + auto iter = std::find(varied_fonts_.begin(), varied_fonts_.end(), family_key); + if (iter != varied_fonts_.end()) { + auto cached = font_collections_cache_.find(family_key); + if (cached != font_collections_cache_.end()) { + return cached->second; + } + varied_fonts_.erase(iter); + } + } + + std::vector> minikin_families; + // Search for all user provided font families. + for (size_t fallback_index = 0; fallback_index < font_families.size(); + fallback_index++) { + std::shared_ptr minikin_family = + FindFontFamilyInManagersWithType(font_families[fallback_index]); + if (minikin_family != nullptr) { + minikin_families.push_back(minikin_family); + } + } + // Search for default font family if no user font families were found. + if (minikin_families.empty()) { + const auto default_font_family = GetDefaultFontFamily(); + std::shared_ptr minikin_family = + FindFontFamilyInManagersWithType(default_font_family); + if (minikin_family != nullptr) { + minikin_families.push_back(minikin_family); + } + } + // Default font family also not found. We fail to get a FontCollection. + if (minikin_families.empty()) { + std::shared_ptr tmp_font_collection; + std::lock_guard lock(mutex_); + std::swap(font_collections_cache_[family_key], tmp_font_collection); + return nullptr; + } + if (enable_font_fallback_) { + std::lock_guard lock(mutex_); + for (std::string fallback_family : fallback_fonts_for_locale_[locale]) { + auto it = fallback_fonts_.find(fallback_family); + if (it != fallback_fonts_.end()) { + minikin_families.push_back(it->second); + } + } + } + // Create the minikin font collection. + auto font_collection = + std::make_shared(std::move(minikin_families)); + font_collection->SetIsZawgyiMyanmar(is_zawgyi_myanmar_); + + if (enable_font_fallback_) { + font_collection->set_fallback_font_provider( + std::make_unique(shared_from_this())); + } + + { + std::shared_ptr tmp_font_collection = + font_collection; + std::lock_guard lock(mutex_); + // Cache the font collection for future queries. + std::swap(font_collections_cache_[family_key], tmp_font_collection); + varied_fonts_.emplace_back(family_key); + } + + return font_collection; +} + +std::shared_ptr +FontCollection::FindFontFamilyInManagersWithType( + const std::string& family_name) { + TRACE_EVENT0("flutter", "FontCollection::FindFontFamilyInManagersWithType"); + // Search for the font family in each font manager. + for (std::pair, FontManagerType>& managerPair : + GetFontManagerOrderWithType()) { + std::shared_ptr minikin_family; + if (managerPair.second == FontManagerType::DEFAULT_OHOS) { + minikin_family = + CreateMinikinFontFamilyForOHOS(managerPair.first, family_name); + } else { + minikin_family = + CreateMinikinFontFamilyExceptOHOS(managerPair.first, family_name); + } + if (!minikin_family) + continue; + return minikin_family; + } + return nullptr; +} + +std::shared_ptr +FontCollection::CreateMinikinFontFamilyForOHOS( + const sk_sp& manager, + const std::string& family_name) { + TRACE_EVENT1("flutter", "FontCollection::CreateMinikinFontFamilyForOHOS", + "family_name", family_name.c_str()); + sk_sp font_style_set( + manager->matchFamily(family_name.c_str())); + if (font_style_set == nullptr || font_style_set->count() == 0) { + return nullptr; + } + + auto font_style_set_ohos = + reinterpret_cast(font_style_set.get()); + if (font_style_set_ohos == nullptr) { + return CreateMinikinFontFamilyExceptOHOS(manager, family_name); + } + + std::vector> skia_typefaces; + for (int i = 0; i < font_style_set_ohos->count(); ++i) { + TRACE_EVENT0("flutter", "CreateSkiaTypeface"); + sk_sp skia_typeface( + sk_sp(font_style_set_ohos->createTypeface(i))); + float wghtValue = font_style_set_ohos->getWghtValue(i); + if (wghtValue <= 0.0f) { + wghtValue = font_style_set_ohos->getFontWeight(i); + } + VaryTypeface(skia_typeface, wghtValue); + if (skia_typeface != nullptr) { + skia_typefaces.emplace_back(std::move(skia_typeface)); + } + } + + int index = 0; + std::vector minikin_fonts; + for (const sk_sp& skia_typeface : skia_typefaces) { + // Create the minikin font from the skia typeface. + // Divide by 100 because the weights are given as "100", "200", etc. + minikin_fonts.emplace_back( + std::make_shared(skia_typeface), + minikin::FontStyle{font_style_set_ohos->getFontWeight(index++) / 100, + skia_typeface->isItalic()}); + } + + return std::make_shared(std::move(minikin_fonts)); +} + +std::shared_ptr +FontCollection::CreateMinikinFontFamilyExceptOHOS( + const sk_sp& manager, + const std::string& family_name) { + TRACE_EVENT1("flutter", + "FontCollection::CreateMinikinFontFamilyExceptOHOS", + "family_name", family_name.c_str()); + sk_sp font_style_set( + manager->matchFamily(family_name.c_str())); + if (font_style_set == nullptr || font_style_set->count() == 0) { + return nullptr; + } + + std::vector> skia_typefaces; + for (int i = 0; i < font_style_set->count(); ++i) { + TRACE_EVENT0("flutter", "CreateSkiaTypeface"); + sk_sp skia_typeface( + sk_sp(font_style_set->createTypeface(i))); + VaryTypeface(skia_typeface, skia_typeface->fontStyle().weight()); + if (skia_typeface != nullptr) { + skia_typefaces.emplace_back(std::move(skia_typeface)); + } + } + + std::sort(skia_typefaces.begin(), skia_typefaces.end(), + [](const sk_sp& a, const sk_sp& b) { + SkFontStyle a_style = a->fontStyle(); + SkFontStyle b_style = b->fontStyle(); + return (a_style.weight() != b_style.weight()) + ? a_style.weight() < b_style.weight() + : a_style.slant() < b_style.slant(); + }); + + std::vector minikin_fonts; + for (const sk_sp& skia_typeface : skia_typefaces) { + // Create the minikin font from the skia typeface. + // Divide by 100 because the weights are given as "100", "200", etc. + minikin_fonts.emplace_back( + std::make_shared(skia_typeface), + minikin::FontStyle{skia_typeface->fontStyle().weight() / 100, + skia_typeface->isItalic()}); + } + + return std::make_shared(std::move(minikin_fonts)); +} + +void FontCollection::VaryTypeface(sk_sp& typeface, float wght) { + if (font_weight_scale_ <= 0.0f) { + return; + } + // Value of wght is between 0.0f and 1000.0f, and must be greater than 0.0f, + // default value is 400.0f. + if (wght <= 0.0) { + wght = 400.0f; + } + float wghtValue = std::min(wght * font_weight_scale_, 1000.0f); + SkFontArguments params; + int ttcIndex; + std::unique_ptr stream(typeface->openStream(&ttcIndex)); + params.setCollectionIndex(ttcIndex); + std::vector variations = { + {minikin::MinikinFont::MakeTag('w', 'g', 'h', 't'), wghtValue}}; + std::vector skAxes; + skAxes.resize(variations.size()); + for (size_t i = 0; i < variations.size(); i++) { + skAxes[i].fTag = variations[i].axisTag; + skAxes[i].fStyleValue = variations[i].value; + } + params.setAxes(skAxes.data(), skAxes.size()); + sk_sp fm(SkFontMgr::RefDefault()); + typeface = fm->makeFromStream(std::move(stream), params); +} + +const std::shared_ptr& +FontCollection::MatchFallbackFontWithVariation(uint32_t ch, + std::string locale) { + { + std::lock_guard lock(mutex_); + auto lookup = fallback_match_cache_.find(ch); + if (lookup != fallback_match_cache_.end()) { + return *lookup->second; + } + } + const std::shared_ptr* match = + &DoMatchFallbackFontWithVariation(ch, locale); + { + std::lock_guard lock(mutex_); + fallback_match_cache_.insert(std::make_pair(ch, match)); + } + return *match; +} + +const std::shared_ptr& +FontCollection::DoMatchFallbackFontWithVariation(uint32_t ch, + std::string locale) { + for (const std::pair, FontManagerType>& managerPair : + GetFontManagerOrderWithType()) { + std::vector bcp47; + if (!locale.empty()) + bcp47.push_back(locale.c_str()); + + if (managerPair.second == FontManagerType::DEFAULT_OHOS) { + auto ohosManager = reinterpret_cast(managerPair.first.get()); + if (ohosManager == nullptr) + continue; + + SkString sk_family_name = ohosManager->onMatchFamilyStyleCharacterOHOS( + 0, SkFontStyle(), bcp47.data(), bcp47.size(), ch); + if(sk_family_name.isEmpty()) + continue; + + return GetFallbackFontFamilyForOHOS(managerPair.first, std::string(sk_family_name.c_str())); + } else { + sk_sp typeface(managerPair.first->matchFamilyStyleCharacter( + 0, SkFontStyle(), bcp47.data(), bcp47.size(), ch)); + if (!typeface) + continue; + + SkString sk_family_name; + typeface->getFamilyName(&sk_family_name); + std::string family_name(sk_family_name.c_str()); + + { + std::lock_guard lock(mutex_); + fallback_fonts_for_locale_[locale].insert(family_name); + } + + return GetFallbackFontFamily(managerPair.first, family_name); + } + } + return g_null_family; +} + +const std::shared_ptr& +FontCollection::GetFallbackFontFamilyForOHOS( + const sk_sp& manager, + const std::string& family_name) { + TRACE_EVENT0("flutter", "FontCollection::GetFallbackFontFamily"); + { + std::lock_guard lock(mutex_); + auto fallback_it = fallback_fonts_.find(family_name); + if (fallback_it != fallback_fonts_.end()) { + return fallback_it->second; + } + } + + std::shared_ptr minikin_family = + CreateMinikinFontFamilyForOHOS(manager, family_name); + if (!minikin_family) { + minikin_family = CreateMinikinFontFamilyExceptOHOS(manager, family_name); + } + if (!minikin_family) + return g_null_family; + + { + decltype(font_collections_cache_) font_collections_cache; + std::lock_guard lock(mutex_); + auto insert_it = + fallback_fonts_.insert(std::make_pair(family_name, minikin_family)); + + // Clear the cache to force creation of new font collections that will + // include this fallback font. + std::swap(font_collections_cache_, font_collections_cache); + + return insert_it.first->second; + } +} + +const std::shared_ptr& FontCollection::MatchFallbackFontFromHwFont( + uint32_t ch, + std::string locale) { + const std::shared_ptr* match = + &DoMatchFallbackFontFromHwFont(ch, locale); + return *match; +} + +const std::shared_ptr& +FontCollection::DoMatchFallbackFontFromHwFont(uint32_t ch, + std::string locale) { + for (const std::pair, FontManagerType>& managerPair : + GetFontManagerOrderWithType()) { + std::vector bcp47; + if (!locale.empty()) + bcp47.push_back(locale.c_str()); + + if (managerPair.second == FontManagerType::DEFAULT_OHOS) { + auto ohosManager = reinterpret_cast(managerPair.first.get()); + if (ohosManager == nullptr) + continue; + + SkString sk_family_name = ohosManager->onMatchFamilyStyleCharacterHwFont( + 0, SkFontStyle(), bcp47.data(), bcp47.size(), ch); + if(sk_family_name.isEmpty()) + continue; + + return GetFallbackFontFamilyForOHOS(managerPair.first, std::string(sk_family_name.c_str())); + } + } + return g_null_family; +} +#endif #if FLUTTER_ENABLE_SKSHAPER diff --git a/engine/flutter/third_party/txt/src/txt/font_collection.h b/engine/flutter/third_party/txt/src/txt/font_collection.h index a8f47c7ce90190e5c520b3a1c1004d88df9cf0fb..78e7b7cd60af001a3b24553aeba107490a90540c 100644 --- a/engine/flutter/third_party/txt/src/txt/font_collection.h +++ b/engine/flutter/third_party/txt/src/txt/font_collection.h @@ -82,6 +82,12 @@ class FontCollection : public std::enable_shared_from_this { #endif // FLUTTER_ENABLE_SKSHAPER +#if defined(OHOS_PLATFORM) && !defined(OHOS_STANDARD_SYSTEM) + const std::shared_ptr& MatchFallbackFontFromHwFont( + uint32_t ch, + std::string locale); +#endif + private: struct FamilyKey { FamilyKey(const std::vector& families, const std::string& loc); @@ -142,6 +148,49 @@ class FontCollection : public std::enable_shared_from_this { sk_sp GetDefaultFontManagerSafely() const; +#if defined(OHOS_PLATFORM) && !defined(OHOS_STANDARD_SYSTEM) + std::shared_ptr + GetMinikinFontCollectionForFamiliesWithVariation( + const std::vector& font_families, + const std::string& locale); + + std::vector, txt::FontManagerType>> + GetFontManagerOrderWithType() const; + + std::shared_ptr FindFontFamilyInManagersWithType( + const std::string& family_name); + + std::shared_ptr CreateMinikinFontFamilyForOHOS( + const sk_sp& manager, + const std::string& family_name); + + std::shared_ptr CreateMinikinFontFamilyExceptOHOS( + const sk_sp& manager, + const std::string& family_name); + + void VaryTypeface(sk_sp& typeface, float wght); + + // Provides a FontFamily that contains glyphs for ch. This caches previously + // matched fonts. Also see FontCollection::DoMatchFallbackFontWithVariation. + const std::shared_ptr& MatchFallbackFontWithVariation( + uint32_t ch, + std::string locale); + + // Performs the actual work of MatchFallbackFont. The result is cached in + // fallback_match_cache_. + const std::shared_ptr& DoMatchFallbackFontWithVariation( + uint32_t ch, + std::string locale); + + const std::shared_ptr& GetFallbackFontFamilyForOHOS( + const sk_sp& manager, + const std::string& family_name); + + const std::shared_ptr& DoMatchFallbackFontFromHwFont( + uint32_t ch, + std::string locale); +#endif + FML_DISALLOW_COPY_AND_ASSIGN(FontCollection); }; diff --git a/engine/flutter/third_party/txt/src/txt/platform_ohos.cc b/engine/flutter/third_party/txt/src/txt/platform_ohos.cc index ecc22cf7b85697d252c798f80e584f77226bb626..7004a2bc5e5255cc3a0c6419f395b4793abb0193 100644 --- a/engine/flutter/third_party/txt/src/txt/platform_ohos.cc +++ b/engine/flutter/third_party/txt/src/txt/platform_ohos.cc @@ -6,14 +6,26 @@ #include "txt/platform.h" +#ifndef OHOS_STANDARD_SYSTEM +#include "src/ports/SkFontMgr_ohos.h" +#endif + namespace txt { std::string GetDefaultFontFamily() { +#ifdef OHOS_STANDARD_SYSTEM return "HarmonyOS-Sans"; +#else + return "sans-serif"; +#endif } sk_sp GetDefaultFontManager() { +#ifdef OHOS_STANDARD_SYSTEM return SkFontMgr::RefDefault(); +#else + return SkFontMgr_New_OHOS(); +#endif } FontManagerType GetDefaultFontManagerType() { diff --git a/flutter_ace_config.gni b/flutter_ace_config.gni deleted file mode 100644 index f528f5b6244fadf7019f4b0083795edacac116ee..0000000000000000000000000000000000000000 --- a/flutter_ace_config.gni +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (c) 2021 Huawei Device Co., Ltd. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/config/clang/clang.gni") -import("//build/ohos_var.gni") - -use_flutter_icu = true - -# Now only on wearable ohos platforms enable this feature -use_system_skia = true -only_wearable_enable = false - -# Now only on wearable ohos platforms enable this feature -use_system_skia = !is_standard_system - -# Enable dump skia draw commands by this config -# Better to change "use_system_skia" to false, otherwise may missing some commands -enable_dump_drawcmd = false - -use_flutter_icu = true - -aosp_libs_dir = "//prebuilts/aosp_prebuilt_libs/asdk_libs" -libs_root = "${aosp_libs_dir}/sdk" - -ace_root = "//foundation/ace/ace_engine" -ace_flutter_engine_root = "$ace_root/flutter_engine" -flutter_root = "//third_party/flutter" -ace_wearable_defines = [ "WEARABLE_PRODUCT" ] - -# In the performance scenario, turn off the ACE_DEBUG macro. -ace_common_defines = [ "ACE_LOG_TAG=\"Ace\"" ] - -ace_ohos_defines = [ "OHOS_PLATFORM" ] - -# ===== For ACE PC preview. ===== -declare_args() { - # Disable glfw window to build for PC preview scenario. - enable_glfw_window = false -} - -# Only use this to set/unset some cflags, use "platform" variable in gn template to add -# source code for Windows. -use_mingw_win = "${current_os}_${current_cpu}" == "mingw_x86_64" - -# source code for mac. -use_mac = "${current_os}_${current_cpu}" == "mac_x64" - -# Toolchain -windows_buildtool = "//build/toolchain/mingw:mingw_x86_64" -objcopy_mingw = "//prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/x86_64-w64-mingw32/bin/objcopy" -mac_buildtool = "//build/toolchain/mac:clang_x64" -objcopy_clang = "$clang_base_path/bin/llvm-objcopy" - -# Defines -ace_windows_defines = [ "WINDOWS_PLATFORM" ] -ace_mac_defines = [ "MAC_PLATFORM" ] - -if (enable_glfw_window) { - ace_common_defines += [ "USE_GLFW_WINDOW" ] -} - -enable_native_view = - use_system_skia && (!only_wearable_enable || is_wearable_product) && - !use_mingw_win && !use_mac diff --git a/flutter_engine.gni b/flutter_engine.gni deleted file mode 100644 index bd56e103c1c9bd952ceb0603fdcaeb1bc8bf57ac..0000000000000000000000000000000000000000 --- a/flutter_engine.gni +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (c) 2021 Huawei Device Co., Ltd. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//third_party/flutter/flutter_ace_config.gni") - -flutter_external_icu_include_dirs = [ - "//third_party/icu/icu4c/source/common", - "//third_party/icu/icu4c/source/i18n", - "//third_party/icu/icu4c/source/ohos", - "//third_party/icu/icu4c/source", -] - -flutter_internal_icu_include_dirs = [ - "$flutter_root/skia/third_party/externals/icu/source/common", - "$flutter_root/skia/third_party/externals/icu/source/i18n", - "$flutter_root/skia/third_party/externals/icu/source", - "$flutter_root/skia/third_party/icu", -] - -ace_external_libharfbuzz_config_include_dirs = [ - "$flutter_root/skia/third_party/harfbuzz", - "$flutter_root/skia/third_party/externals/harfbuzz/src", - "$flutter_root/skia/third_party/icu", - - "//third_party/icu/icu4c/source/common", - "//third_party/icu/icu4c/source/i18n", -] -ace_internal_libharfbuzz_config_include_dirs = [ - "$flutter_root/skia/third_party/harfbuzz", - "$flutter_root/skia/third_party/externals/harfbuzz/src", - "$flutter_root/skia/third_party/icu", - - "$flutter_root/skia/third_party/externals/icu/source/common", - "$flutter_root/skia/third_party/externals/icu/source/i18n", -] - -ace_libsfntly_config_ohos_include_dirs = [ - "$flutter_root/skia/third_party/externals/sfntly/cpp/src", - "$flutter_root/skia/third_party/icu", - - "//third_party/icu/icu4c/source/common", - "//third_party/icu/icu4c/source/i18n", -] - -ace_libsfntly_config_preview_include_dirs = [ - "$flutter_root/skia/third_party/externals/sfntly/cpp/src", - "$flutter_root/skia/third_party/icu", - - "$flutter_root/skia/third_party/externals/icu/source/common", - "$flutter_root/skia/third_party/externals/icu/source/i18n", -] - -ace_pdf_config_ohos_include_dirs = [ - "$flutter_root/skia", - "$flutter_root/skia/third_party/externals/sfntly/cpp/src", - "$flutter_root/skia/third_party/icu", - - "//third_party/icu/icu4c/source/common", - "//third_party/icu/icu4c/source/i18n", -] - -ace_pdf_config_preview_include_dirs = [ - "$flutter_root/skia", - "$flutter_root/skia/third_party/externals/sfntly/cpp/src", - "$flutter_root/skia/third_party/icu", - - "$flutter_root/skia/third_party/externals/icu/source/common", - "$flutter_root/skia/third_party/externals/icu/source/i18n", -] diff --git a/make_skia_include_dir.py b/make_skia_include_dir.py deleted file mode 100755 index 02d3f324c32e3c12b313edf743af78e2bed4e440..0000000000000000000000000000000000000000 --- a/make_skia_include_dir.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (c) 2021 Huawei Device Co., Ltd. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import os -import sys -import subprocess - - -def main(argv): - if len(argv) != 3: # this is called by build system, must has 3 args. - print("argv count error, return!") - return - - path = argv[1] - folder = os.path.exists(path) - if not folder: - os.makedirs(path) - print("make folder OK") - else: - print("folder already existed") - - symlink_path = argv[2] - src_path = os.path.abspath(path) - print("skia path is : " + src_path) - dst_path = os.path.abspath(symlink_path) - print("symlink path is: " + dst_path) - subprocess.run(['ln', '-s', dst_path, src_path]) - -if __name__ == '__main__': - main(sys.argv) diff --git a/skia/include/core/SkFontMgr.h b/skia/include/core/SkFontMgr.h index 39a6bab36e22ad4877e4b69f1d031ed7fa0719c5..076719b2d3e5578778bb8490799bd93e15079ca6 100644 --- a/skia/include/core/SkFontMgr.h +++ b/skia/include/core/SkFontMgr.h @@ -41,6 +41,14 @@ public: void getFamilyName(int index, SkString* familyName) const; SkFontStyleSet* createStyleSet(int index) const; +#if defined(SK_BUILD_FONT_MGR_FOR_PREVIEW_WIN) || (SK_BUILD_FONT_MGR_FOR_PREVIEW_MAC) + /** + * Whether to use the physical device font for previewer flag. + * If true, use physical device font collecton. + * If false, use the font collection installed in users' pc. + */ + static bool physicalDeviceFonts; +#endif /** * The caller must call unref() on the returned object. * Never returns NULL; will return an empty set if the name is not found. @@ -126,6 +134,14 @@ public: /** Return the default fontmgr. */ static sk_sp RefDefault(); +#if defined(SK_BUILD_FONT_MGR_FOR_PREVIEW_WIN) || (SK_BUILD_FONT_MGR_FOR_PREVIEW_MAC) + /** Set the whether to use physical device font in previwer */ + static void setPhysicalDeviceFonts(bool& physicalDeviceFontsEnabled) + { + physicalDeviceFonts = physicalDeviceFontsEnabled; + } +#endif + protected: virtual int onCountFamilies() const = 0; virtual void onGetFamilyName(int index, SkString* familyName) const = 0; diff --git a/skia/src/ports/SkFontHost_mac.cpp b/skia/src/ports/SkFontHost_mac.cpp index 02320aeb578cda79a610a9d9dc6acdb3b88294e2..49310b1f43f314c8563b7472c9c903d8bb67704e 100644 --- a/skia/src/ports/SkFontHost_mac.cpp +++ b/skia/src/ports/SkFontHost_mac.cpp @@ -2912,6 +2912,19 @@ protected: /////////////////////////////////////////////////////////////////////////////// +#if defined(SK_BUILD_FONT_MGR_FOR_PREVIEW_MAC) +#include "src/ports/SkFontMgr_preview.h" +bool SkFontMgr::physicalDeviceFonts = false; +sk_sp SkFontMgr::Factory() +{ + if (SkFontMgr::physicalDeviceFonts) { + return SkFontMgr_New_Preview(); + } else { + return sk_make_sp(); + } +} +#else sk_sp SkFontMgr::Factory() { return sk_make_sp(); } +#endif//defined(SK_BUILD_FONT_MGR_FOR_PREVIEW_MAC) #endif//defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) diff --git a/skia/src/ports/SkFontMgr_config_parser.cpp b/skia/src/ports/SkFontMgr_config_parser.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c14fd7cd288ac1b6ef91d7d785ed2c12108049bc --- /dev/null +++ b/skia/src/ports/SkFontMgr_config_parser.cpp @@ -0,0 +1,573 @@ +/* + * Copyright 2011 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * 2021.9.9 SkFontMgr_config_parser on previewer of ohos. + * Copyright (c) 2021 Huawei Device Co., Ltd. All rights reserved. + */ + +// Despite the name and location, this is portable code. + +#include "src/ports/SkFontMgr_config_parser.h" + +#include + +#include "include/core/SkStream.h" +#include "include/private/SkFixed.h" +#include "src/core/SkTSearch.h" + +#define SK_FONT_CONFIG_FILE_NAME "fonts.xml" + +namespace { + +std::string g_lmpSystemFontsFile = "INVALID_FILE_PATH"; + +} + +std::string SkFontMgr_Config_Parser::basePath; + +/** + * This parser file for android contains TWO 'familyset' handlers: + * One for JB and earlier and the other for LMP and later. + * For previewer, we only use the fonts.xml in LMP, so the LMP 'familyset' handler is only needed. + */ + +struct FamilyData; + +struct TagHandler { + /** Called at the start tag. + * Called immediately after the parent tag retuns this handler from a call to 'tag'. + * Allows setting up for handling the tag content and processing attributes. + * If nullptr, will not be called. + */ + void (*start)(FamilyData* data, const char* tag, const char** attributes); + + /** Called at the end tag. + * Allows post-processing of any accumulated information. + * This will be the last call made in relation to the current tag. + * If nullptr, will not be called. + */ + void (*end)(FamilyData* data, const char* tag); + + /** Called when a nested tag is encountered. + * This is responsible for determining how to handle the tag. + * If the tag is not recognized, return nullptr to skip the tag. + * If nullptr, all nested tags will be skipped. + */ + const TagHandler* (*tag)(FamilyData* data, const char* tag, const char** attributes); + + /** The character handler for this tag. + * This is only active for character data contained directly in this tag (not sub-tags). + * The first parameter will be castable to a FamilyData*. + * If nullptr, any character data in this tag will be ignored. + */ + XML_CharacterDataHandler chars; +}; + +/** Represents the current parsing state. */ +struct FamilyData { + FamilyData(XML_Parser parser, SkTDArray& families, + const SkString& basePath, bool isFallback, const char* filename, + const TagHandler* topLevelHandler) + : fParser(parser) + , fFamilies(families) + , fCurrentFamily(nullptr) + , fCurrentFontInfo(nullptr) + , fVersion(0) + , fBasePath(basePath) + , fIsFallback(isFallback) + , fFilename(filename) + , fDepth(1) + , fSkip(0) + , fHandler(&topLevelHandler, 1) + { } + + XML_Parser fParser; // The expat parser doing the work, owned by caller + SkTDArray& fFamilies; // The array to append families, owned by caller + std::unique_ptr fCurrentFamily; // The family being created, owned by this + FontFileInfo* fCurrentFontInfo; // The info being created, owned by fCurrentFamily + int fVersion; // The version of the file parsed. + const SkString& fBasePath; // The current base path. + const bool fIsFallback; // The file being parsed is a fallback file + const char* fFilename; // The name of the file currently being parsed. + + int fDepth; // The current element depth of the parse. + int fSkip; // The depth to stop skipping, 0 if not skipping. + SkTDArray fHandler; // The stack of current tag handlers. +}; + +static bool memeq(const char *s1, const char *s2, size_t n1, size_t n2) +{ + return n1 == n2 && 0 == memcmp(s1, s2, n1); +} +#define MEMEQ(c, s, n) memeq(c, s, sizeof(c) - 1, n) + +#define ATTS_NON_NULL(a, i) (a[i] != nullptr && a[i + 1] != nullptr) + +#define SK_FONTMGR_CONFIG_PARSER_PREFIX "[SkFontMgr Config Parser] " + +#define SK_FONTCONFIGPARSER_WARNING(message, ...) \ + SkDebugf(SK_FONTMGR_CONFIG_PARSER_PREFIX "%s:%d:%d: warning: " message "\n", self->fFilename, \ + XML_GetCurrentLineNumber(self->fParser), XML_GetCurrentColumnNumber(self->fParser), ##__VA_ARGS__) + +static bool is_whitespace(char c) +{ + return c == ' ' || c == '\n' || c == '\r' || c == '\t'; +} + +static void trim_string(SkString* s) +{ + char* str = s->writable_str(); + const char* start = str; // start is inclusive + const char* end = start + s->size(); // end is exclusive + while (is_whitespace(*start)) { ++start; } + if (start != end) { + --end; // make end inclusive + while (is_whitespace(*end)) { + --end; + } + ++end; // make end exclusive + } + size_t len = end - start; + memmove(str, start, len); + s->resize(len); +} + +namespace lmpParser { + +static const TagHandler axisHandler = { + /*start*/[](FamilyData* self, const char* tag, const char** attributes) { + FontFileInfo& file = *self->fCurrentFontInfo; + SkFourByteTag axisTag = SkSetFourByteTag('\0', '\0', '\0', '\0'); + SkFixed axisStyleValue = 0; + bool axisTagIsValid = false; + bool axisStyleValueIsValid = false; + for (size_t i = 0; ATTS_NON_NULL(attributes, i); i += 2) { + const char* name = attributes[i]; + const char* value = attributes[i + 1]; + size_t nameLen = strlen(name); + if (MEMEQ("tag", name, nameLen)) { + size_t valueLen = strlen(value); + if (valueLen == 4) { + axisTag = SkSetFourByteTag(value[0], value[1], value[2], value[3]); + axisTagIsValid = true; + for (int j = 0; j < file.fVariationDesignPosition.count() - 1; ++j) { + if (file.fVariationDesignPosition[j].axis == axisTag) { + axisTagIsValid = false; + SK_FONTCONFIGPARSER_WARNING("'%c%c%c%c' axis specified more than once", + (axisTag >> 24) & 0xFF, + (axisTag >> 16) & 0xFF, + (axisTag >> 8) & 0xFF, + (axisTag ) & 0xFF); + } + } + } else { + SK_FONTCONFIGPARSER_WARNING("'%s' is an invalid axis tag", value); + } + } else if (MEMEQ("stylevalue", name, nameLen)) { + if (parse_fixed<16>(value, &axisStyleValue)) { + axisStyleValueIsValid = true; + } else { + SK_FONTCONFIGPARSER_WARNING("'%s' is an invalid axis stylevalue", value); + } + } + } + if (axisTagIsValid && axisStyleValueIsValid) { + auto& coordinate = file.fVariationDesignPosition.push_back(); + coordinate.axis = axisTag; + coordinate.value = SkFixedToScalar(axisStyleValue); + } + }, + /*end*/nullptr, + /*tag*/nullptr, + /*chars*/nullptr, +}; + +static const TagHandler fontHandler = { + /*start*/[](FamilyData* self, const char* tag, const char** attributes) { + // 'weight' (non-negative integer) [default 0] + // 'style' ("normal", "italic") [default "auto"] + // 'index' (non-negative integer) [default 0] + // The character data should be a filename. + FontFileInfo& file = self->fCurrentFamily->fFonts.push_back(); + self->fCurrentFontInfo = &file; + SkString fallbackFor; + for (size_t i = 0; ATTS_NON_NULL(attributes, i); i += 2) { + const char* name = attributes[i]; + const char* value = attributes[i + 1]; + size_t nameLen = strlen(name); + if (MEMEQ("weight", name, nameLen)) { + if (!parse_non_negative_integer(value, &file.fWeight)) { + SK_FONTCONFIGPARSER_WARNING("'%s' is an invalid weight", value); + } + } else if (MEMEQ("style", name, nameLen)) { + size_t valueLen = strlen(value); + if (MEMEQ("normal", value, valueLen)) { + file.fStyle = FontFileInfo::Style::kNormal; + } else if (MEMEQ("italic", value, valueLen)) { + file.fStyle = FontFileInfo::Style::kItalic; + } + } else if (MEMEQ("index", name, nameLen)) { + if (!parse_non_negative_integer(value, &file.fIndex)) { + SK_FONTCONFIGPARSER_WARNING("'%s' is an invalid index", value); + } + } else if (MEMEQ("fallbackFor", name, nameLen)) { + /** fallbackFor specifies a family fallback and should have been on family. */ + fallbackFor = value; + } + } + if (!fallbackFor.isEmpty()) { + std::unique_ptr* fallbackFamily = + self->fCurrentFamily->fallbackFamilies.find(fallbackFor); + if (!fallbackFamily) { + std::unique_ptr newFallbackFamily( + new FontFamily(self->fCurrentFamily->fBasePath, true)); + fallbackFamily = self->fCurrentFamily->fallbackFamilies.set( + fallbackFor, std::move(newFallbackFamily)); + (*fallbackFamily)->fLanguages = self->fCurrentFamily->fLanguages; + (*fallbackFamily)->fVariant = self->fCurrentFamily->fVariant; + (*fallbackFamily)->fOrder = self->fCurrentFamily->fOrder; + (*fallbackFamily)->fFallbackFor = fallbackFor; + } + self->fCurrentFontInfo = &(*fallbackFamily)->fFonts.emplace_back(file); + self->fCurrentFamily->fFonts.pop_back(); + } + }, + /*end*/[](FamilyData* self, const char* tag) { + trim_string(&self->fCurrentFontInfo->fFileName); + }, + /*tag*/[](FamilyData* self, const char* tag, const char** attributes) -> const TagHandler* { + size_t len = strlen(tag); + if (MEMEQ("axis", tag, len)) { + return &axisHandler; + } + return nullptr; + }, + /*chars*/[](void* data, const char* s, int len) { + FamilyData* self = static_cast(data); + self->fCurrentFontInfo->fFileName.append(s, len); + } +}; + +static const TagHandler familyHandler = { + /*start*/[](FamilyData* self, const char* tag, const char** attributes) { + // 'name' (string) [optional] + // 'lang' (space separated string) [default ""] + // 'variant' ("elegant", "compact") [default "default"] + // If there is no name, this is a fallback only font. + FontFamily* family = new FontFamily(self->fBasePath, true); + self->fCurrentFamily.reset(family); + for (size_t i = 0; ATTS_NON_NULL(attributes, i); i += 2) { + const char* name = attributes[i]; + const char* value = attributes[i + 1]; + size_t nameLen = strlen(name); + size_t valueLen = strlen(value); + if (MEMEQ("name", name, nameLen)) { + SkAutoAsciiToLC tolc(value); + family->fNames.push_back().set(tolc.lc()); + family->fIsFallbackFont = false; + } else if (MEMEQ("lang", name, nameLen)) { + size_t i = 0; + while (true) { + for (; i < valueLen && is_whitespace(value[i]); ++i) { } + if (i == valueLen) { + break; + } + size_t j; + for (j = i + 1; j < valueLen && !is_whitespace(value[j]); ++j) { } + family->fLanguages.emplace_back(value + i, j - i); + i = j; + if (i == valueLen) { + break; + } + } + } else if (MEMEQ("variant", name, nameLen)) { + if (MEMEQ("elegant", value, valueLen)) { + family->fVariant = kElegant_FontVariant; + } else if (MEMEQ("compact", value, valueLen)) { + family->fVariant = kCompact_FontVariant; + } + } + } + }, + /*end*/[](FamilyData* self, const char* tag) { + *self->fFamilies.append() = self->fCurrentFamily.release(); + }, + /*tag*/[](FamilyData* self, const char* tag, const char** attributes) -> const TagHandler* { + size_t len = strlen(tag); + if (MEMEQ("font", tag, len)) { + return &fontHandler; + } + return nullptr; + }, + /*chars*/nullptr, +}; + +static FontFamily* find_family(FamilyData* self, const SkString& familyName) +{ + for (int i = 0; i < self->fFamilies.count(); i++) { + FontFamily* candidate = self->fFamilies[i]; + for (int j = 0; j < candidate->fNames.count(); j++) { + if (candidate->fNames[j] == familyName) { + return candidate; + } + } + } + return nullptr; +} + +static const TagHandler aliasHandler = { + /*start*/[](FamilyData* self, const char* tag, const char** attributes) { + // 'name' (string) introduces a new family name. + // 'to' (string) specifies which (previous) family to alias + // 'weight' (non-negative integer) [optional] + // If it *does not* have a weight, 'name' is an alias for the entire 'to' family. + // If it *does* have a weight, 'name' is a new family consisting of + // the font(s) with 'weight' from the 'to' family. + + SkString aliasName; + SkString to; + int weight = 0; + for (size_t i = 0; ATTS_NON_NULL(attributes, i); i += 2) { + const char* name = attributes[i]; + const char* value = attributes[i + 1]; + size_t nameLen = strlen(name); + if (MEMEQ("name", name, nameLen)) { + SkAutoAsciiToLC tolc(value); + aliasName.set(tolc.lc()); + } else if (MEMEQ("to", name, nameLen)) { + to.set(value); + } else if (MEMEQ("weight", name, nameLen)) { + if (!parse_non_negative_integer(value, &weight)) { + SK_FONTCONFIGPARSER_WARNING("'%s' is an invalid weight", value); + } + } + } + + // Assumes that the named family is already declared + FontFamily* targetFamily = find_family(self, to); + if (!targetFamily) { + SK_FONTCONFIGPARSER_WARNING("'%s' alias target not found", to.c_str()); + return; + } + + if (weight) { + FontFamily* family = new FontFamily(targetFamily->fBasePath, self->fIsFallback); + family->fNames.push_back().set(aliasName); + + for (int i = 0; i < targetFamily->fFonts.count(); i++) { + if (targetFamily->fFonts[i].fWeight == weight) { + family->fFonts.push_back(targetFamily->fFonts[i]); + } + } + *self->fFamilies.append() = family; + } else { + targetFamily->fNames.push_back().set(aliasName); + } + }, + /*end*/nullptr, + /*tag*/nullptr, + /*chars*/nullptr, +}; + +static const TagHandler familySetHandler = { + /*start*/[](FamilyData* self, const char* tag, const char** attributes) { }, + /*end*/nullptr, + /*tag*/[](FamilyData* self, const char* tag, const char** attributes) -> const TagHandler* { + size_t len = strlen(tag); + if (MEMEQ("family", tag, len)) { + return &familyHandler; + } else if (MEMEQ("alias", tag, len)) { + return &aliasHandler; + } + return nullptr; + }, + /*chars*/nullptr, +}; + +} // namespace lmpParser + +static const TagHandler topLevelHandler = { + /*start*/nullptr, + /*end*/nullptr, + /*tag*/[](FamilyData* self, const char* tag, const char** attributes) -> const TagHandler* { + size_t len = strlen(tag); + if (MEMEQ("familyset", tag, len)) { + // 'version' (non-negative integer) [default 0] + for (size_t i = 0; ATTS_NON_NULL(attributes, i); i += 2) { + const char* name = attributes[i]; + size_t nameLen = strlen(name); + if (MEMEQ("version", name, nameLen)) { + const char* value = attributes[i + 1]; + if (parse_non_negative_integer(value, &self->fVersion)) { + if (self->fVersion >= 21) { + return &lmpParser::familySetHandler; + } + } + } + } + } + return nullptr; + }, + /*chars*/ nullptr, +}; + +static void XMLCALL start_element_handler(void *data, const char *tag, const char **attributes) +{ + FamilyData* self = static_cast(data); + + if (!self->fSkip) { + const TagHandler* parent = self->fHandler.top(); + const TagHandler* child = parent->tag ? parent->tag(self, tag, attributes) : nullptr; + if (child) { + if (child->start) { + child->start(self, tag, attributes); + } + self->fHandler.push_back(child); + XML_SetCharacterDataHandler(self->fParser, child->chars); + } else { + SK_FONTCONFIGPARSER_WARNING("'%s' tag not recognized, skipping", tag); + XML_SetCharacterDataHandler(self->fParser, nullptr); + self->fSkip = self->fDepth; + } + } + + ++self->fDepth; +} + +static void XMLCALL end_element_handler(void* data, const char* tag) +{ + FamilyData* self = static_cast(data); + --self->fDepth; + + if (!self->fSkip) { + const TagHandler* child = self->fHandler.top(); + if (child->end) { + child->end(self, tag); + } + self->fHandler.pop(); + const TagHandler* parent = self->fHandler.top(); + XML_SetCharacterDataHandler(self->fParser, parent->chars); + } + + if (self->fSkip == self->fDepth) { + self->fSkip = 0; + const TagHandler* parent = self->fHandler.top(); + XML_SetCharacterDataHandler(self->fParser, parent->chars); + } +} + +static void XMLCALL xml_entity_decl_handler(void *data, + const XML_Char *entityName, + int is_parameter_entity, + const XML_Char *value, + int value_length, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName) +{ + FamilyData* self = static_cast(data); + SK_FONTCONFIGPARSER_WARNING("'%s' entity declaration found, stopping processing", entityName); + XML_StopParser(self->fParser, XML_FALSE); +} + +static const XML_Memory_Handling_Suite sk_XML_alloc = { + sk_malloc_throw, + sk_realloc_throw, + sk_free +}; + +/** + * This function parses the given filename and stores the results in the given + * families array. Returns the version of the file, negative if the file does not exist. + */ +static int parse_config_file(const char* filename, SkTDArray& families, + const SkString& basePath, bool isFallback) +{ + SkFILEStream file(filename); + + // Some of the files we attempt to parse (in particular, /vendor/etc/fallback_fonts.xml) + // are optional - failure here is okay because one of these optional files may not exist. + if (!file.isValid()) { + SkDebugf(SK_FONTMGR_CONFIG_PARSER_PREFIX "'%s' could not be opened\n", filename); + return -1; + } + + SkAutoTCallVProc, XML_ParserFree> parser( + XML_ParserCreate_MM(nullptr, &sk_XML_alloc, nullptr)); + if (!parser) { + SkDebugf(SK_FONTMGR_CONFIG_PARSER_PREFIX "could not create XML parser\n"); + return -1; + } + + FamilyData self(parser, families, basePath, isFallback, filename, &topLevelHandler); + XML_SetUserData(parser, &self); + + // Disable entity processing, to inhibit internal entity expansion. See expat CVE-2013-0340 + XML_SetEntityDeclHandler(parser, xml_entity_decl_handler); + + // Start parsing oldschool; switch these in flight if we detect a newer version of the file. + XML_SetElementHandler(parser, start_element_handler, end_element_handler); + + // One would assume it would be faster to have a buffer on the stack and call XML_Parse. + // But XML_Parse will call XML_GetBuffer anyway and memmove the passed buffer into it. + // (Unless XML_CONTEXT_BYTES is undefined, but all users define it.) + // In debug, buffer a small odd number of bytes to detect slicing in XML_CharacterDataHandler. + static const int bufferSize = 512 SkDEBUGCODE(-507); + bool done = false; + while (!done) { + void* buffer = XML_GetBuffer(parser, bufferSize); + if (!buffer) { + SkDebugf(SK_FONTMGR_CONFIG_PARSER_PREFIX "could not buffer enough to continue\n"); + return -1; + } + size_t len = file.read(buffer, bufferSize); + done = file.isAtEnd(); + XML_Status status = XML_ParseBuffer(parser, len, done); + if (XML_STATUS_ERROR == status) { + XML_Error error = XML_GetErrorCode(parser); + int line = XML_GetCurrentLineNumber(parser); + int column = XML_GetCurrentColumnNumber(parser); + const XML_LChar* errorString = XML_ErrorString(error); + SkDebugf(SK_FONTMGR_CONFIG_PARSER_PREFIX "%s:%d:%d error %d: %s.\n", + filename, line, column, error, errorString); + return -1; + } + } + return self.fVersion; +} + +/** Returns the version of the system font file actually found, negative if none. */ +static int append_system_font_families(SkTDArray& fontFamilies, + const SkString& basePath) +{ + int version = parse_config_file(g_lmpSystemFontsFile.c_str(), fontFamilies, basePath, false); + return version; +} + +void SkFontMgr_Config_Parser::GetSystemFontFamilies(SkTDArray& fontFamilies) +{ + std::string fontBasePath = this->basePath; + if (fontBasePath.empty()) { + printf("error getting font base path '%s'\n", fontBasePath.c_str()); + } + SkString basePath(fontBasePath.c_str()); + g_lmpSystemFontsFile = fontBasePath.append(SK_FONT_CONFIG_FILE_NAME); + append_system_font_families(fontFamilies, basePath); +} + +SkLanguage SkLanguage::getParent() const +{ + SkASSERT(!fTag.isEmpty()); + const char* tag = fTag.c_str(); + + // strip off the rightmost "-.*" + const char* parentTagEnd = strrchr(tag, '-'); + if (parentTagEnd == nullptr) { + return SkLanguage(); + } + size_t parentTagLen = parentTagEnd - tag; + return SkLanguage(tag, parentTagLen); +} \ No newline at end of file diff --git a/skia/src/ports/SkFontMgr_config_parser.h b/skia/src/ports/SkFontMgr_config_parser.h new file mode 100644 index 0000000000000000000000000000000000000000..7c8d918c98930c80906ba0fa9d4fd3cffd66a30b --- /dev/null +++ b/skia/src/ports/SkFontMgr_config_parser.h @@ -0,0 +1,236 @@ +/* + * Copyright 2011 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * 2021.9.9 SkFontMgr_config_parser on previewer of ohos. + * Copyright (c) 2021 Huawei Device Co., Ltd. All rights reserved. + */ + +#ifndef SkFontMgr_config_parser_DEFINED +#define SkFontMgr_config_parser_DEFINED + +#include + +#include "include/core/SkFontMgr.h" +#include "include/core/SkString.h" +#include "include/core/SkTypes.h" +#include "include/private/SkTArray.h" +#include "include/private/SkTDArray.h" +#include "include/private/SkTHash.h" + +/** \class SkLanguage + + The SkLanguage class represents a human written language, and is used by + text draw operations to determine which glyph to draw when drawing + characters with variants (ie Han-derived characters). +*/ +class SkLanguage { +public: + SkLanguage() { } + SkLanguage(const SkString& tag) : fTag(tag) { } + SkLanguage(const char* tag) : fTag(tag) { } + SkLanguage(const char* tag, size_t len) : fTag(tag, len) { } + SkLanguage(const SkLanguage& b) : fTag(b.fTag) { } + ~SkLanguage() = default; + + /** Gets a BCP 47 language identifier for this SkLanguage. + @return a BCP 47 language identifier representing this language + */ + const SkString& getTag() const + { + return fTag; + } + + /** Performs BCP 47 fallback to return an SkLanguage one step more general. + @return an SkLanguage one step more general + */ + SkLanguage getParent() const; + + bool operator==(const SkLanguage& b) const + { + return fTag == b.fTag; + } + bool operator!=(const SkLanguage& b) const + { + return fTag != b.fTag; + } + SkLanguage& operator=(const SkLanguage& b) + { + fTag = b.fTag; + return *this; + } + +private: + //! BCP 47 language identifier + SkString fTag; +}; + +enum FontVariants { + kDefault_FontVariant = 0x01, + kCompact_FontVariant = 0x02, + kElegant_FontVariant = 0x04, + kLast_FontVariant = kElegant_FontVariant, +}; +typedef uint32_t FontVariant; + +// Must remain trivially movable (can be memmoved). +struct FontFileInfo { + FontFileInfo() : fIndex(0), fWeight(0), fStyle(Style::kAuto) { } + + SkString fFileName; + int fIndex; + int fWeight; + enum class Style { kAuto, kNormal, kItalic } fStyle; + SkTArray fVariationDesignPosition; +}; + +/** + * A font family provides one or more names for a collection of fonts, each of + * which has a different style (normal, italic) or weight (thin, light, bold, + * etc). + * Some fonts may occur in compact variants for use in the user interface. + * Android distinguishes "fallback" fonts to support non-ASCII character sets. + */ +struct FontFamily { + FontFamily(const SkString& basePath, bool isFallbackFont) + : fVariant(kDefault_FontVariant) + , fOrder(-1) + , fIsFallbackFont(isFallbackFont) + , fBasePath(basePath) + { } + + SkTArray fNames; + SkTArray fFonts; + SkTArray fLanguages; + SkTHashMap> fallbackFamilies; + FontVariant fVariant; + int fOrder; // internal to the parser, not useful to users. + bool fIsFallbackFont; + SkString fFallbackFor; + const SkString fBasePath; +}; + +class SkFontMgr_Config_Parser { +public: + SkFontMgr_Config_Parser() = default; + ~SkFontMgr_Config_Parser() = default; + + static void setFontBasePathCallback(std::string& fontBasePath) + { + basePath = fontBasePath; + } + + static SkFontMgr_Config_Parser& GetInstance() + { + static SkFontMgr_Config_Parser instance; + return instance; + } + + /** Parses system font configuration files and appends result to fontFamilies. */ + void GetSystemFontFamilies(SkTDArray &fontFamilies); + +private: + + static std::string basePath; + +}; + +/** Parses a null terminated string into an integer type, checking for overflow. + * http://www.w3.org/TR/html-markup/datatypes.html#common.data.integer.non-negative-def + * + * If the string cannot be parsed into 'value', returns false and does not change 'value'. + */ +template static bool parse_non_negative_integer(const char *s, T *value) +{ + static_assert(std::numeric_limits::is_integer, "T_must_be_integer"); + + if (*s == '\0') { + return false; + } + + const T nMax = std::numeric_limits::max() / 10; + const T dMax = std::numeric_limits::max() - (nMax * 10); + T n = 0; + for (; *s; ++s) { + // Check if digit + if (*s < '0' || '9' < *s) { + return false; + } + T d = *s - '0'; + // Check for overflow + if (n > nMax || (n == nMax && d > dMax)) { + return false; + } + n = (n * 10) + d; + } + *value = n; + return true; +} + +/** Parses a null terminated string into a signed fixed point value with bias N. + * + * Like http://www.w3.org/TR/html-markup/datatypes.html#common.data.float-def , + * but may start with '.' and does not support 'e'. '-?((:digit:+(.:digit:+)?)|(.:digit:+))' + * + * Checks for overflow. + * Low bit rounding is not defined (is currently truncate). + * Bias (N) required to allow for the sign bit and 4 bits of integer. + * + * If the string cannot be parsed into 'value', returns false and does not change 'value'. + */ +template static bool parse_fixed(const char *s, T *value) +{ + static_assert(std::numeric_limits::is_integer, "T_must_be_integer"); + static_assert(std::numeric_limits::is_signed, "T_must_be_signed"); + static_assert(sizeof(T) * CHAR_BIT - N >= 5, "N_must_leave_four_bits_plus_sign"); + + bool negate = false; + if (*s == '-') { + ++s; + negate = true; + } + if (*s == '\0') { + return false; + } + + const T nMax = (std::numeric_limits::max() >> N) / 10; + const T dMax = (std::numeric_limits::max() >> N) - (nMax * 10); + T n = 0; + T frac = 0; + for (; *s; ++s) { + // Check if digit + if (*s < '0' || '9' < *s) { + // If it wasn't a digit, check if it is a '.' followed by something. + if (*s != '.' || s[1] == '\0') { + return false; + } + // Find the end, verify digits. + for (++s; *s; ++s) { + if (*s < '0' || '9' < *s) { + return false; + } + } + // Read back toward the '.'. + for (--s; *s != '.'; --s) { + T d = *s - '0'; + frac = (frac + (d << N)) / 10; // This requires four bits overhead. + } + break; + } + T d = *s - '0'; + // Check for overflow + if (n > nMax || (n == nMax && d > dMax)) { + return false; + } + n = (n * 10) + d; + } + if (negate) { + n = -n; + frac = -frac; + } + *value = SkLeftShift(n, N) + frac; + return true; +} + +#endif /* SkFontMgr_config_parser_DEFINED */ diff --git a/skia/src/ports/SkFontMgr_preview.cpp b/skia/src/ports/SkFontMgr_preview.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d43b495169e7165cc3e0a0de5f42371d5354ef9a --- /dev/null +++ b/skia/src/ports/SkFontMgr_preview.cpp @@ -0,0 +1,269 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * 2021.9.9 SkFontMgr on previewer of ohos. + * Copyright (c) 2021 Huawei Device Co., Ltd. All rights reserved. + */ + +#include "src/ports/SkFontMgr_preview.h" + +#include "src/core/SkTSearch.h" + +SkFontMgr_Preview::SkFontMgr_Preview() +{ + SkTDArray families; + SkFontMgr_Config_Parser::GetInstance().GetSystemFontFamilies(families); + this->buildNameToFamilyMap(families); + this->findDefaultStyleSet(); + families.deleteAll(); +} + +int SkFontMgr_Preview::onCountFamilies() const +{ + return fNameToFamilyMap.count(); +} + +void SkFontMgr_Preview::onGetFamilyName(int index, SkString* familyName) const +{ + if (index < 0 || fNameToFamilyMap.count() <= index) { + familyName->reset(); + return; + } + familyName->set(fNameToFamilyMap[index].name); +} + +SkFontStyleSet* SkFontMgr_Preview::onCreateStyleSet(int index) const +{ + if (index < 0 || fNameToFamilyMap.count() <= index) { + return nullptr; + } + return SkRef(fNameToFamilyMap[index].styleSet); +} + +SkFontStyleSet* SkFontMgr_Preview::onMatchFamily(const char familyName[]) const +{ + if (!familyName) { + return nullptr; + } + SkAutoAsciiToLC tolc(familyName); + for (int i = 0; i < fNameToFamilyMap.count(); ++i) { + if (fNameToFamilyMap[i].name.equals(tolc.lc())) { + return SkRef(fNameToFamilyMap[i].styleSet); + } + } + // TODO: eventually we should not need to name fallback families. + for (int i = 0; i < fFallbackNameToFamilyMap.count(); ++i) { + if (fFallbackNameToFamilyMap[i].name.equals(tolc.lc())) { + return SkRef(fFallbackNameToFamilyMap[i].styleSet); + } + } + return nullptr; +} + +SkTypeface* SkFontMgr_Preview::onMatchFamilyStyle(const char familyName[], const SkFontStyle& style) const +{ + sk_sp sset(this->matchFamily(familyName)); + return sset->matchStyle(style); +} + +SkTypeface* SkFontMgr_Preview::onMatchFaceStyle(const SkTypeface* typeface, const SkFontStyle& style) const +{ + for (int i = 0; i < fStyleSets.count(); ++i) { + for (int j = 0; j < fStyleSets[i]->fStyles.count(); ++j) { + if (fStyleSets[i]->fStyles[j].get() == typeface) { + return fStyleSets[i]->matchStyle(style); + } + } + } + return nullptr; +} + +sk_sp SkFontMgr_Preview::find_family_style_character( + const SkString& familyName, + const SkTArray& fallbackNameToFamilyMap, + const SkFontStyle& style, bool elegant, + const SkString& langTag, SkUnichar character) +{ + for (int i = 0; i < fallbackNameToFamilyMap.count(); ++i) { + SkFontStyleSet_Preview* family = fallbackNameToFamilyMap[i].styleSet; + if (familyName != family->fFallbackFor) { + continue; + } + sk_sp face(family->matchStyle(style)); + + if (!langTag.isEmpty() && + std::none_of(face->fLang.begin(), face->fLang.end(), [&](SkLanguage lang) { + return lang.getTag().startsWith(langTag.c_str()); })) { + continue; + } + + if (SkToBool(face->fVariantStyle & kElegant_FontVariant) != elegant) { + continue; + } + + if (face->unicharToGlyph(character) != 0) { + return face; + } + } + return nullptr; +} + +SkTypeface* SkFontMgr_Preview::onMatchFamilyStyleCharacter(const char familyName[], + const SkFontStyle& style, + const char* bcp47[], + int bcp47Count, + SkUnichar character) const +{ + // The variant 'elegant' is 'not squashed', 'compact' is 'stays in ascent/descent'. + // The variant 'default' means 'compact and elegant'. + // As a result, it is not possible to know the variant context from the font alone. + // TODO: add 'is_elegant' and 'is_compact' bits to 'style' request. + SkString familyNameString(familyName); + for (const SkString& currentFamilyName : { familyNameString, SkString() }) { + // The first time match anything elegant, second time anything not elegant. + for (int elegant = 2; elegant-- > 0;) { + for (int bcp47Index = bcp47Count; bcp47Index-- > 0;) { + SkLanguage lang(bcp47[bcp47Index]); + while (!lang.getTag().isEmpty()) { + sk_sp matchingTypeface = + find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap, + style, SkToBool(elegant), + lang.getTag(), character); + if (matchingTypeface) { + return matchingTypeface.release(); + } + lang = lang.getParent(); + } + } + sk_sp matchingTypeface = + find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap, + style, SkToBool(elegant), + SkString(), character); + if (matchingTypeface) { + return matchingTypeface.release(); + } + } + } + return nullptr; +} + +sk_sp SkFontMgr_Preview::onMakeFromData(sk_sp data, int ttcIndex) const +{ + return this->makeFromStream(std::unique_ptr(new SkMemoryStream(std::move(data))), + ttcIndex); +} + +sk_sp SkFontMgr_Preview::onMakeFromFile(const char path[], int ttcIndex) const +{ + std::unique_ptr stream = SkStream::MakeFromFile(path); + return stream.get() ? this->makeFromStream(std::move(stream), ttcIndex) : nullptr; +} + +sk_sp SkFontMgr_Preview::onMakeFromStreamIndex(std::unique_ptr stream, int ttcIndex) const +{ + bool isFixedPitch; + SkFontStyle style; + SkString name; + if (!fScanner.scanFont(stream.get(), ttcIndex, &name, &style, &isFixedPitch, nullptr)) { + return nullptr; + } + auto data = skstd::make_unique(std::move(stream), ttcIndex, nullptr, 0); + return sk_sp(new SkTypeface_PreviewStream(std::move(data), style, isFixedPitch, name)); +} + +sk_sp SkFontMgr_Preview::onMakeFromStreamArgs(std::unique_ptr stream, + const SkFontArguments& args) const +{ + using Scanner = SkTypeface_FreeType::Scanner; + bool isFixedPitch; + SkFontStyle style; + SkString name; + Scanner::AxisDefinitions axisDefinitions; + if (!fScanner.scanFont(stream.get(), args.getCollectionIndex(), + &name, &style, &isFixedPitch, &axisDefinitions)) { + return nullptr; + } + SkAutoSTMalloc<4, SkFixed> axisValues(axisDefinitions.count()); + Scanner::computeAxisValues(axisDefinitions, args.getVariationDesignPosition(), + axisValues, name); + auto data = skstd::make_unique(std::move(stream), args.getCollectionIndex(), + axisValues.get(), axisDefinitions.count()); + return sk_sp(new SkTypeface_PreviewStream(std::move(data), style, isFixedPitch, name)); +} + +sk_sp SkFontMgr_Preview::onMakeFromFontData(std::unique_ptr data) const +{ + SkStreamAsset* stream(data->getStream()); + bool isFixedPitch; + SkFontStyle style; + SkString name; + if (!fScanner.scanFont(stream, data->getIndex(), &name, &style, &isFixedPitch, nullptr)) { + return nullptr; + } + return sk_sp(new SkTypeface_PreviewStream(std::move(data), style, isFixedPitch, name)); +} + +sk_sp SkFontMgr_Preview::onLegacyMakeTypeface(const char familyName[], SkFontStyle style) const +{ + if (familyName) { + return sk_sp(this->onMatchFamilyStyle(familyName, style)); + } + return sk_sp(fDefaultStyleSet->matchStyle(style)); +} + +void SkFontMgr_Preview::addFamily(FontFamily& family, int familyIndex) +{ + SkTArray* nameToFamily = &fNameToFamilyMap; + if (family.fIsFallbackFont) { + nameToFamily = &fFallbackNameToFamilyMap; + if (0 == family.fNames.count()) { + SkString& fallbackName = family.fNames.push_back(); + fallbackName.printf("%.2x##fallback", familyIndex); + } + } + sk_sp newSet = + sk_make_sp(family, fScanner); + if (0 == newSet->count()) { + return; + } + for (const SkString& name : family.fNames) { + nameToFamily->emplace_back(NameToFamily { name, newSet.get() }); + } + fStyleSets.emplace_back(std::move(newSet)); +} + +void SkFontMgr_Preview::buildNameToFamilyMap(SkTDArray families) +{ + int familyIndex = 0; + for (FontFamily* family : families) { + addFamily(*family, familyIndex++); + family->fallbackFamilies.foreach([this, &familyIndex] + (SkString, std::unique_ptr* fallbackFamily) { + addFamily(*(*fallbackFamily).get(), familyIndex++); + } + ); + } +} + +void SkFontMgr_Preview::findDefaultStyleSet() +{ + SkASSERT(!fStyleSets.empty()); + static const char* defaultNames[] = { "sans-serif" }; + for (const char* defaultName : defaultNames) { + fDefaultStyleSet.reset(this->onMatchFamily(defaultName)); + if (fDefaultStyleSet) { + break; + } + } + if (nullptr == fDefaultStyleSet) { + fDefaultStyleSet = fStyleSets[0]; + } + SkASSERT(fDefaultStyleSet); +} + +sk_sp SkFontMgr_New_Preview() +{ + return sk_make_sp(); +} \ No newline at end of file diff --git a/skia/src/ports/SkFontMgr_preview.h b/skia/src/ports/SkFontMgr_preview.h new file mode 100644 index 0000000000000000000000000000000000000000..774a03024c576dd7f581aa6602aadbac48af1adc --- /dev/null +++ b/skia/src/ports/SkFontMgr_preview.h @@ -0,0 +1,363 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * 2021.9.9 SkFontMgr on previewer of ohos. + * Copyright (c) 2021 Huawei Device Co., Ltd. All rights reserved. + */ + +#ifndef SkFontMgr_preview_DEFINED +#define SkFontMgr_preview_DEFINED + +#include "include/core/SkFontMgr.h" +#include "include/core/SkData.h" +#include "include/core/SkFontStyle.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkStream.h" +#include "include/core/SkString.h" +#include "include/core/SkTypeface.h" +#include "include/private/SkTArray.h" +#include "include/private/SkTDArray.h" +#include "include/private/SkFixed.h" +#include "include/private/SkTemplates.h" +#include "src/core/SkFontDescriptor.h" +#include "src/core/SkMakeUnique.h" +#include "src/core/SkOSFile.h" +#include "src/ports/SkFontHost_FreeType_common.h" +#include "src/ports/SkFontMgr_config_parser.h" + +class SkData; + +class SkTypeface_Preview : public SkTypeface_FreeType { +public: + SkTypeface_Preview(const SkFontStyle& style, + bool isFixedPitch, + const SkString& familyName) + : INHERITED(style, isFixedPitch) + , fFamilyName(familyName) + { } + + ~SkTypeface_Preview() override = default; + +protected: + void onGetFamilyName(SkString* familyName) const override + { + *familyName = fFamilyName; + } + + SkString fFamilyName; + +private: + typedef SkTypeface_FreeType INHERITED; +}; + +class SkTypeface_PreviewSystem : public SkTypeface_Preview { +public: + SkTypeface_PreviewSystem(const SkString& pathName, + int index, + const SkFixed* axes, int axesCount, + const SkFontStyle& style, + bool isFixedPitch, + const SkString& familyName, + const SkTArray& lang, + FontVariant variantStyle) + : INHERITED(style, isFixedPitch, familyName) + , fPathName(pathName) + , fIndex(index) + , fAxes(axes, axesCount) + , fLang(lang) + , fVariantStyle(variantStyle) + , fFile(nullptr) + { } + + ~SkTypeface_PreviewSystem() override = default; + + std::unique_ptr makeStream() const + { + if (fFile) { + sk_sp data(SkData::MakeFromFILE(fFile)); + return data ? skstd::make_unique(std::move(data)) : nullptr; + } + return SkStream::MakeFromFile(fPathName.c_str()); + } + + virtual void onGetFontDescriptor(SkFontDescriptor* desc, bool* serialize) const override + { + SkASSERT(desc); + SkASSERT(serialize); + desc->setFamilyName(fFamilyName.c_str()); + desc->setStyle(this->fontStyle()); + *serialize = false; + } + + std::unique_ptr onOpenStream(int* ttcIndex) const override + { + *ttcIndex = fIndex; + return this->makeStream(); + } + + std::unique_ptr onMakeFontData() const override + { + return skstd::make_unique(this->makeStream(), fIndex, fAxes.begin(), fAxes.count()); + } + + sk_sp onMakeClone(const SkFontArguments& args) const override + { + std::unique_ptr data = this->cloneFontData(args); + if (!data) { + return nullptr; + } + return sk_make_sp(fPathName, + fIndex, + data->getAxis(), + data->getAxisCount(), + this->fontStyle(), + this->isFixedPitch(), + fFamilyName, + fLang, + fVariantStyle); + } + + const SkString fPathName; + int fIndex; + const SkSTArray<4, SkFixed, true> fAxes; + const SkSTArray<4, SkLanguage, true> fLang; + const FontVariant fVariantStyle; + SkAutoTCallVProc fFile; + + typedef SkTypeface_Preview INHERITED; +}; + +class SkTypeface_PreviewStream : public SkTypeface_Preview { +public: + SkTypeface_PreviewStream(std::unique_ptr data, + const SkFontStyle& style, + bool isFixedPitch, + const SkString& familyName) + : INHERITED(style, isFixedPitch, familyName) + , fData(std::move(data)) + { } + + ~SkTypeface_PreviewStream() override = default; + + virtual void onGetFontDescriptor(SkFontDescriptor* desc, bool* serialize) const override + { + SkASSERT(desc); + SkASSERT(serialize); + desc->setFamilyName(fFamilyName.c_str()); + *serialize = true; + } + + std::unique_ptr onOpenStream(int* ttcIndex) const override + { + *ttcIndex = fData->getIndex(); + return fData->getStream()->duplicate(); + } + + std::unique_ptr onMakeFontData() const override + { + return skstd::make_unique(*fData); + } + + sk_sp onMakeClone(const SkFontArguments& args) const override + { + std::unique_ptr data = this->cloneFontData(args); + if (!data) { + return nullptr; + } + return sk_make_sp(std::move(data), this->fontStyle(), this->isFixedPitch(), fFamilyName); + } + +private: + const std::unique_ptr fData; + typedef SkTypeface_Preview INHERITED; +}; + +class SkFontStyleSet_Preview : public SkFontStyleSet { + typedef SkTypeface_FreeType::Scanner Scanner; + +public: + explicit SkFontStyleSet_Preview(const FontFamily& family, const Scanner& scanner) + { + const SkString* cannonicalFamilyName = nullptr; + if (family.fNames.count() > 0) { + cannonicalFamilyName = &family.fNames[0]; + } + fFallbackFor = family.fFallbackFor; + + // TODO? make this lazy + for (int i = 0; i < family.fFonts.count(); ++i) { + const FontFileInfo& fontFile = family.fFonts[i]; + + SkString pathName(family.fBasePath); + pathName.append(fontFile.fFileName); + + std::unique_ptr stream = SkStream::MakeFromFile(pathName.c_str()); + if (!stream) { + SkDEBUGF("Requested font file %s does not exist or cannot be opened.\n", pathName.c_str()); + continue; + } + + const int ttcIndex = fontFile.fIndex; + SkString familyName; + SkFontStyle style; + bool isFixedWidth = true; + Scanner::AxisDefinitions axisDefinitions; + + if (!scanner.scanFont(stream.get(), ttcIndex, + &familyName, &style, &isFixedWidth, &axisDefinitions)) { + SkDEBUGF("Requested font file %s exists, but is not a valid font.\n", + pathName.c_str()); + continue; + } + + int weight = fontFile.fWeight != 0 ? fontFile.fWeight : style.weight(); + SkFontStyle::Slant slant = style.slant(); + switch (fontFile.fStyle) { + case FontFileInfo::Style::kAuto: + slant = style.slant(); + break; + case FontFileInfo::Style::kNormal: + slant = SkFontStyle::kUpright_Slant; + break; + case FontFileInfo::Style::kItalic: + slant = SkFontStyle::kItalic_Slant; + break; + default: + SkASSERT(false); + break; + } + style = SkFontStyle(weight, style.width(), slant); + + uint32_t variant = family.fVariant; + if (kDefault_FontVariant == variant) { + variant = kCompact_FontVariant | kElegant_FontVariant; + } + + // The first specified family name overrides the family name found in the font. + // TODO: SkTypeface_PreviewSystem::onCreateFamilyNameIterator should return + // all of the specified family names in addition to the names found in the font. + if (cannonicalFamilyName != nullptr) { + familyName = *cannonicalFamilyName; + } + + SkAutoSTMalloc<4, SkFixed> axisValues(axisDefinitions.count()); + SkFontArguments::VariationPosition position = { + fontFile.fVariationDesignPosition.begin(), + fontFile.fVariationDesignPosition.count() + }; + Scanner::computeAxisValues(axisDefinitions, position, axisValues, familyName); + + fStyles.push_back().reset(new SkTypeface_PreviewSystem(pathName, ttcIndex, axisValues.get(), + axisDefinitions.count(), style, isFixedWidth, + familyName, family.fLanguages, variant)); + } + } + + ~SkFontStyleSet_Preview() override = default; + + int count() override + { + return fStyles.count(); + } + + void getStyle(int index, SkFontStyle* style, SkString* name) override + { + if (index < 0 || fStyles.count() <= index) { + return; + } + if (style) { + *style = fStyles[index]->fontStyle(); + } + if (name) { + name->reset(); + } + } + + SkTypeface_PreviewSystem* createTypeface(int index) override + { + if (index < 0 || fStyles.count() <= index) { + return nullptr; + } + return SkRef(fStyles[index].get()); + } + + SkTypeface_PreviewSystem* matchStyle(const SkFontStyle& pattern) override + { + return static_cast(this->matchStyleCSS3(pattern)); + } + +private: + SkTArray> fStyles; + SkString fFallbackFor; + + friend struct NameToFamily; + friend class SkFontMgr_Preview; + + typedef SkFontStyleSet INHERITED; +}; + +/** A single family can have many names, but our API assumes unique names. + * Map names to the back end so that all names for a given family refer to the same + * (non-replicated) set of typefaces. + * SkTDict<> doesn't let us do index-based lookup, so we write our own mapping. + */ +struct NameToFamily { + SkString name; + SkFontStyleSet_Preview* styleSet; +}; + +SK_API sk_sp SkFontMgr_New_Preview(); + +class SkFontMgr_Preview : public SkFontMgr { +public: + SkFontMgr_Preview(); + ~SkFontMgr_Preview() override = default; + +protected: + int onCountFamilies() const override; + void onGetFamilyName(int index, SkString* familyName) const override; + SkFontStyleSet* onCreateStyleSet(int index) const override; + SkFontStyleSet* onMatchFamily(const char familyName[]) const override; + virtual SkTypeface* onMatchFamilyStyle(const char familyName[], + const SkFontStyle& style) const override; + virtual SkTypeface* onMatchFaceStyle(const SkTypeface* typeface, + const SkFontStyle& style) const override; + + static sk_sp find_family_style_character( + const SkString& familyName, + const SkTArray& fallbackNameToFamilyMap, + const SkFontStyle& style, bool elegant, + const SkString& langTag, SkUnichar character); + + virtual SkTypeface* onMatchFamilyStyleCharacter(const char familyName[], + const SkFontStyle& style, + const char* bcp47[], + int bcp47Count, + SkUnichar character) const override; + sk_sp onMakeFromData(sk_sp data, int ttcIndex) const override; + sk_sp onMakeFromFile(const char path[], int ttcIndex) const override; + sk_sp onMakeFromStreamIndex(std::unique_ptr stream, int ttcIndex) const override; + sk_sp onMakeFromStreamArgs(std::unique_ptr stream, + const SkFontArguments& args) const override; + sk_sp onMakeFromFontData(std::unique_ptr data) const override; + sk_sp onLegacyMakeTypeface(const char familyName[], SkFontStyle style) const override; + +private: + void buildNameToFamilyMap(SkTDArray families); + void findDefaultStyleSet(); + void addFamily(FontFamily& family, int familyIndex); + + SkTypeface_FreeType::Scanner fScanner; + + SkTArray> fStyleSets; + sk_sp fDefaultStyleSet; + + SkTArray fNameToFamilyMap; + SkTArray fFallbackNameToFamilyMap; + + typedef SkFontMgr INHERITED; +}; + +#endif // SkFontMgr_preview_DEFINED \ No newline at end of file diff --git a/skia/src/ports/SkFontMgr_win_factory.cpp b/skia/src/ports/SkFontMgr_win_factory.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b749505075eb17d6242d2dad8e132cca6db81ed9 --- /dev/null +++ b/skia/src/ports/SkFontMgr_win_factory.cpp @@ -0,0 +1,24 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * 2021.9.9 SkFontMgr::Factory() on previewer of ohos. + * Copyright (c) 2021 Huawei Device Co., Ltd. All rights reserved. + */ + +#ifdef SK_BUILD_FONT_MGR_FOR_PREVIEW_WIN +#include "include/core/SkFontMgr.h" +#include "src/ports/SkFontMgr_preview.h" +#include "include/ports/SkTypeface_win.h" + +bool SkFontMgr::physicalDeviceFonts = false; +sk_sp SkFontMgr::Factory() +{ + if (SkFontMgr::physicalDeviceFonts) { + return SkFontMgr_New_Preview(); + } else { + return SkFontMgr_New_DirectWrite(); + } +} +#endif /* SK_BUILD_FONT_MGR_FOR_PREVIEW_WIN */ \ No newline at end of file