1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CC_LAYERS_LAYER_LISTS_H_
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CC_LAYERS_LAYER_LISTS_H_
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector>
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/memory/ref_counted.h"
11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "cc/base/cc_export.h"
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/base/scoped_ptr_vector.h"
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace cc {
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class Layer;
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class LayerImpl;
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)typedef std::vector<scoped_refptr<Layer> > LayerList;
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)typedef ScopedPtrVector<LayerImpl> OwnedLayerImplList;
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)typedef std::vector<LayerImpl*> LayerImplList;
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass CC_EXPORT RenderSurfaceLayerList {
24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch public:
25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  RenderSurfaceLayerList();
26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  ~RenderSurfaceLayerList();
27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
28ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  Layer* at(size_t i) const;
29ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void pop_back();
30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void push_back(const scoped_refptr<Layer>& layer);
31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  Layer* back();
32ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  size_t size() const;
33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  bool empty() const { return size() == 0u; }
34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  LayerList::iterator begin();
35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  LayerList::iterator end();
36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  LayerList::const_iterator begin() const;
37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  LayerList::const_iterator end() const;
38ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void clear();
39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch private:
41ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  LayerList list_;
42ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(RenderSurfaceLayerList);
44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch};
45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace cc
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif  // CC_LAYERS_LAYER_LISTS_H_
49