diff options
author | mtklein <mtklein@chromium.org> | 2016-04-06 13:57:38 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-06 13:57:38 -0700 |
commit | 9e65f9399ea9d50dca723ca23c10ec4145b54abe (patch) | |
tree | faf95a6c7e1534cd4a66227a13037545ef0ec7f5 /gm/textblobgeometrychange.cpp | |
parent | b4aa36211ca66ef127ac2954108742af1ead5082 (diff) |
alternate textblobgeometrychange fix... just make our own surface if needed
This should decopple fixing the replay modes from revising the API.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1868553005
Review URL: https://codereview.chromium.org/1868553005
Diffstat (limited to 'gm/textblobgeometrychange.cpp')
-rw-r--r-- | gm/textblobgeometrychange.cpp | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/gm/textblobgeometrychange.cpp b/gm/textblobgeometrychange.cpp index b1c5b17988..b02bc07bf0 100644 --- a/gm/textblobgeometrychange.cpp +++ b/gm/textblobgeometrychange.cpp @@ -47,28 +47,24 @@ protected: uint32_t allowSRGBInputs = canvas->getProps(&canvasProps) ? canvasProps.flags() & SkSurfaceProps::kAllowSRGBInputs_Flag : 0; SkSurfaceProps props(allowSRGBInputs, kUnknown_SkPixelGeometry); - auto surface(canvas->makeSurface(info, &props)); - if (surface) { - SkCanvas* c = surface->getCanvas(); - - // LCD text on white background - SkRect rect = SkRect::MakeLTRB(0.f, 0.f, SkIntToScalar(kWidth), kHeight / 2.f); - SkPaint rectPaint; - rectPaint.setColor(0xffffffff); - canvas->drawRect(rect, rectPaint); - canvas->drawTextBlob(blob.get(), 10, 50, paint); - - // This should not look garbled since we should disable LCD text in this case - // (i.e., unknown pixel geometry) - c->clear(0x00ffffff); - c->drawTextBlob(blob.get(), 10, 150, paint); - surface->draw(canvas, 0, 0, nullptr); - } else { - const char* text = "This test requires a surface"; - size_t len = strlen(text); - SkPaint paint; - canvas->drawText(text, len, 10, 100, paint); + auto surface = canvas->makeSurface(info, &props); + if (!surface) { + surface = SkSurface::MakeRaster(info, &props); } + SkCanvas* c = surface->getCanvas(); + + // LCD text on white background + SkRect rect = SkRect::MakeLTRB(0.f, 0.f, SkIntToScalar(kWidth), kHeight / 2.f); + SkPaint rectPaint; + rectPaint.setColor(0xffffffff); + canvas->drawRect(rect, rectPaint); + canvas->drawTextBlob(blob.get(), 10, 50, paint); + + // This should not look garbled since we should disable LCD text in this case + // (i.e., unknown pixel geometry) + c->clear(0x00ffffff); + c->drawTextBlob(blob.get(), 10, 150, paint); + surface->draw(canvas, 0, 0, nullptr); } private: |