// Copyright 2011 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.

#ifndef CC_TREES_LAYER_TREE_SETTINGS_H_
#define CC_TREES_LAYER_TREE_SETTINGS_H_

#include "base/basictypes.h"
#include "cc/base/cc_export.h"
#include "cc/debug/layer_tree_debug_state.h"
#include "cc/output/renderer_settings.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/gfx/geometry/size.h"

namespace cc {

class CC_EXPORT LayerTreeSettings {
 public:
  LayerTreeSettings();
  ~LayerTreeSettings();

  RendererSettings renderer_settings;
  bool impl_side_painting;
  bool throttle_frame_production;
  bool single_thread_proxy_scheduler;
  bool use_external_begin_frame_source;
  bool forward_begin_frames_to_children;
  bool main_frame_before_activation_enabled;
  bool using_synchronous_renderer_compositor;
  bool disable_hi_res_timer_tasks_on_battery;
  bool report_overscroll_only_for_scrollable_axes;
  bool per_tile_painting_enabled;
  bool accelerated_animation_enabled;
  bool can_use_lcd_text;
  bool use_distance_field_text;
  bool gpu_rasterization_enabled;
  bool gpu_rasterization_forced;
  int gpu_rasterization_msaa_sample_count;
  bool create_low_res_tiling;

  enum ScrollbarAnimator {
    NoAnimator,
    LinearFade,
    Thinning,
  };
  ScrollbarAnimator scrollbar_animator;
  int scrollbar_fade_delay_ms;
  int scrollbar_fade_resize_delay_ms;
  int scrollbar_fade_duration_ms;
  float scrollbar_show_scale_threshold;
  SkColor solid_color_scrollbar_color;
  bool calculate_top_controls_position;
  bool timeout_and_draw_when_animation_checkerboards;
  int maximum_number_of_failed_draws_before_draw_is_forced_;
  bool layer_transforms_should_scale_layer_contents;
  bool layers_always_allowed_lcd_text;
  float minimum_contents_scale;
  float low_res_contents_scale_factor;
  float top_controls_show_threshold;
  float top_controls_hide_threshold;
  double background_animation_rate;
  size_t max_partial_texture_updates;
  gfx::Size default_tile_size;
  gfx::Size max_untiled_layer_size;
  gfx::Size default_tile_grid_size;
  gfx::Size minimum_occlusion_tracking_size;
  bool use_pinch_zoom_scrollbars;
  bool use_pinch_virtual_viewport;
  size_t max_tiles_for_interest_area;
  float skewport_target_time_in_seconds;
  int skewport_extrapolation_limit_in_content_pixels;
  size_t max_unused_resource_memory_percentage;
  size_t max_memory_for_prepaint_percentage;
  bool strict_layer_property_change_checking;
  bool use_one_copy;
  bool use_zero_copy;
  bool enable_elastic_overscroll;
  unsigned use_image_texture_target;
  bool ignore_root_layer_flings;
  size_t scheduled_raster_task_limit;
  bool use_occlusion_for_tile_prioritization;
  bool record_full_layer;
  bool use_display_lists;
  bool verify_property_trees;

  LayerTreeDebugState initial_debug_state;
};

}  // namespace cc

#endif  // CC_TREES_LAYER_TREE_SETTINGS_H_
