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_QUAD_SINK_H_ 6 #define CC_LAYERS_QUAD_SINK_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "cc/base/cc_export.h" 10 11 namespace cc { 12 13 class DrawQuad; 14 class SharedQuadState; 15 16 struct AppendQuadsData; 17 18 class CC_EXPORT QuadSink { 19 public: 20 virtual ~QuadSink() {} 21 22 // Call this to add a SharedQuadState before appending quads that refer to it. 23 // Returns a pointer to the given SharedQuadState for convenience, that can be 24 // set on the quads to append. 25 virtual SharedQuadState* UseSharedQuadState( 26 scoped_ptr<SharedQuadState> shared_quad_state) = 0; 27 28 // Returns true if the quad is added to the list, and false if the quad is 29 // entirely culled. 30 virtual bool Append(scoped_ptr<DrawQuad> draw_quad, 31 AppendQuadsData* append_quads_data) = 0; 32 }; 33 34 } // namespace cc 35 36 #endif // CC_LAYERS_QUAD_SINK_H_ 37