# 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("//build/config/jumbo.gni")
import("../../../pdfium.gni")
import("../../../testing/test.gni")

jumbo_source_set("page") {
  sources = [
    "cpdf_allstates.cpp",
    "cpdf_allstates.h",
    "cpdf_clippath.cpp",
    "cpdf_clippath.h",
    "cpdf_color.cpp",
    "cpdf_color.h",
    "cpdf_colorspace.cpp",
    "cpdf_colorspace.h",
    "cpdf_colorstate.cpp",
    "cpdf_colorstate.h",
    "cpdf_contentmarkitem.cpp",
    "cpdf_contentmarkitem.h",
    "cpdf_contentmarks.cpp",
    "cpdf_contentmarks.h",
    "cpdf_contentparser.cpp",
    "cpdf_contentparser.h",
    "cpdf_countedobject.h",
    "cpdf_devicecs.cpp",
    "cpdf_devicecs.h",
    "cpdf_docpagedata.cpp",
    "cpdf_docpagedata.h",
    "cpdf_expintfunc.cpp",
    "cpdf_expintfunc.h",
    "cpdf_form.cpp",
    "cpdf_form.h",
    "cpdf_formobject.cpp",
    "cpdf_formobject.h",
    "cpdf_function.cpp",
    "cpdf_function.h",
    "cpdf_generalstate.cpp",
    "cpdf_generalstate.h",
    "cpdf_graphicstates.cpp",
    "cpdf_graphicstates.h",
    "cpdf_iccprofile.cpp",
    "cpdf_iccprofile.h",
    "cpdf_image.cpp",
    "cpdf_image.h",
    "cpdf_imageobject.cpp",
    "cpdf_imageobject.h",
    "cpdf_meshstream.cpp",
    "cpdf_meshstream.h",
    "cpdf_page.cpp",
    "cpdf_page.h",
    "cpdf_pagemodule.cpp",
    "cpdf_pagemodule.h",
    "cpdf_pageobject.cpp",
    "cpdf_pageobject.h",
    "cpdf_pageobjectholder.cpp",
    "cpdf_pageobjectholder.h",
    "cpdf_pageobjectlist.cpp",
    "cpdf_pageobjectlist.h",
    "cpdf_path.cpp",
    "cpdf_path.h",
    "cpdf_pathobject.cpp",
    "cpdf_pathobject.h",
    "cpdf_pattern.cpp",
    "cpdf_pattern.h",
    "cpdf_patterncs.cpp",
    "cpdf_patterncs.h",
    "cpdf_psengine.cpp",
    "cpdf_psengine.h",
    "cpdf_psfunc.cpp",
    "cpdf_psfunc.h",
    "cpdf_sampledfunc.cpp",
    "cpdf_sampledfunc.h",
    "cpdf_shadingobject.cpp",
    "cpdf_shadingobject.h",
    "cpdf_shadingpattern.cpp",
    "cpdf_shadingpattern.h",
    "cpdf_stitchfunc.cpp",
    "cpdf_stitchfunc.h",
    "cpdf_streamcontentparser.cpp",
    "cpdf_streamcontentparser.h",
    "cpdf_streamparser.cpp",
    "cpdf_streamparser.h",
    "cpdf_textobject.cpp",
    "cpdf_textobject.h",
    "cpdf_textstate.cpp",
    "cpdf_textstate.h",
    "cpdf_tilingpattern.cpp",
    "cpdf_tilingpattern.h",
    "ipdf_page.h",
  ]
  configs += [ "../../../:pdfium_core_config" ]
  deps = [
    "../../fdrm",
    "../../fxcodec",
    "../../fxcrt",
    "../../fxge",
    "../cmaps",
    "../font",
    "../parser",
  ]
  allow_circular_includes_from = [
    "../cmaps",
    "../font",
    "../parser",
    "../../fxcodec",
  ]
  if (pdf_use_skia || pdf_use_skia_paths) {
    allow_circular_includes_from += [ "../../fxge" ]
  }
  visibility = [ "../../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cpdf_devicecs_unittest.cpp",
    "cpdf_pageobjectholder_unittest.cpp",
    "cpdf_psengine_unittest.cpp",
    "cpdf_streamcontentparser_unittest.cpp",
    "cpdf_streamparser_unittest.cpp",
  ]
  deps = [
    ":page",
  ]
  pdfium_root_dir = "../../../"
}

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