- add sources.
[platform/framework/web/crosswalk.git] / src / content / browser / renderer_host / backing_store_aura.h
1 // Copyright (c) 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 CONTENT_BROWSER_RENDERER_HOST_BACKING_STORE_AURA_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_BACKING_STORE_AURA_H_
7
8 #include "base/memory/scoped_ptr.h"
9 #include "content/browser/renderer_host/backing_store.h"
10 #include "content/common/content_export.h"
11 #include "third_party/skia/include/core/SkBitmap.h"
12
13 class SkCanvas;
14
15 namespace gfx {
16 class Point;
17 class Canvas;
18 }
19
20 namespace content {
21 class RenderProcessHost;
22
23 // A backing store that uses skia. This is the backing store used by
24 // RenderWidgetHostViewAura.
25 class BackingStoreAura : public BackingStore {
26  public:
27   CONTENT_EXPORT BackingStoreAura(
28       RenderWidgetHost* widget,
29       const gfx::Size& size);
30
31   virtual ~BackingStoreAura();
32
33   CONTENT_EXPORT void SkiaShowRect(const gfx::Point& point,
34                                    gfx::Canvas* canvas);
35
36   // Called when the view's backing scale factor changes.
37   void ScaleFactorChanged(float device_scale_factor);
38
39   // BackingStore implementation.
40   virtual size_t MemorySize() OVERRIDE;
41   virtual void PaintToBackingStore(
42       RenderProcessHost* process,
43       TransportDIB::Id bitmap,
44       const gfx::Rect& bitmap_rect,
45       const std::vector<gfx::Rect>& copy_rects,
46       float scale_factor,
47       const base::Closure& completion_callback,
48       bool* scheduled_completion_callback) OVERRIDE;
49   virtual bool CopyFromBackingStore(const gfx::Rect& rect,
50                                     skia::PlatformBitmap* output) OVERRIDE;
51   virtual void ScrollBackingStore(const gfx::Vector2d& delta,
52                                   const gfx::Rect& clip_rect,
53                                   const gfx::Size& view_size) OVERRIDE;
54
55  private:
56   SkBitmap bitmap_;
57
58   scoped_ptr<SkCanvas> canvas_;
59   float device_scale_factor_;
60
61   DISALLOW_COPY_AND_ASSIGN(BackingStoreAura);
62 };
63
64 }  // namespace content
65
66 #endif  // CONTENT_BROWSER_RENDERER_HOST_BACKING_STORE_AURA_H_