1/* 2 * Copyright 2015 Google Inc. 3 * 4 * Use of this source code is governed by a BD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#include "gm.h" 9 10#include "SkBlurMask.h" 11#include "SkBlurMaskFilter.h" 12#include "SkCanvas.h" 13#include "SkTextBlob.h" 14 15// This test ensures that glyphs whose point size is less than the SkGlyphCache's maxmium, but 16// who have a large blur, are still handled correctly 17namespace skiagm { 18class LargeGlyphBlur : public GM { 19public: 20 LargeGlyphBlur() {} 21 22protected: 23 SkString onShortName() override { 24 return SkString("largeglyphblur"); 25 } 26 27 SkISize onISize() override { 28 return SkISize::Make(kWidth, kHeight); 29 } 30 31 void onDraw(SkCanvas* canvas) override { 32 const char text[] = "Hamburgefons"; 33 34 SkPaint paint; 35 sk_tool_utils::set_portable_typeface(&paint); 36 paint.setTextSize(256); 37 paint.setAntiAlias(true); 38 39 // setup up maskfilter 40 static const SkScalar kSigma = SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(40)); 41 42 SkPaint blurPaint(paint); 43 SkAutoTUnref<SkMaskFilter> mf(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, kSigma)); 44 blurPaint.setMaskFilter(mf); 45 46 SkTextBlobBuilder builder; 47 48 sk_tool_utils::add_to_text_blob(&builder, text, paint, 0, 0); 49 50 SkAutoTUnref<const SkTextBlob> blob(builder.build()); 51 canvas->drawTextBlob(blob.get(), 10, 200, blurPaint); 52 canvas->drawTextBlob(blob.get(), 10, 200, paint); 53 54 size_t len = strlen(text); 55 canvas->drawText(text, len, 10, 500, blurPaint); 56 canvas->drawText(text, len, 10, 500, paint); 57 } 58 59private: 60 static const int kWidth = 1920; 61 static const int kHeight = 600; 62 63 typedef GM INHERITED; 64}; 65 66////////////////////////////////////////////////////////////////////////////// 67 68DEF_GM( return SkNEW(LargeGlyphBlur); ) 69} 70