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

Side by Side Diff: samplecode/SampleHairline.cpp

Issue 888283002: allow GMs to animate (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: switch all existing animations to use animatePulse Created 5 years, 10 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 | « samplecode/SampleHT.cpp ('k') | samplecode/SamplePathEffects.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 "SampleCode.h" 8 #include "SampleCode.h"
9 #include "SkView.h" 9 #include "SkView.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 12 matching lines...) Expand all
23 #include "SkTypeface.h" 23 #include "SkTypeface.h"
24 #include "SkXfermode.h" 24 #include "SkXfermode.h"
25 25
26 #include "SkStream.h" 26 #include "SkStream.h"
27 #include "SkXMLParser.h" 27 #include "SkXMLParser.h"
28 #include "SkColorPriv.h" 28 #include "SkColorPriv.h"
29 #include "SkImageDecoder.h" 29 #include "SkImageDecoder.h"
30 30
31 static SkRandom gRand; 31 static SkRandom gRand;
32 32
33 static void test_chromium_9005() {
34 SkBitmap bm;
35 bm.allocN32Pixels(800, 600);
36
37 SkCanvas canvas(bm);
38
39 SkPoint pt0 = { 799.33374f, 1.2360189f };
40 SkPoint pt1 = { 808.49969f, -7.4338055f };
41
42 SkPaint paint;
43 paint.setAntiAlias(true);
44 canvas.drawLine(pt0.fX, pt0.fY, pt1.fX, pt1.fY, paint);
45 }
46
47 static void generate_pts(SkPoint pts[], int count, int w, int h) { 33 static void generate_pts(SkPoint pts[], int count, int w, int h) {
48 for (int i = 0; i < count; i++) { 34 for (int i = 0; i < count; i++) {
49 pts[i].set(gRand.nextUScalar1() * 3 * w - SkIntToScalar(w), 35 pts[i].set(gRand.nextUScalar1() * 3 * w - SkIntToScalar(w),
50 gRand.nextUScalar1() * 3 * h - SkIntToScalar(h)); 36 gRand.nextUScalar1() * 3 * h - SkIntToScalar(h));
51 } 37 }
52 } 38 }
53 39
54 static bool check_zeros(const SkPMColor pixels[], int count, int skip) { 40 static bool check_zeros(const SkPMColor pixels[], int count, int skip) {
55 for (int i = 0; i < count; i++) { 41 for (int i = 0; i < count; i++) {
56 if (*pixels) { 42 if (*pixels) {
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 static int cycle_hairproc_index(int index) { 170 static int cycle_hairproc_index(int index) {
185 return (index + 1) % SK_ARRAY_COUNT(gProcs); 171 return (index + 1) % SK_ARRAY_COUNT(gProcs);
186 } 172 }
187 173
188 class HairlineView : public SampleView { 174 class HairlineView : public SampleView {
189 SkMSec fNow; 175 SkMSec fNow;
190 int fProcIndex; 176 int fProcIndex;
191 bool fDoAA; 177 bool fDoAA;
192 public: 178 public:
193 HairlineView() { 179 HairlineView() {
194 fCounter = 0;
195 fProcIndex = 0; 180 fProcIndex = 0;
196 fDoAA = true; 181 fDoAA = true;
197 fNow = 0; 182 fNow = 0;
198 } 183 }
199 184
200 protected: 185 protected:
201 // overrides from SkEventSink 186 // overrides from SkEventSink
202 virtual bool onQuery(SkEvent* evt) { 187 bool onQuery(SkEvent* evt) SK_OVERRIDE {
203 if (SampleCode::TitleQ(*evt)) { 188 if (SampleCode::TitleQ(*evt)) {
204 SkString str; 189 SkString str;
205 str.printf("Hair-%s", gProcs[fProcIndex].fName); 190 str.printf("Hair-%s", gProcs[fProcIndex].fName);
206 SampleCode::TitleR(evt, str.c_str()); 191 SampleCode::TitleR(evt, str.c_str());
207 return true; 192 return true;
208 } 193 }
209 return this->INHERITED::onQuery(evt); 194 return this->INHERITED::onQuery(evt);
210 } 195 }
211 196
212 void show_bitmaps(SkCanvas* canvas, const SkBitmap& b0, const SkBitmap& b1, 197 void show_bitmaps(SkCanvas* canvas, const SkBitmap& b0, const SkBitmap& b1,
213 const SkIRect& inset) { 198 const SkIRect& inset) {
214 canvas->drawBitmap(b0, 0, 0, NULL); 199 canvas->drawBitmap(b0, 0, 0, NULL);
215 canvas->drawBitmap(b1, SkIntToScalar(b0.width()), 0, NULL); 200 canvas->drawBitmap(b1, SkIntToScalar(b0.width()), 0, NULL);
216 } 201 }
217 202
218 int fCounter; 203 void onDrawContent(SkCanvas* canvas) SK_OVERRIDE {
219
220 virtual void onDrawContent(SkCanvas* canvas) {
221 gRand.setSeed(fNow); 204 gRand.setSeed(fNow);
222 205
223 if (false) { // avoid bit rot, suppress warning
224 test_chromium_9005();
225 }
226
227 SkBitmap bm, bm2; 206 SkBitmap bm, bm2;
228 bm.allocN32Pixels(WIDTH + MARGIN*2, HEIGHT + MARGIN*2); 207 bm.allocN32Pixels(WIDTH + MARGIN*2, HEIGHT + MARGIN*2);
229 // this will erase our margin, which we want to always stay 0 208 // this will erase our margin, which we want to always stay 0
230 bm.eraseColor(SK_ColorTRANSPARENT); 209 bm.eraseColor(SK_ColorTRANSPARENT);
231 210
232 bm2.installPixels(SkImageInfo::MakeN32Premul(WIDTH, HEIGHT), 211 bm2.installPixels(SkImageInfo::MakeN32Premul(WIDTH, HEIGHT),
233 bm.getAddr32(MARGIN, MARGIN), bm.rowBytes()); 212 bm.getAddr32(MARGIN, MARGIN), bm.rowBytes());
234 213
235 SkCanvas c2(bm2); 214 SkCanvas c2(bm2);
236 SkPaint paint; 215 SkPaint paint;
237 paint.setAntiAlias(fDoAA); 216 paint.setAntiAlias(fDoAA);
238 paint.setStyle(SkPaint::kStroke_Style); 217 paint.setStyle(SkPaint::kStroke_Style);
239 218
240 bm2.eraseColor(SK_ColorTRANSPARENT); 219 bm2.eraseColor(SK_ColorTRANSPARENT);
241 gProcs[fProcIndex].fProc(&c2, paint, bm); 220 gProcs[fProcIndex].fProc(&c2, paint, bm);
242 canvas->drawBitmap(bm2, SkIntToScalar(10), SkIntToScalar(10), NULL); 221 canvas->drawBitmap(bm2, SkIntToScalar(10), SkIntToScalar(10), NULL);
243
244 SkMSec now = SampleCode::GetAnimTime();
245 if (fNow != now) {
246 fNow = now;
247 fCounter += 1;
248 fDoAA = !fDoAA;
249 if (fCounter > 50) {
250 fProcIndex = cycle_hairproc_index(fProcIndex);
251 // todo: signal that we want to rebuild our TITLE
252 fCounter = 0;
253 }
254 this->inval(NULL);
255 }
256 } 222 }
257 223
258 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, 224 bool onAnimatePulse(SkMSec curr, SkMSec prev) SK_OVERRIDE {
259 unsigned modi) { 225 if (fDoAA) {
226 fProcIndex = cycle_hairproc_index(fProcIndex);
227 // todo: signal that we want to rebuild our TITLE
228 }
229 fDoAA = !fDoAA;
230 return true;
231 }
232
233 SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) SK_ OVERRIDE {
260 fDoAA = !fDoAA; 234 fDoAA = !fDoAA;
261 this->inval(NULL); 235 this->inval(NULL);
262 return this->INHERITED::onFindClickHandler(x, y, modi); 236 return this->INHERITED::onFindClickHandler(x, y, modi);
263 } 237 }
264 238
265 239
266 private: 240 private:
267 typedef SampleView INHERITED; 241 typedef SampleView INHERITED;
268 }; 242 };
269 243
270 ////////////////////////////////////////////////////////////////////////////// 244 //////////////////////////////////////////////////////////////////////////////
271 245
272 static SkView* MyFactory() { return new HairlineView; } 246 static SkView* MyFactory() { return new HairlineView; }
273 static SkViewRegister reg(MyFactory); 247 static SkViewRegister reg(MyFactory);
OLDNEW
« no previous file with comments | « samplecode/SampleHT.cpp ('k') | samplecode/SamplePathEffects.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698