| 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 | 7 |
| 8 #include "GrTextUtils.h" | 8 #include "GrTextUtils.h" |
| 9 | 9 |
| 10 #include "GrAtlasTextBlob.h" | 10 #include "GrAtlasTextBlob.h" |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 const SkMatrix& viewMatrix, | 246 const SkMatrix& viewMatrix, |
| 247 const char text[], size_t byteLength, | 247 const char text[], size_t byteLength, |
| 248 SkScalar x, SkScalar y) { | 248 SkScalar x, SkScalar y) { |
| 249 SkASSERT(byteLength == 0 || text != nullptr); | 249 SkASSERT(byteLength == 0 || text != nullptr); |
| 250 | 250 |
| 251 // nothing to draw | 251 // nothing to draw |
| 252 if (text == nullptr || byteLength == 0) { | 252 if (text == nullptr || byteLength == 0) { |
| 253 return; | 253 return; |
| 254 } | 254 } |
| 255 | 255 |
| 256 SkPaint::GlyphCacheProc glyphCacheProc = skPaint.getGlyphCacheProc(true); | 256 SkPaint::GlyphCacheProc glyphCacheProc = SkPaint::GetGlyphCacheProc(skPaint.
getTextEncoding(), |
| 257 skPaint.
isDevKernText(), |
| 258 true); |
| 257 SkAutoDescriptor desc; | 259 SkAutoDescriptor desc; |
| 258 SkScalerContextEffects effects; | 260 SkScalerContextEffects effects; |
| 259 // We apply the fake-gamma by altering the distance in the shader, so we ign
ore the | 261 // We apply the fake-gamma by altering the distance in the shader, so we ign
ore the |
| 260 // passed-in scaler context flags. (It's only used when we fall-back to bitm
ap text). | 262 // passed-in scaler context flags. (It's only used when we fall-back to bitm
ap text). |
| 261 skPaint.getScalerContextDescriptor(&effects, &desc, props, SkPaint::kNone_Sc
alerContextFlags, | 263 skPaint.getScalerContextDescriptor(&effects, &desc, props, SkPaint::kNone_Sc
alerContextFlags, |
| 262 nullptr); | 264 nullptr); |
| 263 SkGlyphCache* origPaintCache = SkGlyphCache::DetachCache(skPaint.getTypeface
(), effects, | 265 SkGlyphCache* origPaintCache = SkGlyphCache::DetachCache(skPaint.getTypeface
(), effects, |
| 264 desc.getDesc()); | 266 desc.getDesc()); |
| 265 | 267 |
| 266 SkTArray<SkScalar> positions; | 268 SkTArray<SkScalar> positions; |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 GrTextUtils::InitDistanceFieldPaint(blob, &dfPaint, &textRatio, viewMatrix); | 340 GrTextUtils::InitDistanceFieldPaint(blob, &dfPaint, &textRatio, viewMatrix); |
| 339 blob->setHasDistanceField(); | 341 blob->setHasDistanceField(); |
| 340 blob->setSubRunHasDistanceFields(runIndex, origPaint.isLCDRenderText()); | 342 blob->setSubRunHasDistanceFields(runIndex, origPaint.isLCDRenderText()); |
| 341 | 343 |
| 342 GrBatchTextStrike* currStrike = nullptr; | 344 GrBatchTextStrike* currStrike = nullptr; |
| 343 | 345 |
| 344 // We apply the fake-gamma by altering the distance in the shader, so we ign
ore the | 346 // We apply the fake-gamma by altering the distance in the shader, so we ign
ore the |
| 345 // passed-in scaler context flags. (It's only used when we fall-back to bitm
ap text). | 347 // passed-in scaler context flags. (It's only used when we fall-back to bitm
ap text). |
| 346 SkGlyphCache* cache = blob->setupCache(runIndex, props, SkPaint::kNone_Scale
rContextFlags, | 348 SkGlyphCache* cache = blob->setupCache(runIndex, props, SkPaint::kNone_Scale
rContextFlags, |
| 347 dfPaint, nullptr); | 349 dfPaint, nullptr); |
| 348 SkPaint::GlyphCacheProc glyphCacheProc = dfPaint.getGlyphCacheProc(true); | 350 SkPaint::GlyphCacheProc glyphCacheProc = SkPaint::GetGlyphCacheProc(dfPaint.
getTextEncoding(), |
| 351 dfPaint.
isDevKernText(), |
| 352 true); |
| 349 | 353 |
| 350 const char* stop = text + byteLength; | 354 const char* stop = text + byteLength; |
| 351 | 355 |
| 352 if (SkPaint::kLeft_Align == dfPaint.getTextAlign()) { | 356 if (SkPaint::kLeft_Align == dfPaint.getTextAlign()) { |
| 353 while (text < stop) { | 357 while (text < stop) { |
| 354 const char* lastText = text; | 358 const char* lastText = text; |
| 355 // the last 2 parameters are ignored | 359 // the last 2 parameters are ignored |
| 356 const SkGlyph& glyph = glyphCacheProc(cache, &text); | 360 const SkGlyph& glyph = glyphCacheProc(cache, &text); |
| 357 | 361 |
| 358 if (glyph.fWidth) { | 362 if (glyph.fWidth) { |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 SkPaint paint(origPaint); | 505 SkPaint paint(origPaint); |
| 502 SkScalar matrixScale = paint.setupForAsPaths(); | 506 SkScalar matrixScale = paint.setupForAsPaths(); |
| 503 | 507 |
| 504 SkMatrix matrix; | 508 SkMatrix matrix; |
| 505 matrix.setScale(matrixScale, matrixScale); | 509 matrix.setScale(matrixScale, matrixScale); |
| 506 | 510 |
| 507 // Temporarily jam in kFill, so we only ever ask for the raw outline from th
e cache. | 511 // Temporarily jam in kFill, so we only ever ask for the raw outline from th
e cache. |
| 508 paint.setStyle(SkPaint::kFill_Style); | 512 paint.setStyle(SkPaint::kFill_Style); |
| 509 paint.setPathEffect(nullptr); | 513 paint.setPathEffect(nullptr); |
| 510 | 514 |
| 511 SkPaint::GlyphCacheProc glyphCacheProc = paint.getGlyphCacheProc(true); | 515 SkPaint::GlyphCacheProc glyphCacheProc = SkPaint::GetGlyphCacheProc(paint
.getTextEncoding(), |
| 516 paint
.isDevKernText(), |
| 517 true)
; |
| 512 SkAutoGlyphCache autoCache(paint, &props, nullptr); | 518 SkAutoGlyphCache autoCache(paint, &props, nullptr); |
| 513 SkGlyphCache* cache = autoCache.getCache(); | 519 SkGlyphCache* cache = autoCache.getCache(); |
| 514 | 520 |
| 515 const char* stop = text + byteLength; | 521 const char* stop = text + byteLength; |
| 516 SkTextAlignProc alignProc(paint.getTextAlign()); | 522 SkTextAlignProc alignProc(paint.getTextAlign()); |
| 517 SkTextMapStateProc tmsProc(SkMatrix::I(), offset, scalarsPerPosition); | 523 SkTextMapStateProc tmsProc(SkMatrix::I(), offset, scalarsPerPosition); |
| 518 | 524 |
| 519 // Now restore the original settings, so we "draw" with whatever style/strok
ing. | 525 // Now restore the original settings, so we "draw" with whatever style/strok
ing. |
| 520 paint.setStyle(origPaint.getStyle()); | 526 paint.setStyle(origPaint.getStyle()); |
| 521 paint.setPathEffect(sk_ref_sp(origPaint.getPathEffect())); | 527 paint.setPathEffect(sk_ref_sp(origPaint.getPathEffect())); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 556 return flags; | 562 return flags; |
| 557 } | 563 } |
| 558 | 564 |
| 559 if (kUnknown_SkPixelGeometry == surfaceProps.pixelGeometry() || ShouldDisabl
eLCD(paint)) { | 565 if (kUnknown_SkPixelGeometry == surfaceProps.pixelGeometry() || ShouldDisabl
eLCD(paint)) { |
| 560 flags &= ~SkPaint::kLCDRenderText_Flag; | 566 flags &= ~SkPaint::kLCDRenderText_Flag; |
| 561 flags |= SkPaint::kGenA8FromLCD_Flag; | 567 flags |= SkPaint::kGenA8FromLCD_Flag; |
| 562 } | 568 } |
| 563 | 569 |
| 564 return flags; | 570 return flags; |
| 565 } | 571 } |
| OLD | NEW |