- add sources.
[platform/framework/web/crosswalk.git] / src / cc / layers / image_layer.h
1 // Copyright 2010 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_LAYERS_IMAGE_LAYER_H_
6 #define CC_LAYERS_IMAGE_LAYER_H_
7
8 #include "cc/base/cc_export.h"
9 #include "cc/layers/content_layer.h"
10 #include "third_party/skia/include/core/SkBitmap.h"
11
12 namespace cc {
13
14 class ImageLayerUpdater;
15
16 // A Layer that contains only an Image element.
17 class CC_EXPORT ImageLayer : public TiledLayer {
18  public:
19   static scoped_refptr<ImageLayer> Create();
20
21   // Layer implementation.
22   virtual bool DrawsContent() const OVERRIDE;
23   virtual void SetTexturePriorities(const PriorityCalculator& priority_calc)
24       OVERRIDE;
25   virtual bool Update(ResourceUpdateQueue* queue,
26                       const OcclusionTracker* occlusion) OVERRIDE;
27   virtual void CalculateContentsScale(float ideal_contents_scale,
28                                       float device_scale_factor,
29                                       float page_scale_factor,
30                                       bool animating_transform_to_screen,
31                                       float* contents_scale_x,
32                                       float* contents_scale_y,
33                                       gfx::Size* content_bounds) OVERRIDE;
34   virtual void OnOutputSurfaceCreated() OVERRIDE;
35
36   void SetBitmap(const SkBitmap& image);
37
38  private:
39   ImageLayer();
40   virtual ~ImageLayer();
41
42   // TiledLayer Implementation.
43   virtual LayerUpdater* Updater() const OVERRIDE;
44   virtual void CreateUpdaterIfNeeded() OVERRIDE;
45
46   float ImageContentsScaleX() const;
47   float ImageContentsScaleY() const;
48
49   SkBitmap bitmap_;
50
51   scoped_refptr<ImageLayerUpdater> updater_;
52
53   DISALLOW_COPY_AND_ASSIGN(ImageLayer);
54 };
55
56 }  // namespace cc
57
58 #endif  // CC_LAYERS_IMAGE_LAYER_H_