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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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; |
105 | 105 |
106 static const SkScalar kBig = 10000.0f; | 106 static const SkScalar kBig = 10000.0f; |
107 SkCanvas* canvas = recorder.beginRecording(kBig, kBig); | 107 SkCanvas* canvas = recorder.beginRecording(kBig, kBig); |
108 | 108 |
| 109 canvas->saveLayer(NULL, NULL); |
| 110 |
109 SkScalar xPos = 0.0f, yPos = 0.0f; | 111 SkScalar xPos = 0.0f, yPos = 0.0f; |
110 | 112 |
111 for (int y = 0; yPos < kBig; ++y) { | 113 for (int y = 0; yPos < kBig; ++y) { |
112 xPos = 0; | 114 xPos = 0; |
113 | 115 |
114 for (int x = 0; xPos < kBig; ++x) { | 116 for (int x = 0; xPos < kBig; ++x) { |
115 canvas->save(); | 117 canvas->save(); |
116 canvas->translate(xPos, yPos + ((x % 2) ? kRoot3Over2 * kHexSide : 0
)); | 118 canvas->translate(xPos, yPos + ((x % 2) ? kRoot3Over2 * kHexSide : 0
)); |
117 // The color of the filled hex is swapped to yield a different | 119 // The color of the filled hex is swapped to yield a different |
118 // pattern in each tile. This allows an error in layer hoisting (e.g
., | 120 // pattern in each tile. This allows an error in layer hoisting (e.g
., |
119 // the clip isn't blocking cache reuse) to cause a visual discrepanc
y. | 121 // the clip isn't blocking cache reuse) to cause a visual discrepanc
y. |
120 canvas->drawPath(hex, ((x+y) % 3) ? whiteFill : greyFill); | 122 canvas->drawPath(hex, ((x+y) % 3) ? whiteFill : greyFill); |
121 canvas->drawPath(hex, stroke); | 123 canvas->drawPath(hex, stroke); |
122 canvas->restore(); | 124 canvas->restore(); |
123 | 125 |
124 xPos += 1.5f * kHexSide; | 126 xPos += 1.5f * kHexSide; |
125 } | 127 } |
126 | 128 |
127 yPos += 2 * kHexSide * kRoot3Over2; | 129 yPos += 2 * kHexSide * kRoot3Over2; |
128 } | 130 } |
129 | 131 |
| 132 canvas->restore(); |
| 133 |
130 return recorder.endRecording(); | 134 return recorder.endRecording(); |
131 } | 135 } |
132 | 136 |
133 // Make an equilateral triangle path with its top corner at (originX, originY) | 137 // Make an equilateral triangle path with its top corner at (originX, originY) |
134 static SkPath make_tri_path(SkScalar originX, SkScalar originY) { | 138 static SkPath make_tri_path(SkScalar originX, SkScalar originY) { |
135 SkPath tri; | 139 SkPath tri; |
136 tri.moveTo(originX, originY); | 140 tri.moveTo(originX, originY); |
137 tri.rLineTo(SkScalarHalf(kTriSide), 1.5f * kTriSide / kRoot3); | 141 tri.rLineTo(SkScalarHalf(kTriSide), 1.5f * kTriSide / kRoot3); |
138 tri.rLineTo(-kTriSide, 0); | 142 tri.rLineTo(-kTriSide, 0); |
139 tri.close(); | 143 tri.close(); |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 MultiPictureDraw::kTiled_Layout)
);) | 546 MultiPictureDraw::kTiled_Layout)
);) |
543 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kPathClipMulti
_Content, | 547 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kPathClipMulti
_Content, |
544 MultiPictureDraw::kTiled_Layout)
);) | 548 MultiPictureDraw::kTiled_Layout)
);) |
545 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kInvPathClipMu
lti_Content, | 549 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kInvPathClipMu
lti_Content, |
546 MultiPictureDraw::kTiled_Layout)
);) | 550 MultiPictureDraw::kTiled_Layout)
);) |
547 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kSierpinski_Co
ntent, | 551 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kSierpinski_Co
ntent, |
548 MultiPictureDraw::kTiled_Layout)
);) | 552 MultiPictureDraw::kTiled_Layout)
);) |
549 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kBigLayer_Cont
ent, | 553 DEF_GM(return SkNEW_ARGS(MultiPictureDraw, (MultiPictureDraw::kBigLayer_Cont
ent, |
550 MultiPictureDraw::kTiled_Layout)
);) | 554 MultiPictureDraw::kTiled_Layout)
);) |
551 } | 555 } |
OLD | NEW |