| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "GrOvalRenderer.h" | 8 #include "GrOvalRenderer.h" |
| 9 | 9 |
| 10 #include "GrEffect.h" | 10 #include "GrEffect.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 builder->vsCodeAppendf("\t%s = %s;\n", vsName, attrName->c_str()); | 101 builder->vsCodeAppendf("\t%s = %s;\n", vsName, attrName->c_str()); |
| 102 | 102 |
| 103 builder->fsCodeAppendf("\tfloat d = length(%s.xy);\n", fsName); | 103 builder->fsCodeAppendf("\tfloat d = length(%s.xy);\n", fsName); |
| 104 builder->fsCodeAppendf("\tfloat edgeAlpha = clamp(%s.z - d, 0.0, 1.0
);\n", fsName); | 104 builder->fsCodeAppendf("\tfloat edgeAlpha = clamp(%s.z - d, 0.0, 1.0
);\n", fsName); |
| 105 if (circleEffect.isStroked()) { | 105 if (circleEffect.isStroked()) { |
| 106 builder->fsCodeAppendf("\tfloat innerAlpha = clamp(d - %s.w, 0.0
, 1.0);\n", fsName); | 106 builder->fsCodeAppendf("\tfloat innerAlpha = clamp(d - %s.w, 0.0
, 1.0);\n", fsName); |
| 107 builder->fsCodeAppend("\tedgeAlpha *= innerAlpha;\n"); | 107 builder->fsCodeAppend("\tedgeAlpha *= innerAlpha;\n"); |
| 108 } | 108 } |
| 109 | 109 |
| 110 SkString modulate; | 110 SkString modulate; |
| 111 GrGLSLModulate4f(&modulate, inputColor, "edgeAlpha"); | 111 GrGLSLModulatef<4>(&modulate, inputColor, "edgeAlpha"); |
| 112 builder->fsCodeAppendf("\t%s = %s;\n", outputColor, modulate.c_str()
); | 112 builder->fsCodeAppendf("\t%s = %s;\n", outputColor, modulate.c_str()
); |
| 113 } | 113 } |
| 114 | 114 |
| 115 static inline EffectKey GenKey(const GrDrawEffect& drawEffect, const GrG
LCaps&) { | 115 static inline EffectKey GenKey(const GrDrawEffect& drawEffect, const GrG
LCaps&) { |
| 116 const CircleEdgeEffect& circleEffect = drawEffect.castEffect<CircleE
dgeEffect>(); | 116 const CircleEdgeEffect& circleEffect = drawEffect.castEffect<CircleE
dgeEffect>(); |
| 117 | 117 |
| 118 return circleEffect.isStroked() ? 0x1 : 0x0; | 118 return circleEffect.isStroked() ? 0x1 : 0x0; |
| 119 } | 119 } |
| 120 | 120 |
| 121 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_
OVERRIDE {} | 121 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_
OVERRIDE {} |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 if (ellipseEffect.isStroked()) { | 227 if (ellipseEffect.isStroked()) { |
| 228 builder->fsCodeAppendf("\tfloat dInner = length(%s.zw);\n", fsOf
fsetsName); | 228 builder->fsCodeAppendf("\tfloat dInner = length(%s.zw);\n", fsOf
fsetsName); |
| 229 | 229 |
| 230 // compare inner lengths against xInnerRadius | 230 // compare inner lengths against xInnerRadius |
| 231 builder->fsCodeAppendf("\tfloat innerAlpha = clamp(dInner-%s.y,
0.0, 1.0);\n", | 231 builder->fsCodeAppendf("\tfloat innerAlpha = clamp(dInner-%s.y,
0.0, 1.0);\n", |
| 232 fsRadiiName); | 232 fsRadiiName); |
| 233 builder->fsCodeAppend("\tedgeAlpha *= innerAlpha;\n"); | 233 builder->fsCodeAppend("\tedgeAlpha *= innerAlpha;\n"); |
| 234 } | 234 } |
| 235 | 235 |
| 236 SkString modulate; | 236 SkString modulate; |
| 237 GrGLSLModulate4f(&modulate, inputColor, "edgeAlpha"); | 237 GrGLSLModulatef<4>(&modulate, inputColor, "edgeAlpha"); |
| 238 builder->fsCodeAppendf("\t%s = %s;\n", outputColor, modulate.c_str()
); | 238 builder->fsCodeAppendf("\t%s = %s;\n", outputColor, modulate.c_str()
); |
| 239 } | 239 } |
| 240 | 240 |
| 241 static inline EffectKey GenKey(const GrDrawEffect& drawEffect, const GrG
LCaps&) { | 241 static inline EffectKey GenKey(const GrDrawEffect& drawEffect, const GrG
LCaps&) { |
| 242 const EllipseEdgeEffect& ellipseEffect = drawEffect.castEffect<Ellip
seEdgeEffect>(); | 242 const EllipseEdgeEffect& ellipseEffect = drawEffect.castEffect<Ellip
seEdgeEffect>(); |
| 243 | 243 |
| 244 return ellipseEffect.isStroked() ? 0x1 : 0x0; | 244 return ellipseEffect.isStroked() ? 0x1 : 0x0; |
| 245 } | 245 } |
| 246 | 246 |
| 247 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_
OVERRIDE { | 247 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_
OVERRIDE { |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 verts[3].fPos = SkPoint::Make(bounds.fRight, bounds.fBottom); | 537 verts[3].fPos = SkPoint::Make(bounds.fRight, bounds.fBottom); |
| 538 verts[3].fOuterXRadius = xRadius; | 538 verts[3].fOuterXRadius = xRadius; |
| 539 verts[3].fInnerXRadius = innerXRadius; | 539 verts[3].fInnerXRadius = innerXRadius; |
| 540 verts[3].fOuterOffset = SkPoint::Make(xRadius, outerRatio*yRadius); | 540 verts[3].fOuterOffset = SkPoint::Make(xRadius, outerRatio*yRadius); |
| 541 verts[3].fInnerOffset = SkPoint::Make(xRadius, innerRatio*yRadius); | 541 verts[3].fInnerOffset = SkPoint::Make(xRadius, innerRatio*yRadius); |
| 542 | 542 |
| 543 target->drawNonIndexed(kTriangleStrip_GrPrimitiveType, 0, 4, &bounds); | 543 target->drawNonIndexed(kTriangleStrip_GrPrimitiveType, 0, 4, &bounds); |
| 544 | 544 |
| 545 return true; | 545 return true; |
| 546 } | 546 } |
| OLD | NEW |