OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2010 Google Inc. | 3 * Copyright 2010 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 | 10 |
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 info.setDevBounds(*devBounds); | 510 info.setDevBounds(*devBounds); |
511 } | 511 } |
512 // TODO: We should continue with incorrect blending. | 512 // TODO: We should continue with incorrect blending. |
513 if (!this->setupDstReadIfNecessary(&info)) { | 513 if (!this->setupDstReadIfNecessary(&info)) { |
514 return; | 514 return; |
515 } | 515 } |
516 this->onDraw(info); | 516 this->onDraw(info); |
517 } | 517 } |
518 } | 518 } |
519 | 519 |
520 void GrDrawTarget::stencilPath(const GrPath* path, const SkStrokeRec& stroke, Sk
Path::FillType fill) { | 520 void GrDrawTarget::stencilPath(const GrPath* path, SkPath::FillType fill) { |
521 // TODO: extract portions of checkDraw that are relevant to path stenciling. | 521 // TODO: extract portions of checkDraw that are relevant to path stenciling. |
522 SkASSERT(NULL != path); | 522 SkASSERT(NULL != path); |
523 SkASSERT(this->caps()->pathRenderingSupport()); | 523 SkASSERT(this->caps()->pathRenderingSupport()); |
524 SkASSERT(!stroke.isHairlineStyle()); | |
525 SkASSERT(!SkPath::IsInverseFillType(fill)); | 524 SkASSERT(!SkPath::IsInverseFillType(fill)); |
526 this->onStencilPath(path, stroke, fill); | 525 this->onStencilPath(path, fill); |
527 } | 526 } |
528 | 527 |
529 void GrDrawTarget::fillPath(const GrPath* path, const SkStrokeRec& stroke, SkPat
h::FillType fill) { | 528 void GrDrawTarget::drawPath(const GrPath* path, SkPath::FillType fill) { |
530 // TODO: extract portions of checkDraw that are relevant to path rendering. | 529 // TODO: extract portions of checkDraw that are relevant to path rendering. |
531 SkASSERT(NULL != path); | 530 SkASSERT(NULL != path); |
532 SkASSERT(this->caps()->pathRenderingSupport()); | 531 SkASSERT(this->caps()->pathRenderingSupport()); |
533 SkASSERT(!stroke.isHairlineStyle()); | |
534 const GrDrawState* drawState = &getDrawState(); | 532 const GrDrawState* drawState = &getDrawState(); |
535 | 533 |
536 SkRect devBounds; | 534 SkRect devBounds; |
537 if (SkPath::IsInverseFillType(fill)) { | 535 if (SkPath::IsInverseFillType(fill)) { |
538 devBounds = SkRect::MakeWH(SkIntToScalar(drawState->getRenderTarget()->w
idth()), | 536 devBounds = SkRect::MakeWH(SkIntToScalar(drawState->getRenderTarget()->w
idth()), |
539 SkIntToScalar(drawState->getRenderTarget()->h
eight())); | 537 SkIntToScalar(drawState->getRenderTarget()->h
eight())); |
540 } else { | 538 } else { |
541 devBounds = path->getBounds(); | 539 devBounds = path->getBounds(); |
542 } | 540 } |
543 SkMatrix viewM = drawState->getViewMatrix(); | 541 SkMatrix viewM = drawState->getViewMatrix(); |
544 viewM.mapRect(&devBounds); | 542 viewM.mapRect(&devBounds); |
545 | 543 |
546 GrDeviceCoordTexture dstCopy; | 544 GrDeviceCoordTexture dstCopy; |
547 if (!this->setupDstReadIfNecessary(&dstCopy, &devBounds)) { | 545 if (!this->setupDstReadIfNecessary(&dstCopy, &devBounds)) { |
548 return; | 546 return; |
549 } | 547 } |
550 | 548 |
551 this->onFillPath(path, stroke, fill, dstCopy.texture() ? &dstCopy : NULL); | 549 this->onDrawPath(path, fill, dstCopy.texture() ? &dstCopy : NULL); |
552 } | 550 } |
553 | 551 |
554 //////////////////////////////////////////////////////////////////////////////// | 552 //////////////////////////////////////////////////////////////////////////////// |
555 | 553 |
556 bool GrDrawTarget::willUseHWAALines() const { | 554 bool GrDrawTarget::willUseHWAALines() const { |
557 // There is a conflict between using smooth lines and our use of premultipli
ed alpha. Smooth | 555 // There is a conflict between using smooth lines and our use of premultipli
ed alpha. Smooth |
558 // lines tweak the incoming alpha value but not in a premul-alpha way. So we
only use them when | 556 // lines tweak the incoming alpha value but not in a premul-alpha way. So we
only use them when |
559 // our alpha is 0xff and tweaking the color for partial coverage is OK | 557 // our alpha is 0xff and tweaking the color for partial coverage is OK |
560 if (!this->caps()->hwAALineSupport() || | 558 if (!this->caps()->hwAALineSupport() || |
561 !this->getDrawState().isHWAntialiasState()) { | 559 !this->getDrawState().isHWAntialiasState()) { |
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1017 GrPrintf("Geometry Shader Support : %s\n", gNY[fGeometryShaderSupport]); | 1015 GrPrintf("Geometry Shader Support : %s\n", gNY[fGeometryShaderSupport]); |
1018 GrPrintf("Dual Source Blending Support: %s\n", gNY[fDualSourceBlendingSuppor
t]); | 1016 GrPrintf("Dual Source Blending Support: %s\n", gNY[fDualSourceBlendingSuppor
t]); |
1019 GrPrintf("Buffer Lock Support : %s\n", gNY[fBufferLockSupport]); | 1017 GrPrintf("Buffer Lock Support : %s\n", gNY[fBufferLockSupport]); |
1020 GrPrintf("Path Rendering Support : %s\n", gNY[fPathRenderingSupport]); | 1018 GrPrintf("Path Rendering Support : %s\n", gNY[fPathRenderingSupport]); |
1021 GrPrintf("Dst Read In Shader Support : %s\n", gNY[fDstReadInShaderSupport])
; | 1019 GrPrintf("Dst Read In Shader Support : %s\n", gNY[fDstReadInShaderSupport])
; |
1022 GrPrintf("Reuse Scratch Textures : %s\n", gNY[fReuseScratchTextures]); | 1020 GrPrintf("Reuse Scratch Textures : %s\n", gNY[fReuseScratchTextures]); |
1023 GrPrintf("Max Texture Size : %d\n", fMaxTextureSize); | 1021 GrPrintf("Max Texture Size : %d\n", fMaxTextureSize); |
1024 GrPrintf("Max Render Target Size : %d\n", fMaxRenderTargetSize); | 1022 GrPrintf("Max Render Target Size : %d\n", fMaxRenderTargetSize); |
1025 GrPrintf("Max Sample Count : %d\n", fMaxSampleCount); | 1023 GrPrintf("Max Sample Count : %d\n", fMaxSampleCount); |
1026 } | 1024 } |
OLD | NEW |