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

Side by Side Diff: gm/lcdblendmodes.cpp

Issue 1313623002: Add support for blending of LCD for all blend modes. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Added gm Created 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | include/gpu/effects/GrPorterDuffXferProcessor.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8
robertphillips 2015/09/14 16:04:14 This doesn't seem correct ?
egdaniel 2015/09/15 14:26:10 Done.
9 /* Tests text rendering with LCD and subpixel rendering turned on and off.
10 */
11
12 #include "gm.h"
13 #include "SkCanvas.h"
robertphillips 2015/09/14 16:04:14 Do we need SkPicture*.h ?
egdaniel 2015/09/15 14:26:10 Done.
14 #include "SkPicture.h"
15 #include "SkPictureImageFilter.h"
16 #include "SkPictureRecorder.h"
17 #include "SkSurface.h"
18
19
20 class LcdBlendGM : public skiagm::GM {
21 public:
22 LcdBlendGM() {
robertphillips 2015/09/14 16:04:14 kPointSize ?
egdaniel 2015/09/15 14:26:10 Done.
23 const int pointSize = 36;
robertphillips 2015/09/14 16:04:14 fTextHeight ?
egdaniel 2015/09/15 14:26:10 Done.
24 textHeight = SkIntToScalar(pointSize);
25 }
26
27 protected:
28
29 void onOnceBeforeDraw() override {
30 fTypeface.reset(sk_tool_utils::create_portable_typeface("serif", SkTypef ace::kNormal));
31 }
robertphillips 2015/09/14 16:04:14 \n ? override ?
egdaniel 2015/09/15 14:26:10 Done.
32 SkString onShortName() {
33 SkString name("lcdblendmodes");
34 name.append(sk_tool_utils::major_platform_os_name());
35 return name;
36 }
37
robertphillips 2015/09/14 16:04:14 override ?
egdaniel 2015/09/15 14:26:10 Done.
38 SkISize onISize() { return SkISize::Make(720, 750); }
39
robertphillips 2015/09/14 16:04:14 override ?
egdaniel 2015/09/15 14:26:10 Done.
40 virtual void onDraw(SkCanvas* canvas) {
robertphillips 2015/09/14 16:04:14 this-> ?
egdaniel 2015/09/15 14:26:10 Done.
41 drawColumn(canvas, SK_ColorBLACK, SK_ColorWHITE);
42 canvas->translate(240, 0);
43 drawColumn(canvas, SK_ColorWHITE, SK_ColorBLACK);
44 canvas->translate(240, 0);
45 drawColumn(canvas, SK_ColorBLUE, SK_ColorMAGENTA);
46 }
47
48 void drawColumn(SkCanvas* canvas, SkColor backgroundColor, SkColor textColor ) {
49 const struct {
50 SkXfermode::Mode fMode;
51 const char* fLabel;
52 } gModes[] = {
53 { SkXfermode::kClear_Mode, "Clear" },
54 { SkXfermode::kSrc_Mode, "Src" },
55 { SkXfermode::kDst_Mode, "Dst" },
56 { SkXfermode::kSrcOver_Mode, "SrcOver" },
57 { SkXfermode::kDstOver_Mode, "DstOver" },
58 { SkXfermode::kSrcIn_Mode, "SrcIn" },
59 { SkXfermode::kDstIn_Mode, "DstIn" },
60 { SkXfermode::kSrcOut_Mode, "SrcOut" },
61 { SkXfermode::kDstOut_Mode, "DstOut" },
62 { SkXfermode::kSrcATop_Mode, "SrcATop" },
63 { SkXfermode::kDstATop_Mode, "DstATop" },
64 { SkXfermode::kXor_Mode, "Xor" },
65 { SkXfermode::kPlus_Mode, "Plus" },
66 { SkXfermode::kModulate_Mode, "Modulate" },
67 { SkXfermode::kScreen_Mode, "Screen" },
68 { SkXfermode::kOverlay_Mode, "Overlay" },
69 { SkXfermode::kDarken_Mode, "Darken" },
70 { SkXfermode::kLighten_Mode, "Lighten" },
71 { SkXfermode::kColorDodge_Mode, "ColorDodge" },
72 { SkXfermode::kColorBurn_Mode, "ColorBurn" },
73 { SkXfermode::kHardLight_Mode, "HardLight" },
74 { SkXfermode::kSoftLight_Mode, "SoftLight" },
75 { SkXfermode::kDifference_Mode, "Difference" },
76 { SkXfermode::kExclusion_Mode, "Exclusion" },
77 { SkXfermode::kMultiply_Mode, "Multiply" },
78 { SkXfermode::kHue_Mode, "Hue" },
79 { SkXfermode::kSaturation_Mode, "Saturation" },
80 { SkXfermode::kColor_Mode, "Color" },
81 { SkXfermode::kLuminosity_Mode, "Luminosity" },
82 };
83 // Draw background rect
84 SkPaint backgroundPaint;
85 backgroundPaint.setColor(backgroundColor);
86 canvas->drawRectCoords(0, 0, 240, 750, backgroundPaint);
87 SkScalar y = 25;
88 for (size_t m = 0; m < SK_ARRAY_COUNT(gModes); m++) {
robertphillips 2015/09/14 16:04:14 make this one line ?
egdaniel 2015/09/15 14:26:10 Done.
89 SkAutoTUnref<SkXfermode> xfermode;
90 xfermode.reset(SkXfermode::Create(gModes[m].fMode));
91 SkPaint paint;
92 paint.setColor(textColor);
93 paint.setAntiAlias(true);
94 paint.setSubpixelText(true);
95 paint.setLCDRenderText(true);
96 paint.setTextSize(25);
97 paint.setXfermode(xfermode);
98 paint.setTypeface(fTypeface);
99
robertphillips 2015/09/14 16:04:14 Why make a SkString just to get the c_str out ?
egdaniel 2015/09/15 14:26:10 Done.
100 SkString string(gModes[m].fLabel);
101 canvas->drawText(string.c_str(), string.size(), 0, y, paint);
bsalomon 2015/09/14 14:32:45 should we have a variation that uses variable shad
egdaniel 2015/09/15 14:26:10 Done.
102 y+=25;
103 }
104 }
105
106 private:
robertphillips 2015/09/14 16:04:14 put this last ?
egdaniel 2015/09/15 14:26:10 Done.
107 typedef skiagm::GM INHERITED;
108 SkScalar textHeight;
109 SkAutoTUnref<SkTypeface> fTypeface;
110 };
111
112 DEF_GM( return new LcdBlendGM; )
OLDNEW
« no previous file with comments | « no previous file | include/gpu/effects/GrPorterDuffXferProcessor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698