Unify edge type enums across GrEffect subclasses that clip rendering to a geometry.
BUG=skia:
R=egdaniel@google.com, robertphillips@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/183893023
git-svn-id: http://skia.googlecode.com/svn/trunk@13674 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp
index 87e2d0a..aebf6fb 100644
--- a/gm/beziereffects.cpp
+++ b/gm/beziereffects.cpp
@@ -93,7 +93,21 @@
{rand.nextRangeF(0.f, w), rand.nextRangeF(0.f, h)},
{rand.nextRangeF(0.f, w), rand.nextRangeF(0.f, h)}
};
- for(int edgeType = kFillAA_GrBezierEdgeType; edgeType < 3; ++edgeType) {
+ for(int edgeType = 0; edgeType < kGrEffectEdgeTypeCnt; ++edgeType) {
+ SkAutoTUnref<GrEffectRef> effect;
+ { // scope to contain GrTestTarget
+ GrTestTarget tt;
+ context->getTestTarget(&tt);
+ if (NULL == tt.target()) {
+ continue;
+ }
+ GrEffectEdgeType et = (GrEffectEdgeType)edgeType;
+ effect.reset(GrCubicEffect::Create(et, *tt.target()->caps()));
+ if (!effect) {
+ continue;
+ }
+ }
+
SkScalar x = SkScalarMul(col, w);
SkScalar y = SkScalarMul(row, h);
SkPoint controlPts[] = {
@@ -153,17 +167,10 @@
GrTestTarget tt;
context->getTestTarget(&tt);
- if (NULL == tt.target()) {
- continue;
- }
+ SkASSERT(NULL != tt.target());
GrDrawState* drawState = tt.target()->drawState();
drawState->setVertexAttribs<kAttribs>(2);
- SkAutoTUnref<GrEffectRef> effect(GrCubicEffect::Create(
- GrBezierEdgeType(edgeType), *tt.target()->caps()));
- if (!effect) {
- continue;
- }
drawState->addCoverageEffect(effect, 1);
drawState->setRenderTarget(rt);
drawState->setColor(0xff000000);
@@ -245,7 +252,21 @@
{rand.nextRangeF(0.f, w), rand.nextRangeF(0.f, h)}
};
SkScalar weight = rand.nextRangeF(0.f, 2.f);
- for(int edgeType = kFillAA_GrBezierEdgeType; edgeType < 3; ++edgeType) {
+ for(int edgeType = 0; edgeType < kGrEffectEdgeTypeCnt; ++edgeType) {
+ SkAutoTUnref<GrEffectRef> effect;
+ { // scope to contain GrTestTarget
+ GrTestTarget tt;
+ context->getTestTarget(&tt);
+ if (NULL == tt.target()) {
+ continue;
+ }
+ GrEffectEdgeType et = (GrEffectEdgeType)edgeType;
+ effect.reset(GrConicEffect::Create(et, *tt.target()->caps()));
+ if (!effect) {
+ continue;
+ }
+ }
+
SkScalar x = SkScalarMul(col, w);
SkScalar y = SkScalarMul(row, h);
SkPoint controlPts[] = {
@@ -302,17 +323,10 @@
GrTestTarget tt;
context->getTestTarget(&tt);
- if (NULL == tt.target()) {
- continue;
- }
+ SkASSERT(NULL != tt.target());
GrDrawState* drawState = tt.target()->drawState();
drawState->setVertexAttribs<kAttribs>(2);
- SkAutoTUnref<GrEffectRef> effect(GrConicEffect::Create(
- GrBezierEdgeType(edgeType), *tt.target()->caps()));
- if (!effect) {
- continue;
- }
drawState->addCoverageEffect(effect, 1);
drawState->setRenderTarget(rt);
drawState->setColor(0xff000000);
@@ -428,7 +442,21 @@
{rand.nextRangeF(0.f, w), rand.nextRangeF(0.f, h)},
{rand.nextRangeF(0.f, w), rand.nextRangeF(0.f, h)}
};
- for(int edgeType = kFillAA_GrBezierEdgeType; edgeType < 3; ++edgeType) {
+ for(int edgeType = 0; edgeType < kGrEffectEdgeTypeCnt; ++edgeType) {
+ SkAutoTUnref<GrEffectRef> effect;
+ { // scope to contain GrTestTarget
+ GrTestTarget tt;
+ context->getTestTarget(&tt);
+ if (NULL == tt.target()) {
+ continue;
+ }
+ GrEffectEdgeType et = (GrEffectEdgeType)edgeType;
+ effect.reset(GrQuadEffect::Create(et, *tt.target()->caps()));
+ if (!effect) {
+ continue;
+ }
+ }
+
SkScalar x = SkScalarMul(col, w);
SkScalar y = SkScalarMul(row, h);
SkPoint controlPts[] = {
@@ -480,16 +508,10 @@
GrTestTarget tt;
context->getTestTarget(&tt);
- if (NULL == tt.target()) {
- continue;
- }
+ SkASSERT(NULL != tt.target());
GrDrawState* drawState = tt.target()->drawState();
drawState->setVertexAttribs<kAttribs>(2);
- SkAutoTUnref<GrEffectRef> effect(GrQuadEffect::Create(
- GrBezierEdgeType(edgeType), *tt.target()->caps()));
- if (!effect) {
- continue;
- }
+
drawState->addCoverageEffect(effect, 1);
drawState->setRenderTarget(rt);
drawState->setColor(0xff000000);
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 9142ca9..ac8ec72 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -120,7 +120,7 @@
const SkPath* path = iter.get();
SkScalar x = 0;
- for (int et = 0; et < GrConvexPolyEffect::kEdgeTypeCnt; ++et) {
+ for (int et = 0; et < kGrEffectEdgeTypeCnt; ++et) {
GrTestTarget tt;
context->getTestTarget(&tt);
if (NULL == tt.target()) {
@@ -135,11 +135,10 @@
m.setTranslate(x, y);
path->transform(m, &p);
- GrConvexPolyEffect::EdgeType edgeType = (GrConvexPolyEffect::EdgeType) et;
+ GrEffectEdgeType edgeType = (GrEffectEdgeType) et;
SkAutoTUnref<GrEffectRef> effect(GrConvexPolyEffect::Create(edgeType, p));
if (!effect) {
- SkDEBUGFAIL("Couldn't create convex poly effect.");
- return;
+ continue;
}
drawState->addCoverageEffect(effect, 1);
drawState->setIdentityViewMatrix();
@@ -179,7 +178,7 @@
SkScalar x = 0;
- for (int et = 0; et < GrConvexPolyEffect::kEdgeTypeCnt; ++et) {
+ for (int et = 0; et < kGrEffectEdgeTypeCnt; ++et) {
GrTestTarget tt;
context->getTestTarget(&tt);
if (NULL == tt.target()) {
@@ -188,11 +187,10 @@
}
SkRect rect = *iter.get();
rect.offset(x, y);
- GrConvexPolyEffect::EdgeType edgeType = (GrConvexPolyEffect::EdgeType) et;
+ GrEffectEdgeType edgeType = (GrEffectEdgeType) et;
SkAutoTUnref<GrEffectRef> effect(GrConvexPolyEffect::Create(edgeType, rect));
if (!effect) {
- SkDEBUGFAIL("Couldn't create convex poly effect.");
- return;
+ continue;
}
GrDrawState* drawState = tt.target()->drawState();
diff --git a/gm/rrects.cpp b/gm/rrects.cpp
index d92fb5a..7bc7c19 100644
--- a/gm/rrects.cpp
+++ b/gm/rrects.cpp
@@ -77,7 +77,7 @@
return;
}
if (kEffect_Type == fType) {
- numRRects *= GrRRectEffect::kEdgeTypeCnt;
+ numRRects *= kGrEffectEdgeTypeCnt;
}
#endif
@@ -111,8 +111,7 @@
SkRRect rrect = fRRects[rrectIdx];
rrect.offset(SkIntToScalar(x), SkIntToScalar(y));
- GrRRectEffect::EdgeType edgeType = (GrRRectEffect::EdgeType)
- (curRRect / kNumRRects);
+ GrEffectEdgeType edgeType = (GrEffectEdgeType) (curRRect / kNumRRects);
SkAutoTUnref<GrEffectRef> effect(GrRRectEffect::Create(edgeType, rrect));
if (effect) {
drawState->addCoverageEffect(effect);