11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project
40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project */
80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkDiscretePathEffect_DEFINED
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkDiscretePathEffect_DEFINED
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkPathEffect.h"
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/** \class SkDiscretePathEffect
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    This path effect chops a path into discrete segments, and randomly displaces them.
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project*/
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDiscretePathEffect : public SkPathEffect {
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    /** Break the path into segments of segLength length, and randomly move the endpoints
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        away from the original path by a maximum of deviation.
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        Note: works on filled or framed paths
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    */
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDiscretePathEffect(SkScalar segLength, SkScalar deviation);
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    // overrides for SkPathEffect
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    //  This method is not exported to java.
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual bool filterPath(SkPath* dst, const SkPath& src, SkScalar* width);
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    // overrides for SkFlattenable
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    //  This method is not exported to java.
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual Factory getFactory();
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    //  This method is not exported to java.
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void flatten(SkFlattenableWriteBuffer&);
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    static SkFlattenable* CreateProc(SkFlattenableReadBuffer&);
381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    SK_DECLARE_FLATTENABLE_REGISTRAR()
401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected:
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDiscretePathEffect(SkFlattenableReadBuffer&);
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkScalar fSegLength, fPerterb;
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    typedef SkPathEffect INHERITED;
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
52