skia2/gm/skbug_8955.cpp
Brian Osman 937d967457 Always mark bitmap glyph runs as such, to ensure they are properly regenerated
If all glyphs were culled (by being too small), we could end up with a
run that never called setHasBitmap. That would prevent us from looking
at the view matrix on a subsequent draw, when deciding if we needed to
regenerate.

Bug: skia:8955
Change-Id: Ic7a2539762527f91bdb50ab78bdf5801bfda0034
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206266
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-04-05 16:26:23 +00:00

29 lines
830 B
C++

/*
* Copyright 2019 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "gm.h"
#include "SkFont.h"
#include "SkPaint.h"
#include "SkTextBlob.h"
DEF_SIMPLE_GM(skbug_8955, canvas, 100, 100) {
SkPaint p;
SkFont font;
font.setSize(50);
auto blob = SkTextBlob::MakeFromText("+", 1, font);
// This bug only appeared when drawing the same text blob. We would generate no glyphs on the
// first draw, and fail to mark the blob as having any bitmap runs. That would prevent us from
// re-generating the blob on the second draw, even though the matrix had been restored.
canvas->save();
canvas->scale(0, 0);
canvas->drawTextBlob(blob, 30, 60, p);
canvas->restore();
canvas->drawTextBlob(blob, 30, 60, p);
}