SkDiscretePathEffect.h revision ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976e
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
39protected:
40    SkDiscretePathEffect(SkFlattenableReadBuffer&);
41
42private:
43    SkScalar fSegLength, fPerterb;
44
45    typedef SkPathEffect INHERITED;
46};
47
48#endif
49
50