OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2014 Google Inc. | 3 * Copyright 2014 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 "GrAADistanceFieldPathRenderer.h" | 9 #include "GrAADistanceFieldPathRenderer.h" |
10 | 10 |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 SkASSERT(pathData->fPlot); | 316 SkASSERT(pathData->fPlot); |
317 GrDrawTarget::DrawToken drawToken = target->getCurrentDrawToken(); | 317 GrDrawTarget::DrawToken drawToken = target->getCurrentDrawToken(); |
318 pathData->fPlot->setDrawToken(drawToken); | 318 pathData->fPlot->setDrawToken(drawToken); |
319 | 319 |
320 // set up any flags | 320 // set up any flags |
321 uint32_t flags = 0; | 321 uint32_t flags = 0; |
322 const SkMatrix& vm = drawState->getViewMatrix(); | 322 const SkMatrix& vm = drawState->getViewMatrix(); |
323 flags |= vm.isSimilarity() ? kSimilarity_DistanceFieldEffectFlag : 0; | 323 flags |= vm.isSimilarity() ? kSimilarity_DistanceFieldEffectFlag : 0; |
324 | 324 |
325 GrTextureParams params(SkShader::kRepeat_TileMode, GrTextureParams::kBilerp_
FilterMode); | 325 GrTextureParams params(SkShader::kRepeat_TileMode, GrTextureParams::kBilerp_
FilterMode); |
326 if (flags != fEffectFlags || fCachedGeometryProcessor->getColor() != color)
{ | 326 if (flags != fEffectFlags || fCachedGeometryProcessor->color() != color) { |
327 fCachedGeometryProcessor.reset(GrDistanceFieldNoGammaTextureEffect::Crea
te(color, | 327 fCachedGeometryProcessor.reset(GrDistanceFieldNoGammaTextureEffect::Crea
te(color, |
328
texture, | 328
texture, |
329
params, | 329
params, |
330
flags)); | 330
flags)); |
331 fEffectFlags = flags; | 331 fEffectFlags = flags; |
332 } | 332 } |
333 drawState->setGeometryProcessor(fCachedGeometryProcessor.get()); | |
334 | 333 |
335 void* vertices = NULL; | 334 void* vertices = NULL; |
336 bool success = target->reserveVertexAndIndexSpace(4, | 335 bool success = target->reserveVertexAndIndexSpace(4, |
337 fCachedGeometryProcessor->
getVertexStride(), | 336 fCachedGeometryProcessor->
getVertexStride(), |
338 0, &vertices, NULL); | 337 0, &vertices, NULL); |
339 SkASSERT(fCachedGeometryProcessor->getVertexStride() == 2 * sizeof(SkPoint))
; | 338 SkASSERT(fCachedGeometryProcessor->getVertexStride() == 2 * sizeof(SkPoint))
; |
340 GrAlwaysAssert(success); | 339 GrAlwaysAssert(success); |
341 | 340 |
342 SkScalar dx = pathData->fBounds.fLeft; | 341 SkScalar dx = pathData->fBounds.fLeft; |
343 SkScalar dy = pathData->fBounds.fTop; | 342 SkScalar dy = pathData->fBounds.fTop; |
(...skipping 21 matching lines...) Expand all Loading... |
365 intptr_t intPtr = reinterpret_cast<intptr_t>(positions); | 364 intptr_t intPtr = reinterpret_cast<intptr_t>(positions); |
366 SkPoint* textureCoords = reinterpret_cast<SkPoint*>(intPtr + vertSize - size
of(SkPoint)); | 365 SkPoint* textureCoords = reinterpret_cast<SkPoint*>(intPtr + vertSize - size
of(SkPoint)); |
367 textureCoords->setRectFan(SkFixedToFloat(texture->texturePriv().normalizeFix
edX(tx)), | 366 textureCoords->setRectFan(SkFixedToFloat(texture->texturePriv().normalizeFix
edX(tx)), |
368 SkFixedToFloat(texture->texturePriv().normalizeFix
edY(ty)), | 367 SkFixedToFloat(texture->texturePriv().normalizeFix
edY(ty)), |
369 SkFixedToFloat(texture->texturePriv().normalizeFix
edX(tx + tw)), | 368 SkFixedToFloat(texture->texturePriv().normalizeFix
edX(tx + tw)), |
370 SkFixedToFloat(texture->texturePriv().normalizeFix
edY(ty + th)), | 369 SkFixedToFloat(texture->texturePriv().normalizeFix
edY(ty + th)), |
371 vertSize); | 370 vertSize); |
372 | 371 |
373 vm.mapRect(&r); | 372 vm.mapRect(&r); |
374 target->setIndexSourceToBuffer(fContext->getQuadIndexBuffer()); | 373 target->setIndexSourceToBuffer(fContext->getQuadIndexBuffer()); |
375 target->drawIndexedInstances(drawState, kTriangles_GrPrimitiveType, 1, 4, 6,
&r); | 374 target->drawIndexedInstances(drawState, fCachedGeometryProcessor.get(), |
| 375 kTriangles_GrPrimitiveType, 1, 4, 6, &r); |
376 target->resetVertexSource(); | 376 target->resetVertexSource(); |
377 | 377 |
378 return true; | 378 return true; |
379 } | 379 } |
380 | 380 |
OLD | NEW |