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

Side by Side Diff: gm/texteffects.cpp

Issue 2396953002: Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints" (Closed)
Patch Set: add tmp virtual to unroll legacy arithmodes Created 4 years, 2 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 | « gm/textbloblooper.cpp ('k') | gm/texturedomaineffect.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "gm.h" 8 #include "gm.h"
9 #include "SkBlurMask.h" 9 #include "SkBlurMask.h"
10 #include "SkBlurMaskFilter.h" 10 #include "SkBlurMaskFilter.h"
11 #include "SkReadBuffer.h" 11 #include "SkReadBuffer.h"
12 #include "SkTextBlob.h" 12 #include "SkTextBlob.h"
13 #include "SkWriteBuffer.h" 13 #include "SkWriteBuffer.h"
14 #include "SkLayerRasterizer.h" 14 #include "SkLayerRasterizer.h"
15 15
16 static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 16 static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
17 p.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle, 17 p.setMaskFilter(SkBlurMaskFilter::Make(kNormal_SkBlurStyle,
18 SkBlurMask::ConvertRadiusToSigma(SkIn tToScalar(3)))); 18 SkBlurMask::ConvertRadiusToSigma(SkIn tToScalar(3))));
19 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); 19 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
20 20
21 p.setMaskFilter(nullptr); 21 p.setMaskFilter(nullptr);
22 p.setStyle(SkPaint::kStroke_Style); 22 p.setStyle(SkPaint::kStroke_Style);
23 p.setStrokeWidth(SK_Scalar1); 23 p.setStrokeWidth(SK_Scalar1);
24 rastBuilder->addLayer(p); 24 rastBuilder->addLayer(p);
25 25
26 p.setAlpha(0x11); 26 p.setAlpha(0x11);
27 p.setStyle(SkPaint::kFill_Style); 27 p.setStyle(SkPaint::kFill_Style);
28 p.setXfermodeMode(SkXfermode::kSrc_Mode); 28 p.setBlendMode(SkBlendMode::kSrc);
29 rastBuilder->addLayer(p); 29 rastBuilder->addLayer(p);
30 } 30 }
31 31
32 static void r1(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 32 static void r1(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
33 rastBuilder->addLayer(p); 33 rastBuilder->addLayer(p);
34 34
35 p.setAlpha(0x40); 35 p.setAlpha(0x40);
36 p.setXfermodeMode(SkXfermode::kSrc_Mode); 36 p.setBlendMode(SkBlendMode::kSrc);
37 p.setStyle(SkPaint::kStroke_Style); 37 p.setStyle(SkPaint::kStroke_Style);
38 p.setStrokeWidth(SK_Scalar1*2); 38 p.setStrokeWidth(SK_Scalar1*2);
39 rastBuilder->addLayer(p); 39 rastBuilder->addLayer(p);
40 } 40 }
41 41
42 static void r2(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 42 static void r2(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
43 p.setStyle(SkPaint::kStrokeAndFill_Style); 43 p.setStyle(SkPaint::kStrokeAndFill_Style);
44 p.setStrokeWidth(SK_Scalar1*4); 44 p.setStrokeWidth(SK_Scalar1*4);
45 rastBuilder->addLayer(p); 45 rastBuilder->addLayer(p);
46 46
47 p.setStyle(SkPaint::kStroke_Style); 47 p.setStyle(SkPaint::kStroke_Style);
48 p.setStrokeWidth(SK_Scalar1*3/2); 48 p.setStrokeWidth(SK_Scalar1*3/2);
49 p.setXfermodeMode(SkXfermode::kClear_Mode); 49 p.setBlendMode(SkBlendMode::kClear);
50 rastBuilder->addLayer(p); 50 rastBuilder->addLayer(p);
51 } 51 }
52 52
53 static void r3(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 53 static void r3(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
54 p.setStyle(SkPaint::kStroke_Style); 54 p.setStyle(SkPaint::kStroke_Style);
55 p.setStrokeWidth(SK_Scalar1*3); 55 p.setStrokeWidth(SK_Scalar1*3);
56 rastBuilder->addLayer(p); 56 rastBuilder->addLayer(p);
57 57
58 p.setAlpha(0x20); 58 p.setAlpha(0x20);
59 p.setStyle(SkPaint::kFill_Style); 59 p.setStyle(SkPaint::kFill_Style);
60 p.setXfermodeMode(SkXfermode::kSrc_Mode); 60 p.setBlendMode(SkBlendMode::kSrc);
61 rastBuilder->addLayer(p); 61 rastBuilder->addLayer(p);
62 } 62 }
63 63
64 static void r4(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 64 static void r4(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
65 p.setAlpha(0x60); 65 p.setAlpha(0x60);
66 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); 66 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
67 67
68 p.setAlpha(0xFF); 68 p.setAlpha(0xFF);
69 p.setXfermodeMode(SkXfermode::kClear_Mode); 69 p.setBlendMode(SkBlendMode::kClear);
70 rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2); 70 rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2);
71 71
72 p.setXfermode(nullptr); 72 p.setBlendMode(SkBlendMode::kSrcOver);
73 rastBuilder->addLayer(p); 73 rastBuilder->addLayer(p);
74 } 74 }
75 75
76 #include "SkDiscretePathEffect.h" 76 #include "SkDiscretePathEffect.h"
77 77
78 static void r5(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 78 static void r5(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
79 rastBuilder->addLayer(p); 79 rastBuilder->addLayer(p);
80 80
81 p.setPathEffect(SkDiscretePathEffect::Make(SK_Scalar1*4, SK_Scalar1*3)); 81 p.setPathEffect(SkDiscretePathEffect::Make(SK_Scalar1*4, SK_Scalar1*3));
82 p.setXfermodeMode(SkXfermode::kSrcOut_Mode); 82 p.setBlendMode(SkBlendMode::kSrcOut);
83 rastBuilder->addLayer(p); 83 rastBuilder->addLayer(p);
84 } 84 }
85 85
86 static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 86 static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
87 rastBuilder->addLayer(p); 87 rastBuilder->addLayer(p);
88 88
89 p.setAntiAlias(false); 89 p.setAntiAlias(false);
90 SkLayerRasterizer::Builder rastBuilder2; 90 SkLayerRasterizer::Builder rastBuilder2;
91 r5(&rastBuilder2, p); 91 r5(&rastBuilder2, p);
92 p.setRasterizer(rastBuilder2.detach()); 92 p.setRasterizer(rastBuilder2.detach());
93 p.setXfermodeMode(SkXfermode::kClear_Mode); 93 p.setBlendMode(SkBlendMode::kClear);
94 rastBuilder->addLayer(p); 94 rastBuilder->addLayer(p);
95 } 95 }
96 96
97 #include "Sk2DPathEffect.h" 97 #include "Sk2DPathEffect.h"
98 98
99 static sk_sp<SkPathEffect> MakeDotEffect(SkScalar radius, const SkMatrix& matrix ) { 99 static sk_sp<SkPathEffect> MakeDotEffect(SkScalar radius, const SkMatrix& matrix ) {
100 SkPath path; 100 SkPath path;
101 path.addCircle(0, 0, radius); 101 path.addCircle(0, 0, radius);
102 return SkPath2DPathEffect::Make(matrix, path); 102 return SkPath2DPathEffect::Make(matrix, path);
103 } 103 }
104 104
105 static void r7(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 105 static void r7(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
106 SkMatrix lattice; 106 SkMatrix lattice;
107 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0); 107 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
108 lattice.postSkew(SK_Scalar1/3, 0, 0, 0); 108 lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
109 p.setPathEffect(MakeDotEffect(SK_Scalar1*4, lattice)); 109 p.setPathEffect(MakeDotEffect(SK_Scalar1*4, lattice));
110 rastBuilder->addLayer(p); 110 rastBuilder->addLayer(p);
111 } 111 }
112 112
113 static void r8(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 113 static void r8(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
114 rastBuilder->addLayer(p); 114 rastBuilder->addLayer(p);
115 115
116 SkMatrix lattice; 116 SkMatrix lattice;
117 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0); 117 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
118 lattice.postSkew(SK_Scalar1/3, 0, 0, 0); 118 lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
119 p.setPathEffect(MakeDotEffect(SK_Scalar1*2, lattice)); 119 p.setPathEffect(MakeDotEffect(SK_Scalar1*2, lattice));
120 p.setXfermodeMode(SkXfermode::kClear_Mode); 120 p.setBlendMode(SkBlendMode::kClear);
121 rastBuilder->addLayer(p); 121 rastBuilder->addLayer(p);
122 122
123 p.setPathEffect(nullptr); 123 p.setPathEffect(nullptr);
124 p.setXfermode(nullptr); 124 p.setBlendMode(SkBlendMode::kSrcOver);
125 p.setStyle(SkPaint::kStroke_Style); 125 p.setStyle(SkPaint::kStroke_Style);
126 p.setStrokeWidth(SK_Scalar1); 126 p.setStrokeWidth(SK_Scalar1);
127 rastBuilder->addLayer(p); 127 rastBuilder->addLayer(p);
128 } 128 }
129 129
130 static void r9(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 130 static void r9(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
131 rastBuilder->addLayer(p); 131 rastBuilder->addLayer(p);
132 132
133 SkMatrix lattice; 133 SkMatrix lattice;
134 lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0); 134 lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0);
135 lattice.postRotate(SkIntToScalar(30), 0, 0); 135 lattice.postRotate(SkIntToScalar(30), 0, 0);
136 p.setPathEffect(SkLine2DPathEffect::Make(SK_Scalar1*2, lattice)); 136 p.setPathEffect(SkLine2DPathEffect::Make(SK_Scalar1*2, lattice));
137 p.setXfermodeMode(SkXfermode::kClear_Mode); 137 p.setBlendMode(SkBlendMode::kClear);
138 rastBuilder->addLayer(p); 138 rastBuilder->addLayer(p);
139 139
140 p.setPathEffect(nullptr); 140 p.setPathEffect(nullptr);
141 p.setXfermode(nullptr); 141 p.setBlendMode(SkBlendMode::kSrcOver);
142 p.setStyle(SkPaint::kStroke_Style); 142 p.setStyle(SkPaint::kStroke_Style);
143 p.setStrokeWidth(SK_Scalar1); 143 p.setStrokeWidth(SK_Scalar1);
144 rastBuilder->addLayer(p); 144 rastBuilder->addLayer(p);
145 } 145 }
146 146
147 typedef void (*raster_proc)(SkLayerRasterizer::Builder*, SkPaint&); 147 typedef void (*raster_proc)(SkLayerRasterizer::Builder*, SkPaint&);
148 148
149 constexpr raster_proc gRastProcs[] = { 149 constexpr raster_proc gRastProcs[] = {
150 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9 150 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9
151 }; 151 };
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 489
490 SkScalar start = textPt.fX; 490 SkScalar start = textPt.fX;
491 SkScalar end = posX; 491 SkScalar end = posX;
492 SkScalar uPos = pos[0].fY + uWidth; 492 SkScalar uPos = pos[0].fY + uWidth;
493 SkPath underline = create_underline(intersections, start, end, uPos, uWi dth, textSize); 493 SkPath underline = create_underline(intersections, start, end, uPos, uWi dth, textSize);
494 paint.setStyle(SkPaint::kStroke_Style); 494 paint.setStyle(SkPaint::kStroke_Style);
495 canvas->drawPath(underline, paint); 495 canvas->drawPath(underline, paint);
496 canvas->translate(0, textSize * 1.3f); 496 canvas->translate(0, textSize * 1.3f);
497 } 497 }
498 } 498 }
OLDNEW
« no previous file with comments | « gm/textbloblooper.cpp ('k') | gm/texturedomaineffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698