SkDashPathEffect.h revision 20bf4ca8f5a5c00d19d8474d40208e456ee26838
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 SkDashPathEffect_DEFINED 11#define SkDashPathEffect_DEFINED 12 13#include "SkPathEffect.h" 14 15/** \class SkDashPathEffect 16 17 SkDashPathEffect is a subclass of SkPathEffect that implements dashing 18*/ 19class SK_API SkDashPathEffect : public SkPathEffect { 20public: 21 /** intervals: array containing an even number of entries (>=2), with 22 the even indices specifying the length of "on" intervals, and the odd 23 indices specifying the length of "off" intervals. 24 count: number of elements in the intervals array 25 phase: offset into the intervals array (mod the sum of all of the 26 intervals). 27 28 For example: if intervals[] = {10, 20}, count = 2, and phase = 25, 29 this will set up a dashed path like so: 30 5 pixels off 31 10 pixels on 32 20 pixels off 33 10 pixels on 34 20 pixels off 35 ... 36 A phase of -5, 25, 55, 85, etc. would all result in the same path, 37 because the sum of all the intervals is 30. 38 39 Note: only affects stroked paths. 40 */ 41 SkDashPathEffect(const SkScalar intervals[], int count, SkScalar phase, bool scaleToFit = false); 42 virtual ~SkDashPathEffect(); 43 44 // overrides for SkPathEffect 45 // This method is not exported to java. 46 virtual bool filterPath(SkPath* dst, const SkPath& src, SkScalar* width); 47 48 // overrides for SkFlattenable 49 // This method is not exported to java. 50 virtual Factory getFactory(); 51 static SkFlattenable* CreateProc(SkFlattenableReadBuffer&); 52 53protected: 54 SkDashPathEffect(SkFlattenableReadBuffer&); 55 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 56 57private: 58 SkScalar* fIntervals; 59 int32_t fCount; 60 // computed from phase 61 SkScalar fInitialDashLength; 62 int32_t fInitialDashIndex; 63 SkScalar fIntervalLength; 64 bool fScaleToFit; 65 66 typedef SkPathEffect INHERITED; 67}; 68 69#endif 70 71