| // 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/dl_op_flags.h" |
| #include "flutter/display_list/effects/dl_path_effect.h" |
| |
| namespace flutter { |
| |
| const DisplayListSpecialGeometryFlags DisplayListAttributeFlags::WithPathEffect( |
| const DlPathEffect* effect, |
| bool is_stroked) const { |
| if (is_geometric() && effect) { |
| switch (effect->type()) { |
| case DlPathEffectType::kDash: { |
| // Dashing has no effect on filled geometry. |
| if (is_stroked) { |
| // 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); |
| } |
| } |
| } |
| } |
| return special_flags_; |
| } |
| |
| } // namespace flutter |