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
11namespace cc {
12
13class DrawQuad;
14class SharedQuadState;
15
16struct AppendQuadsData;
17
18class 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