1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /*
- * Copyright 2018 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef SkTrimPathEffect_DEFINED
- #define SkTrimPathEffect_DEFINED
- #include "SkPathEffect.h"
- class SK_API SkTrimPathEffect {
- public:
- enum class Mode {
- kNormal, // return the subset path [start,stop]
- kInverted, // return the complement/subset paths [0,start] + [stop,1]
- };
- /**
- * Take start and stop "t" values (values between 0...1), and return a path that is that
- * subset of the original path.
- *
- * e.g.
- * Make(0.5, 1.0) --> return the 2nd half of the path
- * Make(0.33333, 0.66667) --> return the middle third of the path
- *
- * The trim values apply to the entire path, so if it contains several contours, all of them
- * are including in the calculation.
- *
- * startT and stopT must be 0..1 inclusive. If they are outside of that interval, they will
- * be pinned to the nearest legal value. If either is NaN, null will be returned.
- *
- * Note: for Mode::kNormal, this will return one (logical) segment (even if it is spread
- * across multiple contours). For Mode::kInverted, this will return 2 logical
- * segments: 0...stopT and startT...1
- */
- static sk_sp<SkPathEffect> Make(SkScalar startT, SkScalar stopT, Mode = Mode::kNormal);
- };
- #endif
|