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