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

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

Issue 793013003: Remove the low hanging fruit with coord change matrices (Closed) Base URL: https://skia.googlesource.com/skia.git@more-ccm-cleanup
Patch Set: adding tests to ignore Created 6 years 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') | no next file » | 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 2013 Google Inc. 2 * Copyright 2013 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 "GrDistanceFieldTextContext.h" 8 #include "GrDistanceFieldTextContext.h"
9 #include "GrAtlas.h" 9 #include "GrAtlas.h"
10 #include "GrBitmapTextContext.h" 10 #include "GrBitmapTextContext.h"
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 SkScalarTruncToInt(dstRect.top()), 528 SkScalarTruncToInt(dstRect.top()),
529 SkScalarTruncToInt(dstRect.right()), 529 SkScalarTruncToInt(dstRect.right()),
530 SkScalarTruncToInt(dstRect.bottom()))) { 530 SkScalarTruncToInt(dstRect.bottom()))) {
531 // SkCLZ(3); // so we can set a break-point in the debugger 531 // SkCLZ(3); // so we can set a break-point in the debugger
532 return true; 532 return true;
533 } 533 }
534 534
535 if (NULL == glyph->fPlot) { 535 if (NULL == glyph->fPlot) {
536 // needs to be a separate conditional to avoid over-optimization 536 // needs to be a separate conditional to avoid over-optimization
537 // on Nexus 7 and Nexus 10 537 // on Nexus 7 and Nexus 10
538
539 // If the glyph is too large we fall back to paths
538 if (!uploadGlyph(glyph, scaler)) { 540 if (!uploadGlyph(glyph, scaler)) {
539 if (NULL == glyph->fPath) { 541 if (NULL == glyph->fPath) {
540 SkPath* path = SkNEW(SkPath); 542 SkPath* path = SkNEW(SkPath);
541 if (!scaler->getGlyphPath(glyph->glyphID(), path)) { 543 if (!scaler->getGlyphPath(glyph->glyphID(), path)) {
542 // flag the glyph as being dead? 544 // flag the glyph as being dead?
543 delete path; 545 delete path;
544 return true; 546 return true;
545 } 547 }
546 glyph->fPath = path; 548 glyph->fPath = path;
547 } 549 }
548 550
549 // flush any accumulated draws before drawing this glyph as a path. 551 // flush any accumulated draws before drawing this glyph as a path.
550 this->flush(); 552 this->flush();
551 553
552 SkMatrix ctm; 554 SkMatrix ctm;
553 ctm.setScale(fTextRatio, fTextRatio); 555 ctm.setScale(fTextRatio, fTextRatio);
554 ctm.postTranslate(sx - dx, sy - dy); 556 ctm.postTranslate(sx - dx, sy - dy);
555 GrPaint tmpPaint(fPaint);
556 tmpPaint.localCoordChange(ctm);
557 557
558 SkMatrix viewM = fViewMatrix; 558 SkPath tmpPath(*glyph->fPath);
559 viewM.preConcat(ctm); 559 tmpPath.transform(ctm);
560
560 GrStrokeInfo strokeInfo(SkStrokeRec::kFill_InitStyle); 561 GrStrokeInfo strokeInfo(SkStrokeRec::kFill_InitStyle);
561 fContext->drawPath(tmpPaint, viewM, *glyph->fPath, strokeInfo); 562 fContext->drawPath(fPaint, fViewMatrix, tmpPath, strokeInfo);
562 563
563 // remove this glyph from the vertices we need to allocate 564 // remove this glyph from the vertices we need to allocate
564 fTotalVertexCount -= kVerticesPerGlyph; 565 fTotalVertexCount -= kVerticesPerGlyph;
565 return true; 566 return true;
566 } 567 }
567 } 568 }
568 569
569 SkASSERT(glyph->fPlot); 570 SkASSERT(glyph->fPlot);
570 GrDrawTarget::DrawToken drawToken = fDrawTarget->getCurrentDrawToken(); 571 GrDrawTarget::DrawToken drawToken = fDrawTarget->getCurrentDrawToken();
571 glyph->fPlot->setDrawToken(drawToken); 572 glyph->fPlot->setDrawToken(drawToken);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 } 679 }
679 } 680 }
680 681
681 inline void GrDistanceFieldTextContext::finish() { 682 inline void GrDistanceFieldTextContext::finish() {
682 this->flush(); 683 this->flush();
683 fTotalVertexCount = 0; 684 fTotalVertexCount = 0;
684 685
685 GrTextContext::finish(); 686 GrTextContext::finish();
686 } 687 }
687 688
OLDNEW
« no previous file with comments | « src/gpu/GrBitmapTextContext.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698