Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(793)

Side by Side Diff: src/effects/gradients/SkClampRange.cpp

Issue 886473003: add more checks for computing clamp counts, remove dead code (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "SkClampRange.h" 10 #include "SkClampRange.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 fCount1 = fCount2 = 0; 70 fCount1 = fCount2 = 0;
71 fCount0 = count; 71 fCount0 = count;
72 return; 72 return;
73 } 73 }
74 if (fx >= kFracMax_SkGradFixed && ex >= kFracMax_SkGradFixed) { 74 if (fx >= kFracMax_SkGradFixed && ex >= kFracMax_SkGradFixed) {
75 fCount0 = fCount1 = 0; 75 fCount0 = fCount1 = 0;
76 fCount2 = count; 76 fCount2 = count;
77 return; 77 return;
78 } 78 }
79 79
80 int extraCount = 0;
81
82 // now make ex be 1 past the last computed value 80 // now make ex be 1 past the last computed value
83 ex += dx; 81 ex += dx;
84 82
85 bool doSwap = dx < 0; 83 bool doSwap = dx < 0;
86 84
87 if (doSwap) { 85 if (doSwap) {
88 ex -= dx; 86 ex -= dx;
89 fx -= dx; 87 fx -= dx;
90 SkTSwap(fx, ex); 88 SkTSwap(fx, ex);
91 dx = -dx; 89 dx = -dx;
92 } 90 }
93 91
94 92
95 fCount0 = chop(fx, 0, ex, dx, count); 93 fCount0 = chop(fx, 0, ex, dx, count);
94 SkASSERT(fCount0 >= 0);
95 SkASSERT(fCount0 <= count);
96 count -= fCount0; 96 count -= fCount0;
97 fx += fCount0 * dx; 97 fx += fCount0 * dx;
98 SkASSERT(fx >= 0); 98 SkASSERT(fx >= 0);
99 SkASSERT(fCount0 == 0 || (fx - dx) < 0); 99 SkASSERT(fCount0 == 0 || (fx - dx) < 0);
100 fCount1 = chop(fx, kFracMax_SkGradFixed, ex, dx, count); 100 fCount1 = chop(fx, kFracMax_SkGradFixed, ex, dx, count);
101 SkASSERT(fCount1 >= 0);
102 SkASSERT(fCount1 <= count);
101 count -= fCount1; 103 count -= fCount1;
102 fCount2 = count; 104 fCount2 = count;
103 105
104 #ifdef SK_DEBUG 106 #ifdef SK_DEBUG
105 fx += fCount1 * dx; 107 fx += fCount1 * dx;
106 SkASSERT(fx <= ex); 108 SkASSERT(fx <= ex);
107 if (fCount2 > 0) { 109 if (fCount2 > 0) {
108 SkASSERT(fx >= kFracMax_SkGradFixed); 110 SkASSERT(fx >= kFracMax_SkGradFixed);
109 if (fCount1 > 0) { 111 if (fCount1 > 0) {
110 SkASSERT(fx - dx < kFracMax_SkGradFixed); 112 SkASSERT(fx - dx < kFracMax_SkGradFixed);
111 } 113 }
112 } 114 }
113 #endif 115 #endif
114 116
115 if (doSwap) { 117 if (doSwap) {
116 SkTSwap(fCount0, fCount2); 118 SkTSwap(fCount0, fCount2);
117 SkTSwap(fV0, fV1); 119 SkTSwap(fV0, fV1);
118 dx = -dx; 120 dx = -dx;
119 } 121 }
120 122
121 if (fCount1 > 0) { 123 if (fCount1 > 0) {
122 fFx1 = fx0 + fCount0 * dx; 124 fFx1 = fx0 + fCount0 * dx;
123 } 125 }
124
125 if (dx > 0) {
126 fCount2 += extraCount;
127 } else {
128 fCount0 += extraCount;
129 }
130 } 126 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698