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 12namespace cc { 13 14class ImageLayerUpdater; 15 16// A Layer that contains only an Image element. 17class 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