From 676d5b4c26e7a87e9c3a96e2e98b0adc9bb7685a Mon Sep 17 00:00:00 2001 From: xieyijun3 Date: Thu, 6 Jul 2023 21:54:38 +0800 Subject: [PATCH] ace build Signed-off-by: x30034819 Signed-off-by: xieyijun3 --- config.gni | 2 + display_server/ft_build/ds_config.gni | 2 - .../2d_engine/rosen_text/ft_build/config.gni | 26 ++ .../properties/font_collection_base.h | 6 +- .../properties/font_collection_txt.cpp | 10 +- .../rosen_text/properties/typography_base.h | 32 +-- .../properties/typography_create_base.h | 10 +- .../modules/2d_graphics/ft_build/BUILD.gn | 252 ++++++++++++++++++ .../impl_interface/matrix_impl.h | 2 +- 9 files changed, 310 insertions(+), 32 deletions(-) create mode 100644 display_server/rosen/modules/2d_engine/rosen_text/ft_build/config.gni create mode 100755 display_server/rosen/modules/2d_graphics/ft_build/BUILD.gn diff --git a/config.gni b/config.gni index 1b830b7..01875f7 100644 --- a/config.gni +++ b/config.gni @@ -14,4 +14,6 @@ declare_args() { display_server_root = "//display_server" window_manager_path = "//window_manager" + + rosen_root = "//display_server/rosen" } diff --git a/display_server/ft_build/ds_config.gni b/display_server/ft_build/ds_config.gni index 550530d..26dc80e 100644 --- a/display_server/ft_build/ds_config.gni +++ b/display_server/ft_build/ds_config.gni @@ -48,5 +48,3 @@ if (graphic_standard_feature_rs_enable_uni_render) { if (graphic_standard_feature_enable_afbc) { gpu_defines += [ "RS_ENABLE_AFBC" ] } - -rosen_root = "//display_server/rosen" diff --git a/display_server/rosen/modules/2d_engine/rosen_text/ft_build/config.gni b/display_server/rosen/modules/2d_engine/rosen_text/ft_build/config.gni new file mode 100644 index 0000000..a960875 --- /dev/null +++ b/display_server/rosen/modules/2d_engine/rosen_text/ft_build/config.gni @@ -0,0 +1,26 @@ +# Copyright (c) 2022 Huawei Device Co., Ltd.. All rights reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/gn/fangtian.gni") + +# Config path +rosen_root = "//third_party/ft_engine/display_server/rosen" +rosen_2d_engine_root = "$rosen_root/modules/2d_engine" +rosen_2d_engine_root_ui = "$rosen_2d_engine_root/ui" +rosen_text_root = "$rosen_2d_engine_root/rosen_text" + +rosen_is_ohos = current_os == "ohos" +rosen_is_ios = current_os == "ios" || current_os == "tvos" +rosen_is_mac = current_os == "mac" +rosen_is_win = current_os == "win" || current_os == "mingw" +rosen_is_linux = current_os == "linux" diff --git a/display_server/rosen/modules/2d_engine/rosen_text/properties/font_collection_base.h b/display_server/rosen/modules/2d_engine/rosen_text/properties/font_collection_base.h index 14eb80c..24d161e 100755 --- a/display_server/rosen/modules/2d_engine/rosen_text/properties/font_collection_base.h +++ b/display_server/rosen/modules/2d_engine/rosen_text/properties/font_collection_base.h @@ -26,9 +26,9 @@ public: FontCollectionBase() {} virtual ~FontCollectionBase() {} - virtual std::shared_ptr GetFontCollection(); - virtual void RegisterTestFonts(); - virtual void LoadFontFromList(const uint8_t* font_data, int length, std::string family_name); + virtual std::shared_ptr GetFontCollection() = 0; + virtual void RegisterTestFonts() = 0; + virtual void LoadFontFromList(const uint8_t* font_data, int length, std::string family_name) = 0; FontCollectionBase(const FontCollectionBase&) = delete; FontCollectionBase& operator=(const FontCollectionBase&) = delete; }; diff --git a/display_server/rosen/modules/2d_engine/rosen_text/properties/font_collection_txt.cpp b/display_server/rosen/modules/2d_engine/rosen_text/properties/font_collection_txt.cpp index d39f8b1..39af1aa 100755 --- a/display_server/rosen/modules/2d_engine/rosen_text/properties/font_collection_txt.cpp +++ b/display_server/rosen/modules/2d_engine/rosen_text/properties/font_collection_txt.cpp @@ -16,11 +16,11 @@ #include "rosen_text/properties/font_collection_txt.h" #include "flutter/fml/icu_util.h" -#include "third_party/flutter/skia/include/core/SkFontMgr.h" -#include "third_party/flutter/skia/include/core/SkGraphics.h" -#include "third_party/flutter/skia/include/core/SkStream.h" -#include "third_party/flutter/skia/include/core/SkTypeface.h" -#include "third_party/skia/include/core/SkRefCnt.h" +#include "SkFontMgr.h" +#include "SkGraphics.h" +#include "SkStream.h" +#include "SkTypeface.h" +#include "SkRefCnt.h" #include "txt/asset_font_manager.h" #include "txt/test_font_manager.h" #include "unicode/putil.h" diff --git a/display_server/rosen/modules/2d_engine/rosen_text/properties/typography_base.h b/display_server/rosen/modules/2d_engine/rosen_text/properties/typography_base.h index 45a056a..d3f2307 100755 --- a/display_server/rosen/modules/2d_engine/rosen_text/properties/typography_base.h +++ b/display_server/rosen/modules/2d_engine/rosen_text/properties/typography_base.h @@ -30,29 +30,29 @@ class TypographyBase { public: TypographyBase() {}; virtual ~TypographyBase() {}; - virtual void Init(std::shared_ptr typographyCreateBases); - virtual double GetMaxWidth(); - virtual double GetHeight(); - virtual double GetLongestLine(); - virtual double GetMinIntrinsicWidth(); - virtual double GetMaxIntrinsicWidth(); - virtual double GetAlphabeticBaseline(); - virtual double GetIdeographicBaseline(); - virtual bool DidExceedMaxLines(); - virtual void Layout(double width); - virtual void Paint(Canvas* canvas, double x, double y); + virtual void Init(std::shared_ptr typographyCreateBases) = 0; + virtual double GetMaxWidth() = 0; + virtual double GetHeight() = 0; + virtual double GetLongestLine() = 0; + virtual double GetMinIntrinsicWidth() = 0; + virtual double GetMaxIntrinsicWidth() = 0; + virtual double GetAlphabeticBaseline() = 0; + virtual double GetIdeographicBaseline() = 0; + virtual bool DidExceedMaxLines() = 0; + virtual void Layout(double width) = 0; + virtual void Paint(Canvas* canvas, double x, double y) = 0; virtual std::vector GetRectsForRange( size_t start, size_t end, TypographyProperties::RectHeightStyle heightStyle, - TypographyProperties::RectWidthStyle widthStyle); - virtual std::vector GetRectsForPlaceholders(); + TypographyProperties::RectWidthStyle widthStyle) = 0; + virtual std::vector GetRectsForPlaceholders() = 0; virtual TypographyProperties::PositionAndAffinity GetGlyphPositionAtCoordinate(double dx, - double dy); + double dy) = 0; virtual TypographyProperties::PositionAndAffinity GetGlyphPositionAtCoordinateWithCluster(double dx, - double dy); - virtual TypographyProperties::Range GetWordBoundary(size_t offset); + double dy) = 0; + virtual TypographyProperties::Range GetWordBoundary(size_t offset) = 0; }; } // namespace rosen #endif // ROSEN_TEXT_UI_TEXT_TYPOGRAPHY_H_ diff --git a/display_server/rosen/modules/2d_engine/rosen_text/properties/typography_create_base.h b/display_server/rosen/modules/2d_engine/rosen_text/properties/typography_create_base.h index 890cc4f..72cda2b 100755 --- a/display_server/rosen/modules/2d_engine/rosen_text/properties/typography_create_base.h +++ b/display_server/rosen/modules/2d_engine/rosen_text/properties/typography_create_base.h @@ -32,11 +32,11 @@ public: TypographyCreateBase() {}; TypographyCreateBase(const TypographyStyle& style, std::shared_ptr font_collection); virtual ~TypographyCreateBase() {}; - virtual void PushStyle(const TextStyle& style); - virtual void Pop(); - virtual void AddText(const std::u16string& text); - virtual void AddPlaceholder(PlaceholderRun& span); - virtual std::unique_ptr Build(); + virtual void PushStyle(const TextStyle& style) = 0; + virtual void Pop() = 0; + virtual void AddText(const std::u16string& text) = 0; + virtual void AddPlaceholder(PlaceholderRun& span) = 0; + virtual std::unique_ptr Build() = 0; TypographyCreateBase(const TypographyCreateBase&) = delete; TypographyCreateBase& operator=(const TypographyCreateBase&) = delete; }; diff --git a/display_server/rosen/modules/2d_graphics/ft_build/BUILD.gn b/display_server/rosen/modules/2d_graphics/ft_build/BUILD.gn new file mode 100755 index 0000000..5dd3482 --- /dev/null +++ b/display_server/rosen/modules/2d_graphics/ft_build/BUILD.gn @@ -0,0 +1,252 @@ +# Copyright (c) 2022 Huawei Device Co., Ltd.. All rights reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/gn/fangtian.gni") +import("//ace_engine/ft_build/ace_config.gni") +import("//third_party/ft_engine/display_server/ft_build/ds_config.gni") +import( + "//third_party/ft_engine/display_server/rosen/modules/2d_engine/rosen_text/ft_build/config.gni") + +drawing_src_dir = "$rosen_root/modules/2d_graphics/src/drawing" +src_dir = "$rosen_root/modules/2d_graphics/src" + +template("graphics2d_source_set") { + forward_variables_from(invoker, "*") + + ft_source_set(target_name) { + defines += invoker.defines + cflags_cc += invoker.cflags_cc + sources = [ + "$drawing_src_dir/c/drawing_bitmap.cpp", + "$drawing_src_dir/c/drawing_brush.cpp", + "$drawing_src_dir/c/drawing_canvas.cpp", + "$drawing_src_dir/c/drawing_color.cpp", + "$drawing_src_dir/c/drawing_font_collection.cpp", + "$drawing_src_dir/c/drawing_path.cpp", + "$drawing_src_dir/c/drawing_pen.cpp", + "$drawing_src_dir/c/drawing_text_typography.cpp", + "$drawing_src_dir/draw/brush.cpp", + "$drawing_src_dir/draw/color.cpp", + "$drawing_src_dir/draw/core_canvas.cpp", + "$drawing_src_dir/draw/path.cpp", + "$drawing_src_dir/draw/pen.cpp", + "$drawing_src_dir/effect/color_filter.cpp", + "$drawing_src_dir/effect/color_space.cpp", + "$drawing_src_dir/effect/filter.cpp", + "$drawing_src_dir/effect/image_filter.cpp", + "$drawing_src_dir/effect/mask_filter.cpp", + "$drawing_src_dir/effect/path_effect.cpp", + "$drawing_src_dir/effect/shader_effect.cpp", + "$drawing_src_dir/engine_adapter/impl_factory.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_bitmap.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_camera.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_canvas.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_color_filter.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_color_space.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_image.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_image_filter.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_impl_factory.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_mask_filter.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_matrix.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_paint.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_path.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_path_effect.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_picture.cpp", + "$drawing_src_dir/engine_adapter/skia_adapter/skia_shader_effect.cpp", + "$drawing_src_dir/image/bitmap.cpp", + "$drawing_src_dir/image/image.cpp", + "$drawing_src_dir/image/picture.cpp", + "$drawing_src_dir/text/text.cpp", + "$drawing_src_dir/utils/camera3d.cpp", + "$drawing_src_dir/utils/matrix.cpp", + ] + + sources += [ + "$rosen_text_root/properties/font_collection_txt.cpp", + "$rosen_text_root/properties/placeholder_run.cpp", + "$rosen_text_root/properties/rosen_converter_txt.cpp", + "$rosen_text_root/properties/text_style.cpp", + "$rosen_text_root/properties/typography_create_txt.cpp", + "$rosen_text_root/properties/typography_style.cpp", + "$rosen_text_root/properties/typography_txt.cpp", + "$rosen_text_root/ui/font_collection.cpp", + "$rosen_text_root/ui/typography.cpp", + "$rosen_text_root/ui/typography_create.cpp", + ] + + include_dirs = [ + "../include", + "$src_dir", + "$drawing_src_dir", + "$drawing_src_dir/engine_adapter", + "$rosen_2d_engine_root", + "//foundation/arkui/ace_engine/frameworks", + "//third_party/bounds_checking_function/include", + ] + + defines += [ "USE_ACE_SKIA" ] + + if (platform == "ohos") { + external_deps = [ + "hilog_native:libhilog", + "multimedia_image_framework:image_native", + ] + deps = [ + "$ace_flutter_engine_root:flutter_engine_fml_$platform", + "//foundation/graphic/graphic_2d/rosen/build/flutter/icu:rosen_libicu_$platform", + "//foundation/graphic/graphic_2d/rosen/build/flutter/libtxt:thirdparty_lib_txt_rosen_$platform", + "//third_party/bounds_checking_function:libsec_static", + ] + include_dirs += [ + "$flutter_root/engine", + "$flutter_root/engine/flutter/third_party/txt/src", + ] + defines += [ "SUPPORT_OHOS_PIXMAP" ] + } else { + cflags = [ "-Wno-c++17-extensions" ] + + if (enable_ng_build) { + deps = [ + "$ace_flutter_engine_root_new/third_party/icu:ace_libicu_dev_$platform", + "$ace_flutter_engine_root_new/third_party/libtxt:thirdparty_lib_txt_dev_$platform", + "$ace_flutter_engine_root_new/third_party/skia:ace_skia_dev_$platform", + ] + include_dirs += [ + "$flutter_root_new/engine", + "$flutter_root_new/engine/flutter/third_party/txt/src", + ] + defines += [ "USE_CANVASKIT0310_SKIA" ] + } else { + deps = [ + "$ace_flutter_engine_root:flutter_engine_fml_$platform", + "$ace_flutter_engine_root/icu:ace_libicu_$platform", + "$ace_flutter_engine_root/libtxt:thirdparty_lib_txt_$platform", + "$ace_flutter_engine_root/skia:ace_skia_$platform", + ] + include_dirs += [ + "$flutter_root/engine", + "$flutter_root/engine/flutter/third_party/txt/src", + ] + } + + if (!is_cross_platform_build) { + # deps += [ "//base/hiviewdfx/hilog/frameworks/libhilog:libhilog_source_$platform" ] + } + } + deps += [ + "//build/gn/configs/system_libs:c_utils", + ] + part_name = "graphic_standard" + subsystem_name = "graphic" + } +} + +foreach(item, ace_platforms) { + graphics2d_source_set("2d_graphics_source_" + item.name) { + platform = item.name + defines = [] + + if (defined(item.config)) { + config = item.config + } else { + config = { + } + } + + if (defined(config.defines)) { + defines += config.defines + } + + if (defined(config.cflags_cc)) { + cflags_cc = config.cflags_cc + } else { + cflags_cc = [] + } + } +} + +if (!is_cross_platform_build) { + ## Build 2d_graphics.so + ft_shared_library("2d_graphics") { + # version_script = "2d_graphics.versionscript" + # symlink_target_name = [ "libnative_drawing.so" ] + #deps = [ ":2d_graphics_source_ohos" ] + #part_name = "graphic_standard" + #subsystem_name = "graphic" + } +} + +## Build 2d_graphics.so +# ft_shared_library("2d_graphics_canvaskit0310") { +# sources = [ +# "$drawing_src_dir/draw/brush.cpp", +# "$drawing_src_dir/draw/color.cpp", +# "$drawing_src_dir/draw/core_canvas.cpp", +# "$drawing_src_dir/draw/path.cpp", +# "$drawing_src_dir/draw/pen.cpp", +# "$drawing_src_dir/effect/color_filter.cpp", +# "$drawing_src_dir/effect/color_space.cpp", +# "$drawing_src_dir/effect/filter.cpp", +# "$drawing_src_dir/effect/image_filter.cpp", +# "$drawing_src_dir/effect/mask_filter.cpp", +# "$drawing_src_dir/effect/path_effect.cpp", +# "$drawing_src_dir/effect/shader_effect.cpp", +# "$drawing_src_dir/engine_adapter/impl_factory.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_bitmap.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_camera.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_canvas.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_color_filter.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_color_space.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_image.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_image_filter.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_impl_factory.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_mask_filter.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_matrix.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_paint.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_path.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_path_effect.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_picture.cpp", +# "$drawing_src_dir/engine_adapter/skia_adapter/skia_shader_effect.cpp", +# "$drawing_src_dir/image/bitmap.cpp", +# "$drawing_src_dir/image/image.cpp", +# "$drawing_src_dir/image/picture.cpp", +# "$drawing_src_dir/text/text.cpp", +# "$drawing_src_dir/utils/camera3d.cpp", +# "$drawing_src_dir/utils/matrix.cpp", +# ] +# +# defines = [ "USE_CANVASKIT0310_SKIA" ] +# +# include_dirs = [ +# "include", +# "$src_dir", +# "$drawing_src_dir", +# "$drawing_src_dir/engine_adapter", +# ] +# +# if (!is_cross_platform_build) { +# deps = [ +# "//foundation/graphic/graphic_2d:libsurface", +# # "//third_party/skia_canvaskit0310:skia", +# ] +# } +# +# external_deps = [ +# "hilog_native:libhilog", +# "multimedia_image_framework:image_native", +# ] +# +# part_name = "graphic_standard" +# subsystem_name = "graphic" +# } +## Build 2d_graphics.so diff --git a/display_server/rosen/modules/2d_graphics/src/drawing/engine_adapter/impl_interface/matrix_impl.h b/display_server/rosen/modules/2d_graphics/src/drawing/engine_adapter/impl_interface/matrix_impl.h index f543756..69fa434 100644 --- a/display_server/rosen/modules/2d_graphics/src/drawing/engine_adapter/impl_interface/matrix_impl.h +++ b/display_server/rosen/modules/2d_graphics/src/drawing/engine_adapter/impl_interface/matrix_impl.h @@ -44,7 +44,7 @@ public: virtual bool Equals(const Matrix& a, const Matrix& b) const = 0; virtual void SetMatrix(scalar scaleX, scalar skewX, scalar transX, scalar skewY, scalar scaleY, scalar transY, scalar persp0, scalar persp1, scalar persp2) = 0; - virtual void MapPoints(std::vector& dst, const std::vector& src, uint32_t count) const; + virtual void MapPoints(std::vector& dst, const std::vector& src, uint32_t count) const = 0; virtual scalar Get(int index) const = 0; }; } // namespace Drawing -- Gitee