1// Copyright 2014 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_OUTPUT_BSP_WALK_ACTION_H_
6#define CC_OUTPUT_BSP_WALK_ACTION_H_
7
8#include <vector>
9
10#include "base/memory/scoped_ptr.h"
11#include "cc/output/direct_renderer.h"
12#include "cc/quads/draw_polygon.h"
13
14namespace cc {
15
16class CC_EXPORT BspWalkAction {
17 public:
18  virtual void operator()(DrawPolygon* item) = 0;
19};
20
21// The BspTree class takes ownership of all the DrawPolygons returned in list_
22// so the BspTree must be preserved while elements in that vector are in use.
23class CC_EXPORT BspWalkActionToVector : public BspWalkAction {
24 public:
25  explicit BspWalkActionToVector(std::vector<DrawPolygon*>* in_list);
26  virtual void operator()(DrawPolygon* item) OVERRIDE;
27
28 private:
29  std::vector<DrawPolygon*>* list_;
30};
31
32}  // namespace cc
33
34#endif  // CC_OUTPUT_BSP_WALK_ACTION_H_
35