1e9297d28Sopenharmony_ci# Copyright (c) 2022-2023 Huawei Device Co., Ltd.. All rights reserved.
2e9297d28Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3e9297d28Sopenharmony_ci# you may not use this file except in compliance with the License.
4e9297d28Sopenharmony_ci# You may obtain a copy of the License at
5e9297d28Sopenharmony_ci#
6e9297d28Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7e9297d28Sopenharmony_ci#
8e9297d28Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9e9297d28Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10e9297d28Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11e9297d28Sopenharmony_ci# See the License for the specific language governing permissions and
12e9297d28Sopenharmony_ci# limitations under the License.
13e9297d28Sopenharmony_ci
14e9297d28Sopenharmony_ciimport("//build/ohos.gni")
15e9297d28Sopenharmony_ciimport("//foundation/graphic/graphic_2d/ace_platforms.gni")
16e9297d28Sopenharmony_ciimport("//foundation/graphic/graphic_2d/graphic_config.gni")
17e9297d28Sopenharmony_ciimport("$graphic_2d_root/rosen/modules/2d_engine/rosen_text/config.gni")
18e9297d28Sopenharmony_ci
19e9297d28Sopenharmony_cidrawing_root = "$rosen_root/modules/2d_graphics"
20e9297d28Sopenharmony_cidrawing_core_include_dir = "$rosen_root/modules/2d_graphics/include"
21e9297d28Sopenharmony_cidrawing_core_src_dir = "$rosen_root/modules/2d_graphics/src/drawing"
22e9297d28Sopenharmony_cisrc_dir = "$rosen_root/modules/2d_graphics/src"
23e9297d28Sopenharmony_ciplatform_dir = "$rosen_root/modules/platform"
24e9297d28Sopenharmony_ci
25e9297d28Sopenharmony_ciconfig("2d_graphics_config") {
26e9297d28Sopenharmony_ci  include_dirs = [
27e9297d28Sopenharmony_ci    "$drawing_core_include_dir",
28e9297d28Sopenharmony_ci    "$src_dir",
29e9297d28Sopenharmony_ci    "$drawing_core_src_dir",
30e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter",
31e9297d28Sopenharmony_ci    "$platform_dir/image_native",
32e9297d28Sopenharmony_ci    "$rosen_root/modules/render_service_base/include",
33e9297d28Sopenharmony_ci    "$rosen_root/modules/texgine/texgine_drawing/src",
34e9297d28Sopenharmony_ci  ]
35e9297d28Sopenharmony_ci}
36e9297d28Sopenharmony_ci
37e9297d28Sopenharmony_ciconfig("export_config") {
38e9297d28Sopenharmony_ci  include_dirs = [
39e9297d28Sopenharmony_ci    "$drawing_core_include_dir",
40e9297d28Sopenharmony_ci    "$src_dir",
41e9297d28Sopenharmony_ci    "$drawing_core_src_dir",
42e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter",
43e9297d28Sopenharmony_ci    "$graphic_2d_root/utils/color_manager/export",
44e9297d28Sopenharmony_ci    "$rosen_root/modules/render_service_base/include",
45e9297d28Sopenharmony_ci    "$rosen_root/modules/texgine/texgine_drawing/src",
46e9297d28Sopenharmony_ci    "$rosen_root/modules/2d_engine/rosen_text/export",
47e9297d28Sopenharmony_ci  ]
48e9297d28Sopenharmony_ci
49e9297d28Sopenharmony_ci  if (rs_enable_gpu) {
50e9297d28Sopenharmony_ci    defines = [ "RS_ENABLE_GPU" ]
51e9297d28Sopenharmony_ci  }
52e9297d28Sopenharmony_ci}
53e9297d28Sopenharmony_ci
54e9297d28Sopenharmony_ciif (enable_text_gine) {
55e9297d28Sopenharmony_ci  defines = [ "USE_GRAPHIC_TEXT_GINE" ]
56e9297d28Sopenharmony_ci}
57e9297d28Sopenharmony_ci
58e9297d28Sopenharmony_citemplate("graphics2d_source_set") {
59e9297d28Sopenharmony_ci  forward_variables_from(invoker, "*")
60e9297d28Sopenharmony_ci
61e9297d28Sopenharmony_ci  ohos_source_set(target_name) {
62e9297d28Sopenharmony_ci    defines += invoker.defines
63e9297d28Sopenharmony_ci    cflags_cc += invoker.cflags_cc
64e9297d28Sopenharmony_ci    if (use_texgine) {
65e9297d28Sopenharmony_ci      defines += [ "USE_TEXGINE" ]
66e9297d28Sopenharmony_ci    } else if (use_skia_txt) {
67e9297d28Sopenharmony_ci      defines += [ "USE_SKIA_TXT" ]
68e9297d28Sopenharmony_ci    }
69e9297d28Sopenharmony_ci
70e9297d28Sopenharmony_ci    public_deps = []
71e9297d28Sopenharmony_ci    external_deps = [ "napi:ace_napi" ]
72e9297d28Sopenharmony_ci    public_external_deps = []
73e9297d28Sopenharmony_ci    sources = [
74e9297d28Sopenharmony_ci      "$drawing_core_src_dir/draw/OpListHandle.cpp",
75e9297d28Sopenharmony_ci      "$drawing_core_src_dir/draw/brush.cpp",
76e9297d28Sopenharmony_ci      "$drawing_core_src_dir/draw/canvas.cpp",
77e9297d28Sopenharmony_ci      "$drawing_core_src_dir/draw/color.cpp",
78e9297d28Sopenharmony_ci      "$drawing_core_src_dir/draw/core_canvas.cpp",
79e9297d28Sopenharmony_ci      "$drawing_core_src_dir/draw/paint.cpp",
80e9297d28Sopenharmony_ci      "$drawing_core_src_dir/draw/path.cpp",
81e9297d28Sopenharmony_ci      "$drawing_core_src_dir/draw/pen.cpp",
82e9297d28Sopenharmony_ci      "$drawing_core_src_dir/draw/surface.cpp",
83e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/blender.cpp",
84e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/blur_draw_looper.cpp",
85e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/color_filter.cpp",
86e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/color_matrix.cpp",
87e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/color_space.cpp",
88e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/filter.cpp",
89e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/image_filter.cpp",
90e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/mask_filter.cpp",
91e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/path_effect.cpp",
92e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/runtime_blender_builder.cpp",
93e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/runtime_effect.cpp",
94e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/runtime_shader_builder.cpp",
95e9297d28Sopenharmony_ci      "$drawing_core_src_dir/effect/shader_effect.cpp",
96e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/impl_factory.cpp",
97e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/rs_skia_memory_tracer.cpp",
98e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_bitmap.cpp",
99e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_blender.cpp",
100e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_camera.cpp",
101e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_canvas.cpp",
102e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_canvas_autocache.cpp",
103e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_color_filter.cpp",
104e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_color_space.cpp",
105e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_data.cpp",
106e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_font.cpp",
107e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_font_mgr.cpp",
108e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_font_style_set.cpp",
109e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_graphics.cpp",
110e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_helper.cpp",
111e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_hm_symbol.cpp",
112e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_hm_symbol_config_ohos.cpp",
113e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_image.cpp",
114e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_image_filter.cpp",
115e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_impl_factory.cpp",
116e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_mask_filter.cpp",
117e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_matrix.cpp",
118e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_matrix44.cpp",
119e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_memory_stream.cpp",
120e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_paint.cpp",
121e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_path.cpp",
122e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_path_effect.cpp",
123e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_picture.cpp",
124e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_pixmap.cpp",
125e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_region.cpp",
126e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_runtime_blender_builder.cpp",
127e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_runtime_effect.cpp",
128e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_runtime_shader_builder.cpp",
129e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_shader_effect.cpp",
130e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_static_factory.cpp",
131e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_surface.cpp",
132e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_text_blob.cpp",
133e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_text_blob_builder.cpp",
134e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_texture_info.cpp",
135e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_trace_memory_dump.cpp",
136e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_typeface.cpp",
137e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_utils.cpp",
138e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_vertices.cpp",
139e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter/static_factory.cpp",
140e9297d28Sopenharmony_ci      "$drawing_core_src_dir/image/bitmap.cpp",
141e9297d28Sopenharmony_ci      "$drawing_core_src_dir/image/image.cpp",
142e9297d28Sopenharmony_ci      "$drawing_core_src_dir/image/picture.cpp",
143e9297d28Sopenharmony_ci      "$drawing_core_src_dir/image/pixmap.cpp",
144e9297d28Sopenharmony_ci      "$drawing_core_src_dir/image/trace_memory_dump.cpp",
145e9297d28Sopenharmony_ci      "$drawing_core_src_dir/recording/cmd_list.cpp",
146e9297d28Sopenharmony_ci      "$drawing_core_src_dir/recording/cmd_list_helper.cpp",
147e9297d28Sopenharmony_ci      "$drawing_core_src_dir/recording/draw_cmd.cpp",
148e9297d28Sopenharmony_ci      "$drawing_core_src_dir/recording/draw_cmd_list.cpp",
149e9297d28Sopenharmony_ci      "$drawing_core_src_dir/recording/mask_cmd_list.cpp",
150e9297d28Sopenharmony_ci      "$drawing_core_src_dir/recording/mem_allocator.cpp",
151e9297d28Sopenharmony_ci      "$drawing_core_src_dir/recording/record_cmd.cpp",
152e9297d28Sopenharmony_ci      "$drawing_core_src_dir/recording/recording_canvas.cpp",
153e9297d28Sopenharmony_ci      "$drawing_core_src_dir/text/font.cpp",
154e9297d28Sopenharmony_ci      "$drawing_core_src_dir/text/font_mgr.cpp",
155e9297d28Sopenharmony_ci      "$drawing_core_src_dir/text/font_style_set.cpp",
156e9297d28Sopenharmony_ci      "$drawing_core_src_dir/text/hm_symbol.cpp",
157e9297d28Sopenharmony_ci      "$drawing_core_src_dir/text/hm_symbol_config_ohos.cpp",
158e9297d28Sopenharmony_ci      "$drawing_core_src_dir/text/text.cpp",
159e9297d28Sopenharmony_ci      "$drawing_core_src_dir/text/text_blob.cpp",
160e9297d28Sopenharmony_ci      "$drawing_core_src_dir/text/text_blob_builder.cpp",
161e9297d28Sopenharmony_ci      "$drawing_core_src_dir/text/typeface.cpp",
162e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/camera3d.cpp",
163e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/data.cpp",
164e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/matrix.cpp",
165e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/matrix44.cpp",
166e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/memory_stream.cpp",
167e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/object_mgr.cpp",
168e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/performanceCaculate.cpp",
169e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/region.cpp",
170e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/resource_holder.cpp",
171e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/round_rect.cpp",
172e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/string_util.cpp",
173e9297d28Sopenharmony_ci      "$drawing_core_src_dir/utils/vertices.cpp",
174e9297d28Sopenharmony_ci    ]
175e9297d28Sopenharmony_ci
176e9297d28Sopenharmony_ci    if (platform == "ohos" || platform == "ohos_ng") {
177e9297d28Sopenharmony_ci      sanitize = {
178e9297d28Sopenharmony_ci        boundary_sanitize = true
179e9297d28Sopenharmony_ci        integer_overflow = true
180e9297d28Sopenharmony_ci        ubsan = true
181e9297d28Sopenharmony_ci      }
182e9297d28Sopenharmony_ci      external_deps += [ "init:libbegetutil" ]
183e9297d28Sopenharmony_ci      sources += [ "$drawing_core_src_dir/utils/system_properties.cpp" ]
184e9297d28Sopenharmony_ci      if (defined(
185e9297d28Sopenharmony_ci          graphic_2d_platform_configs.system_graphic_properties_sources)) {
186e9297d28Sopenharmony_ci        sources += graphic_2d_platform_configs.system_graphic_properties_sources
187e9297d28Sopenharmony_ci      } else {
188e9297d28Sopenharmony_ci        sources +=
189e9297d28Sopenharmony_ci            [ "$drawing_core_src_dir/utils/system_graphic_properties.cpp" ]
190e9297d28Sopenharmony_ci      }
191e9297d28Sopenharmony_ci    }
192e9297d28Sopenharmony_ci    if (is_emulator) {
193e9297d28Sopenharmony_ci      defines += [ "ROSEN_EMULATOR" ]
194e9297d28Sopenharmony_ci    }
195e9297d28Sopenharmony_ci
196e9297d28Sopenharmony_ci    include_dirs = [
197e9297d28Sopenharmony_ci      "$drawing_core_include_dir",
198e9297d28Sopenharmony_ci      "$src_dir",
199e9297d28Sopenharmony_ci      "$drawing_core_src_dir",
200e9297d28Sopenharmony_ci      "$drawing_core_src_dir/engine_adapter",
201e9297d28Sopenharmony_ci      "$rosen_root/modules/render_service_base/include",
202e9297d28Sopenharmony_ci      "$rosen_root/modules/texgine/src",
203e9297d28Sopenharmony_ci      "$rosen_root/modules/texgine/texgine_drawing/src",
204e9297d28Sopenharmony_ci      "$rosen_root/../interfaces/kits/napi/graphic/drawing/common_napi",
205e9297d28Sopenharmony_ci    ]
206e9297d28Sopenharmony_ci
207e9297d28Sopenharmony_ci    if (rs_enable_gpu) {
208e9297d28Sopenharmony_ci      sources += [
209e9297d28Sopenharmony_ci        "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_gpu_context.cpp",
210e9297d28Sopenharmony_ci        "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_task_executor.cpp",
211e9297d28Sopenharmony_ci        "$drawing_core_src_dir/image/gpu_context.cpp",
212e9297d28Sopenharmony_ci      ]
213e9297d28Sopenharmony_ci      defines += [ "RS_ENABLE_GPU" ]
214e9297d28Sopenharmony_ci
215e9297d28Sopenharmony_ci      if (!is_emulator && !build_ohos_sdk && !is_arkui_x) {
216e9297d28Sopenharmony_ci        external_deps += [ "qos_manager:qos" ]
217e9297d28Sopenharmony_ci        defines += [ "SKIA_PRIO_SCHED_ENABLE" ]
218e9297d28Sopenharmony_ci      }
219e9297d28Sopenharmony_ci
220e9297d28Sopenharmony_ci      if (!build_ohos_sdk && !is_arkui_x) {
221e9297d28Sopenharmony_ci        defines += [ "RES_SCHED_ENABLE" ]
222e9297d28Sopenharmony_ci        include_dirs += [ "$rosen_root/modules/frame_report/include" ]
223e9297d28Sopenharmony_ci        if (rosen_is_ohos) {
224e9297d28Sopenharmony_ci          sources +=
225e9297d28Sopenharmony_ci              [ "$rosen_root/modules/frame_report/src/rs_frame_report.cpp" ]
226e9297d28Sopenharmony_ci        } else {
227e9297d28Sopenharmony_ci          sources += [
228e9297d28Sopenharmony_ci            "$rosen_root/modules/frame_report/src/mingw/rs_frame_report.cpp",
229e9297d28Sopenharmony_ci          ]
230e9297d28Sopenharmony_ci        }
231e9297d28Sopenharmony_ci      }
232e9297d28Sopenharmony_ci    }
233e9297d28Sopenharmony_ci
234e9297d28Sopenharmony_ci    if (is_arkui_x) {
235e9297d28Sopenharmony_ci      configs = [ "//third_party/jsoncpp:jsoncpp_public_config" ]
236e9297d28Sopenharmony_ci    } else {
237e9297d28Sopenharmony_ci      external_deps += [ "jsoncpp:jsoncpp" ]
238e9297d28Sopenharmony_ci    }
239e9297d28Sopenharmony_ci
240e9297d28Sopenharmony_ci    defines += [ "USE_ACE_SKIA" ]
241e9297d28Sopenharmony_ci
242e9297d28Sopenharmony_ci    if (defined(graphic_2d_feature_enable_ddgr) &&
243e9297d28Sopenharmony_ci        graphic_2d_feature_enable_ddgr) {
244e9297d28Sopenharmony_ci      defines += [ "ENABLE_DDGR_OPTIMIZE" ]
245e9297d28Sopenharmony_ci      sources += ddgr_adapter_opt_set.drawing_ddgr_adapter_src_set
246e9297d28Sopenharmony_ci      include_dirs += ddgr_adapter_opt_set.drawing_ddgr_adapter_include_set
247e9297d28Sopenharmony_ci      public_deps += [ "$graphic_2d_ext_root/ddgr:libddgr" ]
248e9297d28Sopenharmony_ci    }
249e9297d28Sopenharmony_ci
250e9297d28Sopenharmony_ci    if (enable_text_gine) {
251e9297d28Sopenharmony_ci      defines += [ "USE_GRAPHIC_TEXT_GINE" ]
252e9297d28Sopenharmony_ci      if (use_texgine) {
253e9297d28Sopenharmony_ci        defines += [ "USE_TEXGINE" ]
254e9297d28Sopenharmony_ci      }
255e9297d28Sopenharmony_ci      include_dirs += [
256e9297d28Sopenharmony_ci        "$rosen_root/modules/2d_engine/rosen_text",
257e9297d28Sopenharmony_ci        "$rosen_root/modules/2d_engine/rosen_text/adapter",
258e9297d28Sopenharmony_ci        "$rosen_root/modules/2d_engine/rosen_text/export",
259e9297d28Sopenharmony_ci        "$platform_dir/image_native",
260e9297d28Sopenharmony_ci      ]
261e9297d28Sopenharmony_ci      if (defined(use_new_skia) && use_new_skia) {
262e9297d28Sopenharmony_ci        defines += [ "NEW_SKIA" ]
263e9297d28Sopenharmony_ci      }
264e9297d28Sopenharmony_ci    } else {
265e9297d28Sopenharmony_ci      sources += [
266e9297d28Sopenharmony_ci        "$rosen_text_root/properties/font_collection_txt.cpp",
267e9297d28Sopenharmony_ci        "$rosen_text_root/properties/placeholder_run.cpp",
268e9297d28Sopenharmony_ci        "$rosen_text_root/properties/rosen_converter_txt.cpp",
269e9297d28Sopenharmony_ci        "$rosen_text_root/properties/text_style.cpp",
270e9297d28Sopenharmony_ci        "$rosen_text_root/properties/typography_create_txt.cpp",
271e9297d28Sopenharmony_ci        "$rosen_text_root/properties/typography_style.cpp",
272e9297d28Sopenharmony_ci        "$rosen_text_root/properties/typography_txt.cpp",
273e9297d28Sopenharmony_ci        "$rosen_text_root/ui/font_collection.cpp",
274e9297d28Sopenharmony_ci        "$rosen_text_root/ui/typography.cpp",
275e9297d28Sopenharmony_ci        "$rosen_text_root/ui/typography_create.cpp",
276e9297d28Sopenharmony_ci      ]
277e9297d28Sopenharmony_ci      include_dirs += [ "$rosen_2d_engine_root" ]
278e9297d28Sopenharmony_ci    }
279e9297d28Sopenharmony_ci    if (graphic_2d_feature_enable_vulkan) {
280e9297d28Sopenharmony_ci      defines += [ "RS_ENABLE_VK" ]
281e9297d28Sopenharmony_ci      public_external_deps += [ "vulkan-headers:vulkan_headers" ]
282e9297d28Sopenharmony_ci    }
283e9297d28Sopenharmony_ci    if (platform == "ohos" || platform == "ohos_ng") {
284e9297d28Sopenharmony_ci      external_deps += [
285e9297d28Sopenharmony_ci        "bounds_checking_function:libsec_static",
286e9297d28Sopenharmony_ci        "hilog:libhilog",
287e9297d28Sopenharmony_ci        "hitrace:hitrace_meter",
288e9297d28Sopenharmony_ci        "skia:skia_canvaskit",
289e9297d28Sopenharmony_ci      ]
290e9297d28Sopenharmony_ci
291e9297d28Sopenharmony_ci      defines += [ "USE_GRAPHIC_TEXT_GINE" ]
292e9297d28Sopenharmony_ci      deps = [ "$graphic_2d_root/rosen/build/icu:rosen_libicu_$platform" ]
293e9297d28Sopenharmony_ci      defines += [
294e9297d28Sopenharmony_ci        "SUPPORT_OHOS_PIXMAP",
295e9297d28Sopenharmony_ci        "ROSEN_OHOS",
296e9297d28Sopenharmony_ci      ]
297e9297d28Sopenharmony_ci
298e9297d28Sopenharmony_ci      if (!defined(use_new_skia) || !use_new_skia) {
299e9297d28Sopenharmony_ci        include_dirs += [ "$flutter_root/engine/flutter/third_party/txt/src" ]
300e9297d28Sopenharmony_ci      }
301e9297d28Sopenharmony_ci    } else {
302e9297d28Sopenharmony_ci      deps = []
303e9297d28Sopenharmony_ci      cflags = [ "-std=c++17" ]
304e9297d28Sopenharmony_ci
305e9297d28Sopenharmony_ci      deps += [ "$rosen_root/modules/platform:hilog" ]
306e9297d28Sopenharmony_ci
307e9297d28Sopenharmony_ci      if (is_arkui_x) {
308e9297d28Sopenharmony_ci        deps += [
309e9297d28Sopenharmony_ci          "//third_party/bounds_checking_function:libsec_static",
310e9297d28Sopenharmony_ci          "//third_party/skia:skia_$platform",
311e9297d28Sopenharmony_ci        ]
312e9297d28Sopenharmony_ci      } else {
313e9297d28Sopenharmony_ci        external_deps += [
314e9297d28Sopenharmony_ci          "bounds_checking_function:libsec_static",
315e9297d28Sopenharmony_ci          "skia:skia_canvaskit",
316e9297d28Sopenharmony_ci        ]
317e9297d28Sopenharmony_ci      }
318e9297d28Sopenharmony_ci
319e9297d28Sopenharmony_ci      deps += [ "$graphic_2d_root/utils:sandbox_utils" ]
320e9297d28Sopenharmony_ci      defines += [ "MODULE_DRAWING" ]
321e9297d28Sopenharmony_ci      if (is_arkui_x) {
322e9297d28Sopenharmony_ci        defines += [ "CROSS_PLATFORM" ]
323e9297d28Sopenharmony_ci        deps += [ "//foundation/graphic/graphic_2d/rosen/build/icu:rosen_libicu_$platform" ]
324e9297d28Sopenharmony_ci      }
325e9297d28Sopenharmony_ci
326e9297d28Sopenharmony_ci      defines += [ "USE_GRAPHIC_TEXT_GINE" ]
327e9297d28Sopenharmony_ci    }
328e9297d28Sopenharmony_ci    if (enable_text_gine) {
329e9297d28Sopenharmony_ci      deps += [ "$rosen_root/modules/2d_engine/rosen_text:rosen_text_inner" ]
330e9297d28Sopenharmony_ci      defines += [ "USE_GRAPHIC_TEXT_GINE" ]
331e9297d28Sopenharmony_ci      if (use_skia_txt) {
332e9297d28Sopenharmony_ci        include_dirs +=
333e9297d28Sopenharmony_ci            [ "$graphic_2d_root/rosen/modules/2d_engine/rosen_text/skia_txt" ]
334e9297d28Sopenharmony_ci      }
335e9297d28Sopenharmony_ci    }
336e9297d28Sopenharmony_ci    if (rosen_is_ohos) {
337e9297d28Sopenharmony_ci      defines += gpu_defines
338e9297d28Sopenharmony_ci      if (rs_enable_gpu) {
339e9297d28Sopenharmony_ci        defines += [
340e9297d28Sopenharmony_ci          "GL_GLEXT_PROTOTYPES",
341e9297d28Sopenharmony_ci          "EGL_EGLEXT_PROTOTYPES",
342e9297d28Sopenharmony_ci        ]
343e9297d28Sopenharmony_ci      }
344e9297d28Sopenharmony_ci      public_deps += [
345e9297d28Sopenharmony_ci        "$graphic_2d_root/frameworks/opengl_wrapper:EGL",
346e9297d28Sopenharmony_ci        "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3",
347e9297d28Sopenharmony_ci      ]
348e9297d28Sopenharmony_ci      external_deps += [ "c_utils:utils" ]
349e9297d28Sopenharmony_ci      public_external_deps += [ "graphic_surface:surface" ]
350e9297d28Sopenharmony_ci    }
351e9297d28Sopenharmony_ci
352e9297d28Sopenharmony_ci    part_name = "graphic_2d"
353e9297d28Sopenharmony_ci    subsystem_name = "graphic"
354e9297d28Sopenharmony_ci  }
355e9297d28Sopenharmony_ci}
356e9297d28Sopenharmony_ci
357e9297d28Sopenharmony_ciforeach(item, ace_platforms) {
358e9297d28Sopenharmony_ci  graphics2d_source_set("2d_graphics_source_" + item.name) {
359e9297d28Sopenharmony_ci    platform = item.name
360e9297d28Sopenharmony_ci    defines = []
361e9297d28Sopenharmony_ci
362e9297d28Sopenharmony_ci    if (defined(item.config)) {
363e9297d28Sopenharmony_ci      config = item.config
364e9297d28Sopenharmony_ci    } else {
365e9297d28Sopenharmony_ci      config = {
366e9297d28Sopenharmony_ci      }
367e9297d28Sopenharmony_ci    }
368e9297d28Sopenharmony_ci
369e9297d28Sopenharmony_ci    if (defined(config.defines)) {
370e9297d28Sopenharmony_ci      defines += config.defines
371e9297d28Sopenharmony_ci    }
372e9297d28Sopenharmony_ci
373e9297d28Sopenharmony_ci    if (defined(config.cflags_cc)) {
374e9297d28Sopenharmony_ci      cflags_cc = config.cflags_cc
375e9297d28Sopenharmony_ci    } else {
376e9297d28Sopenharmony_ci      cflags_cc = []
377e9297d28Sopenharmony_ci    }
378e9297d28Sopenharmony_ci  }
379e9297d28Sopenharmony_ci}
380e9297d28Sopenharmony_ci
381e9297d28Sopenharmony_ciif (!is_arkui_x) {
382e9297d28Sopenharmony_ci  ## Build 2d_graphics.so
383e9297d28Sopenharmony_ci  ohos_shared_library("2d_graphics") {
384e9297d28Sopenharmony_ci    sanitize = {
385e9297d28Sopenharmony_ci      cfi = true
386e9297d28Sopenharmony_ci      cfi_cross_dso = true
387e9297d28Sopenharmony_ci      cfi_no_nvcall = true
388e9297d28Sopenharmony_ci      cfi_vcall_icall_only = true
389e9297d28Sopenharmony_ci      debug = false
390e9297d28Sopenharmony_ci    }
391e9297d28Sopenharmony_ci    platform = current_os
392e9297d28Sopenharmony_ci    if (platform == "mingw") {
393e9297d28Sopenharmony_ci      platform = "windows"
394e9297d28Sopenharmony_ci    }
395e9297d28Sopenharmony_ci    if (!(host_os == "linux" && host_cpu == "arm64")) {
396e9297d28Sopenharmony_ci      deps = [ ":2d_graphics_source_$platform" ]
397e9297d28Sopenharmony_ci    }
398e9297d28Sopenharmony_ci
399e9297d28Sopenharmony_ci    external_deps = [
400e9297d28Sopenharmony_ci      "bounds_checking_function:libsec_static",
401e9297d28Sopenharmony_ci      "hilog:libhilog",
402e9297d28Sopenharmony_ci    ]
403e9297d28Sopenharmony_ci    public_external_deps = [ "skia:skia_canvaskit" ]
404e9297d28Sopenharmony_ci    public_configs = [ ":export_config" ]
405e9297d28Sopenharmony_ci
406e9297d28Sopenharmony_ci    if (platform == "ohos") {
407e9297d28Sopenharmony_ci      version_script = "2d_graphics.versionscript"
408e9297d28Sopenharmony_ci    }
409e9297d28Sopenharmony_ci
410e9297d28Sopenharmony_ci    part_name = "graphic_2d"
411e9297d28Sopenharmony_ci    subsystem_name = "graphic"
412e9297d28Sopenharmony_ci  }
413e9297d28Sopenharmony_ci} else {
414e9297d28Sopenharmony_ci  ohos_source_set("2d_graphics") {
415e9297d28Sopenharmony_ci    platform = current_os
416e9297d28Sopenharmony_ci
417e9297d28Sopenharmony_ci    deps = [ ":2d_graphics_source_$platform" ]
418e9297d28Sopenharmony_ci
419e9297d28Sopenharmony_ci    if (is_arkui_x) {
420e9297d28Sopenharmony_ci      include_dirs = [ "//third_party/bounds_checking_function/include" ]
421e9297d28Sopenharmony_ci      deps += [ "//third_party/bounds_checking_function:libsec_static" ]
422e9297d28Sopenharmony_ci    } else {
423e9297d28Sopenharmony_ci      external_deps += [ "bounds_checking_function:libsec_static" ]
424e9297d28Sopenharmony_ci    }
425e9297d28Sopenharmony_ci    public_configs = [ ":export_config" ]
426e9297d28Sopenharmony_ci    part_name = "graphic_2d"
427e9297d28Sopenharmony_ci    subsystem_name = "graphic"
428e9297d28Sopenharmony_ci  }
429e9297d28Sopenharmony_ci}
430e9297d28Sopenharmony_ci
431e9297d28Sopenharmony_ciif (enable_text_gine) {
432e9297d28Sopenharmony_ci  ohos_shared_library("2d_graphics_new") {
433e9297d28Sopenharmony_ci    platform = current_os
434e9297d28Sopenharmony_ci    if (platform == "mingw") {
435e9297d28Sopenharmony_ci      platform = "windows"
436e9297d28Sopenharmony_ci    }
437e9297d28Sopenharmony_ci    deps = [ "$rosen_root/modules/texgine/texgine_drawing:libtexgine_drawing" ]
438e9297d28Sopenharmony_ci    if (!(host_os == "linux" && host_cpu == "arm64")) {
439e9297d28Sopenharmony_ci      deps += [ ":2d_graphics_source_$platform" ]
440e9297d28Sopenharmony_ci    }
441e9297d28Sopenharmony_ci    external_deps = [ "hilog:libhilog" ]
442e9297d28Sopenharmony_ci    public_external_deps = [ "bounds_checking_function:libsec_static" ]
443e9297d28Sopenharmony_ci    defines += [ "USE_GRAPHIC_TEXT_GINE" ]
444e9297d28Sopenharmony_ci    public_configs = [ ":2d_graphics_config" ]
445e9297d28Sopenharmony_ci    innerapi_tags = [ "platformsdk_indirect" ]
446e9297d28Sopenharmony_ci    part_name = "graphic_2d"
447e9297d28Sopenharmony_ci    subsystem_name = "graphic"
448e9297d28Sopenharmony_ci  }
449e9297d28Sopenharmony_ci}
450e9297d28Sopenharmony_ci
451e9297d28Sopenharmony_ci## Build 2d_graphics.so
452e9297d28Sopenharmony_ciohos_shared_library("2d_graphics_canvaskit0310") {
453e9297d28Sopenharmony_ci  sanitize = {
454e9297d28Sopenharmony_ci    cfi = true
455e9297d28Sopenharmony_ci    cfi_cross_dso = true
456e9297d28Sopenharmony_ci    cfi_no_nvcall = true
457e9297d28Sopenharmony_ci    cfi_vcall_icall_only = true
458e9297d28Sopenharmony_ci    debug = false
459e9297d28Sopenharmony_ci  }
460e9297d28Sopenharmony_ci  sources = [
461e9297d28Sopenharmony_ci    "$drawing_core_src_dir/draw/brush.cpp",
462e9297d28Sopenharmony_ci    "$drawing_core_src_dir/draw/color.cpp",
463e9297d28Sopenharmony_ci    "$drawing_core_src_dir/draw/core_canvas.cpp",
464e9297d28Sopenharmony_ci    "$drawing_core_src_dir/draw/path.cpp",
465e9297d28Sopenharmony_ci    "$drawing_core_src_dir/draw/pen.cpp",
466e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/blur_draw_looper.cpp",
467e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/color_filter.cpp",
468e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/color_space.cpp",
469e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/filter.cpp",
470e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/image_filter.cpp",
471e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/mask_filter.cpp",
472e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/path_effect.cpp",
473e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/runtime_effect.cpp",
474e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/runtime_shader_builder.cpp",
475e9297d28Sopenharmony_ci    "$drawing_core_src_dir/effect/shader_effect.cpp",
476e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/impl_factory.cpp",
477e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_bitmap.cpp",
478e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_camera.cpp",
479e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_canvas.cpp",
480e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_color_filter.cpp",
481e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_color_space.cpp",
482e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_graphics.cpp",
483e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_helper.cpp",
484e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_image.cpp",
485e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_image_filter.cpp",
486e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_impl_factory.cpp",
487e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_mask_filter.cpp",
488e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_matrix.cpp",
489e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_paint.cpp",
490e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_path.cpp",
491e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_path_effect.cpp",
492e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_picture.cpp",
493e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_pixmap.cpp",
494e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_runtime_effect.cpp",
495e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_runtime_shader_builder.cpp",
496e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter/skia_adapter/skia_shader_effect.cpp",
497e9297d28Sopenharmony_ci    "$drawing_core_src_dir/image/bitmap.cpp",
498e9297d28Sopenharmony_ci    "$drawing_core_src_dir/image/image.cpp",
499e9297d28Sopenharmony_ci    "$drawing_core_src_dir/image/picture.cpp",
500e9297d28Sopenharmony_ci    "$drawing_core_src_dir/image/pixmap.cpp",
501e9297d28Sopenharmony_ci    "$drawing_core_src_dir/text/text.cpp",
502e9297d28Sopenharmony_ci    "$drawing_core_src_dir/utils/camera3d.cpp",
503e9297d28Sopenharmony_ci    "$drawing_core_src_dir/utils/matrix.cpp",
504e9297d28Sopenharmony_ci  ]
505e9297d28Sopenharmony_ci
506e9297d28Sopenharmony_ci  if (enable_text_gine) {
507e9297d28Sopenharmony_ci    defines += [ "USE_CANVASKIT0310_SKIA" ]
508e9297d28Sopenharmony_ci  } else {
509e9297d28Sopenharmony_ci    defines = [ "USE_CANVASKIT0310_SKIA" ]
510e9297d28Sopenharmony_ci  }
511e9297d28Sopenharmony_ci
512e9297d28Sopenharmony_ci  include_dirs = [
513e9297d28Sopenharmony_ci    "$drawing_core_include_dir",
514e9297d28Sopenharmony_ci    "$src_dir",
515e9297d28Sopenharmony_ci    "$drawing_core_src_dir",
516e9297d28Sopenharmony_ci    "$drawing_core_src_dir/engine_adapter",
517e9297d28Sopenharmony_ci  ]
518e9297d28Sopenharmony_ci
519e9297d28Sopenharmony_ci  external_deps = [
520e9297d28Sopenharmony_ci    "hilog:libhilog",
521e9297d28Sopenharmony_ci    "image_framework:image_native",
522e9297d28Sopenharmony_ci  ]
523e9297d28Sopenharmony_ci
524e9297d28Sopenharmony_ci  if (!is_arkui_x) {
525e9297d28Sopenharmony_ci    deps = [
526e9297d28Sopenharmony_ci      # "//third_party/skia_canvaskit0310:skia",
527e9297d28Sopenharmony_ci    ]
528e9297d28Sopenharmony_ci    external_deps += [ "graphic_surface:surface" ]
529e9297d28Sopenharmony_ci  }
530e9297d28Sopenharmony_ci
531e9297d28Sopenharmony_ci  if (enable_text_gine) {
532e9297d28Sopenharmony_ci    defines += [ "USE_GRAPHIC_TEXT_GINE" ]
533e9297d28Sopenharmony_ci  }
534e9297d28Sopenharmony_ci
535e9297d28Sopenharmony_ci  part_name = "graphic_2d"
536e9297d28Sopenharmony_ci  subsystem_name = "graphic"
537e9297d28Sopenharmony_ci}
538e9297d28Sopenharmony_ci
539e9297d28Sopenharmony_cigroup("2d_graphics_packages") {
540e9297d28Sopenharmony_ci  deps = [
541e9297d28Sopenharmony_ci    "$drawing_root:2d_graphics",
542e9297d28Sopenharmony_ci    "$drawing_root/drawing_ndk:native_drawing_ndk",
543e9297d28Sopenharmony_ci  ]
544e9297d28Sopenharmony_ci}
545