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