# Copyright 2018 The PDFium Authors
# 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("page") {
  sources = [
    "cpdf_allstates.cpp",
    "cpdf_allstates.h",
    "cpdf_annotcontext.cpp",
    "cpdf_annotcontext.h",
    "cpdf_basedcs.cpp",
    "cpdf_basedcs.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_dib.cpp",
    "cpdf_dib.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_imageloader.cpp",
    "cpdf_imageloader.h",
    "cpdf_imageobject.cpp",
    "cpdf_imageobject.h",
    "cpdf_indexedcs.cpp",
    "cpdf_indexedcs.h",
    "cpdf_meshstream.cpp",
    "cpdf_meshstream.h",
    "cpdf_occontext.cpp",
    "cpdf_occontext.h",
    "cpdf_page.cpp",
    "cpdf_page.h",
    "cpdf_pageimagecache.cpp",
    "cpdf_pageimagecache.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_transferfuncdib.cpp",
    "cpdf_transferfuncdib.h",
    "cpdf_transparency.cpp",
    "cpdf_transparency.h",
    "ipdf_page.h",
  ]
  configs += [ "../../../:pdfium_strict_config" ]
  deps = [
    "../../../constants",
    "../../fxcodec",
    "../../fxcrt",
    "../../fxge",
    "../font",
    "../parser",
  ]
  allow_circular_includes_from = []
  if (pdf_use_skia) {
    allow_circular_includes_from += [ "../../fxge" ]
  }
  visibility = [ "../../../*" ]
}

source_set("unit_test_support") {
  testonly = true
  sources = [
    "test_with_page_module.cpp",
    "test_with_page_module.h",
  ]
  configs += [ "../../../:pdfium_strict_config" ]
  deps = [
    "../page",
    "//testing/gtest",
  ]
}

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