Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(481)

Unified Diff: src/gpu/GrStencilAndCoverTextContext.cpp

Issue 700283002: Remove 1d glyph positions from nvpr text (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Formatting Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/gpu/GrStencilAndCoverTextContext.cpp
diff --git a/src/gpu/GrStencilAndCoverTextContext.cpp b/src/gpu/GrStencilAndCoverTextContext.cpp
index 94a6c2e528e787625aa654058bbd7206065996a9..14a14a0474d9e840648f6c28b76e12c4c004fa31 100644
--- a/src/gpu/GrStencilAndCoverTextContext.cpp
+++ b/src/gpu/GrStencilAndCoverTextContext.cpp
@@ -88,7 +88,7 @@ void GrStencilAndCoverTextContext::onDrawText(const GrPaint& paint,
// will turn off the use of device-space glyphs when perspective transforms
// are in use.
- this->init(paint, skPaint, byteLength, kMaxAccuracy_RenderMode, SkPoint::Make(0, 0));
+ this->init(paint, skPaint, byteLength, kMaxAccuracy_RenderMode);
// Transform our starting point.
if (fNeedsDeviceSpaceGlyphs) {
@@ -100,8 +100,6 @@ void GrStencilAndCoverTextContext::onDrawText(const GrPaint& paint,
SkDrawCacheProc glyphCacheProc = fSkPaint.getDrawCacheProc();
- fTransformType = GrPathRendering::kTranslate_PathTransformType;
-
const char* stop = text + byteLength;
// Measure first if needed.
@@ -175,49 +173,25 @@ void GrStencilAndCoverTextContext::onDrawPosText(const GrPaint& paint,
// transform is not part of SkPaint::measureText API, and thus we use the
// same glyphs as what were measured.
- this->init(paint, skPaint, byteLength, kMaxPerformance_RenderMode, offset);
+ this->init(paint, skPaint, byteLength, kMaxPerformance_RenderMode);
SkDrawCacheProc glyphCacheProc = fSkPaint.getDrawCacheProc();
const char* stop = text + byteLength;
- if (SkPaint::kLeft_Align == fSkPaint.getTextAlign()) {
- if (1 == scalarsPerPosition) {
- fTransformType = GrPathRendering::kTranslateX_PathTransformType;
- while (text < stop) {
- const SkGlyph& glyph = glyphCacheProc(fGlyphCache, &text, 0, 0);
- if (glyph.fWidth) {
- this->appendGlyph(glyph.getGlyphID(), *pos);
- }
- pos++;
- }
- } else {
- SkASSERT(2 == scalarsPerPosition);
- fTransformType = GrPathRendering::kTranslate_PathTransformType;
- while (text < stop) {
- const SkGlyph& glyph = glyphCacheProc(fGlyphCache, &text, 0, 0);
- if (glyph.fWidth) {
- this->appendGlyph(glyph.getGlyphID(), pos[0], pos[1]);
- }
- pos += 2;
- }
- }
- } else {
- fTransformType = GrPathRendering::kTranslate_PathTransformType;
- SkTextMapStateProc tmsProc(SkMatrix::I(), SkPoint::Make(0, 0), scalarsPerPosition);
- SkTextAlignProcScalar alignProc(fSkPaint.getTextAlign());
- while (text < stop) {
- const SkGlyph& glyph = glyphCacheProc(fGlyphCache, &text, 0, 0);
- if (glyph.fWidth) {
- SkPoint tmsLoc;
- tmsProc(pos, &tmsLoc);
- SkPoint loc;
- alignProc(tmsLoc, glyph, &loc);
-
- this->appendGlyph(glyph.getGlyphID(), loc.x(), loc.y());
- }
- pos += scalarsPerPosition;
+ SkTextMapStateProc tmsProc(SkMatrix::I(), offset, scalarsPerPosition);
+ SkTextAlignProcScalar alignProc(fSkPaint.getTextAlign());
+ while (text < stop) {
+ const SkGlyph& glyph = glyphCacheProc(fGlyphCache, &text, 0, 0);
+ if (glyph.fWidth) {
+ SkPoint tmsLoc;
+ tmsProc(pos, &tmsLoc);
+ SkPoint loc;
+ alignProc(tmsLoc, glyph, &loc);
+
+ this->appendGlyph(glyph.getGlyphID(), loc.x(), loc.y());
}
+ pos += scalarsPerPosition;
}
this->finish();
@@ -250,8 +224,7 @@ static GrPathRange* get_gr_glyphs(GrContext* ctx,
void GrStencilAndCoverTextContext::init(const GrPaint& paint,
const SkPaint& skPaint,
size_t textByteLength,
- RenderMode renderMode,
- const SkPoint& textTranslate) {
+ RenderMode renderMode) {
GrTextContext::init(paint, skPaint);
fContextInitialMatrix = fContext->getMatrix();
@@ -267,7 +240,6 @@ void GrStencilAndCoverTextContext::init(const GrPaint& paint,
if (fNeedsDeviceSpaceGlyphs) {
// SkDraw::ShouldDrawTextAsPaths takes care of perspective transforms.
SkASSERT(!fContextInitialMatrix.hasPerspective());
- SkASSERT(textTranslate.isZero()); // TODO: Handle textTranslate in device-space usecase.
fTextRatio = fTextInverseRatio = 1.0f;
@@ -349,9 +321,8 @@ void GrStencilAndCoverTextContext::init(const GrPaint& paint,
}
SkMatrix textMatrix;
- textMatrix.setTranslate(textTranslate.x(), textTranslate.y());
// Glyphs loaded by GPU path rendering have an inverted y-direction.
- textMatrix.preScale(fTextRatio, -fTextRatio);
+ textMatrix.setScale(fTextRatio, -fTextRatio);
fPaint.localCoordChange(textMatrix);
fContext->concatMatrix(textMatrix);
@@ -380,22 +351,7 @@ void GrStencilAndCoverTextContext::init(const GrPaint& paint,
SkASSERT(0 == fPendingGlyphCount);
}
-inline void GrStencilAndCoverTextContext::appendGlyph(uint16_t glyphID, float x) {
- SkASSERT(GrPathRendering::kTranslateX_PathTransformType == fTransformType);
-
- if (fPendingGlyphCount >= kGlyphBufferSize) {
- this->flush();
- }
-
- fIndexBuffer[fPendingGlyphCount] = glyphID;
- fTransformBuffer[fPendingGlyphCount] = fTextInverseRatio * x;
-
- ++fPendingGlyphCount;
-}
-
inline void GrStencilAndCoverTextContext::appendGlyph(uint16_t glyphID, float x, float y) {
- SkASSERT(GrPathRendering::kTranslate_PathTransformType == fTransformType);
-
if (fPendingGlyphCount >= kGlyphBufferSize) {
this->flush();
}
@@ -412,8 +368,9 @@ void GrStencilAndCoverTextContext::flush() {
return;
}
- fDrawTarget->drawPaths(fGlyphs, fIndexBuffer, fPendingGlyphCount,
- fTransformBuffer, fTransformType, GrPathRendering::kWinding_FillType);
+ fDrawTarget->drawPaths(fGlyphs, fIndexBuffer, fPendingGlyphCount, fTransformBuffer,
+ GrPathRendering::kTranslate_PathTransformType,
+ GrPathRendering::kWinding_FillType);
fPendingGlyphCount = 0;
}
« src/gpu/GrStencilAndCoverTextContext.h ('K') | « src/gpu/GrStencilAndCoverTextContext.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698