| Index: gm/lcdtext.cpp
|
| diff --git a/gm/lcdtext.cpp b/gm/lcdtext.cpp
|
| index b4db0ff12af378bbdc00f0f1030cfa4394702d79..0b5739c7abb95d37dfd0c540b263ea0b0389cf83 100644
|
| --- a/gm/lcdtext.cpp
|
| +++ b/gm/lcdtext.cpp
|
| @@ -13,25 +13,23 @@
|
| #include "gm.h"
|
| #include "SkCanvas.h"
|
|
|
| -namespace skiagm {
|
| -
|
| -class LcdTextGM : public GM {
|
| +class LcdTextGM : public skiagm::GM {
|
| public:
|
| LcdTextGM() {
|
| const int pointSize = 36;
|
| textHeight = SkIntToScalar(pointSize);
|
| }
|
| -
|
| +
|
| protected:
|
| -
|
| +
|
| SkString onShortName() {
|
| return SkString("lcdtext");
|
| }
|
| -
|
| +
|
| SkISize onISize() { return SkISize::Make(640, 480); }
|
| -
|
| +
|
| virtual void onDraw(SkCanvas* canvas) {
|
| -
|
| +
|
| y = textHeight;
|
| drawText(canvas, SkString("TEXT: SubpixelTrue LCDRenderTrue"),
|
| true, true);
|
| @@ -42,7 +40,7 @@ protected:
|
| drawText(canvas, SkString("TEXT: SubpixelFalse LCDRenderFalse"),
|
| false, false);
|
| }
|
| -
|
| +
|
| void drawText(SkCanvas* canvas, const SkString& string,
|
| bool subpixelTextEnabled, bool lcdRenderTextEnabled) {
|
| SkPaint paint;
|
| @@ -53,19 +51,78 @@ protected:
|
| paint.setSubpixelText(subpixelTextEnabled);
|
| paint.setLCDRenderText(lcdRenderTextEnabled);
|
| paint.setTextSize(textHeight);
|
| -
|
| +
|
| canvas->drawText(string.c_str(), string.size(), 0, y, paint);
|
| y += textHeight;
|
| }
|
| -
|
| +
|
| private:
|
| - typedef GM INHERITED;
|
| + typedef skiagm::GM INHERITED;
|
| SkScalar y, textHeight;
|
| };
|
|
|
| -///////////////////////////////////////////////////////////////////////////////
|
| +/*
|
| + * Skia will automatically disable LCD requests if the total size exceeds some limit
|
| + * (hard coded in this test for now, as it is now avaiable as an API)
|
| + *
|
| + * Test this both by changing "textsize" and by changing the computed size (textsize * CTM)
|
| + */
|
| +class LcdTextSizeGM : public skiagm::GM {
|
| + enum {
|
| + kLCDTextSizeLimit = 48
|
| + };
|
| +
|
| + static void ScaleAbout(SkCanvas* canvas, SkScalar sx, SkScalar sy, SkScalar px, SkScalar py) {
|
| + SkMatrix m;
|
| + m.setScale(sx, sy, px, py);
|
| + canvas->concat(m);
|
| + }
|
|
|
| -static GM* MyFactory(void*) { return new LcdTextGM; }
|
| -static GMRegistry reg(MyFactory);
|
| +public:
|
| + LcdTextSizeGM() {}
|
| +
|
| +protected:
|
| + SkString onShortName() {
|
| + return SkString("lcdtextsize");
|
| + }
|
| +
|
| + SkISize onISize() { return SkISize::Make(320, 120); }
|
| +
|
| + virtual void onDraw(SkCanvas* canvas) {
|
| + const char* lcd_text = "LCD";
|
| + const char* gray_text = "GRAY";
|
| +
|
| + SkPaint paint;
|
| + paint.setAntiAlias(true);
|
| + paint.setLCDRenderText(true);
|
| +
|
| + const struct {
|
| + SkPoint fLoc;
|
| + SkScalar fTextSize;
|
| + SkScalar fScale;
|
| + const char* fText;
|
| + } rec[] = {
|
| + { { 10, 50 }, kLCDTextSizeLimit - 1, 1, lcd_text },
|
| + { { 160, 50 }, kLCDTextSizeLimit + 1, 1, gray_text },
|
| + { { 10, 100 }, kLCDTextSizeLimit / 2, 1.99f, lcd_text },
|
| + { { 160, 100 }, kLCDTextSizeLimit / 2, 2.01f, gray_text },
|
| + };
|
| +
|
| + for (size_t i = 0; i < SK_ARRAY_COUNT(rec); ++i) {
|
| + const SkPoint loc = rec[i].fLoc;
|
| + SkAutoCanvasRestore acr(canvas, true);
|
| +
|
| + paint.setTextSize(rec[i].fTextSize);
|
| + ScaleAbout(canvas, rec[i].fScale, rec[i].fScale, loc.x(), loc.y());
|
| + canvas->drawText(rec[i].fText, strlen(rec[i].fText), loc.x(), loc.y(), paint);
|
| + }
|
| + }
|
| +
|
| +private:
|
| + typedef skiagm::GM INHERITED;
|
| +};
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////
|
|
|
| -}
|
| +DEF_GM( return new LcdTextGM; )
|
| +DEF_GM( return new LcdTextSizeGM; )
|
|
|