Home | History | Annotate | Download | only in layers
      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_DELEGATED_RENDERER_LAYER_H_
      6 #define CC_LAYERS_DELEGATED_RENDERER_LAYER_H_
      7 
      8 #include "cc/base/cc_export.h"
      9 #include "cc/layers/layer.h"
     10 #include "cc/resources/transferable_resource.h"
     11 
     12 namespace cc {
     13 
     14 class DelegatedFrameData;
     15 class DelegatedRendererLayerClient;
     16 
     17 class CC_EXPORT DelegatedRendererLayer : public Layer {
     18  public:
     19   static scoped_refptr<DelegatedRendererLayer> Create(
     20       DelegatedRendererLayerClient* client);
     21 
     22   virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl)
     23       OVERRIDE;
     24   virtual void PushPropertiesTo(LayerImpl* impl) OVERRIDE;
     25   virtual bool DrawsContent() const OVERRIDE;
     26 
     27   // Set the size at which the frame should be displayed, with the origin at the
     28   // layer's origin. This must always contain at least the layer's bounds. A
     29   // value of (0, 0) implies that the frame should be displayed to fit exactly
     30   // in the layer's bounds.
     31   void SetDisplaySize(gfx::Size size);
     32 
     33   void SetFrameData(scoped_ptr<DelegatedFrameData> frame_data);
     34 
     35   // Passes ownership of any unused resources that had been given by the child
     36   // compositor to the given array, so they can be given back to the child.
     37   void TakeUnusedResourcesForChildCompositor(TransferableResourceArray* array);
     38 
     39   virtual bool BlocksPendingCommit() const OVERRIDE;
     40 
     41  protected:
     42   explicit DelegatedRendererLayer(DelegatedRendererLayerClient* client);
     43   virtual ~DelegatedRendererLayer();
     44 
     45  private:
     46   scoped_ptr<DelegatedFrameData> frame_data_;
     47   gfx::RectF damage_in_frame_;
     48   gfx::Size frame_size_;
     49   gfx::Size display_size_;
     50   TransferableResourceArray unused_resources_for_child_compositor_;
     51 
     52   DelegatedRendererLayerClient* client_;
     53 
     54   DISALLOW_COPY_AND_ASSIGN(DelegatedRendererLayer);
     55 };
     56 
     57 }  // namespace cc
     58 #endif  // CC_LAYERS_DELEGATED_RENDERER_LAYER_H_
     59