# Copyright 2016 The Chromium 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("//third_party/blink/renderer/core/core.gni")

blink_core_sources("rendering") {
  visibility = [ "//third_party/blink/renderer/core/*" ]

  sources = [
    "applied_text_decoration.cc",
    "applied_text_decoration.h",
    "applied_text_decoration_list.h",
    "basic_shapes.cc",
    "basic_shapes.h",
    "border_edge.cc",
    "border_edge.h",
    "border_image_length.h",
    "border_image_length_box.h",
    "border_style.h",
    "border_value.h",
    "cached_ua_style.cc",
    "cached_ua_style.h",
    "clip_path_operation.h",
    "computed_style.cc",
    "computed_style.h",
    "computed_style_constants.h",
    "content_data.cc",
    "content_data.h",
    "counter_content.h",
    "counter_directives.cc",
    "counter_directives.h",
    "cursor_data.h",
    "cursor_list.h",
    "data_equivalency.h",
    "data_ref.h",
    "fill_layer.cc",
    "fill_layer.h",
    "filter_operation.cc",
    "filter_operation.h",
    "filter_operations.cc",
    "filter_operations.h",
    "gap_length.h",
    "grid_area.h",
    "grid_length.h",
    "grid_position.h",
    "grid_positions_resolver.cc",
    "grid_positions_resolver.h",
    "grid_track_size.h",
    "member_copy.h",
    "named_grid_lines_map.h",
    "nine_piece_image.cc",
    "nine_piece_image.h",
    "ordered_named_grid_lines.h",
    "paint_images.h",
    "quad_length_value.h",
    "quotes_data.cc",
    "quotes_data.h",
    "reference_clip_path_operation.cc",
    "reference_clip_path_operation.h",
    "shadow_data.cc",
    "shadow_data.h",
    "shadow_list.cc",
    "shadow_list.h",
    "shape_clip_path_operation.h",
    "shape_value.h",
    "style_content_alignment_data.h",
    "style_difference.cc",
    "style_difference.h",
    "style_fetched_image.cc",
    "style_fetched_image.h",
    "style_fetched_image_set.cc",
    "style_fetched_image_set.h",
    "style_filter_data.cc",
    "style_filter_data.h",
    "style_generated_image.cc",
    "style_generated_image.h",
    "style_image.cc",
    "style_image.h",
    "style_inherited_variables.cc",
    "style_inherited_variables.h",
    "style_initial_data.cc",
    "style_initial_data.h",
    "style_non_inherited_variables.h",
    "style_offset_rotation.h",
    "style_path.cc",
    "style_path.h",
    "style_pending_image.h",
    "style_ray.cc",
    "style_ray.h",
    "style_reflection.h",
    "style_self_alignment_data.h",
    "style_variables.cc",
    "style_variables.h",
    "text_size_adjust.h",
  ]
}

blink_core_sources("svg_style") {
  sources = [
    "svg_computed_style.cc",
    "svg_computed_style.h",
    "svg_computed_style_defs.cc",
    "svg_computed_style_defs.h",
  ]
}
