diff options
author | joshualitt <joshualitt@chromium.org> | 2015-08-04 09:40:02 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-04 09:40:03 -0700 |
commit | 846b022f6b469cfde285372f26e0d5c593d122ac (patch) | |
tree | 1d2be9e13c2f3eff96be4417bd1c2c380d2a5356 /src/gpu/effects/GrBitmapTextGeoProc.cpp | |
parent | 1c005e4a38e29d648ecebada25d3a718155043a3 (diff) |
Break LCD and Bitmap text dependency on hardcoded atlas values
BUG=skia:
Review URL: https://codereview.chromium.org/1271873002
Diffstat (limited to 'src/gpu/effects/GrBitmapTextGeoProc.cpp')
-rw-r--r-- | src/gpu/effects/GrBitmapTextGeoProc.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp index a0350e99f5..9496dbffc3 100644 --- a/src/gpu/effects/GrBitmapTextGeoProc.cpp +++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp @@ -28,18 +28,19 @@ public: // emit attributes vsBuilder->emitAttributes(cte); + // compute numbers to be hardcoded to convert texture coordinates from int to float + SkASSERT(cte.numTextures() == 1); + GrTexture* atlas = cte.textureAccess(0).getTexture(); + SkASSERT(atlas); + SkScalar recipWidth = 1.0f / atlas->width(); + SkScalar recipHeight = 1.0f / atlas->height(); + GrGLVertToFrag v(kVec2f_GrSLType); pb->addVarying("TextureCoords", &v); - // this is only used with text, so our texture bounds always match the glyph atlas - if (cte.maskFormat() == kA8_GrMaskFormat) { - vsBuilder->codeAppendf("%s = vec2(" GR_FONT_ATLAS_A8_RECIP_WIDTH ", " - GR_FONT_ATLAS_RECIP_HEIGHT ")*%s;", v.vsOut(), - cte.inTextureCoords()->fName); - } else { - vsBuilder->codeAppendf("%s = vec2(" GR_FONT_ATLAS_RECIP_WIDTH ", " - GR_FONT_ATLAS_RECIP_HEIGHT ")*%s;", v.vsOut(), - cte.inTextureCoords()->fName); - } + vsBuilder->codeAppendf("%s = vec2(%.*f, %.*f) * %s;", v.vsOut(), + SK_FLT_DECIMAL_DIG, recipWidth, + SK_FLT_DECIMAL_DIG, recipHeight, + cte.inTextureCoords()->fName); // Setup pass through color if (!cte.colorIgnored()) { @@ -102,6 +103,13 @@ public: key |= gp.colorIgnored() ? 0x2 : 0x0; key |= gp.maskFormat() << 3; b->add32(key); + + // Currently we hardcode numbers to convert atlas coordinates to normalized floating point + SkASSERT(gp.numTextures() == 1); + GrTexture* atlas = gp.textureAccess(0).getTexture(); + SkASSERT(atlas); + b->add32(atlas->width()); + b->add32(atlas->height()); } private: |