# Copyright 2018 The PDFium 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("../../../pdfium.gni")
import("../../../testing/test.gni")

source_set("edit") {
  sources = [
    "cpdf_contentstream_write_utils.cpp",
    "cpdf_contentstream_write_utils.h",
    "cpdf_creator.cpp",
    "cpdf_creator.h",
    "cpdf_pagecontentgenerator.cpp",
    "cpdf_pagecontentgenerator.h",
    "cpdf_pagecontentmanager.cpp",
    "cpdf_pagecontentmanager.h",
    "cpdf_stringarchivestream.cpp",
    "cpdf_stringarchivestream.h",
  ]
  configs += [ "../../../:pdfium_core_config" ]
  deps = [
    "../../../constants",
    "../../../third_party:skia_shared",
    "../../fxcrt",
    "../../fxge",
    "../font",
    "../page",
    "../parser",
  ]
  visibility = [ "../../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cpdf_pagecontentgenerator_unittest.cpp",
  ]
  deps = [
    ":edit",
    "../../fxge",
    "../font",
    "../page",
    "../parser",
    "../render",
  ]
  pdfium_root_dir = "../../../"
}

pdfium_embeddertest_source_set("embeddertests") {
  sources = [
    "cpdf_creator_embeddertest.cpp",
  ]
  pdfium_root_dir = "../../../"
}
