blob: 9293b2adcdc7f199a92d94c9e7aba60042713e8d [file] [log] [blame]
// 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