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