Home | History | Annotate | Download | only in layers
      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