# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//flutter/impeller/tools/impeller.gni")

impeller_component("display_list") {
  sources = [
    "display_list_dispatcher.cc",
    "display_list_dispatcher.h",
    "display_list_image_impeller.cc",
    "display_list_image_impeller.h",
    "display_list_vertices_geometry.cc",
    "display_list_vertices_geometry.h",
    "nine_patch_converter.cc",
    "nine_patch_converter.h",
  ]

  public_deps = [
    "../aiks",
    "//flutter/display_list",
    "//flutter/fml",
    "//third_party/skia",
  ]

  if (!defined(defines)) {
    defines = []
  }
  if (impeller_enable_3d) {
    defines += [ "IMPELLER_ENABLE_3D" ]
  }
}

impeller_component("display_list_unittests") {
  testonly = true

  sources = [
    "display_list_playground.cc",
    "display_list_playground.h",
    "display_list_unittests.cc",
  ]

  deps = [
    ":display_list",
    "../playground:playground_test",
  ]

  if (!defined(defines)) {
    defines = []
  }
  if (impeller_enable_3d) {
    defines += [ "IMPELLER_ENABLE_3D" ]
  }
}
