# 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("render") {
  sources = [
    "cpdf_charposlist.cpp",
    "cpdf_charposlist.h",
    "cpdf_devicebuffer.cpp",
    "cpdf_devicebuffer.h",
    "cpdf_dibtransferfunc.cpp",
    "cpdf_dibtransferfunc.h",
    "cpdf_docrenderdata.cpp",
    "cpdf_docrenderdata.h",
    "cpdf_imagecacheentry.cpp",
    "cpdf_imagecacheentry.h",
    "cpdf_imageloader.cpp",
    "cpdf_imageloader.h",
    "cpdf_imagerenderer.cpp",
    "cpdf_imagerenderer.h",
    "cpdf_pagerendercache.cpp",
    "cpdf_pagerendercache.h",
    "cpdf_pagerendercontext.cpp",
    "cpdf_pagerendercontext.h",
    "cpdf_progressiverenderer.cpp",
    "cpdf_progressiverenderer.h",
    "cpdf_rendercontext.cpp",
    "cpdf_rendercontext.h",
    "cpdf_renderoptions.cpp",
    "cpdf_renderoptions.h",
    "cpdf_renderstatus.cpp",
    "cpdf_renderstatus.h",
    "cpdf_scaledrenderbuffer.cpp",
    "cpdf_scaledrenderbuffer.h",
    "cpdf_textrenderer.cpp",
    "cpdf_textrenderer.h",
    "cpdf_transferfunc.cpp",
    "cpdf_transferfunc.h",
    "cpdf_type3cache.cpp",
    "cpdf_type3cache.h",
    "cpdf_type3glyphmap.cpp",
    "cpdf_type3glyphmap.h",
  ]
  configs += [ "../../../:pdfium_core_config" ]
  deps = [
    "../../../constants",
    "../../fxcodec",
    "../../fxcrt",
    "../../fxge",
    "../font",
    "../page",
    "../parser",
  ]
  allow_circular_includes_from = [ "../page" ]
  visibility = [ "../../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cpdf_docrenderdata_unittest.cpp",
  ]
  deps = [
    ":render",
    "../parser",
  ]
  pdfium_root_dir = "../../../"
}

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