image_layer.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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                                      bool animating_transform_to_screen,
31                                      float* contents_scale_x,
32                                      float* contents_scale_y,
33                                      gfx::Size* content_bounds) OVERRIDE;
34  virtual void OnOutputSurfaceCreated() OVERRIDE;
35
36  void SetBitmap(const SkBitmap& image);
37
38 private:
39  ImageLayer();
40  virtual ~ImageLayer();
41
42  // TiledLayer Implementation.
43  virtual LayerUpdater* Updater() const OVERRIDE;
44  virtual void CreateUpdaterIfNeeded() OVERRIDE;
45
46  float ImageContentsScaleX() const;
47  float ImageContentsScaleY() const;
48
49  SkBitmap bitmap_;
50
51  scoped_refptr<ImageLayerUpdater> updater_;
52
53  DISALLOW_COPY_AND_ASSIGN(ImageLayer);
54};
55
56}  // namespace cc
57
58#endif  // CC_LAYERS_IMAGE_LAYER_H_
59