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_IMAGE_LAYER_UPDATER_H_
6#define CC_RESOURCES_IMAGE_LAYER_UPDATER_H_
7
8#include "cc/base/cc_export.h"
9#include "cc/resources/layer_updater.h"
10#include "third_party/skia/include/core/SkBitmap.h"
11
12namespace cc {
13
14class ResourceUpdateQueue;
15
16class CC_EXPORT ImageLayerUpdater : public LayerUpdater {
17 public:
18  class Resource : public LayerUpdater::Resource {
19   public:
20    Resource(ImageLayerUpdater* updater,
21             scoped_ptr<PrioritizedResource> texture);
22    virtual ~Resource();
23
24    virtual void Update(ResourceUpdateQueue* queue,
25                        const gfx::Rect& source_rect,
26                        const gfx::Vector2d& dest_offset,
27                        bool partial_update) OVERRIDE;
28
29   private:
30    ImageLayerUpdater* updater_;
31
32    DISALLOW_COPY_AND_ASSIGN(Resource);
33  };
34
35  static scoped_refptr<ImageLayerUpdater> Create();
36
37  virtual scoped_ptr<LayerUpdater::Resource> CreateResource(
38      PrioritizedResourceManager*) OVERRIDE;
39
40  void UpdateTexture(ResourceUpdateQueue* queue,
41                     PrioritizedResource* texture,
42                     const gfx::Rect& source_rect,
43                     const gfx::Vector2d& dest_offset,
44                     bool partial_update);
45
46  void SetBitmap(const SkBitmap& bitmap);
47  bool UsingBitmap(const SkBitmap& bitmap) const;
48
49 private:
50  ImageLayerUpdater() {}
51  virtual ~ImageLayerUpdater() {}
52
53  SkBitmap bitmap_;
54
55  DISALLOW_COPY_AND_ASSIGN(ImageLayerUpdater);
56};
57
58}  // namespace cc
59
60#endif  // CC_RESOURCES_IMAGE_LAYER_UPDATER_H_
61