picture_image_layer.h revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
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_PICTURE_IMAGE_LAYER_H_
6#define CC_LAYERS_PICTURE_IMAGE_LAYER_H_
7
8#include "cc/base/cc_export.h"
9#include "cc/layers/content_layer_client.h"
10#include "cc/layers/picture_layer.h"
11#include "third_party/skia/include/core/SkBitmap.h"
12#include "ui/gfx/size.h"
13
14namespace cc {
15
16class CC_EXPORT PictureImageLayer : public PictureLayer, ContentLayerClient {
17 public:
18  static scoped_refptr<PictureImageLayer> Create();
19
20  void SetBitmap(const SkBitmap& image);
21
22  // Layer implementation.
23  virtual scoped_ptr<LayerImpl> CreateLayerImpl(
24      LayerTreeImpl* tree_impl) OVERRIDE;
25
26  // ContentLayerClient implementation.
27  virtual void PaintContents(
28      SkCanvas* canvas,
29      const gfx::Rect& clip,
30      gfx::RectF* opaque,
31      ContentLayerClient::GraphicsContextStatus gc_status) OVERRIDE;
32  virtual void DidChangeLayerCanUseLCDText() OVERRIDE {}
33  virtual bool FillsBoundsCompletely() const OVERRIDE;
34
35 protected:
36  virtual bool HasDrawableContent() const OVERRIDE;
37
38 private:
39  PictureImageLayer();
40  virtual ~PictureImageLayer();
41
42  SkBitmap bitmap_;
43
44  DISALLOW_COPY_AND_ASSIGN(PictureImageLayer);
45};
46
47}  // namespace cc
48
49#endif  // CC_LAYERS_PICTURE_IMAGE_LAYER_H_
50