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.
5 #ifndef CCDelegatedRendererLayerImpl_h
6 #define CCDelegatedRendererLayerImpl_h
8 #include "CCLayerImpl.h"
9 #include "cc/scoped_ptr_vector.h"
13 class CCDelegatedRendererLayerImpl
: public CCLayerImpl
{
15 static scoped_ptr
<CCDelegatedRendererLayerImpl
> create(int id
) { return make_scoped_ptr(new CCDelegatedRendererLayerImpl(id
)); }
16 virtual ~CCDelegatedRendererLayerImpl();
18 virtual bool descendantDrawsContent() OVERRIDE
;
19 virtual bool hasContributingDelegatedRenderPasses() const OVERRIDE
;
21 // This gives ownership of the RenderPasses to the layer.
22 void setRenderPasses(ScopedPtrVector
<CCRenderPass
>&);
23 void clearRenderPasses();
25 virtual void didLoseContext() OVERRIDE
;
27 virtual CCRenderPass::Id
firstContributingRenderPassId() const OVERRIDE
;
28 virtual CCRenderPass::Id
nextContributingRenderPassId(CCRenderPass::Id
) const OVERRIDE
;
30 void appendContributingRenderPasses(CCRenderPassSink
&);
31 virtual void appendQuads(CCQuadSink
&, CCAppendQuadsData
&) OVERRIDE
;
34 explicit CCDelegatedRendererLayerImpl(int);
36 CCRenderPass::Id
convertDelegatedRenderPassId(CCRenderPass::Id delegatedRenderPassId
) const;
38 void appendRenderPassQuads(CCQuadSink
&, CCAppendQuadsData
&, CCRenderPass
* fromDelegatedRenderPass
) const;
40 PassOwnPtr
<CCDrawQuad
> createCopyOfQuad(const CCDrawQuad
*);
42 virtual const char* layerTypeAsString() const OVERRIDE
;
44 ScopedPtrVector
<CCRenderPass
> m_renderPassesInDrawOrder
;
45 base::hash_map
<CCRenderPass::Id
, int> m_renderPassesIndexById
;
50 #endif // CCDelegatedRendererLayerImpl_h