1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CC_TEST_FAKE_PICTURE_PILE_IMPL_H_
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CC_TEST_FAKE_PICTURE_PILE_IMPL_H_
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/memory/ref_counted.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/resources/picture_pile_impl.h"
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/test/fake_content_layer_client.h"
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace cc {
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class FakePicturePileImpl : public PicturePileImpl {
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public:
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static scoped_refptr<FakePicturePileImpl> CreateFilledPile(
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const gfx::Size& tile_size,
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const gfx::Size& layer_bounds);
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static scoped_refptr<FakePicturePileImpl> CreateEmptyPile(
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const gfx::Size& tile_size,
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const gfx::Size& layer_bounds);
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  static scoped_refptr<FakePicturePileImpl>
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      CreateEmptyPileThatThinksItHasRecordings(const gfx::Size& tile_size,
2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                               const gfx::Size& layer_bounds);
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  static scoped_refptr<FakePicturePileImpl> CreateInfiniteFilledPile();
26bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  TilingData& tiling() { return tiling_; }
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void AddRecordingAt(int x, int y);
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void RemoveRecordingAt(int x, int y);
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void RerecordPile();
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void add_draw_rect(const gfx::RectF& rect) {
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    client_.add_draw_rect(rect, default_paint_);
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void add_draw_bitmap(const SkBitmap& bitmap, const gfx::Point& point) {
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    client_.add_draw_bitmap(bitmap, point, default_paint_);
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void add_draw_rect_with_paint(const gfx::RectF& rect, const SkPaint& paint) {
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    client_.add_draw_rect(rect, paint);
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  void add_draw_bitmap_with_paint(const SkBitmap& bitmap,
46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                  const gfx::Point& point,
474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                  const SkPaint& paint) {
484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    client_.add_draw_bitmap(bitmap, point, paint);
494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  }
504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void set_default_paint(const SkPaint& paint) {
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    default_paint_ = paint;
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
55868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  void set_background_color(SkColor color) {
56868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    background_color_ = color;
57868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
58868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
59868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  void set_contents_opaque(bool contents_opaque) {
60868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    contents_opaque_ = contents_opaque;
61868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
62868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  void set_contents_fill_bounds_completely(bool fills) {
64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    contents_fill_bounds_completely_ = fills;
65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  }
66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  void set_clear_canvas_with_debug_color(bool clear) {
680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    clear_canvas_with_debug_color_ = clear;
690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  }
700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) protected:
72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  FakePicturePileImpl();
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual ~FakePicturePileImpl();
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  FakeContentLayerClient client_;
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SkPaint default_paint_;
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace cc
80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif  // CC_TEST_FAKE_PICTURE_PILE_IMPL_H_
82