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

Side by Side Diff: gm/xfermodes3.cpp

Issue 1817383002: switch surface to sk_sp (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 9 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/verylargebitmap.cpp ('k') | gyp/skia_for_android_framework_defines.gypi » ('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 2013 Google Inc. 2 * Copyright 2013 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 "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkGradientShader.h" 10 #include "SkGradientShader.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 SK_ColorTRANSPARENT, 53 SK_ColorTRANSPARENT,
54 SK_ColorBLUE, 54 SK_ColorBLUE,
55 0x80808000 55 0x80808000
56 }; 56 };
57 57
58 static const SkColor kBmpAlphas[] = { 58 static const SkColor kBmpAlphas[] = {
59 0xff, 59 0xff,
60 0x80, 60 0x80,
61 }; 61 };
62 62
63 SkAutoTUnref<SkSurface> tempSurface(this->possiblyCreateTempSurface(canv as, kSize, kSize)); 63 auto tempSurface(this->possiblyCreateTempSurface(canvas, kSize, kSize));
64 64
65 int test = 0; 65 int test = 0;
66 int x = 0, y = 0; 66 int x = 0, y = 0;
67 static const struct { SkPaint::Style fStyle; SkScalar fWidth; } kStrokes [] = { 67 static const struct { SkPaint::Style fStyle; SkScalar fWidth; } kStrokes [] = {
68 {SkPaint::kFill_Style, 0}, 68 {SkPaint::kFill_Style, 0},
69 {SkPaint::kStroke_Style, SkIntToScalar(kSize) / 2}, 69 {SkPaint::kStroke_Style, SkIntToScalar(kSize) / 2},
70 }; 70 };
71 for (size_t s = 0; s < SK_ARRAY_COUNT(kStrokes); ++s) { 71 for (size_t s = 0; s < SK_ARRAY_COUNT(kStrokes); ++s) {
72 for (size_t m = 0; m <= SkXfermode::kLastMode; ++m) { 72 for (size_t m = 0; m <= SkXfermode::kLastMode; ++m) {
73 SkXfermode::Mode mode = static_cast<SkXfermode::Mode>(m); 73 SkXfermode::Mode mode = static_cast<SkXfermode::Mode>(m);
74 canvas->drawText(SkXfermode::ModeName(mode), 74 canvas->drawText(SkXfermode::ModeName(mode),
75 strlen(SkXfermode::ModeName(mode)), 75 strlen(SkXfermode::ModeName(mode)),
76 SkIntToScalar(x), 76 SkIntToScalar(x),
77 SkIntToScalar(y + kSize + 3) + labelP.getTextSi ze(), 77 SkIntToScalar(y + kSize + 3) + labelP.getTextSi ze(),
78 labelP); 78 labelP);
79 for (size_t c = 0; c < SK_ARRAY_COUNT(kSolidColors); ++c) { 79 for (size_t c = 0; c < SK_ARRAY_COUNT(kSolidColors); ++c) {
80 SkPaint modePaint; 80 SkPaint modePaint;
81 modePaint.setXfermodeMode(mode); 81 modePaint.setXfermodeMode(mode);
82 modePaint.setColor(kSolidColors[c]); 82 modePaint.setColor(kSolidColors[c]);
83 modePaint.setStyle(kStrokes[s].fStyle); 83 modePaint.setStyle(kStrokes[s].fStyle);
84 modePaint.setStrokeWidth(kStrokes[s].fWidth); 84 modePaint.setStrokeWidth(kStrokes[s].fWidth);
85 85
86 this->drawMode(canvas, x, y, kSize, kSize, modePaint, tempSu rface); 86 this->drawMode(canvas, x, y, kSize, kSize, modePaint, tempSu rface.get());
87 87
88 ++test; 88 ++test;
89 x += kSize + 10; 89 x += kSize + 10;
90 if (!(test % kTestsPerRow)) { 90 if (!(test % kTestsPerRow)) {
91 x = 0; 91 x = 0;
92 y += kSize + 30; 92 y += kSize + 30;
93 } 93 }
94 } 94 }
95 for (size_t a = 0; a < SK_ARRAY_COUNT(kBmpAlphas); ++a) { 95 for (size_t a = 0; a < SK_ARRAY_COUNT(kBmpAlphas); ++a) {
96 SkPaint modePaint; 96 SkPaint modePaint;
97 modePaint.setXfermodeMode(mode); 97 modePaint.setXfermodeMode(mode);
98 modePaint.setAlpha(kBmpAlphas[a]); 98 modePaint.setAlpha(kBmpAlphas[a]);
99 modePaint.setShader(fBmpShader); 99 modePaint.setShader(fBmpShader);
100 modePaint.setStyle(kStrokes[s].fStyle); 100 modePaint.setStyle(kStrokes[s].fStyle);
101 modePaint.setStrokeWidth(kStrokes[s].fWidth); 101 modePaint.setStrokeWidth(kStrokes[s].fWidth);
102 102
103 this->drawMode(canvas, x, y, kSize, kSize, modePaint, tempSu rface); 103 this->drawMode(canvas, x, y, kSize, kSize, modePaint, tempSu rface.get());
104 104
105 ++test; 105 ++test;
106 x += kSize + 10; 106 x += kSize + 10;
107 if (!(test % kTestsPerRow)) { 107 if (!(test % kTestsPerRow)) {
108 x = 0; 108 x = 0;
109 y += kSize + 30; 109 y += kSize + 30;
110 } 110 }
111 } 111 }
112 } 112 }
113 } 113 }
114 } 114 }
115 115
116 private: 116 private:
117 /** 117 /**
118 * GrContext has optimizations around full rendertarget draws that can be re placed with clears. 118 * GrContext has optimizations around full rendertarget draws that can be re placed with clears.
119 * We are trying to test those. We could use saveLayer() to create small SkG puDevices but 119 * We are trying to test those. We could use saveLayer() to create small SkG puDevices but
120 * saveLayer() uses the texture cache. This means that the actual render tar get may be larger 120 * saveLayer() uses the texture cache. This means that the actual render tar get may be larger
121 * than the layer. Because the clip will contain the layer's bounds, no draw s will be full-RT. 121 * than the layer. Because the clip will contain the layer's bounds, no draw s will be full-RT.
122 * So when running on a GPU canvas we explicitly create a temporary canvas u sing a texture with 122 * So when running on a GPU canvas we explicitly create a temporary canvas u sing a texture with
123 * dimensions exactly matching the layer size. 123 * dimensions exactly matching the layer size.
124 */ 124 */
125 SkSurface* possiblyCreateTempSurface(SkCanvas* baseCanvas, int w, int h) { 125 sk_sp<SkSurface> possiblyCreateTempSurface(SkCanvas* baseCanvas, int w, int h) {
126 #if SK_SUPPORT_GPU 126 #if SK_SUPPORT_GPU
127 GrContext* context = baseCanvas->getGrContext(); 127 GrContext* context = baseCanvas->getGrContext();
128 SkImageInfo baseInfo = baseCanvas->imageInfo(); 128 SkImageInfo baseInfo = baseCanvas->imageInfo();
129 SkImageInfo info = SkImageInfo::Make(w, h, baseInfo.colorType(), baseInf o.alphaType(), 129 SkImageInfo info = SkImageInfo::Make(w, h, baseInfo.colorType(), baseInf o.alphaType(),
130 baseInfo.profileType()); 130 baseInfo.profileType());
131 return SkSurface::NewRenderTarget(context, SkBudgeted::kNo, info, 0, nul lptr); 131 return SkSurface::MakeRenderTarget(context, SkBudgeted::kNo, info, 0, nu llptr);
132 #else 132 #else
133 return nullptr; 133 return nullptr;
134 #endif 134 #endif
135 } 135 }
136 136
137 void drawMode(SkCanvas* canvas, 137 void drawMode(SkCanvas* canvas,
138 int x, int y, int w, int h, 138 int x, int y, int w, int h,
139 const SkPaint& modePaint, SkSurface* surface) { 139 const SkPaint& modePaint, SkSurface* surface) {
140 canvas->save(); 140 canvas->save();
141 canvas->translate(SkIntToScalar(x), SkIntToScalar(y)); 141 canvas->translate(SkIntToScalar(x), SkIntToScalar(y));
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 sk_sp<SkShader> fBmpShader; 220 sk_sp<SkShader> fBmpShader;
221 221
222 typedef GM INHERITED; 222 typedef GM INHERITED;
223 }; 223 };
224 224
225 ////////////////////////////////////////////////////////////////////////////// 225 //////////////////////////////////////////////////////////////////////////////
226 226
227 DEF_GM(return new Xfermodes3GM;) 227 DEF_GM(return new Xfermodes3GM;)
228 228
229 } 229 }
OLDNEW
« no previous file with comments | « gm/verylargebitmap.cpp ('k') | gyp/skia_for_android_framework_defines.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698