1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file.
4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "cc/layers/layer_lists.h"
6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
7ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "cc/layers/layer.h"
8ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
9ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace cc {
10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochRenderSurfaceLayerList::RenderSurfaceLayerList() {}
12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochRenderSurfaceLayerList::~RenderSurfaceLayerList() {
14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  for (size_t i = 0; i < size(); ++i)
15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    at(size() - 1 - i)->ClearRenderSurface();
16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
17ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
18ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochLayer* RenderSurfaceLayerList::at(size_t i) const {
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return list_.at(i).get();
20ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
22ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid RenderSurfaceLayerList::pop_back() {
23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  list_.pop_back();
24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid RenderSurfaceLayerList::push_back(const scoped_refptr<Layer>& layer) {
27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  list_.push_back(layer);
28ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
29ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochLayer* RenderSurfaceLayerList::back() {
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return list_.back().get();
32ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
33ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
34ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochsize_t RenderSurfaceLayerList::size() const {
35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  return list_.size();
36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)scoped_refptr<Layer>& RenderSurfaceLayerList::operator[](size_t i) {
398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  return list_[i];
408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)const scoped_refptr<Layer>& RenderSurfaceLayerList::operator[](size_t i) const {
428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  return list_[i];
438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochLayerList::iterator RenderSurfaceLayerList::begin() {
46ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  return list_.begin();
47ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
48ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
49ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochLayerList::iterator RenderSurfaceLayerList::end() {
50ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  return list_.end();
51ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
52ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
53ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochLayerList::const_iterator RenderSurfaceLayerList::begin() const {
54ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  return list_.begin();
55ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
56ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
57ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochLayerList::const_iterator RenderSurfaceLayerList::end() const {
58ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  return list_.end();
59ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
60ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
61ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid RenderSurfaceLayerList::clear() {
62ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  for (size_t i = 0; i < list_.size(); ++i)
63ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch    DCHECK(!list_[i]->render_surface());
64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  list_.clear();
65ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}  // namespace cc
68