Keep paint color range/precision into ops and GPs (using GrColor4h)
We still degrade to bytes when creating vertices (tagged TODO4F).
Note: Guarded for Chrome (by making GrColor4h a wrapper around
GrColor).
Bug: skia:
Change-Id: Id8a1d9eec7978d52b059cd9952666bc1217ee073
Reviewed-on: https://skia-review.googlesource.com/c/165527
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/atlastext/SkAtlasTextTarget.cpp b/src/atlastext/SkAtlasTextTarget.cpp
index fcb489e..c2f2d40 100644
--- a/src/atlastext/SkAtlasTextTarget.cpp
+++ b/src/atlastext/SkAtlasTextTarget.cpp
@@ -209,8 +209,10 @@
}
void GrAtlasTextOp::finalizeForTextTarget(uint32_t color, const GrCaps& caps) {
+ // TODO4F: Odd handling of client colors among AtlasTextTarget and AtlasTextRenderer
+ GrColor4h color4f = GrColor4h::FromGrColor(color);
for (int i = 0; i < fGeoCount; ++i) {
- fGeoData[i].fColor = color;
+ fGeoData[i].fColor = color4f;
}
this->finalize(caps, nullptr /* applied clip */);
}
@@ -229,10 +231,12 @@
}
for (int i = 0; i < fGeoCount; ++i) {
+ // TODO4F: Preserve float colors
GrTextBlob::VertexRegenerator regenerator(
resourceProvider, fGeoData[i].fBlob, fGeoData[i].fRun, fGeoData[i].fSubRun,
- fGeoData[i].fViewMatrix, fGeoData[i].fX, fGeoData[i].fY, fGeoData[i].fColor,
- &context, glyphCache, atlasManager, &autoGlyphCache);
+ fGeoData[i].fViewMatrix, fGeoData[i].fX, fGeoData[i].fY,
+ fGeoData[i].fColor.toGrColor(), &context, glyphCache, atlasManager,
+ &autoGlyphCache);
bool done = false;
while (!done) {
GrTextBlob::VertexRegenerator::Result result;