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

Side by Side Diff: src/gpu/GrClipMaskManager.cpp

Issue 817853002: Remove localcoordchange functions off paint (Closed) Base URL: https://skia.googlesource.com/skia.git@local-matrix-on-gp
Patch Set: changing ignores Created 5 years, 12 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
« no previous file with comments | « src/gpu/GrBitmapTextContext.cpp ('k') | src/gpu/GrContext.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrClipMaskManager.h" 8 #include "GrClipMaskManager.h"
9 #include "GrAAConvexPathRenderer.h" 9 #include "GrAAConvexPathRenderer.h"
10 #include "GrAAHairLinePathRenderer.h" 10 #include "GrAAHairLinePathRenderer.h"
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 return SkToBool(*pr); 418 return SkToBool(*pr);
419 } 419 }
420 } 420 }
421 421
422 void GrClipMaskManager::mergeMask(GrDrawState* drawState, 422 void GrClipMaskManager::mergeMask(GrDrawState* drawState,
423 GrTexture* dstMask, 423 GrTexture* dstMask,
424 GrTexture* srcMask, 424 GrTexture* srcMask,
425 SkRegion::Op op, 425 SkRegion::Op op,
426 const SkIRect& dstBound, 426 const SkIRect& dstBound,
427 const SkIRect& srcBound) { 427 const SkIRect& srcBound) {
428 SkAssertResult(drawState->setIdentityViewMatrix());
429
430 drawState->setRenderTarget(dstMask->asRenderTarget()); 428 drawState->setRenderTarget(dstMask->asRenderTarget());
431 429
432 // We want to invert the coverage here 430 // We want to invert the coverage here
433 set_coverage_drawing_xpf(op, false, drawState); 431 set_coverage_drawing_xpf(op, false, drawState);
434 432
435 SkMatrix sampleM; 433 SkMatrix sampleM;
436 sampleM.setIDiv(srcMask->width(), srcMask->height()); 434 sampleM.setIDiv(srcMask->width(), srcMask->height());
437 435
438 drawState->addCoverageProcessor( 436 drawState->addCoverageProcessor(
439 GrTextureDomainEffect::Create(srcMask, 437 GrTextureDomainEffect::Create(srcMask,
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 0xffff); 597 0xffff);
600 drawState.setStencil(kStencilInElement); 598 drawState.setStencil(kStencilInElement);
601 set_coverage_drawing_xpf(op, invert, &drawState); 599 set_coverage_drawing_xpf(op, invert, &drawState);
602 } 600 }
603 601
604 if (!this->drawElement(&drawState, dst, element, pr)) { 602 if (!this->drawElement(&drawState, dst, element, pr)) {
605 fAACache.reset(); 603 fAACache.reset();
606 return NULL; 604 return NULL;
607 } 605 }
608 606
609 GrDrawState backgroundDrawState(translate); 607 if (useTemp) {
610 backgroundDrawState.enableState(GrDrawState::kClip_StateBit); 608 GrDrawState backgroundDrawState;
611 backgroundDrawState.setRenderTarget(result->asRenderTarget()); 609 backgroundDrawState.enableState(GrDrawState::kClip_StateBit);
610 backgroundDrawState.setRenderTarget(result->asRenderTarget());
612 611
613 if (useTemp) {
614 // Now draw into the accumulator using the real operation and th e temp buffer as a 612 // Now draw into the accumulator using the real operation and th e temp buffer as a
615 // texture 613 // texture
616 this->mergeMask(&backgroundDrawState, 614 this->mergeMask(&backgroundDrawState,
617 result, 615 result,
618 temp, 616 temp,
619 op, 617 op,
620 maskSpaceIBounds, 618 maskSpaceIBounds,
621 maskSpaceElementIBounds); 619 maskSpaceElementIBounds);
622 } else { 620 } else {
621 GrDrawState backgroundDrawState(translate);
622 backgroundDrawState.enableState(GrDrawState::kClip_StateBit);
623 backgroundDrawState.setRenderTarget(result->asRenderTarget());
624
623 set_coverage_drawing_xpf(op, !invert, &backgroundDrawState); 625 set_coverage_drawing_xpf(op, !invert, &backgroundDrawState);
624 // Draw to the exterior pixels (those with a zero stencil value) . 626 // Draw to the exterior pixels (those with a zero stencil value) .
625 GR_STATIC_CONST_SAME_STENCIL(kDrawOutsideElement, 627 GR_STATIC_CONST_SAME_STENCIL(kDrawOutsideElement,
626 kZero_StencilOp, 628 kZero_StencilOp,
627 kZero_StencilOp, 629 kZero_StencilOp,
628 kEqual_StencilFunc, 630 kEqual_StencilFunc,
629 0xffff, 631 0xffff,
630 0x0000, 632 0x0000,
631 0xffff); 633 0xffff);
632 backgroundDrawState.setStencil(kDrawOutsideElement); 634 backgroundDrawState.setStencil(kDrawOutsideElement);
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
1063 } 1065 }
1064 1066
1065 void GrClipMaskManager::adjustPathStencilParams(const GrStencilBuffer* stencilBu ffer, 1067 void GrClipMaskManager::adjustPathStencilParams(const GrStencilBuffer* stencilBu ffer,
1066 GrStencilSettings* settings) { 1068 GrStencilSettings* settings) {
1067 // TODO: dynamically attach a stencil buffer 1069 // TODO: dynamically attach a stencil buffer
1068 if (stencilBuffer) { 1070 if (stencilBuffer) {
1069 int stencilBits = stencilBuffer->bits(); 1071 int stencilBits = stencilBuffer->bits();
1070 this->adjustStencilParams(settings, fClipMode, stencilBits); 1072 this->adjustStencilParams(settings, fClipMode, stencilBits);
1071 } 1073 }
1072 } 1074 }
OLDNEW
« no previous file with comments | « src/gpu/GrBitmapTextContext.cpp ('k') | src/gpu/GrContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698