OLD | NEW |
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 996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 run.fInitialized = true; | 1007 run.fInitialized = true; |
1008 | 1008 |
1009 size_t vertexStride = GrAtlasTextBatch::GetVertexStride(format); | 1009 size_t vertexStride = GrAtlasTextBatch::GetVertexStride(format); |
1010 | 1010 |
1011 SkRect r; | 1011 SkRect r; |
1012 r.fLeft = SkIntToScalar(x); | 1012 r.fLeft = SkIntToScalar(x); |
1013 r.fTop = SkIntToScalar(y); | 1013 r.fTop = SkIntToScalar(y); |
1014 r.fRight = r.fLeft + SkIntToScalar(width); | 1014 r.fRight = r.fLeft + SkIntToScalar(width); |
1015 r.fBottom = r.fTop + SkIntToScalar(height); | 1015 r.fBottom = r.fTop + SkIntToScalar(height); |
1016 subRun->setMaskFormat(format); | 1016 subRun->setMaskFormat(format); |
1017 blob->appendGlyph(&run, subRun, r, color, vertexStride, kA8_GrMaskFormat ==
format, glyph); | 1017 blob->appendGlyph(&run, subRun, r, color, vertexStride, |
| 1018 kARGB_GrMaskFormat != format, glyph); |
1018 } | 1019 } |
1019 | 1020 |
1020 bool GrAtlasTextContext::dfAppendGlyph(GrAtlasTextBlob* blob, int runIndex, | 1021 bool GrAtlasTextContext::dfAppendGlyph(GrAtlasTextBlob* blob, int runIndex, |
1021 const SkGlyph& skGlyph, | 1022 const SkGlyph& skGlyph, |
1022 SkScalar sx, SkScalar sy, GrColor color, | 1023 SkScalar sx, SkScalar sy, GrColor color, |
1023 GrFontScaler* scaler, | 1024 GrFontScaler* scaler, |
1024 SkScalar textRatio, const SkMatrix& viewM
atrix) { | 1025 SkScalar textRatio, const SkMatrix& viewM
atrix) { |
1025 Run& run = blob->fRuns[runIndex]; | 1026 Run& run = blob->fRuns[runIndex]; |
1026 if (!fCurrStrike) { | 1027 if (!fCurrStrike) { |
1027 fCurrStrike = fContext->getBatchFontCache()->getStrike(scaler); | 1028 fCurrStrike = fContext->getBatchFontCache()->getStrike(scaler); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1063 } | 1064 } |
1064 | 1065 |
1065 PerSubRunInfo* subRun = &run.fSubRunInfo.back(); | 1066 PerSubRunInfo* subRun = &run.fSubRunInfo.back(); |
1066 if (!run.fInitialized) { | 1067 if (!run.fInitialized) { |
1067 subRun->setStrike(fCurrStrike); | 1068 subRun->setStrike(fCurrStrike); |
1068 } | 1069 } |
1069 run.fInitialized = true; | 1070 run.fInitialized = true; |
1070 SkASSERT(glyph->fMaskFormat == kA8_GrMaskFormat); | 1071 SkASSERT(glyph->fMaskFormat == kA8_GrMaskFormat); |
1071 subRun->setMaskFormat(kA8_GrMaskFormat); | 1072 subRun->setMaskFormat(kA8_GrMaskFormat); |
1072 | 1073 |
1073 size_t vertexStride = GrAtlasTextBatch::GetVertexStrideDf(kA8_GrMaskFormat, | 1074 size_t vertexStride = GrAtlasTextBatch::GetVertexStride(kA8_GrMaskFormat); |
1074 subRun->hasUseLCDT
ext()); | |
1075 | 1075 |
1076 bool useColorVerts = !subRun->hasUseLCDText(); | 1076 blob->appendGlyph(&run, subRun, glyphRect, color, vertexStride, true, glyph)
; |
1077 blob->appendGlyph(&run, subRun, glyphRect, color, vertexStride, useColorVert
s, glyph); | |
1078 return true; | 1077 return true; |
1079 } | 1078 } |
1080 | 1079 |
1081 inline void GrAtlasTextContext::appendGlyphPath(GrAtlasTextBlob* blob, GrGlyph*
glyph, | 1080 inline void GrAtlasTextContext::appendGlyphPath(GrAtlasTextBlob* blob, GrGlyph*
glyph, |
1082 GrFontScaler* scaler, const SkGl
yph& skGlyph, | 1081 GrFontScaler* scaler, const SkGl
yph& skGlyph, |
1083 SkScalar x, SkScalar y, SkScalar
scale, | 1082 SkScalar x, SkScalar y, SkScalar
scale, |
1084 bool applyVM) { | 1083 bool applyVM) { |
1085 if (nullptr == glyph->fPath) { | 1084 if (nullptr == glyph->fPath) { |
1086 const SkPath* glyphPath = scaler->getGlyphPath(skGlyph); | 1085 const SkPath* glyphPath = scaler->getGlyphPath(skGlyph); |
1087 if (!glyphPath) { | 1086 if (!glyphPath) { |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1312 gTextContext->createDrawTextBlob(clip, grPaint, skPaint, viewMatrix,
text, | 1311 gTextContext->createDrawTextBlob(clip, grPaint, skPaint, viewMatrix,
text, |
1313 static_cast<size_t>(textLen), 0, 0,
noClip)); | 1312 static_cast<size_t>(textLen), 0, 0,
noClip)); |
1314 | 1313 |
1315 SkScalar transX = static_cast<SkScalar>(random->nextU()); | 1314 SkScalar transX = static_cast<SkScalar>(random->nextU()); |
1316 SkScalar transY = static_cast<SkScalar>(random->nextU()); | 1315 SkScalar transY = static_cast<SkScalar>(random->nextU()); |
1317 const GrAtlasTextBlob::Run::SubRunInfo& info = blob->fRuns[0].fSubRunInfo[0]
; | 1316 const GrAtlasTextBlob::Run::SubRunInfo& info = blob->fRuns[0].fSubRunInfo[0]
; |
1318 return gTextContext->createBatch(blob, info, textLen, 0, 0, color, transX, t
ransY, skPaint); | 1317 return gTextContext->createBatch(blob, info, textLen, 0, 0, color, transX, t
ransY, skPaint); |
1319 } | 1318 } |
1320 | 1319 |
1321 #endif | 1320 #endif |
OLD | NEW |