[SkTextBlob] Remove incorrect builder assert
At the end of TightRunBounds, glyphPosX cannot exceed the start of the next run. But glyphPosY is running ahead of glyphPosX (for kFull_Positioning) => the glyphPosY assert is incorrect. Since the two pointers advance in lock-step, there isn't much value in the glyphPosY assert anyway - we might as well remove it. BUG=chromium:542643 R=reed@google.com,bungeman@google.com Review URL: https://codereview.chromium.org/1405463004
This commit is contained in:
parent
598f3ff4b3
commit
9ae8fe1c60
@ -403,8 +403,6 @@ SkRect SkTextBlobBuilder::TightRunBounds(const SkTextBlob::RunRecord& run) {
|
||||
}
|
||||
|
||||
SkASSERT((void*)glyphPosX <= SkTextBlob::RunRecord::Next(&run));
|
||||
SkASSERT(run.positioning() == SkTextBlob::kHorizontal_Positioning ||
|
||||
(void*)glyphPosY <= SkTextBlob::RunRecord::Next(&run));
|
||||
|
||||
return bounds.makeOffset(run.offset().x(), run.offset().y());
|
||||
}
|
||||
|
@ -149,7 +149,22 @@ public:
|
||||
}
|
||||
|
||||
// Implicit bounds
|
||||
// FIXME: not supported yet.
|
||||
|
||||
{
|
||||
// Exercise the empty bounds path, and ensure that RunRecord-aligned pos buffers
|
||||
// don't trigger asserts (http://crbug.com/542643).
|
||||
SkPaint p;
|
||||
p.setTextSize(0);
|
||||
p.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
|
||||
|
||||
const char* txt = "BOOO";
|
||||
const size_t len = strlen(txt);
|
||||
const SkTextBlobBuilder::RunBuffer& buffer = builder.allocRunPos(p, (int)len);
|
||||
p.textToGlyphs(txt, len, buffer.glyphs);
|
||||
memset(buffer.pos, 0, sizeof(SkScalar) * len * 2);
|
||||
SkAutoTUnref<const SkTextBlob> blob(builder.build());
|
||||
REPORTER_ASSERT(reporter, blob->bounds().isEmpty());
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user