SkDashPathEffect.h revision 548a1f321011292359ef163f78c8a1d4871b3b7f
1/* 2 * Copyright 2006 The Android Open Source Project 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#ifndef SkDashPathEffect_DEFINED 9#define SkDashPathEffect_DEFINED 10 11#include "SkPathEffect.h" 12 13/** \class SkDashPathEffect 14 15 SkDashPathEffect is a subclass of SkPathEffect that implements dashing 16*/ 17class SK_API SkDashPathEffect : public SkPathEffect { 18public: 19 /** intervals: array containing an even number of entries (>=2), with 20 the even indices specifying the length of "on" intervals, and the odd 21 indices specifying the length of "off" intervals. 22 count: number of elements in the intervals array 23 phase: offset into the intervals array (mod the sum of all of the 24 intervals). 25 26 For example: if intervals[] = {10, 20}, count = 2, and phase = 25, 27 this will set up a dashed path like so: 28 5 pixels off 29 10 pixels on 30 20 pixels off 31 10 pixels on 32 20 pixels off 33 ... 34 A phase of -5, 25, 55, 85, etc. would all result in the same path, 35 because the sum of all the intervals is 30. 36 37 Note: only affects stroked paths. 38 */ 39 SkDashPathEffect(const SkScalar intervals[], int count, SkScalar phase, 40 bool scaleToFit = false); 41 virtual ~SkDashPathEffect(); 42 43 virtual bool filterPath(SkPath* dst, const SkPath& src, 44 SkStrokeRec*) const SK_OVERRIDE; 45 46 virtual bool asPoints(PointData* results, const SkPath& src, 47 const SkStrokeRec&, const SkMatrix&) const SK_OVERRIDE; 48 49 virtual Factory getFactory() SK_OVERRIDE; 50 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