44
55#include " impeller/aiks/canvas_pass.h"
66
7+ #include " impeller/entity/content_renderer.h"
8+
79namespace impeller {
810
911CanvasPass::CanvasPass () = default ;
1012
1113CanvasPass::~CanvasPass () = default ;
1214
1315void CanvasPass::PushEntity (Entity entity) {
14- ops_.emplace_back (std::move (entity));
15- }
16-
17- const std::vector<Entity>& CanvasPass::GetPassEntities () const {
18- return ops_;
16+ entities_.emplace_back (std::move (entity));
1917}
2018
21- void CanvasPass::SetPostProcessingEntity (Entity entity) {
22- post_processing_entity_ = std::move (entity);
23- }
24-
25- const Entity& CanvasPass::GetPostProcessingEntity () const {
26- return post_processing_entity_;
19+ const std::vector<Entity>& CanvasPass::GetEntities () const {
20+ return entities_;
2721}
2822
2923Rect CanvasPass::GetCoverageRect () const {
3024 std::optional<Point> min, max;
31- for (const auto & entity : ops_ ) {
25+ for (const auto & entity : entities_ ) {
3226 auto coverage = entity.GetPath ().GetMinMaxCoveragePoints ();
3327 if (!coverage.has_value ()) {
3428 continue ;
@@ -49,4 +43,23 @@ Rect CanvasPass::GetCoverageRect() const {
4943 return {min->x , min->y , diff.x , diff.y };
5044}
5145
46+ const CanvasPass::Subpasses& CanvasPass::GetSubpasses () const {
47+ return subpasses_;
48+ }
49+
50+ bool CanvasPass::AddSubpass (CanvasPass pass) {
51+ subpasses_.emplace_back (std::move (pass));
52+ return true ;
53+ }
54+
55+ bool CanvasPass::Render (ContentRenderer& renderer,
56+ RenderPass& parent_pass) const {
57+ for (const auto & entity : entities_) {
58+ if (!entity.Render (renderer, parent_pass)) {
59+ return false ;
60+ }
61+ }
62+ return true ;
63+ }
64+
5265} // namespace impeller
0 commit comments