SkDiscretePathEffect.h revision d26147adbbdca85f07dff432025afee0c8614387
1
2/*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9
10#ifndef SkDiscretePathEffect_DEFINED
11#define SkDiscretePathEffect_DEFINED
12
13#include "SkPathEffect.h"
14
15/** \class SkDiscretePathEffect
16
17    This path effect chops a path into discrete segments, and randomly displaces them.
18*/
19class SkDiscretePathEffect : public SkPathEffect {
20public:
21    /** Break the path into segments of segLength length, and randomly move the endpoints
22        away from the original path by a maximum of deviation.
23        Note: works on filled or framed paths
24    */
25    SkDiscretePathEffect(SkScalar segLength, SkScalar deviation);
26
27    // overrides for SkPathEffect
28    //  This method is not exported to java.
29    virtual bool filterPath(SkPath* dst, const SkPath& src, SkScalar* width);
30
31    // overrides for SkFlattenable
32    //  This method is not exported to java.
33    virtual Factory getFactory();
34    //  This method is not exported to java.
35    virtual void flatten(SkFlattenableWriteBuffer&);
36
37    static SkFlattenable* CreateProc(SkFlattenableReadBuffer&);
38
39    SK_DECLARE_FLATTENABLE_REGISTRAR()
40
41protected:
42    SkDiscretePathEffect(SkFlattenableReadBuffer&);
43
44private:
45    SkScalar fSegLength, fPerterb;
46
47    typedef SkPathEffect INHERITED;
48};
49
50#endif
51
52