1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2006 The Android Open Source Project 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef SkDashPathEffect_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define SkDashPathEffect_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkScalar.h" 13*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkTypes.h" 14*c8dee2aaSAndroid Build Coastguard Worker 15*c8dee2aaSAndroid Build Coastguard Worker class SkPathEffect; 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker class SK_API SkDashPathEffect { 18*c8dee2aaSAndroid Build Coastguard Worker public: 19*c8dee2aaSAndroid Build Coastguard Worker /** intervals: array containing an even number of entries (>=2), with 20*c8dee2aaSAndroid Build Coastguard Worker the even indices specifying the length of "on" intervals, and the odd 21*c8dee2aaSAndroid Build Coastguard Worker indices specifying the length of "off" intervals. This array will be 22*c8dee2aaSAndroid Build Coastguard Worker copied in Make, and can be disposed of freely after. 23*c8dee2aaSAndroid Build Coastguard Worker count: number of elements in the intervals array 24*c8dee2aaSAndroid Build Coastguard Worker phase: offset into the intervals array (mod the sum of all of the 25*c8dee2aaSAndroid Build Coastguard Worker intervals). 26*c8dee2aaSAndroid Build Coastguard Worker 27*c8dee2aaSAndroid Build Coastguard Worker For example: if intervals[] = {10, 20}, count = 2, and phase = 25, 28*c8dee2aaSAndroid Build Coastguard Worker this will set up a dashed path like so: 29*c8dee2aaSAndroid Build Coastguard Worker 5 pixels off 30*c8dee2aaSAndroid Build Coastguard Worker 10 pixels on 31*c8dee2aaSAndroid Build Coastguard Worker 20 pixels off 32*c8dee2aaSAndroid Build Coastguard Worker 10 pixels on 33*c8dee2aaSAndroid Build Coastguard Worker 20 pixels off 34*c8dee2aaSAndroid Build Coastguard Worker ... 35*c8dee2aaSAndroid Build Coastguard Worker A phase of -5, 25, 55, 85, etc. would all result in the same path, 36*c8dee2aaSAndroid Build Coastguard Worker because the sum of all the intervals is 30. 37*c8dee2aaSAndroid Build Coastguard Worker 38*c8dee2aaSAndroid Build Coastguard Worker Note: only affects stroked paths. 39*c8dee2aaSAndroid Build Coastguard Worker */ 40*c8dee2aaSAndroid Build Coastguard Worker static sk_sp<SkPathEffect> Make(const SkScalar intervals[], int count, SkScalar phase); 41*c8dee2aaSAndroid Build Coastguard Worker }; 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Worker #endif 44