Handle color and translation outside of VertexRegenerator
Change-Id: Ia06186328bd6fdc12f42355ec8fea9fc82ff51a6 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264425 Commit-Queue: Herb Derby <herb@google.com> Reviewed-by: Jim Van Verth <jvanverth@google.com>
This commit is contained in:
parent
c4b8eefe56
commit
62b12feef7
src
@ -234,12 +234,12 @@ void GrAtlasTextOp::executeForTextTarget(SkAtlasTextTarget* target) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < fGeoCount; ++i) {
|
for (int i = 0; i < fGeoCount; ++i) {
|
||||||
// TODO4F: Preserve float colors
|
|
||||||
GrTextBlob::VertexRegenerator regenerator(
|
|
||||||
resourceProvider, fGeoData[i].fSubRunPtr,
|
|
||||||
fGeoData[i].fDrawMatrix, fGeoData[i].fDrawOrigin,
|
|
||||||
fGeoData[i].fColor.toBytes_RGBA(), &context, glyphCache, atlasManager);
|
|
||||||
auto subRun = fGeoData[i].fSubRunPtr;
|
auto subRun = fGeoData[i].fSubRunPtr;
|
||||||
|
// TODO4F: Preserve float colors
|
||||||
|
subRun->updateVerticesColorIfNeeded(fGeoData[i].fColor.toBytes_RGBA());
|
||||||
|
subRun->translateVerticesIfNeeded(fGeoData[i].fDrawMatrix, fGeoData[i].fDrawOrigin);
|
||||||
|
GrTextBlob::VertexRegenerator regenerator(
|
||||||
|
resourceProvider, fGeoData[i].fSubRunPtr, &context, glyphCache, atlasManager);
|
||||||
int subRunEnd = subRun->fGlyphs.size();
|
int subRunEnd = subRun->fGlyphs.size();
|
||||||
for (int subRunIndex = 0; subRunIndex < subRunEnd;) {
|
for (int subRunIndex = 0; subRunIndex < subRunEnd;) {
|
||||||
auto [ok, glyphsRegenerated] = regenerator.regenerate(subRunIndex, subRunEnd);
|
auto [ok, glyphsRegenerated] = regenerator.regenerate(subRunIndex, subRunEnd);
|
||||||
|
@ -356,10 +356,12 @@ void GrAtlasTextOp::onPrepareDraws(Target* target) {
|
|||||||
auto subRun = args.fSubRunPtr;
|
auto subRun = args.fSubRunPtr;
|
||||||
SkASSERT((int)subRun->vertexStride() == vertexStride);
|
SkASSERT((int)subRun->vertexStride() == vertexStride);
|
||||||
|
|
||||||
|
subRun->updateVerticesColorIfNeeded(args.fColor.toBytes_RGBA());
|
||||||
|
subRun->translateVerticesIfNeeded(args.fDrawMatrix, args.fDrawOrigin);
|
||||||
|
|
||||||
// TODO4F: Preserve float colors
|
// TODO4F: Preserve float colors
|
||||||
GrTextBlob::VertexRegenerator regenerator(
|
GrTextBlob::VertexRegenerator regenerator(
|
||||||
resourceProvider, args.fSubRunPtr, args.fDrawMatrix, args.fDrawOrigin,
|
resourceProvider, args.fSubRunPtr, target->deferredUploadTarget(), glyphCache,
|
||||||
args.fColor.toBytes_RGBA(), target->deferredUploadTarget(), glyphCache,
|
|
||||||
atlasManager);
|
atlasManager);
|
||||||
|
|
||||||
// Where the subRun begins and ends relative to totalGlyphsRegened.
|
// Where the subRun begins and ends relative to totalGlyphsRegened.
|
||||||
|
@ -779,9 +779,6 @@ void GrTextBlob::processSourceMasks(const SkZip<SkGlyphVariant, SkPoint>& drawab
|
|||||||
// -- GrTextBlob::VertexRegenerator ----------------------------------------------------------------
|
// -- GrTextBlob::VertexRegenerator ----------------------------------------------------------------
|
||||||
GrTextBlob::VertexRegenerator::VertexRegenerator(GrResourceProvider* resourceProvider,
|
GrTextBlob::VertexRegenerator::VertexRegenerator(GrResourceProvider* resourceProvider,
|
||||||
GrTextBlob::SubRun* subRun,
|
GrTextBlob::SubRun* subRun,
|
||||||
const SkMatrix& drawMatrix,
|
|
||||||
SkPoint drawOrigin,
|
|
||||||
GrColor color,
|
|
||||||
GrDeferredUploadTarget* uploadTarget,
|
GrDeferredUploadTarget* uploadTarget,
|
||||||
GrStrikeCache* grStrikeCache,
|
GrStrikeCache* grStrikeCache,
|
||||||
GrAtlasManager* fullAtlasManager)
|
GrAtlasManager* fullAtlasManager)
|
||||||
@ -800,9 +797,6 @@ GrTextBlob::VertexRegenerator::VertexRegenerator(GrResourceProvider* resourcePro
|
|||||||
// updating our cache of the GrGlyph*s, we drop our ref on the old strike
|
// updating our cache of the GrGlyph*s, we drop our ref on the old strike
|
||||||
fActions.regenTextureCoordinates = fSubRun->strike()->isAbandoned();
|
fActions.regenTextureCoordinates = fSubRun->strike()->isAbandoned();
|
||||||
fActions.regenStrike = fSubRun->strike()->isAbandoned();
|
fActions.regenStrike = fSubRun->strike()->isAbandoned();
|
||||||
|
|
||||||
fSubRun->updateVerticesColorIfNeeded(color);
|
|
||||||
fSubRun->translateVerticesIfNeeded(drawMatrix, drawOrigin);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::tuple<bool, int> GrTextBlob::VertexRegenerator::updateTextureCoordinatesMaybeStrike(
|
std::tuple<bool, int> GrTextBlob::VertexRegenerator::updateTextureCoordinatesMaybeStrike(
|
||||||
|
@ -297,7 +297,6 @@ public:
|
|||||||
* SkGlyphCache.
|
* SkGlyphCache.
|
||||||
*/
|
*/
|
||||||
VertexRegenerator(GrResourceProvider*, GrTextBlob::SubRun* subRun,
|
VertexRegenerator(GrResourceProvider*, GrTextBlob::SubRun* subRun,
|
||||||
const SkMatrix& drawMatrix, SkPoint drawOrigin, GrColor color,
|
|
||||||
GrDeferredUploadTarget*, GrStrikeCache*, GrAtlasManager*);
|
GrDeferredUploadTarget*, GrStrikeCache*, GrAtlasManager*);
|
||||||
|
|
||||||
// Return {success, number of glyphs regenerated}
|
// Return {success, number of glyphs regenerated}
|
||||||
|
Loading…
Reference in New Issue
Block a user