| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_VIZ_COMMON_QUADS_QUAD_LIST_H_ |
| #define COMPONENTS_VIZ_COMMON_QUADS_QUAD_LIST_H_ |
| |
| #include <stddef.h> |
| |
| #include "base/containers/adapters.h" |
| #include "cc/base/list_container.h" |
| #include "components/viz/common/quads/draw_quad.h" |
| |
| namespace viz { |
| |
| // A list of DrawQuad objects, sorted internally in front-to-back order. To |
| // add a new quad drawn behind another quad, it must be placed after the other |
| // quad. |
| class VIZ_COMMON_EXPORT QuadList : public cc::ListContainer<DrawQuad> { |
| public: |
| QuadList(); |
| explicit QuadList(size_t default_size_to_reserve); |
| |
| using BackToFrontIterator = QuadList::ReverseIterator; |
| using ConstBackToFrontIterator = QuadList::ConstReverseIterator; |
| |
| inline auto BackToFront() { return base::Reversed(*this); } |
| inline BackToFrontIterator BackToFrontBegin() { return rbegin(); } |
| inline BackToFrontIterator BackToFrontEnd() { return rend(); } |
| inline auto BackToFront() const { return base::Reversed(*this); } |
| inline ConstBackToFrontIterator BackToFrontBegin() const { return rbegin(); } |
| inline ConstBackToFrontIterator BackToFrontEnd() const { return rend(); } |
| |
| Iterator InsertCopyBeforeDrawQuad(Iterator at, size_t count); |
| }; |
| |
| } // namespace viz |
| |
| #endif // COMPONENTS_VIZ_COMMON_QUADS_QUAD_LIST_H_ |