| 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 |