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* 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 
     35   void SetBitmap(const SkBitmap& image);
     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