| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef FLUTTER_DISPLAY_LIST_DISPLAY_LIST_BUILDER_MULTIPLEXER_H_ |
| #define FLUTTER_DISPLAY_LIST_DISPLAY_LIST_BUILDER_MULTIPLEXER_H_ |
| |
| #include "flutter/display_list/display_list_builder.h" |
| #include "flutter/display_list/display_list_image_filter.h" |
| #include "flutter/display_list/display_list_paint.h" |
| #include "flutter/fml/macros.h" |
| |
| namespace flutter { |
| |
| /// A class that mutiplexes some of the DisplayListBuilder calls to multiple |
| /// other builders. For now it only implements saveLayer and restore as those |
| /// are needed to create a replacement for PaintContext::internal_nodes_canvas. |
| class DisplayListBuilderMultiplexer { |
| public: |
| DisplayListBuilderMultiplexer() = default; |
| |
| void addBuilder(DisplayListBuilder* builder); |
| |
| void saveLayer(const SkRect* bounds, |
| const DlPaint* paint, |
| const DlImageFilter* backdrop_filter = nullptr); |
| |
| void restore(); |
| |
| private: |
| std::vector<DisplayListBuilder*> builders_; |
| }; |
| |
| } // namespace flutter |
| |
| #endif // FLUTTER_DISPLAY_LIST_DISPLAY_LIST_BUILDER_MULTIPLEXER_H_ |