SkDiscretePathEffect.h revision ba28d03e94dc221d6a803bf2a84a420b9159255c
1740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
2740d490593e0de8732a697c9f77b90ddd463863bJordan Rose/*
3740d490593e0de8732a697c9f77b90ddd463863bJordan Rose * Copyright 2006 The Android Open Source Project
4740d490593e0de8732a697c9f77b90ddd463863bJordan Rose *
5740d490593e0de8732a697c9f77b90ddd463863bJordan Rose * Use of this source code is governed by a BSD-style license that can be
6740d490593e0de8732a697c9f77b90ddd463863bJordan Rose * found in the LICENSE file.
7740d490593e0de8732a697c9f77b90ddd463863bJordan Rose */
8740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
9740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
10740d490593e0de8732a697c9f77b90ddd463863bJordan Rose#ifndef SkDiscretePathEffect_DEFINED
11740d490593e0de8732a697c9f77b90ddd463863bJordan Rose#define SkDiscretePathEffect_DEFINED
12740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
13740d490593e0de8732a697c9f77b90ddd463863bJordan Rose#include "SkPathEffect.h"
14740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
15740d490593e0de8732a697c9f77b90ddd463863bJordan Rose/** \class SkDiscretePathEffect
16740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
17740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    This path effect chops a path into discrete segments, and randomly displaces them.
18740d490593e0de8732a697c9f77b90ddd463863bJordan Rose*/
19740d490593e0de8732a697c9f77b90ddd463863bJordan Roseclass SkDiscretePathEffect : public SkPathEffect {
20740d490593e0de8732a697c9f77b90ddd463863bJordan Rosepublic:
21740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    /** Break the path into segments of segLength length, and randomly move the endpoints
22740d490593e0de8732a697c9f77b90ddd463863bJordan Rose        away from the original path by a maximum of deviation.
23de507eaf3cb54d3cb234dc14499c10ab3373d15fJordan Rose        Note: works on filled or framed paths
24740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    */
25740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    SkDiscretePathEffect(SkScalar segLength, SkScalar deviation);
26740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
27740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    // overrides for SkPathEffect
28740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    //  This method is not exported to java.
29740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    virtual bool filterPath(SkPath* dst, const SkPath& src, SkScalar* width);
30740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
31740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    // overrides for SkFlattenable
32740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    //  This method is not exported to java.
33740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    virtual void flatten(SkFlattenableWriteBuffer&);
34740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiscretePathEffect)
35740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
3670cbf3cc09eb21db1108396d30a414ea66d842ccJordan Roseprotected:
37740d490593e0de8732a697c9f77b90ddd463863bJordan Rose    SkDiscretePathEffect(SkFlattenableReadBuffer&);
3870cbf3cc09eb21db1108396d30a414ea66d842ccJordan Rose
39cde8cdbd6a662c636164465ad309b5f17ff01064Jordan Roseprivate:
40cde8cdbd6a662c636164465ad309b5f17ff01064Jordan Rose    SkScalar fSegLength, fPerterb;
41cde8cdbd6a662c636164465ad309b5f17ff01064Jordan Rose
42cde8cdbd6a662c636164465ad309b5f17ff01064Jordan Rose    typedef SkPathEffect INHERITED;
43740d490593e0de8732a697c9f77b90ddd463863bJordan Rose};
44740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
45740d490593e0de8732a697c9f77b90ddd463863bJordan Rose#endif
46740d490593e0de8732a697c9f77b90ddd463863bJordan Rose
47740d490593e0de8732a697c9f77b90ddd463863bJordan Rose