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