Home | History | Annotate | Download | only in layers
      1 // Copyright 2013 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_LAYER_LISTS_H_
      6 #define CC_LAYERS_LAYER_LISTS_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/memory/ref_counted.h"
     11 #include "cc/base/cc_export.h"
     12 #include "cc/base/scoped_ptr_vector.h"
     13 
     14 namespace cc {
     15 class Layer;
     16 class LayerImpl;
     17 
     18 typedef std::vector<scoped_refptr<Layer> > LayerList;
     19 
     20 typedef ScopedPtrVector<LayerImpl> OwnedLayerImplList;
     21 typedef std::vector<LayerImpl*> LayerImplList;
     22 
     23 class CC_EXPORT RenderSurfaceLayerList {
     24  public:
     25   RenderSurfaceLayerList();
     26   ~RenderSurfaceLayerList();
     27 
     28   Layer* at(size_t i) const;
     29   void pop_back();
     30   void push_back(const scoped_refptr<Layer>& layer);
     31   Layer* back();
     32   size_t size() const;
     33   bool empty() const { return size() == 0u; }
     34   scoped_refptr<Layer>& operator[](size_t i);
     35   const scoped_refptr<Layer>& operator[](size_t i) const;
     36   LayerList::iterator begin();
     37   LayerList::iterator end();
     38   LayerList::const_iterator begin() const;
     39   LayerList::const_iterator end() const;
     40   void clear();
     41   LayerList& AsLayerList() { return list_; }
     42   const LayerList& AsLayerList() const { return list_; }
     43 
     44  private:
     45   LayerList list_;
     46 
     47   DISALLOW_COPY_AND_ASSIGN(RenderSurfaceLayerList);
     48 };
     49 
     50 }  // namespace cc
     51 
     52 #endif  // CC_LAYERS_LAYER_LISTS_H_
     53