image_layer.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
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 void 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