| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 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 "GrContext.h" | 9 #include "GrContext.h" |
| 10 | 10 |
| (...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 } | 548 } |
| 549 | 549 |
| 550 void GrContext::drawPaint(const GrPaint& origPaint, const SkMatrix& viewMatrix)
{ | 550 void GrContext::drawPaint(const GrPaint& origPaint, const SkMatrix& viewMatrix)
{ |
| 551 // set rect to be big enough to fill the space, but not super-huge, so we | 551 // set rect to be big enough to fill the space, but not super-huge, so we |
| 552 // don't overflow fixed-point implementations | 552 // don't overflow fixed-point implementations |
| 553 SkRect r; | 553 SkRect r; |
| 554 r.setLTRB(0, 0, | 554 r.setLTRB(0, 0, |
| 555 SkIntToScalar(getRenderTarget()->width()), | 555 SkIntToScalar(getRenderTarget()->width()), |
| 556 SkIntToScalar(getRenderTarget()->height())); | 556 SkIntToScalar(getRenderTarget()->height())); |
| 557 SkTCopyOnFirstWrite<GrPaint> paint(origPaint); | 557 SkTCopyOnFirstWrite<GrPaint> paint(origPaint); |
| 558 GR_CREATE_TRACE_MARKER_CONTEXT("GrContext::drawPaint", this); | 558 |
| 559 // by definition this fills the entire clip, no need for AA |
| 560 if (paint->isAntiAlias()) { |
| 561 paint.writable()->setAntiAlias(false); |
| 562 } |
| 563 |
| 564 bool isPerspective = viewMatrix.hasPerspective(); |
| 559 | 565 |
| 560 // We attempt to map r by the inverse matrix and draw that. mapRect will | 566 // We attempt to map r by the inverse matrix and draw that. mapRect will |
| 561 // map the four corners and bound them with a new rect. This will not | 567 // map the four corners and bound them with a new rect. This will not |
| 562 // produce a correct result for some perspective matrices. | 568 // produce a correct result for some perspective matrices. |
| 563 if (!viewMatrix.hasPerspective()) { | 569 if (!isPerspective) { |
| 564 SkMatrix inverse; | 570 SkMatrix inverse; |
| 565 if (!viewMatrix.invert(&inverse)) { | 571 if (!viewMatrix.invert(&inverse)) { |
| 566 SkDebugf("Could not invert matrix\n"); | 572 SkDebugf("Could not invert matrix\n"); |
| 567 return; | 573 return; |
| 568 } | 574 } |
| 569 inverse.mapRect(&r); | 575 inverse.mapRect(&r); |
| 576 this->drawRect(*paint, viewMatrix, r); |
| 570 } else { | 577 } else { |
| 571 if (!paint.writable()->localCoordChangeInverse(viewMatrix)) { | 578 SkMatrix localMatrix; |
| 579 if (!viewMatrix.invert(&localMatrix)) { |
| 572 SkDebugf("Could not invert matrix\n"); | 580 SkDebugf("Could not invert matrix\n"); |
| 573 return; | 581 return; |
| 574 } | 582 } |
| 583 |
| 584 AutoCheckFlush acf(this); |
| 585 GrDrawState drawState; |
| 586 GrDrawTarget* target = this->prepareToDraw(&drawState, paint, &SkMatrix:
:I(), &acf); |
| 587 if (NULL == target) { |
| 588 return; |
| 589 } |
| 590 |
| 591 GR_CREATE_TRACE_MARKER("GrContext::drawPaintWithPerspective", target); |
| 592 target->drawRect(&drawState, paint->getColor(), r, NULL, &localMatrix); |
| 575 } | 593 } |
| 576 // by definition this fills the entire clip, no need for AA | |
| 577 if (paint->isAntiAlias()) { | |
| 578 paint.writable()->setAntiAlias(false); | |
| 579 } | |
| 580 this->drawRect(*paint, viewMatrix.hasPerspective() ? SkMatrix::I() : viewMat
rix, r); | |
| 581 } | 594 } |
| 582 | 595 |
| 583 #ifdef SK_DEVELOPER | 596 #ifdef SK_DEVELOPER |
| 584 void GrContext::dumpFontCache() const { | 597 void GrContext::dumpFontCache() const { |
| 585 fFontCache->dump(); | 598 fFontCache->dump(); |
| 586 } | 599 } |
| 587 #endif | 600 #endif |
| 588 | 601 |
| 589 //////////////////////////////////////////////////////////////////////////////// | 602 //////////////////////////////////////////////////////////////////////////////// |
| 590 | 603 |
| (...skipping 1145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1736 fResourceCache2->printStats(); | 1749 fResourceCache2->printStats(); |
| 1737 } | 1750 } |
| 1738 #endif | 1751 #endif |
| 1739 | 1752 |
| 1740 #if GR_GPU_STATS | 1753 #if GR_GPU_STATS |
| 1741 const GrContext::GPUStats* GrContext::gpuStats() const { | 1754 const GrContext::GPUStats* GrContext::gpuStats() const { |
| 1742 return fGpu->gpuStats(); | 1755 return fGpu->gpuStats(); |
| 1743 } | 1756 } |
| 1744 #endif | 1757 #endif |
| 1745 | 1758 |
| OLD | NEW |