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