Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Unified Diff: gm/lcdtext.cpp

Issue 617353003: fix prev change to tooBigForLCD, and add test (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/core/SkPaint.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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; )
« no previous file with comments | « no previous file | src/core/SkPaint.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698