OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2013 Google Inc. | 3 * Copyright 2013 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 // This test only works with the GPU backend. | 9 // This test only works with the GPU backend. |
10 | 10 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 }; | 85 }; |
86 for(int edgeType = 0; edgeType < kGrProcessorEdgeTypeCnt; ++edgeType
) { | 86 for(int edgeType = 0; edgeType < kGrProcessorEdgeTypeCnt; ++edgeType
) { |
87 SkAutoTUnref<GrGeometryProcessor> gp; | 87 SkAutoTUnref<GrGeometryProcessor> gp; |
88 { // scope to contain GrTestTarget | 88 { // scope to contain GrTestTarget |
89 GrTestTarget tt; | 89 GrTestTarget tt; |
90 context->getTestTarget(&tt); | 90 context->getTestTarget(&tt); |
91 if (NULL == tt.target()) { | 91 if (NULL == tt.target()) { |
92 continue; | 92 continue; |
93 } | 93 } |
94 GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType; | 94 GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType; |
95 gp.reset(GrCubicEffect::Create(et, *tt.target()->caps())); | 95 gp.reset(GrCubicEffect::Create(0xff000000, et, *tt.target()-
>caps())); |
96 if (!gp) { | 96 if (!gp) { |
97 continue; | 97 continue; |
98 } | 98 } |
99 } | 99 } |
100 | 100 |
101 SkScalar x = SkScalarMul(col, w); | 101 SkScalar x = SkScalarMul(col, w); |
102 SkScalar y = SkScalarMul(row, h); | 102 SkScalar y = SkScalarMul(row, h); |
103 SkPoint controlPts[] = { | 103 SkPoint controlPts[] = { |
104 {x + baseControlPts[0].fX, y + baseControlPts[0].fY}, | 104 {x + baseControlPts[0].fX, y + baseControlPts[0].fY}, |
105 {x + baseControlPts[1].fX, y + baseControlPts[1].fY}, | 105 {x + baseControlPts[1].fX, y + baseControlPts[1].fY}, |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 bounds.fRight, bounds.fBottom, | 159 bounds.fRight, bounds.fBottom, |
160 sizeof(Vertex)); | 160 sizeof(Vertex)); |
161 for (int v = 0; v < 4; ++v) { | 161 for (int v = 0; v < 4; ++v) { |
162 verts[v].fKLM[0] = eval_line(verts[v].fPosition, klmEqs
+ 0, klmSigns[c]); | 162 verts[v].fKLM[0] = eval_line(verts[v].fPosition, klmEqs
+ 0, klmSigns[c]); |
163 verts[v].fKLM[1] = eval_line(verts[v].fPosition, klmEqs
+ 3, klmSigns[c]); | 163 verts[v].fKLM[1] = eval_line(verts[v].fPosition, klmEqs
+ 3, klmSigns[c]); |
164 verts[v].fKLM[2] = eval_line(verts[v].fPosition, klmEqs
+ 6, 1.f); | 164 verts[v].fKLM[2] = eval_line(verts[v].fPosition, klmEqs
+ 6, 1.f); |
165 } | 165 } |
166 | 166 |
167 ds.setGeometryProcessor(gp); | 167 ds.setGeometryProcessor(gp); |
168 ds.setRenderTarget(rt); | 168 ds.setRenderTarget(rt); |
169 ds.setColor(0xff000000); | |
170 | 169 |
171 tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuf
fer()); | 170 tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuf
fer()); |
172 tt.target()->drawIndexed(&ds, kTriangleFan_GrPrimitiveType,
0, 0, 4, 6); | 171 tt.target()->drawIndexed(&ds, kTriangleFan_GrPrimitiveType,
0, 0, 4, 6); |
173 } | 172 } |
174 ++col; | 173 ++col; |
175 if (numCols == col) { | 174 if (numCols == col) { |
176 col = 0; | 175 col = 0; |
177 ++row; | 176 ++row; |
178 } | 177 } |
179 } | 178 } |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 SkScalar weight = rand.nextRangeF(0.f, 2.f); | 244 SkScalar weight = rand.nextRangeF(0.f, 2.f); |
246 for(int edgeType = 0; edgeType < kGrProcessorEdgeTypeCnt; ++edgeType
) { | 245 for(int edgeType = 0; edgeType < kGrProcessorEdgeTypeCnt; ++edgeType
) { |
247 SkAutoTUnref<GrGeometryProcessor> gp; | 246 SkAutoTUnref<GrGeometryProcessor> gp; |
248 { // scope to contain GrTestTarget | 247 { // scope to contain GrTestTarget |
249 GrTestTarget tt; | 248 GrTestTarget tt; |
250 context->getTestTarget(&tt); | 249 context->getTestTarget(&tt); |
251 if (NULL == tt.target()) { | 250 if (NULL == tt.target()) { |
252 continue; | 251 continue; |
253 } | 252 } |
254 GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType; | 253 GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType; |
255 gp.reset(GrConicEffect::Create(et, *tt.target()->caps())); | 254 gp.reset(GrConicEffect::Create(0xff000000, et, *tt.target()-
>caps())); |
256 if (!gp) { | 255 if (!gp) { |
257 continue; | 256 continue; |
258 } | 257 } |
259 } | 258 } |
260 | 259 |
261 SkScalar x = SkScalarMul(col, w); | 260 SkScalar x = SkScalarMul(col, w); |
262 SkScalar y = SkScalarMul(row, h); | 261 SkScalar y = SkScalarMul(row, h); |
263 SkPoint controlPts[] = { | 262 SkPoint controlPts[] = { |
264 {x + baseControlPts[0].fX, y + baseControlPts[0].fY}, | 263 {x + baseControlPts[0].fX, y + baseControlPts[0].fY}, |
265 {x + baseControlPts[1].fX, y + baseControlPts[1].fY}, | 264 {x + baseControlPts[1].fX, y + baseControlPts[1].fY}, |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 bounds.fRight, bounds.fBottom, | 315 bounds.fRight, bounds.fBottom, |
317 sizeof(Vertex)); | 316 sizeof(Vertex)); |
318 for (int v = 0; v < 4; ++v) { | 317 for (int v = 0; v < 4; ++v) { |
319 verts[v].fKLM[0] = eval_line(verts[v].fPosition, klmEqs
+ 0, 1.f); | 318 verts[v].fKLM[0] = eval_line(verts[v].fPosition, klmEqs
+ 0, 1.f); |
320 verts[v].fKLM[1] = eval_line(verts[v].fPosition, klmEqs
+ 3, 1.f); | 319 verts[v].fKLM[1] = eval_line(verts[v].fPosition, klmEqs
+ 3, 1.f); |
321 verts[v].fKLM[2] = eval_line(verts[v].fPosition, klmEqs
+ 6, 1.f); | 320 verts[v].fKLM[2] = eval_line(verts[v].fPosition, klmEqs
+ 6, 1.f); |
322 } | 321 } |
323 | 322 |
324 ds.setGeometryProcessor(gp); | 323 ds.setGeometryProcessor(gp); |
325 ds.setRenderTarget(rt); | 324 ds.setRenderTarget(rt); |
326 ds.setColor(0xff000000); | |
327 | 325 |
328 tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuf
fer()); | 326 tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuf
fer()); |
329 tt.target()->drawIndexed(&ds, kTriangleFan_GrPrimitiveType,
0, 0, 4, 6); | 327 tt.target()->drawIndexed(&ds, kTriangleFan_GrPrimitiveType,
0, 0, 4, 6); |
330 } | 328 } |
331 ++col; | 329 ++col; |
332 if (numCols == col) { | 330 if (numCols == col) { |
333 col = 0; | 331 col = 0; |
334 ++row; | 332 ++row; |
335 } | 333 } |
336 } | 334 } |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 }; | 434 }; |
437 for(int edgeType = 0; edgeType < kGrProcessorEdgeTypeCnt; ++edgeType
) { | 435 for(int edgeType = 0; edgeType < kGrProcessorEdgeTypeCnt; ++edgeType
) { |
438 SkAutoTUnref<GrGeometryProcessor> gp; | 436 SkAutoTUnref<GrGeometryProcessor> gp; |
439 { // scope to contain GrTestTarget | 437 { // scope to contain GrTestTarget |
440 GrTestTarget tt; | 438 GrTestTarget tt; |
441 context->getTestTarget(&tt); | 439 context->getTestTarget(&tt); |
442 if (NULL == tt.target()) { | 440 if (NULL == tt.target()) { |
443 continue; | 441 continue; |
444 } | 442 } |
445 GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType; | 443 GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType; |
446 gp.reset(GrQuadEffect::Create(et, *tt.target()->caps())); | 444 gp.reset(GrQuadEffect::Create(0xff000000, et, *tt.target()->
caps())); |
447 if (!gp) { | 445 if (!gp) { |
448 continue; | 446 continue; |
449 } | 447 } |
450 } | 448 } |
451 | 449 |
452 SkScalar x = SkScalarMul(col, w); | 450 SkScalar x = SkScalarMul(col, w); |
453 SkScalar y = SkScalarMul(row, h); | 451 SkScalar y = SkScalarMul(row, h); |
454 SkPoint controlPts[] = { | 452 SkPoint controlPts[] = { |
455 {x + baseControlPts[0].fX, y + baseControlPts[0].fY}, | 453 {x + baseControlPts[0].fX, y + baseControlPts[0].fY}, |
456 {x + baseControlPts[1].fX, y + baseControlPts[1].fY}, | 454 {x + baseControlPts[1].fX, y + baseControlPts[1].fY}, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 | 500 |
503 verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop, | 501 verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop, |
504 bounds.fRight, bounds.fBottom, | 502 bounds.fRight, bounds.fBottom, |
505 sizeof(Vertex)); | 503 sizeof(Vertex)); |
506 | 504 |
507 GrPathUtils::QuadUVMatrix DevToUV(pts); | 505 GrPathUtils::QuadUVMatrix DevToUV(pts); |
508 DevToUV.apply<4, sizeof(Vertex), sizeof(SkPoint)>(verts); | 506 DevToUV.apply<4, sizeof(Vertex), sizeof(SkPoint)>(verts); |
509 | 507 |
510 ds.setGeometryProcessor(gp); | 508 ds.setGeometryProcessor(gp); |
511 ds.setRenderTarget(rt); | 509 ds.setRenderTarget(rt); |
512 ds.setColor(0xff000000); | |
513 | 510 |
514 tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuf
fer()); | 511 tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuf
fer()); |
515 tt.target()->drawIndexed(&ds, kTriangles_GrPrimitiveType, 0,
0, 4, 6); | 512 tt.target()->drawIndexed(&ds, kTriangles_GrPrimitiveType, 0,
0, 4, 6); |
516 } | 513 } |
517 ++col; | 514 ++col; |
518 if (numCols == col) { | 515 if (numCols == col) { |
519 col = 0; | 516 col = 0; |
520 ++row; | 517 ++row; |
521 } | 518 } |
522 } | 519 } |
523 } | 520 } |
524 } | 521 } |
525 | 522 |
526 private: | 523 private: |
527 typedef GM INHERITED; | 524 typedef GM INHERITED; |
528 }; | 525 }; |
529 | 526 |
530 DEF_GM( return SkNEW(BezierCubicEffects); ) | 527 DEF_GM( return SkNEW(BezierCubicEffects); ) |
531 DEF_GM( return SkNEW(BezierConicEffects); ) | 528 DEF_GM( return SkNEW(BezierConicEffects); ) |
532 DEF_GM( return SkNEW(BezierQuadEffects); ) | 529 DEF_GM( return SkNEW(BezierQuadEffects); ) |
533 | 530 |
534 } | 531 } |
535 | 532 |
536 #endif | 533 #endif |
OLD | NEW |