| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 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 "GrAtlasTextBlob.h" | 8 #include "GrAtlasTextBlob.h" |
| 9 | 9 |
| 10 #include "GrBatchFlushState.h" | 10 #include "GrBatchFlushState.h" |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 | 228 |
| 229 #define REGEN_ARGS target, fontCache, helper, &run, &info, cache, typeface, scal
er, desc, \ | 229 #define REGEN_ARGS target, fontCache, helper, &run, &info, cache, typeface, scal
er, desc, \ |
| 230 *glyphCount, vertexStride, color, transX, transY | 230 *glyphCount, vertexStride, color, transX, transY |
| 231 | 231 |
| 232 void GrAtlasTextBlob::regenInBatch(GrDrawBatch::Target* target, | 232 void GrAtlasTextBlob::regenInBatch(GrDrawBatch::Target* target, |
| 233 GrBatchFontCache* fontCache, | 233 GrBatchFontCache* fontCache, |
| 234 GrBlobRegenHelper *helper, | 234 GrBlobRegenHelper *helper, |
| 235 int runIndex, int subRunIndex, SkGlyphCache**
cache, | 235 int runIndex, int subRunIndex, SkGlyphCache**
cache, |
| 236 SkTypeface** typeface, GrFontScaler** scaler, | 236 SkTypeface** typeface, GrFontScaler** scaler, |
| 237 const SkDescriptor** desc, size_t vertexStrid
e, | 237 const SkDescriptor** desc, size_t vertexStrid
e, |
| 238 GrColor color, SkScalar transX, | 238 const SkMatrix& viewMatrix, SkScalar x, SkSca
lar y, |
| 239 SkScalar transY, | 239 GrColor color, |
| 240 void** vertices, size_t* byteCount, int* glyp
hCount) { | 240 void** vertices, size_t* byteCount, int* glyp
hCount) { |
| 241 Run& run = fRuns[runIndex]; | 241 Run& run = fRuns[runIndex]; |
| 242 Run::SubRunInfo& info = run.fSubRunInfo[subRunIndex]; | 242 Run::SubRunInfo& info = run.fSubRunInfo[subRunIndex]; |
| 243 | 243 |
| 244 uint64_t currentAtlasGen = fontCache->atlasGeneration(info.maskFormat()); | 244 uint64_t currentAtlasGen = fontCache->atlasGeneration(info.maskFormat()); |
| 245 | 245 |
| 246 // Compute translation if any |
| 247 SkScalar transX, transY; |
| 248 info.computeTranslation(viewMatrix, x, y, &transX, &transY); |
| 249 |
| 246 // Because the GrBatchFontCache may evict the strike a blob depends on using
for | 250 // Because the GrBatchFontCache may evict the strike a blob depends on using
for |
| 247 // generating its texture coords, we have to track whether or not the strike
has | 251 // generating its texture coords, we have to track whether or not the strike
has |
| 248 // been abandoned. If it hasn't been abandoned, then we can use the GrGlyph
*s as is | 252 // been abandoned. If it hasn't been abandoned, then we can use the GrGlyph
*s as is |
| 249 // otherwise we have to get the new strike, and use that to get the correct
glyphs. | 253 // otherwise we have to get the new strike, and use that to get the correct
glyphs. |
| 250 // Because we do not have the packed ids, and thus can't look up our glyphs
in the | 254 // Because we do not have the packed ids, and thus can't look up our glyphs
in the |
| 251 // new strike, we instead keep our ref to the old strike and use the packed
ids from | 255 // new strike, we instead keep our ref to the old strike and use the packed
ids from |
| 252 // it. These ids will still be valid as long as we hold the ref. When we a
re done | 256 // it. These ids will still be valid as long as we hold the ref. When we a
re done |
| 253 // updating our cache of the GrGlyph*s, we drop our ref on the old strike | 257 // updating our cache of the GrGlyph*s, we drop our ref on the old strike |
| 254 bool regenerateGlyphs = info.strike()->isAbandoned(); | 258 bool regenerateGlyphs = info.strike()->isAbandoned(); |
| 255 bool regenerateTextureCoords = info.atlasGeneration() != currentAtlasGen || | 259 bool regenerateTextureCoords = info.atlasGeneration() != currentAtlasGen || |
| (...skipping 30 matching lines...) Expand all Loading... |
| 286 // set use tokens for all of the glyphs in our subrun. This is only
valid if we | 290 // set use tokens for all of the glyphs in our subrun. This is only
valid if we |
| 287 // have a valid atlas generation | 291 // have a valid atlas generation |
| 288 fontCache->setUseTokenBulk(*info.bulkUseToken(), target->currentToke
n(), | 292 fontCache->setUseTokenBulk(*info.bulkUseToken(), target->currentToke
n(), |
| 289 info.maskFormat()); | 293 info.maskFormat()); |
| 290 break; | 294 break; |
| 291 } | 295 } |
| 292 | 296 |
| 293 *byteCount = info.byteCount(); | 297 *byteCount = info.byteCount(); |
| 294 *vertices = fVertices + info.vertexStartIndex(); | 298 *vertices = fVertices + info.vertexStartIndex(); |
| 295 } | 299 } |
| OLD | NEW |