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

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

Issue 1503193002: Start objectifying GrAtlasTextBlob (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 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/GrAtlasTextBlob.h ('k') | src/gpu/batches/GrAtlasTextBatch.h » ('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 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 "GrBlurUtils.h" 9 #include "GrBlurUtils.h"
10 #include "GrDrawContext.h" 10 #include "GrDrawContext.h"
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 continue; 459 continue;
460 } 460 }
461 461
462 runPaint.setFlags(FilterTextFlags(fSurfaceProps, runPaint)); 462 runPaint.setFlags(FilterTextFlags(fSurfaceProps, runPaint));
463 463
464 // setup vertex / glyphIndex for the new run 464 // setup vertex / glyphIndex for the new run
465 if (run > 0) { 465 if (run > 0) {
466 PerSubRunInfo& newRun = cacheBlob->fRuns[run].fSubRunInfo.back(); 466 PerSubRunInfo& newRun = cacheBlob->fRuns[run].fSubRunInfo.back();
467 PerSubRunInfo& lastRun = cacheBlob->fRuns[run - 1].fSubRunInfo.back( ); 467 PerSubRunInfo& lastRun = cacheBlob->fRuns[run - 1].fSubRunInfo.back( );
468 468
469 newRun.fVertexStartIndex = lastRun.fVertexEndIndex; 469 newRun.setVertexStartIndex(lastRun.vertexEndIndex());
470 newRun.fVertexEndIndex = lastRun.fVertexEndIndex; 470 newRun.setVertexEndIndex(lastRun.vertexEndIndex());
471 471
472 newRun.fGlyphStartIndex = lastRun.fGlyphEndIndex; 472 newRun.setGlyphStartIndex(lastRun.glyphEndIndex());
473 newRun.fGlyphEndIndex = lastRun.fGlyphEndIndex; 473 newRun.setGlyphEndIndex(lastRun.glyphEndIndex());
474 } 474 }
475 475
476 if (this->canDrawAsDistanceFields(runPaint, viewMatrix)) { 476 if (this->canDrawAsDistanceFields(runPaint, viewMatrix)) {
477 cacheBlob->setHasDistanceField(); 477 cacheBlob->setHasDistanceField();
478 SkPaint dfPaint = runPaint; 478 SkPaint dfPaint = runPaint;
479 SkScalar textRatio; 479 SkScalar textRatio;
480 this->initDistanceFieldPaint(cacheBlob, &dfPaint, &textRatio, viewMa trix); 480 this->initDistanceFieldPaint(cacheBlob, &dfPaint, &textRatio, viewMa trix);
481 Run& runIdx = cacheBlob->fRuns[run]; 481 Run& runIdx = cacheBlob->fRuns[run];
482 PerSubRunInfo& subRun = runIdx.fSubRunInfo.back(); 482 PerSubRunInfo& subRun = runIdx.fSubRunInfo.back();
483 subRun.fUseLCDText = runPaint.isLCDRenderText(); 483 subRun.setUseLCDText(runPaint.isLCDRenderText());
484 subRun.fDrawAsDistanceFields = true; 484 subRun.setDrawAsDistanceFields();
485 485
486 SkTDArray<char> fallbackTxt; 486 SkTDArray<char> fallbackTxt;
487 SkTDArray<SkScalar> fallbackPos; 487 SkTDArray<SkScalar> fallbackPos;
488 SkPoint dfOffset; 488 SkPoint dfOffset;
489 int scalarsPerPosition = 2; 489 int scalarsPerPosition = 2;
490 switch (it.positioning()) { 490 switch (it.positioning()) {
491 case SkTextBlob::kDefault_Positioning: { 491 case SkTextBlob::kDefault_Positioning: {
492 this->internalDrawDFText(cacheBlob, run, dfPaint, color, vie wMatrix, 492 this->internalDrawDFText(cacheBlob, run, dfPaint, color, vie wMatrix,
493 (const char *)it.glyphs(), textLen, 493 (const char *)it.glyphs(), textLen,
494 x + offset.x(), y + offset.y(), tex tRatio, 494 x + offset.x(), y + offset.y(), tex tRatio,
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 GrAtlasTextContext::setupDFBlob(int glyphCount, const SkPaint& origPaint, 634 GrAtlasTextContext::setupDFBlob(int glyphCount, const SkPaint& origPaint,
635 const SkMatrix& viewMatrix, SkPaint* dfPaint, 635 const SkMatrix& viewMatrix, SkPaint* dfPaint,
636 SkScalar* textRatio) { 636 SkScalar* textRatio) {
637 GrAtlasTextBlob* blob = fCache->createBlob(glyphCount, 1, GrAtlasTextBatch:: kGrayTextVASize); 637 GrAtlasTextBlob* blob = fCache->createBlob(glyphCount, 1, GrAtlasTextBatch:: kGrayTextVASize);
638 638
639 *dfPaint = origPaint; 639 *dfPaint = origPaint;
640 this->initDistanceFieldPaint(blob, dfPaint, textRatio, viewMatrix); 640 this->initDistanceFieldPaint(blob, dfPaint, textRatio, viewMatrix);
641 blob->fViewMatrix = viewMatrix; 641 blob->fViewMatrix = viewMatrix;
642 Run& run = blob->fRuns[0]; 642 Run& run = blob->fRuns[0];
643 PerSubRunInfo& subRun = run.fSubRunInfo.back(); 643 PerSubRunInfo& subRun = run.fSubRunInfo.back();
644 subRun.fUseLCDText = origPaint.isLCDRenderText(); 644 subRun.setUseLCDText(origPaint.isLCDRenderText());
645 subRun.fDrawAsDistanceFields = true; 645 subRun.setDrawAsDistanceFields();
646 646
647 return blob; 647 return blob;
648 } 648 }
649 649
650 inline GrAtlasTextBlob* 650 inline GrAtlasTextBlob*
651 GrAtlasTextContext::createDrawTextBlob(const GrClip& clip, 651 GrAtlasTextContext::createDrawTextBlob(const GrClip& clip,
652 const GrPaint& paint, const SkPaint& skPa int, 652 const GrPaint& paint, const SkPaint& skPa int,
653 const SkMatrix& viewMatrix, 653 const SkMatrix& viewMatrix,
654 const char text[], size_t byteLength, 654 const char text[], size_t byteLength,
655 SkScalar x, SkScalar y, const SkIRect& re gionClipBounds) { 655 SkScalar x, SkScalar y, const SkIRect& re gionClipBounds) {
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 1000
1001 // If the glyph is too large we fall back to paths 1001 // If the glyph is too large we fall back to paths
1002 if (glyph->fTooLargeForAtlas) { 1002 if (glyph->fTooLargeForAtlas) {
1003 this->appendGlyphPath(blob, glyph, scaler, skGlyph, SkIntToScalar(vx), S kIntToScalar(vy)); 1003 this->appendGlyphPath(blob, glyph, scaler, skGlyph, SkIntToScalar(vx), S kIntToScalar(vy));
1004 return; 1004 return;
1005 } 1005 }
1006 1006
1007 GrMaskFormat format = glyph->fMaskFormat; 1007 GrMaskFormat format = glyph->fMaskFormat;
1008 1008
1009 PerSubRunInfo* subRun = &run.fSubRunInfo.back(); 1009 PerSubRunInfo* subRun = &run.fSubRunInfo.back();
1010 if (run.fInitialized && subRun->fMaskFormat != format) { 1010 if (run.fInitialized && subRun->maskFormat() != format) {
1011 subRun = &run.push_back(); 1011 subRun = &run.push_back();
1012 subRun->fStrike.reset(SkRef(fCurrStrike)); 1012 subRun->setStrike(fCurrStrike);
1013 } else if (!run.fInitialized) { 1013 } else if (!run.fInitialized) {
1014 subRun->fStrike.reset(SkRef(fCurrStrike)); 1014 subRun->setStrike(SkRef(fCurrStrike));
1015 } 1015 }
1016 1016
1017 run.fInitialized = true; 1017 run.fInitialized = true;
1018 1018
1019 size_t vertexStride = GrAtlasTextBatch::GetVertexStride(format); 1019 size_t vertexStride = GrAtlasTextBatch::GetVertexStride(format);
1020 1020
1021 SkRect r; 1021 SkRect r;
1022 r.fLeft = SkIntToScalar(x); 1022 r.fLeft = SkIntToScalar(x);
1023 r.fTop = SkIntToScalar(y); 1023 r.fTop = SkIntToScalar(y);
1024 r.fRight = r.fLeft + SkIntToScalar(width); 1024 r.fRight = r.fLeft + SkIntToScalar(width);
1025 r.fBottom = r.fTop + SkIntToScalar(height); 1025 r.fBottom = r.fTop + SkIntToScalar(height);
1026 subRun->fMaskFormat = format; 1026 subRun->setMaskFormat(format);
1027 this->appendGlyphCommon(blob, &run, subRun, r, color, vertexStride, kA8_GrMa skFormat == format, 1027 this->appendGlyphCommon(blob, &run, subRun, r, color, vertexStride, kA8_GrMa skFormat == format,
1028 glyph); 1028 glyph);
1029 } 1029 }
1030 1030
1031 bool GrAtlasTextContext::dfAppendGlyph(GrAtlasTextBlob* blob, int runIndex, 1031 bool GrAtlasTextContext::dfAppendGlyph(GrAtlasTextBlob* blob, int runIndex,
1032 const SkGlyph& skGlyph, 1032 const SkGlyph& skGlyph,
1033 SkScalar sx, SkScalar sy, GrColor color, 1033 SkScalar sx, SkScalar sy, GrColor color,
1034 GrFontScaler* scaler, 1034 GrFontScaler* scaler,
1035 SkScalar textRatio, const SkMatrix& viewM atrix) { 1035 SkScalar textRatio, const SkMatrix& viewM atrix) {
1036 Run& run = blob->fRuns[runIndex]; 1036 Run& run = blob->fRuns[runIndex];
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1068 1068
1069 // TODO combine with the above 1069 // TODO combine with the above
1070 // If the glyph is too large we fall back to paths 1070 // If the glyph is too large we fall back to paths
1071 if (glyph->fTooLargeForAtlas) { 1071 if (glyph->fTooLargeForAtlas) {
1072 this->appendGlyphPath(blob, glyph, scaler, skGlyph, sx - dx, sy - dy, sc ale, true); 1072 this->appendGlyphPath(blob, glyph, scaler, skGlyph, sx - dx, sy - dy, sc ale, true);
1073 return true; 1073 return true;
1074 } 1074 }
1075 1075
1076 PerSubRunInfo* subRun = &run.fSubRunInfo.back(); 1076 PerSubRunInfo* subRun = &run.fSubRunInfo.back();
1077 if (!run.fInitialized) { 1077 if (!run.fInitialized) {
1078 subRun->fStrike.reset(SkRef(fCurrStrike)); 1078 subRun->setStrike(fCurrStrike);
1079 } 1079 }
1080 run.fInitialized = true; 1080 run.fInitialized = true;
1081 SkASSERT(glyph->fMaskFormat == kA8_GrMaskFormat); 1081 SkASSERT(glyph->fMaskFormat == kA8_GrMaskFormat);
1082 subRun->fMaskFormat = kA8_GrMaskFormat; 1082 subRun->setMaskFormat(kA8_GrMaskFormat);
1083 1083
1084 size_t vertexStride = GrAtlasTextBatch::GetVertexStrideDf(kA8_GrMaskFormat, 1084 size_t vertexStride = GrAtlasTextBatch::GetVertexStrideDf(kA8_GrMaskFormat,
1085 subRun->fUseLCDTex t); 1085 subRun->hasUseLCDT ext());
1086 1086
1087 bool useColorVerts = !subRun->fUseLCDText; 1087 bool useColorVerts = !subRun->hasUseLCDText();
1088 this->appendGlyphCommon(blob, &run, subRun, glyphRect, color, vertexStride, useColorVerts, 1088 this->appendGlyphCommon(blob, &run, subRun, glyphRect, color, vertexStride, useColorVerts,
1089 glyph); 1089 glyph);
1090 return true; 1090 return true;
1091 } 1091 }
1092 1092
1093 inline void GrAtlasTextContext::appendGlyphPath(GrAtlasTextBlob* blob, GrGlyph* glyph, 1093 inline void GrAtlasTextContext::appendGlyphPath(GrAtlasTextBlob* blob, GrGlyph* glyph,
1094 GrFontScaler* scaler, const SkGl yph& skGlyph, 1094 GrFontScaler* scaler, const SkGl yph& skGlyph,
1095 SkScalar x, SkScalar y, SkScalar scale, 1095 SkScalar x, SkScalar y, SkScalar scale,
1096 bool applyVM) { 1096 bool applyVM) {
1097 if (nullptr == glyph->fPath) { 1097 if (nullptr == glyph->fPath) {
1098 const SkPath* glyphPath = scaler->getGlyphPath(skGlyph); 1098 const SkPath* glyphPath = scaler->getGlyphPath(skGlyph);
1099 if (!glyphPath) { 1099 if (!glyphPath) {
1100 return; 1100 return;
1101 } 1101 }
1102 1102
1103 glyph->fPath = new SkPath(*glyphPath); 1103 glyph->fPath = new SkPath(*glyphPath);
1104 } 1104 }
1105 blob->fBigGlyphs.push_back(GrAtlasTextBlob::BigGlyph(*glyph->fPath, x, y, sc ale, applyVM)); 1105 blob->fBigGlyphs.push_back(GrAtlasTextBlob::BigGlyph(*glyph->fPath, x, y, sc ale, applyVM));
1106 } 1106 }
1107 1107
1108 inline void GrAtlasTextContext::appendGlyphCommon(GrAtlasTextBlob* blob, Run* ru n, 1108 inline void GrAtlasTextContext::appendGlyphCommon(GrAtlasTextBlob* blob, Run* ru n,
1109 Run::SubRunInfo* subRun, 1109 Run::SubRunInfo* subRun,
1110 const SkRect& positions, GrCol or color, 1110 const SkRect& positions, GrCol or color,
1111 size_t vertexStride, bool useV ertexColor, 1111 size_t vertexStride, bool useV ertexColor,
1112 GrGlyph* glyph) { 1112 GrGlyph* glyph) {
1113 blob->fGlyphs[subRun->fGlyphEndIndex] = glyph; 1113 blob->appendGlyph(subRun, glyph);
1114 run->fVertexBounds.joinNonEmptyArg(positions); 1114 run->fVertexBounds.joinNonEmptyArg(positions);
1115 run->fColor = color; 1115 run->fColor = color;
1116 1116
1117 intptr_t vertex = reinterpret_cast<intptr_t>(blob->fVertices + subRun->fVert exEndIndex); 1117 intptr_t vertex = reinterpret_cast<intptr_t>(blob->fVertices + subRun->verte xEndIndex());
1118 1118
1119 if (useVertexColor) { 1119 if (useVertexColor) {
1120 // V0 1120 // V0
1121 SkPoint* position = reinterpret_cast<SkPoint*>(vertex); 1121 SkPoint* position = reinterpret_cast<SkPoint*>(vertex);
1122 position->set(positions.fLeft, positions.fTop); 1122 position->set(positions.fLeft, positions.fTop);
1123 SkColor* colorPtr = reinterpret_cast<SkColor*>(vertex + sizeof(SkPoint)) ; 1123 SkColor* colorPtr = reinterpret_cast<SkColor*>(vertex + sizeof(SkPoint)) ;
1124 *colorPtr = color; 1124 *colorPtr = color;
1125 vertex += vertexStride; 1125 vertex += vertexStride;
1126 1126
1127 // V1 1127 // V1
(...skipping 28 matching lines...) Expand all
1156 1156
1157 // V2 1157 // V2
1158 position = reinterpret_cast<SkPoint*>(vertex); 1158 position = reinterpret_cast<SkPoint*>(vertex);
1159 position->set(positions.fRight, positions.fBottom); 1159 position->set(positions.fRight, positions.fBottom);
1160 vertex += vertexStride; 1160 vertex += vertexStride;
1161 1161
1162 // V3 1162 // V3
1163 position = reinterpret_cast<SkPoint*>(vertex); 1163 position = reinterpret_cast<SkPoint*>(vertex);
1164 position->set(positions.fRight, positions.fTop); 1164 position->set(positions.fRight, positions.fTop);
1165 } 1165 }
1166 1166 subRun->appendVertices(vertexStride);
1167 subRun->fGlyphEndIndex++;
1168 subRun->fVertexEndIndex += vertexStride * GrAtlasTextBatch::kVerticesPerGlyp h;
1169 } 1167 }
1170 1168
1171 void GrAtlasTextContext::flushRunAsPaths(GrDrawContext* dc, 1169 void GrAtlasTextContext::flushRunAsPaths(GrDrawContext* dc,
1172 const SkTextBlobRunIterator& it, 1170 const SkTextBlobRunIterator& it,
1173 const GrClip& clip, const SkPaint& skPa int, 1171 const GrClip& clip, const SkPaint& skPa int,
1174 SkDrawFilter* drawFilter, const SkMatri x& viewMatrix, 1172 SkDrawFilter* drawFilter, const SkMatri x& viewMatrix,
1175 const SkIRect& clipBounds, SkScalar x, SkScalar y) { 1173 const SkIRect& clipBounds, SkScalar x, SkScalar y) {
1176 SkPaint runPaint = skPaint; 1174 SkPaint runPaint = skPaint;
1177 1175
1178 size_t textLen = it.glyphCount() * sizeof(uint16_t); 1176 size_t textLen = it.glyphCount() * sizeof(uint16_t);
(...skipping 25 matching lines...) Expand all
1204 textLen, it.pos(), 2, SkPoint::Make(x, y), c lipBounds); 1202 textLen, it.pos(), 2, SkPoint::Make(x, y), c lipBounds);
1205 break; 1203 break;
1206 } 1204 }
1207 } 1205 }
1208 1206
1209 inline GrDrawBatch* 1207 inline GrDrawBatch*
1210 GrAtlasTextContext::createBatch(GrAtlasTextBlob* cacheBlob, const PerSubRunInfo& info, 1208 GrAtlasTextContext::createBatch(GrAtlasTextBlob* cacheBlob, const PerSubRunInfo& info,
1211 int glyphCount, int run, int subRun, 1209 int glyphCount, int run, int subRun,
1212 GrColor color, SkScalar transX, SkScalar transY, 1210 GrColor color, SkScalar transX, SkScalar transY,
1213 const SkPaint& skPaint) { 1211 const SkPaint& skPaint) {
1214 GrMaskFormat format = info.fMaskFormat; 1212 GrMaskFormat format = info.maskFormat();
1215 GrColor subRunColor; 1213 GrColor subRunColor;
1216 if (kARGB_GrMaskFormat == format) { 1214 if (kARGB_GrMaskFormat == format) {
1217 uint8_t paintAlpha = skPaint.getAlpha(); 1215 uint8_t paintAlpha = skPaint.getAlpha();
1218 subRunColor = SkColorSetARGB(paintAlpha, paintAlpha, paintAlpha, paintAl pha); 1216 subRunColor = SkColorSetARGB(paintAlpha, paintAlpha, paintAlpha, paintAl pha);
1219 } else { 1217 } else {
1220 subRunColor = color; 1218 subRunColor = color;
1221 } 1219 }
1222 1220
1223 GrAtlasTextBatch* batch; 1221 GrAtlasTextBatch* batch;
1224 if (info.fDrawAsDistanceFields) { 1222 if (info.drawAsDistanceFields()) {
1225 SkColor filteredColor; 1223 SkColor filteredColor;
1226 SkColorFilter* colorFilter = skPaint.getColorFilter(); 1224 SkColorFilter* colorFilter = skPaint.getColorFilter();
1227 if (colorFilter) { 1225 if (colorFilter) {
1228 filteredColor = colorFilter->filterColor(skPaint.getColor()); 1226 filteredColor = colorFilter->filterColor(skPaint.getColor());
1229 } else { 1227 } else {
1230 filteredColor = skPaint.getColor(); 1228 filteredColor = skPaint.getColor();
1231 } 1229 }
1232 bool useBGR = SkPixelGeometryIsBGR(fSurfaceProps.pixelGeometry()); 1230 bool useBGR = SkPixelGeometryIsBGR(fSurfaceProps.pixelGeometry());
1233 batch = GrAtlasTextBatch::CreateDistanceField(glyphCount, fContext->getB atchFontCache(), 1231 batch = GrAtlasTextBatch::CreateDistanceField(glyphCount, fContext->getB atchFontCache(),
1234 fDistanceAdjustTable, filt eredColor, 1232 fDistanceAdjustTable, filt eredColor,
1235 info.fUseLCDText, useBGR); 1233 info.hasUseLCDText(), useB GR);
1236 } else { 1234 } else {
1237 batch = GrAtlasTextBatch::CreateBitmap(format, glyphCount, fContext->get BatchFontCache()); 1235 batch = GrAtlasTextBatch::CreateBitmap(format, glyphCount, fContext->get BatchFontCache());
1238 } 1236 }
1239 GrAtlasTextBatch::Geometry& geometry = batch->geometry(); 1237 GrAtlasTextBatch::Geometry& geometry = batch->geometry();
1240 geometry.fBlob = SkRef(cacheBlob); 1238 geometry.fBlob = SkRef(cacheBlob);
1241 geometry.fRun = run; 1239 geometry.fRun = run;
1242 geometry.fSubRun = subRun; 1240 geometry.fSubRun = subRun;
1243 geometry.fColor = subRunColor; 1241 geometry.fColor = subRunColor;
1244 geometry.fTransX = transX; 1242 geometry.fTransX = transX;
1245 geometry.fTransY = transY; 1243 geometry.fTransY = transY;
1246 batch->init(); 1244 batch->init();
1247 1245
1248 return batch; 1246 return batch;
1249 } 1247 }
1250 1248
1251 inline void GrAtlasTextContext::flushRun(GrDrawContext* dc, GrPipelineBuilder* p ipelineBuilder, 1249 inline void GrAtlasTextContext::flushRun(GrDrawContext* dc, GrPipelineBuilder* p ipelineBuilder,
1252 GrAtlasTextBlob* cacheBlob, int run, Gr Color color, 1250 GrAtlasTextBlob* cacheBlob, int run, Gr Color color,
1253 SkScalar transX, SkScalar transY, 1251 SkScalar transX, SkScalar transY,
1254 const SkPaint& skPaint) { 1252 const SkPaint& skPaint) {
1255 for (int subRun = 0; subRun < cacheBlob->fRuns[run].fSubRunInfo.count(); sub Run++) { 1253 for (int subRun = 0; subRun < cacheBlob->fRuns[run].fSubRunInfo.count(); sub Run++) {
1256 const PerSubRunInfo& info = cacheBlob->fRuns[run].fSubRunInfo[subRun]; 1254 const PerSubRunInfo& info = cacheBlob->fRuns[run].fSubRunInfo[subRun];
1257 int glyphCount = info.fGlyphEndIndex - info.fGlyphStartIndex; 1255 int glyphCount = info.glyphCount();
1258 if (0 == glyphCount) { 1256 if (0 == glyphCount) {
1259 continue; 1257 continue;
1260 } 1258 }
1261 1259
1262 SkAutoTUnref<GrDrawBatch> batch(this->createBatch(cacheBlob, info, glyph Count, run, 1260 SkAutoTUnref<GrDrawBatch> batch(this->createBatch(cacheBlob, info, glyph Count, run,
1263 subRun, color, transX, transY, 1261 subRun, color, transX, transY,
1264 skPaint)); 1262 skPaint));
1265 dc->drawBatch(pipelineBuilder, batch); 1263 dc->drawBatch(pipelineBuilder, batch);
1266 } 1264 }
1267 } 1265 }
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1387 gTextContext->createDrawTextBlob(clip, grPaint, skPaint, viewMatrix, text, 1385 gTextContext->createDrawTextBlob(clip, grPaint, skPaint, viewMatrix, text,
1388 static_cast<size_t>(textLen), 0, 0, noClip)); 1386 static_cast<size_t>(textLen), 0, 0, noClip));
1389 1387
1390 SkScalar transX = static_cast<SkScalar>(random->nextU()); 1388 SkScalar transX = static_cast<SkScalar>(random->nextU());
1391 SkScalar transY = static_cast<SkScalar>(random->nextU()); 1389 SkScalar transY = static_cast<SkScalar>(random->nextU());
1392 const GrAtlasTextBlob::Run::SubRunInfo& info = blob->fRuns[0].fSubRunInfo[0] ; 1390 const GrAtlasTextBlob::Run::SubRunInfo& info = blob->fRuns[0].fSubRunInfo[0] ;
1393 return gTextContext->createBatch(blob, info, textLen, 0, 0, color, transX, t ransY, skPaint); 1391 return gTextContext->createBatch(blob, info, textLen, 0, 0, color, transX, t ransY, skPaint);
1394 } 1392 }
1395 1393
1396 #endif 1394 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrAtlasTextBlob.h ('k') | src/gpu/batches/GrAtlasTextBatch.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698