Home | History | Annotate | Download | only in gm
      1 
      2 /*
      3  * Copyright 2011 Google Inc.
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 
      9 
     10 /* Tests text rendering with LCD and subpixel rendering turned on and off.
     11  */
     12 
     13 #include "gm.h"
     14 #include "SkCanvas.h"
     15 
     16 namespace skiagm {
     17 
     18 class LcdTextGM : public GM {
     19 public:
     20     LcdTextGM() {
     21         const int pointSize = 36;
     22         textHeight = SkIntToScalar(pointSize);
     23     }
     24 
     25 protected:
     26 
     27     SkString onShortName() {
     28         return SkString("lcdtext");
     29     }
     30 
     31     SkISize onISize() { return SkISize::Make(640, 480); }
     32 
     33     virtual void onDraw(SkCanvas* canvas) {
     34 
     35         y = textHeight;
     36         drawText(canvas, SkString("TEXT: SubpixelTrue LCDRenderTrue"),
     37                  true,  true);
     38         drawText(canvas, SkString("TEXT: SubpixelTrue LCDRenderFalse"),
     39                  true,  false);
     40         drawText(canvas, SkString("TEXT: SubpixelFalse LCDRenderTrue"),
     41                  false, true);
     42         drawText(canvas, SkString("TEXT: SubpixelFalse LCDRenderFalse"),
     43                  false, false);
     44     }
     45 
     46     void drawText(SkCanvas* canvas, const SkString& string,
     47                   bool subpixelTextEnabled, bool lcdRenderTextEnabled) {
     48         SkPaint paint;
     49         paint.setColor(SK_ColorBLACK);
     50         paint.setDither(true);
     51         paint.setAntiAlias(true);
     52         sk_tool_utils::set_portable_typeface(&paint);
     53         paint.setSubpixelText(subpixelTextEnabled);
     54         paint.setLCDRenderText(lcdRenderTextEnabled);
     55         paint.setTextSize(textHeight);
     56 
     57         canvas->drawText(string.c_str(), string.size(), 0, y, paint);
     58         y += textHeight;
     59     }
     60 
     61 private:
     62     typedef GM INHERITED;
     63     SkScalar y, textHeight;
     64 };
     65 
     66 ///////////////////////////////////////////////////////////////////////////////
     67 
     68 static GM* MyFactory(void*) { return new LcdTextGM; }
     69 static GMRegistry reg(MyFactory);
     70 
     71 }
     72