picture_pile.h revision 010d83a9304c5a91596085d917d248abff47903a
1// Copyright 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CC_RESOURCES_PICTURE_PILE_H_
6#define CC_RESOURCES_PICTURE_PILE_H_
7
8#include "cc/resources/picture_pile_base.h"
9#include "ui/gfx/rect.h"
10
11namespace cc {
12class PicturePileImpl;
13class Region;
14class RenderingStatsInstrumentation;
15
16class CC_EXPORT PicturePile : public PicturePileBase {
17 public:
18  PicturePile();
19
20  // Re-record parts of the picture that are invalid.
21  // Invalidations are in layer space.
22  // Return true iff the pile was modified.
23  bool Update(ContentLayerClient* painter,
24              SkColor background_color,
25              bool contents_opaque,
26              bool contents_fill_bounds_completely,
27              const Region& invalidation,
28              const gfx::Rect& visible_layer_rect,
29              int frame_number,
30              Picture::RecordingMode recording_mode,
31              RenderingStatsInstrumentation* stats_instrumentation);
32
33  void set_slow_down_raster_scale_factor(int factor) {
34    slow_down_raster_scale_factor_for_debug_ = factor;
35  }
36
37  void set_show_debug_picture_borders(bool show) {
38    show_debug_picture_borders_ = show;
39  }
40
41  bool is_suitable_for_gpu_rasterization() const {
42    return is_suitable_for_gpu_rasterization_;
43  }
44  void SetUnsuitableForGpuRasterizationForTesting() {
45    is_suitable_for_gpu_rasterization_ = false;
46  }
47
48 protected:
49  virtual ~PicturePile();
50
51 private:
52  friend class PicturePileImpl;
53
54  bool is_suitable_for_gpu_rasterization_;
55
56  DISALLOW_COPY_AND_ASSIGN(PicturePile);
57};
58
59}  // namespace cc
60
61#endif  // CC_RESOURCES_PICTURE_PILE_H_
62