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

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

Issue 1448453002: Convert drawText to using the find and place code. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Remove adjusted test. Created 5 years, 1 month 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/core/SkFindAndPlaceGlyph.h ('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 2015 Google Inc. 2 * Copyright 2015 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 #include "GrAtlasTextContext.h" 7 #include "GrAtlasTextContext.h"
8 8
9 #include "GrBatchFontCache.h" 9 #include "GrBatchFontCache.h"
10 #include "GrBatchFlushState.h" 10 #include "GrBatchFlushState.h"
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 480
481 return true; 481 return true;
482 } 482 }
483 483
484 void GrAtlasTextContext::regenerateTextBlob(GrAtlasTextBlob* cacheBlob, 484 void GrAtlasTextContext::regenerateTextBlob(GrAtlasTextBlob* cacheBlob,
485 const SkPaint& skPaint, GrColor colo r, 485 const SkPaint& skPaint, GrColor colo r,
486 const SkMatrix& viewMatrix, 486 const SkMatrix& viewMatrix,
487 const SkTextBlob* blob, SkScalar x, SkScalar y, 487 const SkTextBlob* blob, SkScalar x, SkScalar y,
488 SkDrawFilter* drawFilter, const SkIR ect& clipRect, 488 SkDrawFilter* drawFilter, const SkIR ect& clipRect,
489 GrRenderTarget* rt, const GrClip& cl ip) { 489 GrRenderTarget* rt, const GrClip& cl ip) {
490 // The color here is the GrPaint color, and it is used to determine whether we 490 // The color here is the GrPaint color, and it is used to determine whether we
491 // have to regenerate LCD text blobs. 491 // have to regenerate LCD text blobs.
492 // We use this color vs the SkPaint color because it has the colorfilter app lied. 492 // We use this color vs the SkPaint color because it has the colorfilter app lied.
493 cacheBlob->fPaintColor = color; 493 cacheBlob->fPaintColor = color;
494 cacheBlob->fViewMatrix = viewMatrix; 494 cacheBlob->fViewMatrix = viewMatrix;
495 cacheBlob->fX = x; 495 cacheBlob->fX = x;
496 cacheBlob->fY = y; 496 cacheBlob->fY = y;
497 497
498 // Regenerate textblob 498 // Regenerate textblob
499 SkPaint runPaint = skPaint; 499 SkPaint runPaint = skPaint;
500 SkTextBlobRunIterator it(blob); 500 SkTextBlobRunIterator it(blob);
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 fSurfaceProps, &viewMatrix, false); 679 fSurfaceProps, &viewMatrix, false);
680 SkGlyphCache* cache = SkGlyphCache::DetachCache(run.fTypeface, 680 SkGlyphCache* cache = SkGlyphCache::DetachCache(run.fTypeface,
681 run.fOverrideDescriptor->get Desc()); 681 run.fOverrideDescriptor->get Desc());
682 this->internalDrawBMPPosText(blob, runIndex, cache, skPaint, color, viewMatr ix, 682 this->internalDrawBMPPosText(blob, runIndex, cache, skPaint, color, viewMatr ix,
683 fallbackTxt.begin(), fallbackTxt.count(), 683 fallbackTxt.begin(), fallbackTxt.count(),
684 fallbackPos.begin(), scalarsPerPosition, offset , clipRect); 684 fallbackPos.begin(), scalarsPerPosition, offset , clipRect);
685 SkGlyphCache::AttachCache(cache); 685 SkGlyphCache::AttachCache(cache);
686 } 686 }
687 687
688 inline GrAtlasTextBlob* 688 inline GrAtlasTextBlob*
689 GrAtlasTextContext::setupDFBlob(int glyphCount, const SkPaint& origPaint, 689 GrAtlasTextContext::setupDFBlob(int glyphCount, const SkPaint& origPaint,
690 const SkMatrix& viewMatrix, SkPaint* dfPaint, 690 const SkMatrix& viewMatrix, SkPaint* dfPaint,
691 SkScalar* textRatio) { 691 SkScalar* textRatio) {
692 GrAtlasTextBlob* blob = fCache->createBlob(glyphCount, 1, kGrayTextVASize); 692 GrAtlasTextBlob* blob = fCache->createBlob(glyphCount, 1, kGrayTextVASize);
693 693
694 *dfPaint = origPaint; 694 *dfPaint = origPaint;
695 this->initDistanceFieldPaint(blob, dfPaint, textRatio, viewMatrix); 695 this->initDistanceFieldPaint(blob, dfPaint, textRatio, viewMatrix);
696 blob->fViewMatrix = viewMatrix; 696 blob->fViewMatrix = viewMatrix;
697 Run& run = blob->fRuns[0]; 697 Run& run = blob->fRuns[0];
698 PerSubRunInfo& subRun = run.fSubRunInfo.back(); 698 PerSubRunInfo& subRun = run.fSubRunInfo.back();
699 subRun.fUseLCDText = origPaint.isLCDRenderText(); 699 subRun.fUseLCDText = origPaint.isLCDRenderText();
700 subRun.fDrawAsDistanceFields = true; 700 subRun.fDrawAsDistanceFields = true;
(...skipping 17 matching lines...) Expand all
718 SkScalar textRatio; 718 SkScalar textRatio;
719 blob = this->setupDFBlob(glyphCount, skPaint, viewMatrix, &dfPaint, &tex tRatio); 719 blob = this->setupDFBlob(glyphCount, skPaint, viewMatrix, &dfPaint, &tex tRatio);
720 720
721 SkTDArray<char> fallbackTxt; 721 SkTDArray<char> fallbackTxt;
722 SkTDArray<SkScalar> fallbackPos; 722 SkTDArray<SkScalar> fallbackPos;
723 SkPoint offset; 723 SkPoint offset;
724 this->internalDrawDFText(blob, 0, dfPaint, paint.getColor(), viewMatrix, text, 724 this->internalDrawDFText(blob, 0, dfPaint, paint.getColor(), viewMatrix, text,
725 byteLength, x, y, clipRect, textRatio, &fallbac kTxt, &fallbackPos, 725 byteLength, x, y, clipRect, textRatio, &fallbac kTxt, &fallbackPos,
726 &offset, skPaint); 726 &offset, skPaint);
727 if (fallbackTxt.count()) { 727 if (fallbackTxt.count()) {
728 this->fallbackDrawPosText(blob, 0, rt, clip, paint.getColor(), skPai nt, viewMatrix, 728 this->fallbackDrawPosText(blob, 0, rt, clip, paint.getColor(), skPai nt, viewMatrix,
729 fallbackTxt, fallbackPos, 2, offset, clipR ect); 729 fallbackTxt, fallbackPos, 2, offset, clipR ect);
730 } 730 }
731 } else { 731 } else {
732 blob = fCache->createBlob(glyphCount, 1, kGrayTextVASize); 732 blob = fCache->createBlob(glyphCount, 1, kGrayTextVASize);
733 blob->fViewMatrix = viewMatrix; 733 blob->fViewMatrix = viewMatrix;
734 734
735 SkGlyphCache* cache = this->setupCache(&blob->fRuns[0], skPaint, &viewMa trix, false); 735 SkGlyphCache* cache = this->setupCache(&blob->fRuns[0], skPaint, &viewMa trix, false);
736 this->internalDrawBMPText(blob, 0, cache, skPaint, paint.getColor(), vie wMatrix, text, 736 this->internalDrawBMPText(blob, 0, cache, skPaint, paint.getColor(), vie wMatrix, text,
737 byteLength, x, y, clipRect); 737 byteLength, x, y, clipRect);
738 SkGlyphCache::AttachCache(cache); 738 SkGlyphCache::AttachCache(cache);
(...skipping 18 matching lines...) Expand all
757 SkPaint dfPaint; 757 SkPaint dfPaint;
758 SkScalar textRatio; 758 SkScalar textRatio;
759 blob = this->setupDFBlob(glyphCount, skPaint, viewMatrix, &dfPaint, &tex tRatio); 759 blob = this->setupDFBlob(glyphCount, skPaint, viewMatrix, &dfPaint, &tex tRatio);
760 760
761 SkTDArray<char> fallbackTxt; 761 SkTDArray<char> fallbackTxt;
762 SkTDArray<SkScalar> fallbackPos; 762 SkTDArray<SkScalar> fallbackPos;
763 this->internalDrawDFPosText(blob, 0, dfPaint, paint.getColor(), viewMatr ix, text, 763 this->internalDrawDFPosText(blob, 0, dfPaint, paint.getColor(), viewMatr ix, text,
764 byteLength, pos, scalarsPerPosition, offset, clipRect, 764 byteLength, pos, scalarsPerPosition, offset, clipRect,
765 textRatio, &fallbackTxt, &fallbackPos); 765 textRatio, &fallbackTxt, &fallbackPos);
766 if (fallbackTxt.count()) { 766 if (fallbackTxt.count()) {
767 this->fallbackDrawPosText(blob, 0, rt, clip, paint.getColor(), skPai nt, viewMatrix, 767 this->fallbackDrawPosText(blob, 0, rt, clip, paint.getColor(), skPai nt, viewMatrix,
768 fallbackTxt, fallbackPos, scalarsPerPositi on, offset, 768 fallbackTxt, fallbackPos, scalarsPerPositi on, offset,
769 clipRect); 769 clipRect);
770 } 770 }
771 } else { 771 } else {
772 blob = fCache->createBlob(glyphCount, 1, kGrayTextVASize); 772 blob = fCache->createBlob(glyphCount, 1, kGrayTextVASize);
773 blob->fViewMatrix = viewMatrix; 773 blob->fViewMatrix = viewMatrix;
774 SkGlyphCache* cache = this->setupCache(&blob->fRuns[0], skPaint, &viewMa trix, false); 774 SkGlyphCache* cache = this->setupCache(&blob->fRuns[0], skPaint, &viewMa trix, false);
775 this->internalDrawBMPPosText(blob, 0, cache, skPaint, paint.getColor(), viewMatrix, text, 775 this->internalDrawBMPPosText(blob, 0, cache, skPaint, paint.getColor(), viewMatrix, text,
776 byteLength, pos, scalarsPerPosition, offset , clipRect); 776 byteLength, pos, scalarsPerPosition, offset , clipRect);
777 SkGlyphCache::AttachCache(cache); 777 SkGlyphCache::AttachCache(cache);
778 } 778 }
779 return blob; 779 return blob;
780 } 780 }
781 781
782 void GrAtlasTextContext::onDrawText(GrDrawContext* dc, GrRenderTarget* rt, 782 void GrAtlasTextContext::onDrawText(GrDrawContext* dc, GrRenderTarget* rt,
783 const GrClip& clip, 783 const GrClip& clip,
784 const GrPaint& paint, const SkPaint& skPaint , 784 const GrPaint& paint, const SkPaint& skPaint ,
785 const SkMatrix& viewMatrix, 785 const SkMatrix& viewMatrix,
786 const char text[], size_t byteLength, 786 const char text[], size_t byteLength,
787 SkScalar x, SkScalar y, const SkIRect& regio nClipBounds) { 787 SkScalar x, SkScalar y, const SkIRect& regio nClipBounds) {
788 SkAutoTUnref<GrAtlasTextBlob> blob( 788 SkAutoTUnref<GrAtlasTextBlob> blob(
789 this->createDrawTextBlob(rt, clip, paint, skPaint, viewMatrix, 789 this->createDrawTextBlob(rt, clip, paint, skPaint, viewMatrix,
790 text, byteLength, x, y, regionClipBounds)); 790 text, byteLength, x, y, regionClipBounds));
791 this->flush(blob, dc, rt, skPaint, paint, clip, regionClipBounds); 791 this->flush(blob, dc, rt, skPaint, paint, clip, regionClipBounds);
792 } 792 }
793 793
(...skipping 25 matching lines...) Expand all
819 if (text == nullptr || byteLength == 0) { 819 if (text == nullptr || byteLength == 0) {
820 return; 820 return;
821 } 821 }
822 822
823 fCurrStrike = nullptr; 823 fCurrStrike = nullptr;
824 SkDrawCacheProc glyphCacheProc = skPaint.getDrawCacheProc(); 824 SkDrawCacheProc glyphCacheProc = skPaint.getDrawCacheProc();
825 825
826 // Get GrFontScaler from cache 826 // Get GrFontScaler from cache
827 GrFontScaler* fontScaler = GetGrFontScaler(cache); 827 GrFontScaler* fontScaler = GetGrFontScaler(cache);
828 828
829 // transform our starting point 829 SkFindAndPlaceGlyph::ProcessText(
830 { 830 text, byteLength, {x, y}, viewMatrix, skPaint.getTextAlign(), glyphCache Proc, cache,
831 SkPoint loc; 831 [&](const SkGlyph& glyph, SkPoint position, SkPoint rounding) {
832 viewMatrix.mapXY(x, y, &loc); 832 position += rounding;
833 x = loc.fX; 833 this->bmpAppendGlyph(
834 y = loc.fY; 834 blob, runIndex, glyph,
835 } 835 SkScalarFloorToInt(position.fX), SkScalarFloorToInt(position.fY) ,
836 836 color, fontScaler, clipRect);
837 // need to measure first
838 if (skPaint.getTextAlign() != SkPaint::kLeft_Align) {
839 SkVector stopVector;
840 MeasureText(cache, glyphCacheProc, text, byteLength, &stopVector);
841
842 SkScalar stopX = stopVector.fX;
843 SkScalar stopY = stopVector.fY;
844
845 if (skPaint.getTextAlign() == SkPaint::kCenter_Align) {
846 stopX = SkScalarHalf(stopX);
847 stopY = SkScalarHalf(stopY);
848 } 837 }
849 x -= stopX; 838 );
850 y -= stopY;
851 }
852
853 const char* stop = text + byteLength;
854
855 SkAutoKern autokern;
856
857 SkFixed fxMask = ~0;
858 SkFixed fyMask = ~0;
859 SkScalar halfSampleX, halfSampleY;
860 if (cache->isSubpixel()) {
861 halfSampleX = halfSampleY = SkFixedToScalar(SkGlyph::kSubpixelRound);
862 SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(viewMatrix);
863 if (kX_SkAxisAlignment == baseline) {
864 fyMask = 0;
865 halfSampleY = SK_ScalarHalf;
866 } else if (kY_SkAxisAlignment == baseline) {
867 fxMask = 0;
868 halfSampleX = SK_ScalarHalf;
869 }
870 } else {
871 halfSampleX = halfSampleY = SK_ScalarHalf;
872 }
873
874 Sk48Dot16 fx = SkScalarTo48Dot16(x + halfSampleX);
875 Sk48Dot16 fy = SkScalarTo48Dot16(y + halfSampleY);
876
877 while (text < stop) {
878 const SkGlyph& glyph = glyphCacheProc(cache, &text, fx & fxMask, fy & fy Mask);
879
880 fx += autokern.adjust(glyph);
881
882 if (glyph.fWidth) {
883 this->bmpAppendGlyph(blob,
884 runIndex,
885 glyph,
886 Sk48Dot16FloorToInt(fx),
887 Sk48Dot16FloorToInt(fy),
888 color,
889 fontScaler,
890 clipRect);
891 }
892
893 fx += glyph.fAdvanceX;
894 fy += glyph.fAdvanceY;
895 }
896 } 839 }
897 840
898 void GrAtlasTextContext::internalDrawBMPPosText(GrAtlasTextBlob* blob, int runIn dex, 841 void GrAtlasTextContext::internalDrawBMPPosText(GrAtlasTextBlob* blob, int runIn dex,
899 SkGlyphCache* cache, const SkPai nt& skPaint, 842 SkGlyphCache* cache, const SkPai nt& skPaint,
900 GrColor color, 843 GrColor color,
901 const SkMatrix& viewMatrix, 844 const SkMatrix& viewMatrix,
902 const char text[], size_t byteLe ngth, 845 const char text[], size_t byteLe ngth,
903 const SkScalar pos[], int scalar sPerPosition, 846 const SkScalar pos[], int scalar sPerPosition,
904 const SkPoint& offset, const SkI Rect& clipRect) { 847 const SkPoint& offset, const SkI Rect& clipRect) {
905 SkASSERT(byteLength == 0 || text != nullptr); 848 SkASSERT(byteLength == 0 || text != nullptr);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 SkASSERT(byteLength == 0 || text != nullptr); 885 SkASSERT(byteLength == 0 || text != nullptr);
943 886
944 // nothing to draw 887 // nothing to draw
945 if (text == nullptr || byteLength == 0) { 888 if (text == nullptr || byteLength == 0) {
946 return; 889 return;
947 } 890 }
948 891
949 SkDrawCacheProc glyphCacheProc = origPaint.getDrawCacheProc(); 892 SkDrawCacheProc glyphCacheProc = origPaint.getDrawCacheProc();
950 SkAutoDescriptor desc; 893 SkAutoDescriptor desc;
951 origPaint.getScalerContextDescriptor(&desc, fSurfaceProps, nullptr, true); 894 origPaint.getScalerContextDescriptor(&desc, fSurfaceProps, nullptr, true);
952 SkGlyphCache* origPaintCache = SkGlyphCache::DetachCache(origPaint.getTypefa ce(), 895 SkGlyphCache* origPaintCache = SkGlyphCache::DetachCache(origPaint.getTypefa ce(),
953 desc.getDesc()); 896 desc.getDesc());
954 897
955 SkTArray<SkScalar> positions; 898 SkTArray<SkScalar> positions;
956 899
957 const char* textPtr = text; 900 const char* textPtr = text;
958 SkFixed stopX = 0; 901 SkFixed stopX = 0;
959 SkFixed stopY = 0; 902 SkFixed stopY = 0;
960 SkFixed origin = 0; 903 SkFixed origin = 0;
961 switch (origPaint.getTextAlign()) { 904 switch (origPaint.getTextAlign()) {
962 case SkPaint::kRight_Align: origin = SK_Fixed1; break; 905 case SkPaint::kRight_Align: origin = SK_Fixed1; break;
(...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after
1925 GrBatchFontCache* fFontCache; 1868 GrBatchFontCache* fFontCache;
1926 1869
1927 // Distance field properties 1870 // Distance field properties
1928 SkAutoTUnref<const DistanceAdjustTable> fDistanceAdjustTable; 1871 SkAutoTUnref<const DistanceAdjustTable> fDistanceAdjustTable;
1929 SkColor fFilteredColor; 1872 SkColor fFilteredColor;
1930 1873
1931 typedef GrVertexBatch INHERITED; 1874 typedef GrVertexBatch INHERITED;
1932 }; 1875 };
1933 1876
1934 void GrAtlasTextContext::flushRunAsPaths(GrDrawContext* dc, GrRenderTarget* rt, 1877 void GrAtlasTextContext::flushRunAsPaths(GrDrawContext* dc, GrRenderTarget* rt,
1935 const SkTextBlobRunIterator& it, 1878 const SkTextBlobRunIterator& it,
1936 const GrClip& clip, const SkPaint& skPa int, 1879 const GrClip& clip, const SkPaint& skPa int,
1937 SkDrawFilter* drawFilter, const SkMatri x& viewMatrix, 1880 SkDrawFilter* drawFilter, const SkMatri x& viewMatrix,
1938 const SkIRect& clipBounds, SkScalar x, SkScalar y) { 1881 const SkIRect& clipBounds, SkScalar x, SkScalar y) {
1939 SkPaint runPaint = skPaint; 1882 SkPaint runPaint = skPaint;
1940 1883
1941 size_t textLen = it.glyphCount() * sizeof(uint16_t); 1884 size_t textLen = it.glyphCount() * sizeof(uint16_t);
1942 const SkPoint& offset = it.offset(); 1885 const SkPoint& offset = it.offset();
1943 1886
1944 it.applyFontToPaint(&runPaint); 1887 it.applyFontToPaint(&runPaint);
1945 1888
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
2022 continue; 1965 continue;
2023 } 1966 }
2024 1967
2025 SkAutoTUnref<GrDrawBatch> batch(this->createBatch(cacheBlob, info, glyph Count, run, 1968 SkAutoTUnref<GrDrawBatch> batch(this->createBatch(cacheBlob, info, glyph Count, run,
2026 subRun, color, transX, transY, 1969 subRun, color, transX, transY,
2027 skPaint)); 1970 skPaint));
2028 dc->drawBatch(pipelineBuilder, batch); 1971 dc->drawBatch(pipelineBuilder, batch);
2029 } 1972 }
2030 } 1973 }
2031 1974
2032 inline void GrAtlasTextContext::flushBigGlyphs(GrAtlasTextBlob* cacheBlob, 1975 inline void GrAtlasTextContext::flushBigGlyphs(GrAtlasTextBlob* cacheBlob,
2033 GrDrawContext* dc, GrRenderTarget * rt, 1976 GrDrawContext* dc, GrRenderTarget * rt,
2034 const GrClip& clip, const SkPaint & skPaint, 1977 const GrClip& clip, const SkPaint & skPaint,
2035 SkScalar transX, SkScalar transY, 1978 SkScalar transX, SkScalar transY,
2036 const SkIRect& clipBounds) { 1979 const SkIRect& clipBounds) {
2037 if (!cacheBlob->fBigGlyphs.count()) { 1980 if (!cacheBlob->fBigGlyphs.count()) {
2038 return; 1981 return;
2039 } 1982 }
2040 1983
2041 for (int i = 0; i < cacheBlob->fBigGlyphs.count(); i++) { 1984 for (int i = 0; i < cacheBlob->fBigGlyphs.count(); i++) {
2042 GrAtlasTextBlob::BigGlyph& bigGlyph = cacheBlob->fBigGlyphs[i]; 1985 GrAtlasTextBlob::BigGlyph& bigGlyph = cacheBlob->fBigGlyphs[i];
2043 bigGlyph.fVx += transX; 1986 bigGlyph.fVx += transX;
2044 bigGlyph.fVy += transY; 1987 bigGlyph.fVy += transY;
2045 SkMatrix ctm; 1988 SkMatrix ctm;
2046 ctm.setScale(bigGlyph.fScale, bigGlyph.fScale); 1989 ctm.setScale(bigGlyph.fScale, bigGlyph.fScale);
2047 ctm.postTranslate(bigGlyph.fVx, bigGlyph.fVy); 1990 ctm.postTranslate(bigGlyph.fVx, bigGlyph.fVy);
2048 if (bigGlyph.fApplyVM) { 1991 if (bigGlyph.fApplyVM) {
2049 ctm.postConcat(cacheBlob->fViewMatrix); 1992 ctm.postConcat(cacheBlob->fViewMatrix);
2050 } 1993 }
2051 1994
2052 GrBlurUtils::drawPathWithMaskFilter(fContext, dc, rt, clip, bigGlyph.fPa th, 1995 GrBlurUtils::drawPathWithMaskFilter(fContext, dc, rt, clip, bigGlyph.fPa th,
2053 skPaint, ctm, nullptr, clipBounds, f alse); 1996 skPaint, ctm, nullptr, clipBounds, f alse);
2054 } 1997 }
2055 } 1998 }
2056 1999
2057 void GrAtlasTextContext::flush(const SkTextBlob* blob, 2000 void GrAtlasTextContext::flush(const SkTextBlob* blob,
2058 GrAtlasTextBlob* cacheBlob, 2001 GrAtlasTextBlob* cacheBlob,
2059 GrDrawContext* dc, 2002 GrDrawContext* dc,
2060 GrRenderTarget* rt, 2003 GrRenderTarget* rt,
2061 const SkPaint& skPaint, 2004 const SkPaint& skPaint,
2062 const GrPaint& grPaint, 2005 const GrPaint& grPaint,
2063 SkDrawFilter* drawFilter, 2006 SkDrawFilter* drawFilter,
2064 const GrClip& clip, 2007 const GrClip& clip,
2065 const SkMatrix& viewMatrix, 2008 const SkMatrix& viewMatrix,
2066 const SkIRect& clipBounds, 2009 const SkIRect& clipBounds,
2067 SkScalar x, SkScalar y, 2010 SkScalar x, SkScalar y,
2068 SkScalar transX, SkScalar transY) { 2011 SkScalar transX, SkScalar transY) {
2069 // We loop through the runs of the blob, flushing each. If any run is too l arge, then we flush 2012 // We loop through the runs of the blob, flushing each. If any run is too l arge, then we flush
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
2164 gTextContext->createDrawTextBlob(rt, clip, grPaint, skPaint, viewMat rix, text, 2107 gTextContext->createDrawTextBlob(rt, clip, grPaint, skPaint, viewMat rix, text,
2165 static_cast<size_t>(textLen), 0, 0, noClip)); 2108 static_cast<size_t>(textLen), 0, 0, noClip));
2166 2109
2167 SkScalar transX = static_cast<SkScalar>(random->nextU()); 2110 SkScalar transX = static_cast<SkScalar>(random->nextU());
2168 SkScalar transY = static_cast<SkScalar>(random->nextU()); 2111 SkScalar transY = static_cast<SkScalar>(random->nextU());
2169 const GrAtlasTextBlob::Run::SubRunInfo& info = blob->fRuns[0].fSubRunInfo[0] ; 2112 const GrAtlasTextBlob::Run::SubRunInfo& info = blob->fRuns[0].fSubRunInfo[0] ;
2170 return gTextContext->createBatch(blob, info, textLen, 0, 0, color, transX, t ransY, skPaint); 2113 return gTextContext->createBatch(blob, info, textLen, 0, 0, color, transX, t ransY, skPaint);
2171 } 2114 }
2172 2115
2173 #endif 2116 #endif
OLDNEW
« no previous file with comments | « src/core/SkFindAndPlaceGlyph.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698