OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 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 #include "GrGLPath.h" | 9 #include "GrGLPath.h" |
10 #include "GrGLPathRendering.h" | 10 #include "GrGLPathRendering.h" |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 GR_GL_ROUND, | 72 GR_GL_ROUND, |
73 GR_GL_SQUARE | 73 GR_GL_SQUARE |
74 }; | 74 }; |
75 return gSkCapsToGrGLCaps[cap]; | 75 return gSkCapsToGrGLCaps[cap]; |
76 GR_STATIC_ASSERT(0 == SkPaint::kButt_Cap); | 76 GR_STATIC_ASSERT(0 == SkPaint::kButt_Cap); |
77 GR_STATIC_ASSERT(1 == SkPaint::kRound_Cap); | 77 GR_STATIC_ASSERT(1 == SkPaint::kRound_Cap); |
78 GR_STATIC_ASSERT(2 == SkPaint::kSquare_Cap); | 78 GR_STATIC_ASSERT(2 == SkPaint::kSquare_Cap); |
79 GR_STATIC_ASSERT(SK_ARRAY_COUNT(gSkCapsToGrGLCaps) == SkPaint::kCapCount); | 79 GR_STATIC_ASSERT(SK_ARRAY_COUNT(gSkCapsToGrGLCaps) == SkPaint::kCapCount); |
80 } | 80 } |
81 | 81 |
| 82 #ifdef SK_DEBUG |
| 83 inline void verify_floats(const float* floats, int count) { |
| 84 for (int i = 0; i < count; ++i) { |
| 85 SkASSERT(!SkScalarIsNaN(SkFloatToScalar(floats[i]))); |
| 86 } |
| 87 } |
| 88 #endif |
| 89 |
82 inline void points_to_coords(const SkPoint points[], size_t first_point, size_t
amount, | 90 inline void points_to_coords(const SkPoint points[], size_t first_point, size_t
amount, |
83 GrGLfloat coords[]) { | 91 GrGLfloat coords[]) { |
84 for (size_t i = 0; i < amount; ++i) { | 92 for (size_t i = 0; i < amount; ++i) { |
85 coords[i * 2] = SkScalarToFloat(points[first_point + i].fX); | 93 coords[i * 2] = SkScalarToFloat(points[first_point + i].fX); |
86 coords[i * 2 + 1] = SkScalarToFloat(points[first_point + i].fY); | 94 coords[i * 2 + 1] = SkScalarToFloat(points[first_point + i].fY); |
87 } | 95 } |
88 } | 96 } |
89 | 97 |
90 template<bool checkForDegenerates> | 98 template<bool checkForDegenerates> |
91 inline bool init_path_object_for_general_path(GrGLGpu* gpu, GrGLuint pathID, | 99 inline bool init_path_object_for_general_path(GrGLGpu* gpu, GrGLuint pathID, |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 // which produces a degenerate segment. | 171 // which produces a degenerate segment. |
164 return false; | 172 return false; |
165 } | 173 } |
166 } | 174 } |
167 continue; | 175 continue; |
168 default: | 176 default: |
169 SkASSERT(false); // Not reached. | 177 SkASSERT(false); // Not reached. |
170 continue; | 178 continue; |
171 } | 179 } |
172 SkDEBUGCODE(numCoords += num_coords(verb)); | 180 SkDEBUGCODE(numCoords += num_coords(verb)); |
| 181 SkDEBUGCODE(verify_floats(coords, coordsForVerb)); |
173 pathCoords.push_back_n(coordsForVerb, coords); | 182 pathCoords.push_back_n(coordsForVerb, coords); |
174 } | 183 } |
175 SkASSERT(verbCnt == pathCommands.count()); | 184 SkASSERT(verbCnt == pathCommands.count()); |
176 SkASSERT(numCoords == pathCoords.count()); | 185 SkASSERT(numCoords == pathCoords.count()); |
177 | 186 |
178 GR_GL_CALL(gpu->glInterface(), PathCommands(pathID, pathCommands.count(), &p
athCommands[0], | 187 GR_GL_CALL(gpu->glInterface(), PathCommands(pathID, pathCommands.count(), &p
athCommands[0], |
179 pathCoords.count(), GR_GL_FLOAT,
&pathCoords[0])); | 188 pathCoords.count(), GR_GL_FLOAT,
&pathCoords[0])); |
180 return true; | 189 return true; |
181 } | 190 } |
182 | 191 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 skPath.getVerbs(&pathCommands[0], verbCnt); | 234 skPath.getVerbs(&pathCommands[0], verbCnt); |
226 | 235 |
227 SkDEBUGCODE(int verbCoordCnt = 0); | 236 SkDEBUGCODE(int verbCoordCnt = 0); |
228 for (int i = 0; i < verbCnt; ++i) { | 237 for (int i = 0; i < verbCnt; ++i) { |
229 SkPath::Verb v = static_cast<SkPath::Verb>(pathCommands[i]); | 238 SkPath::Verb v = static_cast<SkPath::Verb>(pathCommands[i]); |
230 pathCommands[i] = verb_to_gl_path_cmd(v); | 239 pathCommands[i] = verb_to_gl_path_cmd(v); |
231 SkDEBUGCODE(verbCoordCnt += num_coords(v)); | 240 SkDEBUGCODE(verbCoordCnt += num_coords(v)); |
232 } | 241 } |
233 SkASSERT(verbCnt == pathCommands.count()); | 242 SkASSERT(verbCnt == pathCommands.count()); |
234 SkASSERT(verbCoordCnt == pathCoords.count()); | 243 SkASSERT(verbCoordCnt == pathCoords.count()); |
| 244 SkDEBUGCODE(verify_floats(&pathCoords[0], pathCoords.count())); |
235 GR_GL_CALL(gpu->glInterface(), PathCommands(pathID, pathCommands.count()
, &pathCommands[0], | 245 GR_GL_CALL(gpu->glInterface(), PathCommands(pathID, pathCommands.count()
, &pathCommands[0], |
236 pathCoords.count(), GR_GL_FL
OAT, | 246 pathCoords.count(), GR_GL_FL
OAT, |
237 &pathCoords[0])); | 247 &pathCoords[0])); |
238 return; | 248 return; |
239 } | 249 } |
240 #endif | 250 #endif |
241 SkAssertResult(init_path_object_for_general_path<false>(gpu, pathID, skPath)
); | 251 SkAssertResult(init_path_object_for_general_path<false>(gpu, pathID, skPath)
); |
242 } | 252 } |
243 | 253 |
244 void GrGLPath::InitPathObjectStroke(GrGLGpu* gpu, GrGLuint pathID, const GrStrok
eInfo& stroke) { | 254 void GrGLPath::InitPathObjectStroke(GrGLGpu* gpu, GrGLuint pathID, const GrStrok
eInfo& stroke) { |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 } | 340 } |
331 | 341 |
332 INHERITED::onRelease(); | 342 INHERITED::onRelease(); |
333 } | 343 } |
334 | 344 |
335 void GrGLPath::onAbandon() { | 345 void GrGLPath::onAbandon() { |
336 fPathID = 0; | 346 fPathID = 0; |
337 | 347 |
338 INHERITED::onAbandon(); | 348 INHERITED::onAbandon(); |
339 } | 349 } |
OLD | NEW |