# 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_annotcontext.cpp",
    "cpdf_annotcontext.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_devicecs.cpp",
    "cpdf_devicecs.h",
    "cpdf_dibbase.cpp",
    "cpdf_dibbase.h",
    "cpdf_dibtransferfunc.cpp",
    "cpdf_dibtransferfunc.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_occontext.cpp",
    "cpdf_occontext.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_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",
    "cpdf_transferfunc.cpp",
    "cpdf_transferfunc.h",
    "cpdf_transparency.cpp",
    "cpdf_transparency.h",
    "ipdf_page.h",
  ]
  configs += [ "../../../:pdfium_core_config" ]
  deps = [
    "../../../constants",
    "../../fxcodec",
    "../../fxcrt",
    "../../fxge",
    "../font",
    "../parser",
  ]
  allow_circular_includes_from = []
  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 = "../../../"
}
