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

Side by Side Diff: gm/imagescalealigned.cpp

Issue 1810813003: update callsites for Make image factories (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: start to take advantage of sk_sp drawImage 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/imagefromyuvtextures.cpp ('k') | gm/imagesource.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 2015 Google Inc. 2 * Copyright 2015 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 9
10 #include "SkImage.h" 10 #include "SkImage.h"
11 #include "SkSurface.h" 11 #include "SkSurface.h"
12 #include "SkTArray.h" 12 #include "SkTArray.h"
13 13
14 class ImageScaleAlignedGM : public skiagm::GM { 14 class ImageScaleAlignedGM : public skiagm::GM {
15 protected: 15 protected:
16 void onOnceBeforeDraw() override { 16 void onOnceBeforeDraw() override {
17 const SkVector vectors[] = { { 1, 0 }, { 0, 1 } }; 17 const SkVector vectors[] = { { 1, 0 }, { 0, 1 } };
18 18
19 for (size_t i = 0; i < SK_ARRAY_COUNT(vectors); ++i) { 19 for (size_t i = 0; i < SK_ARRAY_COUNT(vectors); ++i) {
20 auto& set = fSets.push_back(); 20 auto& set = fSets.push_back();
21 21
22 set.fVector = vectors[i]; 22 set.fVector = vectors[i];
23 set.fImages.push_back().reset(MakeImage(vectors[i], SK_ColorGREEN)); 23 set.fImages.push_back() = MakeImage(vectors[i], SK_ColorGREEN);
24 set.fScales.push_back() = 1; 24 set.fScales.push_back() = 1;
25 set.fImages.push_back().reset(MakeImage(vectors[i], SK_ColorRED)); 25 set.fImages.push_back() = MakeImage(vectors[i], SK_ColorRED);
26 set.fScales.push_back() = kStretchFactor; 26 set.fScales.push_back() = kStretchFactor;
27 set.fImages.push_back().reset(MakeImage(vectors[i], SK_ColorGREEN)); 27 set.fImages.push_back() = MakeImage(vectors[i], SK_ColorGREEN);
28 set.fScales.push_back() = 1; 28 set.fScales.push_back() = 1;
29 } 29 }
30 } 30 }
31 31
32 SkString onShortName() override { 32 SkString onShortName() override {
33 return SkString("image_scale_aligned"); 33 return SkString("image_scale_aligned");
34 } 34 }
35 35
36 SkISize onISize() override { 36 SkISize onISize() override {
37 return SkISize::Make(580, 780); 37 return SkISize::Make(580, 780);
(...skipping 18 matching lines...) Expand all
56 for (size_t i = 0; i < SK_ARRAY_COUNT(cfgs); ++i) { 56 for (size_t i = 0; i < SK_ARRAY_COUNT(cfgs); ++i) {
57 SkAutoCanvasRestore acr(canvas, true); 57 SkAutoCanvasRestore acr(canvas, true);
58 canvas->translate(cfgs[i].offset.x(), cfgs[i].offset.y()); 58 canvas->translate(cfgs[i].offset.x(), cfgs[i].offset.y());
59 canvas->scale(cfgs[i].scale.x(), cfgs[i].scale.y()); 59 canvas->scale(cfgs[i].scale.x(), cfgs[i].scale.y());
60 drawSets(canvas); 60 drawSets(canvas);
61 } 61 }
62 } 62 }
63 63
64 private: 64 private:
65 struct ImageSet { 65 struct ImageSet {
66 SkSTArray<3, SkAutoTUnref<SkImage>, true> fImages; 66 SkSTArray<3, sk_sp<SkImage>, true> fImages;
67 SkSTArray<3, SkScalar> fScales; 67 SkSTArray<3, SkScalar> fScales;
68 SkVector fVector; 68 SkVector fVector;
69 }; 69 };
70 70
71 static SkImage* MakeImage(const SkVector& vec, SkColor color) { 71 static sk_sp<SkImage> MakeImage(const SkVector& vec, SkColor color) {
72 const SkPoint start = SkPoint::Make(vec.y() * kSegLen / 2, vec.x() * kSe gLen / 2); 72 const SkPoint start = SkPoint::Make(vec.y() * kSegLen / 2, vec.x() * kSe gLen / 2);
73 const SkPoint end = SkPoint::Make(start.x() + vec.x() * (kSegLen - 1), 73 const SkPoint end = SkPoint::Make(start.x() + vec.x() * (kSegLen - 1),
74 start.y() + vec.y() * (kSegLen - 1)) ; 74 start.y() + vec.y() * (kSegLen - 1)) ;
75 75
76 SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(kSegLen, k SegLen)); 76 SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterN32Premul(kSegLen, k SegLen));
77 surface->getCanvas()->clear(SK_ColorTRANSPARENT); 77 surface->getCanvas()->clear(SK_ColorTRANSPARENT);
78 78
79 SkPaint paint; 79 SkPaint paint;
80 paint.setAntiAlias(true); 80 paint.setAntiAlias(true);
81 const SkRect border = SkRect::MakeIWH(kSegLen, kSegLen).makeInset(.5f, . 5f); 81 const SkRect border = SkRect::MakeIWH(kSegLen, kSegLen).makeInset(.5f, . 5f);
82 paint.setColor(SK_ColorBLUE); 82 paint.setColor(SK_ColorBLUE);
83 paint.setStyle(SkPaint::kStroke_Style); 83 paint.setStyle(SkPaint::kStroke_Style);
84 surface->getCanvas()->drawRect(border, paint); 84 surface->getCanvas()->drawRect(border, paint);
85 85
86 paint.setColor(SK_ColorBLACK); 86 paint.setColor(SK_ColorBLACK);
87 surface->getCanvas()->drawLine(start.x(), start.y(), end.x(), end.y(), p aint); 87 surface->getCanvas()->drawLine(start.x(), start.y(), end.x(), end.y(), p aint);
88 surface->getCanvas()->drawPoint(start.x(), start.y(), color); 88 surface->getCanvas()->drawPoint(start.x(), start.y(), color);
89 surface->getCanvas()->drawPoint(end.x(), end.y(), color); 89 surface->getCanvas()->drawPoint(end.x(), end.y(), color);
90 90
91 return surface->newImageSnapshot(); 91 return surface->makeImageSnapshot();
92 } 92 }
93 93
94 void drawSets(SkCanvas* canvas) const { 94 void drawSets(SkCanvas* canvas) const {
95 SkAutoCanvasRestore acr(canvas, true); 95 SkAutoCanvasRestore acr(canvas, true);
96 96
97 const SkFilterQuality filters[] = { 97 const SkFilterQuality filters[] = {
98 kNone_SkFilterQuality, 98 kNone_SkFilterQuality,
99 kLow_SkFilterQuality, 99 kLow_SkFilterQuality,
100 kMedium_SkFilterQuality, 100 kMedium_SkFilterQuality,
101 kHigh_SkFilterQuality 101 kHigh_SkFilterQuality
(...skipping 22 matching lines...) Expand all
124 SkASSERT(set.fImages.count() == set.fScales.count()); 124 SkASSERT(set.fImages.count() == set.fScales.count());
125 125
126 SkPoint pt = SkPoint::Make(0, 0); 126 SkPoint pt = SkPoint::Make(0, 0);
127 for (int i = 0; i < set.fImages.count(); ++i) { 127 for (int i = 0; i < set.fImages.count(); ++i) {
128 auto& img = set.fImages[i]; 128 auto& img = set.fImages[i];
129 const SkRect dst = 129 const SkRect dst =
130 SkRect::MakeXYWH(pt.x(), pt.y(), 130 SkRect::MakeXYWH(pt.x(), pt.y(),
131 img->width() * (1 + (set.fScales[i] - 1) * set.fVector.x()), 131 img->width() * (1 + (set.fScales[i] - 1) * set.fVector.x()),
132 img->height() * (1 + (set.fScales[i] - 1) * set.fVector.y()) ); 132 img->height() * (1 + (set.fScales[i] - 1) * set.fVector.y()) );
133 133
134 canvas->drawImageRect(img, dst, &paint); 134 canvas->drawImageRect(img.get(), dst, &paint);
135 pt.offset(dst.width() * set.fVector.x(), dst.height() * set.fVector. y()); 135 pt.offset(dst.width() * set.fVector.x(), dst.height() * set.fVector. y());
136 } 136 }
137 137
138 return pt; 138 return pt;
139 } 139 }
140 140
141 static const unsigned kSegLen = 15; 141 static const unsigned kSegLen = 15;
142 static const unsigned kStretchFactor = 4; 142 static const unsigned kStretchFactor = 4;
143 SkSTArray<2, ImageSet> fSets; 143 SkSTArray<2, ImageSet> fSets;
144 144
145 typedef GM INHERITED; 145 typedef GM INHERITED;
146 }; 146 };
147 147
148 DEF_GM(return new ImageScaleAlignedGM();) 148 DEF_GM(return new ImageScaleAlignedGM();)
OLDNEW
« no previous file with comments | « gm/imagefromyuvtextures.cpp ('k') | gm/imagesource.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698