| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2014 Google Inc. | 3 * Copyright 2014 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 // This test only works with the GPU backend. | 9 // This test only works with the GPU backend. |
| 10 | 10 |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 return; | 113 return; |
| 114 } | 114 } |
| 115 | 115 |
| 116 SkScalar y = 0; | 116 SkScalar y = 0; |
| 117 for (SkTLList<SkPath>::Iter iter(fPaths, SkTLList<SkPath>::Iter::kHead_I
terStart); | 117 for (SkTLList<SkPath>::Iter iter(fPaths, SkTLList<SkPath>::Iter::kHead_I
terStart); |
| 118 NULL != iter.get(); | 118 NULL != iter.get(); |
| 119 iter.next()) { | 119 iter.next()) { |
| 120 const SkPath* path = iter.get(); | 120 const SkPath* path = iter.get(); |
| 121 SkScalar x = 0; | 121 SkScalar x = 0; |
| 122 | 122 |
| 123 for (int et = 0; et < GrConvexPolyEffect::kEdgeTypeCnt; ++et) { | 123 for (int et = 0; et < kGrEffectEdgeTypeCnt; ++et) { |
| 124 GrTestTarget tt; | 124 GrTestTarget tt; |
| 125 context->getTestTarget(&tt); | 125 context->getTestTarget(&tt); |
| 126 if (NULL == tt.target()) { | 126 if (NULL == tt.target()) { |
| 127 SkDEBUGFAIL("Couldn't get Gr test target."); | 127 SkDEBUGFAIL("Couldn't get Gr test target."); |
| 128 return; | 128 return; |
| 129 } | 129 } |
| 130 GrDrawState* drawState = tt.target()->drawState(); | 130 GrDrawState* drawState = tt.target()->drawState(); |
| 131 drawState->setVertexAttribs<kAttribs>(SK_ARRAY_COUNT(kAttribs)); | 131 drawState->setVertexAttribs<kAttribs>(SK_ARRAY_COUNT(kAttribs)); |
| 132 | 132 |
| 133 SkMatrix m; | 133 SkMatrix m; |
| 134 SkPath p; | 134 SkPath p; |
| 135 m.setTranslate(x, y); | 135 m.setTranslate(x, y); |
| 136 path->transform(m, &p); | 136 path->transform(m, &p); |
| 137 | 137 |
| 138 GrConvexPolyEffect::EdgeType edgeType = (GrConvexPolyEffect::Edg
eType) et; | 138 GrEffectEdgeType edgeType = (GrEffectEdgeType) et; |
| 139 SkAutoTUnref<GrEffectRef> effect(GrConvexPolyEffect::Create(edge
Type, p)); | 139 SkAutoTUnref<GrEffectRef> effect(GrConvexPolyEffect::Create(edge
Type, p)); |
| 140 if (!effect) { | 140 if (!effect) { |
| 141 SkDEBUGFAIL("Couldn't create convex poly effect."); | 141 continue; |
| 142 return; | |
| 143 } | 142 } |
| 144 drawState->addCoverageEffect(effect, 1); | 143 drawState->addCoverageEffect(effect, 1); |
| 145 drawState->setIdentityViewMatrix(); | 144 drawState->setIdentityViewMatrix(); |
| 146 drawState->setRenderTarget(rt); | 145 drawState->setRenderTarget(rt); |
| 147 drawState->setColor(0xff000000); | 146 drawState->setColor(0xff000000); |
| 148 | 147 |
| 149 SkPoint verts[4]; | 148 SkPoint verts[4]; |
| 150 SkRect bounds = p.getBounds(); | 149 SkRect bounds = p.getBounds(); |
| 151 // Make sure any artifacts around the exterior of path are visib
le by using overly | 150 // Make sure any artifacts around the exterior of path are visib
le by using overly |
| 152 // conservative bounding geometry. | 151 // conservative bounding geometry. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 172 | 171 |
| 173 y += SkScalarCeilToScalar(path->getBounds().height() + 20.f); | 172 y += SkScalarCeilToScalar(path->getBounds().height() + 20.f); |
| 174 } | 173 } |
| 175 | 174 |
| 176 for (SkTLList<SkRect>::Iter iter(fRects, SkTLList<SkRect>::Iter::kHead_I
terStart); | 175 for (SkTLList<SkRect>::Iter iter(fRects, SkTLList<SkRect>::Iter::kHead_I
terStart); |
| 177 NULL != iter.get(); | 176 NULL != iter.get(); |
| 178 iter.next()) { | 177 iter.next()) { |
| 179 | 178 |
| 180 SkScalar x = 0; | 179 SkScalar x = 0; |
| 181 | 180 |
| 182 for (int et = 0; et < GrConvexPolyEffect::kEdgeTypeCnt; ++et) { | 181 for (int et = 0; et < kGrEffectEdgeTypeCnt; ++et) { |
| 183 GrTestTarget tt; | 182 GrTestTarget tt; |
| 184 context->getTestTarget(&tt); | 183 context->getTestTarget(&tt); |
| 185 if (NULL == tt.target()) { | 184 if (NULL == tt.target()) { |
| 186 SkDEBUGFAIL("Couldn't get Gr test target."); | 185 SkDEBUGFAIL("Couldn't get Gr test target."); |
| 187 return; | 186 return; |
| 188 } | 187 } |
| 189 SkRect rect = *iter.get(); | 188 SkRect rect = *iter.get(); |
| 190 rect.offset(x, y); | 189 rect.offset(x, y); |
| 191 GrConvexPolyEffect::EdgeType edgeType = (GrConvexPolyEffect::Edg
eType) et; | 190 GrEffectEdgeType edgeType = (GrEffectEdgeType) et; |
| 192 SkAutoTUnref<GrEffectRef> effect(GrConvexPolyEffect::Create(edge
Type, rect)); | 191 SkAutoTUnref<GrEffectRef> effect(GrConvexPolyEffect::Create(edge
Type, rect)); |
| 193 if (!effect) { | 192 if (!effect) { |
| 194 SkDEBUGFAIL("Couldn't create convex poly effect."); | 193 continue; |
| 195 return; | |
| 196 } | 194 } |
| 197 | 195 |
| 198 GrDrawState* drawState = tt.target()->drawState(); | 196 GrDrawState* drawState = tt.target()->drawState(); |
| 199 drawState->setVertexAttribs<kAttribs>(SK_ARRAY_COUNT(kAttribs)); | 197 drawState->setVertexAttribs<kAttribs>(SK_ARRAY_COUNT(kAttribs)); |
| 200 drawState->addCoverageEffect(effect, 1); | 198 drawState->addCoverageEffect(effect, 1); |
| 201 drawState->setIdentityViewMatrix(); | 199 drawState->setIdentityViewMatrix(); |
| 202 drawState->setRenderTarget(rt); | 200 drawState->setRenderTarget(rt); |
| 203 drawState->setColor(0xff000000); | 201 drawState->setColor(0xff000000); |
| 204 | 202 |
| 205 SkPoint verts[4]; | 203 SkPoint verts[4]; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 232 SkTLList<SkPath> fPaths; | 230 SkTLList<SkPath> fPaths; |
| 233 SkTLList<SkRect> fRects; | 231 SkTLList<SkRect> fRects; |
| 234 | 232 |
| 235 typedef GM INHERITED; | 233 typedef GM INHERITED; |
| 236 }; | 234 }; |
| 237 | 235 |
| 238 DEF_GM( return SkNEW(ConvexPolyEffect); ) | 236 DEF_GM( return SkNEW(ConvexPolyEffect); ) |
| 239 } | 237 } |
| 240 | 238 |
| 241 #endif | 239 #endif |
| OLD | NEW |