picture_layer.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright 2012 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_LAYER_H_
6#define CC_LAYERS_PICTURE_LAYER_H_
7
8#include "cc/debug/devtools_instrumentation.h"
9#include "cc/layers/contents_scaling_layer.h"
10#include "cc/layers/layer.h"
11#include "cc/resources/picture_pile.h"
12#include "cc/trees/occlusion_tracker.h"
13
14namespace cc {
15
16class ContentLayerClient;
17class ResourceUpdateQueue;
18
19class CC_EXPORT PictureLayer : public ContentsScalingLayer {
20 public:
21  static scoped_refptr<PictureLayer> Create(ContentLayerClient* client);
22
23  void ClearClient() { client_ = NULL; }
24
25  // Implement Layer interface
26  virtual bool DrawsContent() const OVERRIDE;
27  virtual scoped_ptr<LayerImpl> CreateLayerImpl(
28      LayerTreeImpl* tree_impl) OVERRIDE;
29  virtual void SetLayerTreeHost(LayerTreeHost* host) OVERRIDE;
30  virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
31  virtual void SetNeedsDisplayRect(const gfx::RectF& layer_rect) OVERRIDE;
32  virtual void Update(
33      ResourceUpdateQueue* queue,
34      const OcclusionTracker* occlusion) OVERRIDE;
35  virtual void SetIsMask(bool is_mask) OVERRIDE;
36  virtual bool SupportsLCDText() const OVERRIDE;
37
38 protected:
39  explicit PictureLayer(ContentLayerClient* client);
40  virtual ~PictureLayer();
41
42 private:
43  ContentLayerClient* client_;
44  scoped_refptr<PicturePile> pile_;
45  devtools_instrumentation::
46      ScopedLayerObjectTracker instrumentation_object_tracker_;
47  // Invalidation to use the next time update is called.
48  Region pending_invalidation_;
49  // Invalidation from the last time update was called.
50  Region pile_invalidation_;
51  bool is_mask_;
52
53  DISALLOW_COPY_AND_ASSIGN(PictureLayer);
54};
55
56}  // namespace cc
57
58#endif  // CC_LAYERS_PICTURE_LAYER_H_
59