OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 "SkColorFilter.h" | 10 #include "SkColorFilter.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 static SkPath make_tri_path(SkScalar originX, SkScalar originY) { | 84 static SkPath make_tri_path(SkScalar originX, SkScalar originY) { |
85 SkPath tri; | 85 SkPath tri; |
86 tri.moveTo(originX, originY); | 86 tri.moveTo(originX, originY); |
87 tri.rLineTo(SkScalarHalf(kTriSide), 1.5f * kTriSide / kRoot3); | 87 tri.rLineTo(SkScalarHalf(kTriSide), 1.5f * kTriSide / kRoot3); |
88 tri.rLineTo(-kTriSide, 0); | 88 tri.rLineTo(-kTriSide, 0); |
89 tri.close(); | 89 tri.close(); |
90 return tri; | 90 return tri; |
91 } | 91 } |
92 | 92 |
93 static const SkPicture* make_tri_picture() { | 93 static const SkPicture* make_tri_picture() { |
94 SkPath tri = make_tri_path(0, 0); | 94 SkPath tri = make_tri_path(SkScalarHalf(kTriSide), 0); |
95 | 95 |
96 SkPaint fill; | 96 SkPaint fill; |
97 fill.setStyle(SkPaint::kFill_Style); | 97 fill.setStyle(SkPaint::kFill_Style); |
98 fill.setColor(SK_ColorLTGRAY);; | 98 fill.setColor(SK_ColorLTGRAY);; |
99 | 99 |
100 SkPaint stroke; | 100 SkPaint stroke; |
101 stroke.setStyle(SkPaint::kStroke_Style); | 101 stroke.setStyle(SkPaint::kStroke_Style); |
102 stroke.setStrokeWidth(3); | 102 stroke.setStrokeWidth(3); |
103 | 103 |
104 SkPictureRecorder recorder; | 104 SkPictureRecorder recorder; |
(...skipping 10 matching lines...) Expand all Loading... |
115 } | 115 } |
116 | 116 |
117 static const SkPicture* make_sub_picture(const SkPicture* tri) { | 117 static const SkPicture* make_sub_picture(const SkPicture* tri) { |
118 SkPictureRecorder recorder; | 118 SkPictureRecorder recorder; |
119 | 119 |
120 SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kPicWidth), | 120 SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kPicWidth), |
121 SkIntToScalar(kPicHeight)); | 121 SkIntToScalar(kPicHeight)); |
122 | 122 |
123 canvas->scale(1.0f/2.0f, 1.0f/2.0f); | 123 canvas->scale(1.0f/2.0f, 1.0f/2.0f); |
124 | 124 |
125 canvas->drawPicture(tri); | |
126 | |
127 canvas->save(); | 125 canvas->save(); |
128 canvas->translate(SkScalarHalf(kTriSide), 1.5f * kTriSide / kRoot3); | 126 canvas->translate(SkScalarHalf(kTriSide), 0); |
129 canvas->drawPicture(tri); | 127 canvas->drawPicture(tri); |
130 canvas->restore(); | 128 canvas->restore(); |
131 | 129 |
132 canvas->save(); | 130 canvas->save(); |
133 canvas->translate(-SkScalarHalf(kTriSide), 1.5f * kTriSide / kRoot3); | 131 canvas->translate(SkIntToScalar(kTriSide), 1.5f * kTriSide / kRoot3); |
134 canvas->drawPicture(tri); | 132 canvas->drawPicture(tri); |
135 canvas->restore(); | 133 canvas->restore(); |
136 | 134 |
| 135 canvas->save(); |
| 136 canvas->translate(0, 1.5f * kTriSide / kRoot3); |
| 137 canvas->drawPicture(tri); |
| 138 canvas->restore(); |
| 139 |
137 return recorder.endRecording(); | 140 return recorder.endRecording(); |
138 } | 141 } |
139 | 142 |
140 // Create a Sierpinkski-like picture that starts with a top row with a picture | 143 // Create a Sierpinkski-like picture that starts with a top row with a picture |
141 // that just contains a triangle. Subsequent rows take the prior row's picture, | 144 // that just contains a triangle. Subsequent rows take the prior row's picture, |
142 // shrinks it and replicates it 3 times then draws and appropriate number of | 145 // shrinks it and replicates it 3 times then draws and appropriate number of |
143 // copies of it. | 146 // copies of it. |
144 static const SkPicture* make_sierpinski_picture() { | 147 static const SkPicture* make_sierpinski_picture() { |
145 SkAutoTUnref<const SkPicture> pic(make_tri_picture()); | 148 SkAutoTUnref<const SkPicture> pic(make_tri_picture()); |
146 | 149 |
147 SkPictureRecorder recorder; | 150 SkPictureRecorder recorder; |
148 | 151 |
149 SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kPicWidth), | 152 SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(kPicWidth), |
150 SkIntToScalar(kPicHeight)); | 153 SkIntToScalar(kPicHeight)); |
151 | 154 |
152 static const int kNumLevels = 4; | 155 static const int kNumLevels = 4; |
153 for (int i = 0; i < kNumLevels; ++i) { | 156 for (int i = 0; i < kNumLevels; ++i) { |
154 canvas->save(); | 157 canvas->save(); |
155 canvas->translate(-i*kTriSide / 2.0f, 0); | 158 canvas->translate(kPicWidth/2 - (i+1) * (kTriSide/2.0f), 0.0f); |
156 for (int j = 0; j < i+1; ++j) { | 159 for (int j = 0; j < i+1; ++j) { |
157 canvas->drawPicture(pic); | 160 canvas->drawPicture(pic); |
158 canvas->translate(SkIntToScalar(kTriSide), 0); | 161 canvas->translate(SkIntToScalar(kTriSide), 0); |
159 } | 162 } |
160 canvas->restore(); | 163 canvas->restore(); |
161 | 164 |
162 pic.reset(make_sub_picture(pic)); | 165 pic.reset(make_sub_picture(pic)); |
163 | 166 |
164 canvas->translate(0, 1.5f * kTriSide / kRoot3); | 167 canvas->translate(0, 1.5f * kTriSide / kRoot3); |
165 } | 168 } |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 hex.setFillType(SkPath::kInverseEvenOdd_FillType); | 250 hex.setFillType(SkPath::kInverseEvenOdd_FillType); |
248 | 251 |
249 canvas->clipPath(hex); | 252 canvas->clipPath(hex); |
250 | 253 |
251 canvas->drawPicture(pictures[1]); | 254 canvas->drawPicture(pictures[1]); |
252 } | 255 } |
253 | 256 |
254 // Reuse a single base (triangular) picture a _lot_ (rotated, scaled and transla
ted). | 257 // Reuse a single base (triangular) picture a _lot_ (rotated, scaled and transla
ted). |
255 static void sierpinski(SkCanvas* canvas, const SkPicture* pictures[kNumPictures]
) { | 258 static void sierpinski(SkCanvas* canvas, const SkPicture* pictures[kNumPictures]
) { |
256 canvas->save(); | 259 canvas->save(); |
257 canvas->translate(kPicWidth / 2.0f, 0.0f); | |
258 canvas->drawPicture(pictures[2]); | 260 canvas->drawPicture(pictures[2]); |
259 | 261 |
260 canvas->rotate(180.0f); | 262 canvas->rotate(180.0f); |
261 canvas->translate(0.0f, -SkIntToScalar(kPicHeight)); | 263 canvas->translate(-SkIntToScalar(kPicWidth), -SkIntToScalar(kPicHeight))
; |
262 canvas->drawPicture(pictures[2]); | 264 canvas->drawPicture(pictures[2]); |
263 canvas->restore(); | 265 canvas->restore(); |
264 } | 266 } |
265 | 267 |
266 static const PFContentMtd gContentMthds[] = { | 268 static const PFContentMtd gContentMthds[] = { |
267 no_clip, | 269 no_clip, |
268 rect_clip, | 270 rect_clip, |
269 rrect_clip, | 271 rrect_clip, |
270 path_clip, | 272 path_clip, |
271 invpath_clip, | 273 invpath_clip, |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
475 MultiPictureDraw::kTiled_Layout)
);) | 477 MultiPictureDraw::kTiled_Layout)
);) |
476 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kRRectClipMult
i_Content, | 478 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kRRectClipMult
i_Content, |
477 MultiPictureDraw::kTiled_Layout)
);) | 479 MultiPictureDraw::kTiled_Layout)
);) |
478 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kPathClipMulti
_Content, | 480 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kPathClipMulti
_Content, |
479 MultiPictureDraw::kTiled_Layout)
);) | 481 MultiPictureDraw::kTiled_Layout)
);) |
480 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kInvPathClipMu
lti_Content, | 482 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kInvPathClipMu
lti_Content, |
481 MultiPictureDraw::kTiled_Layout)
);) | 483 MultiPictureDraw::kTiled_Layout)
);) |
482 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kSierpinski_Co
ntent, | 484 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kSierpinski_Co
ntent, |
483 MultiPictureDraw::kTiled_Layout)
);) | 485 MultiPictureDraw::kTiled_Layout)
);) |
484 } | 486 } |
OLD | NEW |