27dddae313
This reverts commit32a4910e57
. Reason for revert: SkMatrix::toString use has been removed from flutter and has been picked up in fuchsia Additionally some bookmaker changes take into account recent additions of typedef comments and the generated header comment. Original change's description: > Revert "remove toString" > > This reverts commit5191880cbf
. > > Reason for revert: broke flutter > > Original change's description: > > remove toString > > > > toString may have been used by obsolete debugger only > > find out if that is so > > > > R=​brianosman@google.com,bsalomon@google.com > > > > Docs-Preview: https://skia.org/?cl=119894 > > Bug:830651 > > Change-Id: I737f19b7d3fbc869bea2f443fa3b5ed7c1393ffd > > Reviewed-on: https://skia-review.googlesource.com/119894 > > Commit-Queue: Cary Clark <caryclark@google.com> > > Reviewed-by: Brian Salomon <bsalomon@google.com> > > TBR=bsalomon@google.com,brianosman@google.com,caryclark@google.com,caryclark@skia.org > > Change-Id: I9f81de6c3615ee0608bcea9081b77239b4b8816c TBR=bsalomon@google.com,brianosman@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Reviewed-on: https://skia-review.googlesource.com/129623 Reviewed-by: Cary Clark <caryclark@skia.org> Commit-Queue: Cary Clark <caryclark@google.com> Docs-Preview: https://skia.org/?cl=133583 Bug: 830651 Change-Id: If8499e796be63580ad419e150e94d43e8b89de1b Reviewed-on: https://skia-review.googlesource.com/133583 Commit-Queue: Cary Clark <caryclark@skia.org> Auto-Submit: Cary Clark <caryclark@skia.org>
88 lines
2.9 KiB
C++
88 lines
2.9 KiB
C++
/*
|
|
* Copyright 2006 The Android Open Source Project
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef Sk1DPathEffect_DEFINED
|
|
#define Sk1DPathEffect_DEFINED
|
|
|
|
#include "SkFlattenable.h"
|
|
#include "SkPathEffect.h"
|
|
#include "SkPath.h"
|
|
|
|
class SkPathMeasure;
|
|
|
|
// This class is not exported to java.
|
|
class SK_API Sk1DPathEffect : public SkPathEffect {
|
|
public:
|
|
virtual bool filterPath(SkPath* dst, const SkPath& src,
|
|
SkStrokeRec*, const SkRect*) const override;
|
|
|
|
protected:
|
|
/** Called at the start of each contour, returns the initial offset
|
|
into that contour.
|
|
*/
|
|
virtual SkScalar begin(SkScalar contourLength) const = 0;
|
|
/** Called with the current distance along the path, with the current matrix
|
|
for the point/tangent at the specified distance.
|
|
Return the distance to travel for the next call. If return <= 0, then that
|
|
contour is done.
|
|
*/
|
|
virtual SkScalar next(SkPath* dst, SkScalar dist, SkPathMeasure&) const = 0;
|
|
|
|
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
|
|
bool exposedInAndroidJavaAPI() const override { return true; }
|
|
#endif
|
|
|
|
private:
|
|
typedef SkPathEffect INHERITED;
|
|
};
|
|
|
|
class SK_API SkPath1DPathEffect : public Sk1DPathEffect {
|
|
public:
|
|
enum Style {
|
|
kTranslate_Style, // translate the shape to each position
|
|
kRotate_Style, // rotate the shape about its center
|
|
kMorph_Style, // transform each point, and turn lines into curves
|
|
|
|
kLastEnum_Style = kMorph_Style,
|
|
};
|
|
|
|
/** Dash by replicating the specified path.
|
|
@param path The path to replicate (dash)
|
|
@param advance The space between instances of path
|
|
@param phase distance (mod advance) along path for its initial position
|
|
@param style how to transform path at each point (based on the current
|
|
position and tangent)
|
|
*/
|
|
static sk_sp<SkPathEffect> Make(const SkPath& path, SkScalar advance, SkScalar phase, Style);
|
|
|
|
virtual bool filterPath(SkPath*, const SkPath&,
|
|
SkStrokeRec*, const SkRect*) const override;
|
|
|
|
Factory getFactory() const override { return CreateProc; }
|
|
|
|
protected:
|
|
SkPath1DPathEffect(const SkPath& path, SkScalar advance, SkScalar phase, Style);
|
|
void flatten(SkWriteBuffer&) const override;
|
|
|
|
// overrides from Sk1DPathEffect
|
|
SkScalar begin(SkScalar contourLength) const override;
|
|
SkScalar next(SkPath*, SkScalar, SkPathMeasure&) const override;
|
|
|
|
private:
|
|
static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
|
|
friend class SkFlattenable::PrivateInitializer;
|
|
|
|
SkPath fPath; // copied from constructor
|
|
SkScalar fAdvance; // copied from constructor
|
|
SkScalar fInitialOffset; // computed from phase
|
|
Style fStyle; // copied from constructor
|
|
|
|
typedef Sk1DPathEffect INHERITED;
|
|
};
|
|
|
|
#endif
|