picture_pile.h revision b2df76ea8fec9e32f6f3718986dba0d95315b29c
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;
14struct RenderingStats;
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  void Update(
23      ContentLayerClient* painter,
24      SkColor background_color,
25      const Region& invalidation,
26      gfx::Rect visible_layer_rect,
27      RenderingStats* stats);
28
29  void set_num_raster_threads(int num_raster_threads) {
30    num_raster_threads_ = num_raster_threads;
31  }
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 protected:
42  virtual ~PicturePile();
43
44 private:
45  friend class PicturePileImpl;
46
47  // Add an invalidation to this picture list.  If the list needs to be
48  // entirely recreated, leave it empty.  Do not call this on an empty list.
49  void InvalidateRect(
50      PictureList& picture_list,
51      gfx::Rect invalidation);
52
53  DISALLOW_COPY_AND_ASSIGN(PicturePile);
54};
55
56}  // namespace cc
57
58#endif  // CC_RESOURCES_PICTURE_PILE_H_
59