• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 void SetTexturePriorities(const PriorityCalculator& priority_calc)
23       OVERRIDE;
24   virtual bool Update(ResourceUpdateQueue* queue,
25                       const OcclusionTracker<Layer>* occlusion) OVERRIDE;
26   virtual void CalculateContentsScale(float ideal_contents_scale,
27                                       float* contents_scale_x,
28                                       float* contents_scale_y,
29                                       gfx::Size* content_bounds) OVERRIDE;
30   virtual void OnOutputSurfaceCreated() OVERRIDE;
31 
32   void SetBitmap(const SkBitmap& image);
33 
34  protected:
35   virtual bool HasDrawableContent() const OVERRIDE;
36 
37  private:
38   ImageLayer();
39   virtual ~ImageLayer();
40 
41   // TiledLayer Implementation.
42   virtual LayerUpdater* Updater() const OVERRIDE;
43   virtual void CreateUpdaterIfNeeded() OVERRIDE;
44 
45   float ImageContentsScaleX() const;
46   float ImageContentsScaleY() const;
47 
48   SkBitmap bitmap_;
49 
50   scoped_refptr<ImageLayerUpdater> updater_;
51 
52   DISALLOW_COPY_AND_ASSIGN(ImageLayer);
53 };
54 
55 }  // namespace cc
56 
57 #endif  // CC_LAYERS_IMAGE_LAYER_H_
58