OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 | 10 |
11 #include "gm.h" | 11 #include "gm.h" |
12 #include "SkRandom.h" | 12 #include "SkRandom.h" |
13 | 13 |
14 #define W 400 | 14 #define W 400 |
15 #define H 400 | 15 #define H 400 |
16 #define N 50 | 16 #define N 50 |
17 | 17 |
18 static const SkScalar SW = SkIntToScalar(W); | 18 static const SkScalar SW = SkIntToScalar(W); |
19 static const SkScalar SH = SkIntToScalar(H); | 19 static const SkScalar SH = SkIntToScalar(H); |
20 | 20 |
21 static void rnd_rect(SkRect* r, SkPaint* paint, SkLCGRandom& rand) { | 21 static void rnd_rect(SkRect* r, SkPaint* paint, SkRandom& rand) { |
22 SkScalar x = rand.nextUScalar1() * W; | 22 SkScalar x = rand.nextUScalar1() * W; |
23 SkScalar y = rand.nextUScalar1() * H; | 23 SkScalar y = rand.nextUScalar1() * H; |
24 SkScalar w = rand.nextUScalar1() * (W >> 2); | 24 SkScalar w = rand.nextUScalar1() * (W >> 2); |
25 SkScalar h = rand.nextUScalar1() * (H >> 2); | 25 SkScalar h = rand.nextUScalar1() * (H >> 2); |
26 SkScalar hoffset = rand.nextSScalar1(); | 26 SkScalar hoffset = rand.nextSScalar1(); |
27 SkScalar woffset = rand.nextSScalar1(); | 27 SkScalar woffset = rand.nextSScalar1(); |
28 | 28 |
29 r->set(x, y, x + w, y + h); | 29 r->set(x, y, x + w, y + h); |
30 r->offset(-w/2 + woffset, -h/2 + hoffset); | 30 r->offset(-w/2 + woffset, -h/2 + hoffset); |
31 | 31 |
(...skipping 26 matching lines...) Expand all Loading... |
58 | 58 |
59 for (int y = 0; y < 2; y++) { | 59 for (int y = 0; y < 2; y++) { |
60 paint.setAntiAlias(!!y); | 60 paint.setAntiAlias(!!y); |
61 SkAutoCanvasRestore acr(canvas, true); | 61 SkAutoCanvasRestore acr(canvas, true); |
62 canvas->translate(0, SH * y); | 62 canvas->translate(0, SH * y); |
63 canvas->clipRect(SkRect::MakeLTRB( | 63 canvas->clipRect(SkRect::MakeLTRB( |
64 SkIntToScalar(2), SkIntToScalar(2) | 64 SkIntToScalar(2), SkIntToScalar(2) |
65 , SW - SkIntToScalar(2), SH - SkIn
tToScalar(2) | 65 , SW - SkIntToScalar(2), SH - SkIn
tToScalar(2) |
66 )); | 66 )); |
67 | 67 |
68 SkLCGRandom rand; | 68 SkRandom rand; |
69 for (int i = 0; i < N; i++) { | 69 for (int i = 0; i < N; i++) { |
70 SkRect r; | 70 SkRect r; |
71 rnd_rect(&r, &paint, rand); | 71 rnd_rect(&r, &paint, rand); |
72 canvas->drawOval(r, paint); | 72 canvas->drawOval(r, paint); |
73 rnd_rect(&r, &paint, rand); | 73 rnd_rect(&r, &paint, rand); |
74 canvas->drawRoundRect(r, r.width()/4, r.height()/4, paint); | 74 canvas->drawRoundRect(r, r.width()/4, r.height()/4, paint); |
75 rnd_rect(&r, &paint, rand); | 75 rnd_rect(&r, &paint, rand); |
76 } | 76 } |
77 } | 77 } |
78 } | 78 } |
79 | 79 |
80 private: | 80 private: |
81 typedef skiagm::GM INHERITED; | 81 typedef skiagm::GM INHERITED; |
82 }; | 82 }; |
83 | 83 |
84 class Strokes2GM : public skiagm::GM { | 84 class Strokes2GM : public skiagm::GM { |
85 SkPath fPath; | 85 SkPath fPath; |
86 public: | 86 public: |
87 Strokes2GM() { | 87 Strokes2GM() { |
88 SkLCGRandom rand; | 88 SkRandom rand; |
89 fPath.moveTo(0, 0); | 89 fPath.moveTo(0, 0); |
90 for (int i = 0; i < 13; i++) { | 90 for (int i = 0; i < 13; i++) { |
91 SkScalar x = rand.nextUScalar1() * (W >> 1); | 91 SkScalar x = rand.nextUScalar1() * (W >> 1); |
92 SkScalar y = rand.nextUScalar1() * (H >> 1); | 92 SkScalar y = rand.nextUScalar1() * (H >> 1); |
93 fPath.lineTo(x, y); | 93 fPath.lineTo(x, y); |
94 } | 94 } |
95 } | 95 } |
96 | 96 |
97 protected: | 97 protected: |
98 virtual uint32_t onGetFlags() const SK_OVERRIDE { | 98 virtual uint32_t onGetFlags() const SK_OVERRIDE { |
(...skipping 23 matching lines...) Expand all Loading... |
122 | 122 |
123 for (int y = 0; y < 2; y++) { | 123 for (int y = 0; y < 2; y++) { |
124 paint.setAntiAlias(!!y); | 124 paint.setAntiAlias(!!y); |
125 SkAutoCanvasRestore acr(canvas, true); | 125 SkAutoCanvasRestore acr(canvas, true); |
126 canvas->translate(0, SH * y); | 126 canvas->translate(0, SH * y); |
127 canvas->clipRect(SkRect::MakeLTRB(SkIntToScalar(2), | 127 canvas->clipRect(SkRect::MakeLTRB(SkIntToScalar(2), |
128 SkIntToScalar(2), | 128 SkIntToScalar(2), |
129 SW - SkIntToScalar(2), | 129 SW - SkIntToScalar(2), |
130 SH - SkIntToScalar(2))); | 130 SH - SkIntToScalar(2))); |
131 | 131 |
132 SkLCGRandom rand; | 132 SkRandom rand; |
133 for (int i = 0; i < N/2; i++) { | 133 for (int i = 0; i < N/2; i++) { |
134 SkRect r; | 134 SkRect r; |
135 rnd_rect(&r, &paint, rand); | 135 rnd_rect(&r, &paint, rand); |
136 rotate(SkIntToScalar(15), SW/2, SH/2, canvas); | 136 rotate(SkIntToScalar(15), SW/2, SH/2, canvas); |
137 canvas->drawPath(fPath, paint); | 137 canvas->drawPath(fPath, paint); |
138 } | 138 } |
139 } | 139 } |
140 } | 140 } |
141 | 141 |
142 private: | 142 private: |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 | 253 |
254 ////////////////////////////////////////////////////////////////////////////// | 254 ////////////////////////////////////////////////////////////////////////////// |
255 | 255 |
256 static skiagm::GM* F0(void*) { return new StrokesGM; } | 256 static skiagm::GM* F0(void*) { return new StrokesGM; } |
257 static skiagm::GM* F1(void*) { return new Strokes2GM; } | 257 static skiagm::GM* F1(void*) { return new Strokes2GM; } |
258 static skiagm::GM* F2(void*) { return new Strokes3GM; } | 258 static skiagm::GM* F2(void*) { return new Strokes3GM; } |
259 | 259 |
260 static skiagm::GMRegistry R0(F0); | 260 static skiagm::GMRegistry R0(F0); |
261 static skiagm::GMRegistry R1(F1); | 261 static skiagm::GMRegistry R1(F1); |
262 static skiagm::GMRegistry R2(F2); | 262 static skiagm::GMRegistry R2(F2); |
OLD | NEW |