OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 #include "SkIntersections.h" | 7 #include "SkIntersections.h" |
8 #include "SkOpSegment.h" | 8 #include "SkOpSegment.h" |
9 #include "SkPathWriter.h" | 9 #include "SkPathWriter.h" |
10 #include "TSearch.h" | 10 #include "TSearch.h" |
11 | 11 |
12 #define F (false) // discard the edge | 12 #define F (false) // discard the edge |
13 #define T (true) // keep the edge | 13 #define T (true) // keep the edge |
14 | 14 |
15 static const bool gUnaryActiveEdge[2][2] = { | 15 static const bool gUnaryActiveEdge[2][2] = { |
16 // from=0 from=1 | 16 // from=0 from=1 |
17 // to=0,1 to=0,1 | 17 // to=0,1 to=0,1 |
18 {F, T}, {T, F}, | 18 {F, T}, {T, F}, |
19 }; | 19 }; |
20 | 20 |
21 // FIXME: add support for kReverseDifference_Op | |
22 static const bool gActiveEdge[kXOR_PathOp + 1][2][2][2][2] = { | 21 static const bool gActiveEdge[kXOR_PathOp + 1][2][2][2][2] = { |
23 // miFrom=0 miFrom=1 | 22 // miFrom=0 miFrom=1 |
24 // miTo=0 miTo=1 miTo=0 miTo=1 | 23 // miTo=0 miTo=1 miTo=0 miTo=1 |
25 // suFrom=0 1 suFrom=0 1 suFrom=0 1 suFrom=0 1 | 24 // suFrom=0 1 suFrom=0 1 suFrom=0 1 suFrom=0 1 |
26 // suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 | 25 // suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 suTo=0,1 |
27 {{{{F, F}, {F, F}}, {{T, F}, {T, F}}}, {{{T, T}, {F, F}}, {{F, T}, {T, F}}}}
, // mi - su | 26 {{{{F, F}, {F, F}}, {{T, F}, {T, F}}}, {{{T, T}, {F, F}}, {{F, T}, {T, F}}}}
, // mi - su |
28 {{{{F, F}, {F, F}}, {{F, T}, {F, T}}}, {{{F, F}, {T, T}}, {{F, T}, {T, F}}}}
, // mi & su | 27 {{{{F, F}, {F, F}}, {{F, T}, {F, T}}}, {{{F, F}, {T, T}}, {{F, T}, {T, F}}}}
, // mi & su |
29 {{{{F, T}, {T, F}}, {{T, T}, {F, F}}}, {{{T, F}, {T, F}}, {{F, F}, {F, F}}}}
, // mi | su | 28 {{{{F, T}, {T, F}}, {{T, T}, {F, F}}}, {{{T, F}, {T, F}}, {{F, F}, {F, F}}}}
, // mi | su |
30 {{{{F, T}, {T, F}}, {{T, F}, {F, T}}}, {{{T, F}, {F, T}}, {{F, T}, {T, F}}}}
, // mi ^ su | 29 {{{{F, T}, {T, F}}, {{T, F}, {F, T}}}, {{{T, F}, {F, T}}, {{F, T}, {T, F}}}}
, // mi ^ su |
31 }; | 30 }; |
(...skipping 2759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2791 sum += fTs[i].fWindValue; | 2790 sum += fTs[i].fWindValue; |
2792 slots[fTs[i].fOther->fID - 1] = as_digit(fTs[i].fWindValue); | 2791 slots[fTs[i].fOther->fID - 1] = as_digit(fTs[i].fWindValue); |
2793 sum += fTs[i].fOppValue; | 2792 sum += fTs[i].fOppValue; |
2794 slots[slotCount + fTs[i].fOther->fID - 1] = as_digit(fTs[i].fOppValue); | 2793 slots[slotCount + fTs[i].fOther->fID - 1] = as_digit(fTs[i].fOppValue); |
2795 } | 2794 } |
2796 SkDebugf("%s id=%2d %.*s | %.*s\n", __FUNCTION__, fID, slotCount, slots.begi
n(), slotCount, | 2795 SkDebugf("%s id=%2d %.*s | %.*s\n", __FUNCTION__, fID, slotCount, slots.begi
n(), slotCount, |
2797 slots.begin() + slotCount); | 2796 slots.begin() + slotCount); |
2798 return sum; | 2797 return sum; |
2799 } | 2798 } |
2800 #endif | 2799 #endif |
OLD | NEW |