| // 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. |
| |
| #include "flutter/display_list/display_list_flags.h" |
| #include "flutter/display_list/display_list_path_effect.h" |
| namespace flutter { |
| |
| const DisplayListSpecialGeometryFlags DisplayListAttributeFlags::WithPathEffect( |
| const DlPathEffect* effect) const { |
| if (is_geometric() && effect) { |
| if (effect->asDash()) { |
| // A dash effect has a very simple impact. It cannot introduce any |
| // miter joins that weren't already present in the original path |
| // and it does not grow the bounds of the path, but it can add |
| // end caps to areas that might not have had them before so all |
| // we need to do is to indicate the potential for diagonal |
| // end caps and move on. |
| return special_flags_.with(kMayHaveCaps_ | kMayHaveDiagonalCaps_); |
| } else { |
| // An arbitrary path effect can introduce joins at an arbitrary |
| // angle and may change the geometry of the end caps |
| return special_flags_.with(kMayHaveCaps_ | kMayHaveDiagonalCaps_ | |
| kMayHaveJoins_ | kMayHaveAcuteJoins_); |
| } |
| } |
| return special_flags_; |
| } |
| |
| } // namespace flutter |