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; } 348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) scoped_refptr<Layer>& operator[](size_t i); 358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const scoped_refptr<Layer>& operator[](size_t i) const; 36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch LayerList::iterator begin(); 37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch LayerList::iterator end(); 38ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch LayerList::const_iterator begin() const; 39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch LayerList::const_iterator end() const; 40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void clear(); 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu LayerList& AsLayerList() { return list_; } 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const LayerList& AsLayerList() const { return list_; } 43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch private: 45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch LayerList list_; 46ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 47ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch DISALLOW_COPY_AND_ASSIGN(RenderSurfaceLayerList); 48ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}; 49ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace cc 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // CC_LAYERS_LAYER_LISTS_H_ 53