| 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 "GrOvalEffect.h" | 8 #include "GrOvalEffect.h" |
| 9 | 9 |
| 10 #include "GrFragmentProcessor.h" | 10 #include "GrFragmentProcessor.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 GrPrimitiveEdgeType fEdgeType; | 44 GrPrimitiveEdgeType fEdgeType; |
| 45 | 45 |
| 46 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; | 46 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; |
| 47 | 47 |
| 48 typedef GrFragmentProcessor INHERITED; | 48 typedef GrFragmentProcessor INHERITED; |
| 49 }; | 49 }; |
| 50 | 50 |
| 51 GrFragmentProcessor* CircleEffect::Create(GrPrimitiveEdgeType edgeType, const Sk
Point& center, | 51 GrFragmentProcessor* CircleEffect::Create(GrPrimitiveEdgeType edgeType, const Sk
Point& center, |
| 52 SkScalar radius) { | 52 SkScalar radius) { |
| 53 SkASSERT(radius >= 0); | 53 SkASSERT(radius >= 0); |
| 54 return SkNEW_ARGS(CircleEffect, (edgeType, center, radius)); | 54 return new CircleEffect(edgeType, center, radius); |
| 55 } | 55 } |
| 56 | 56 |
| 57 void CircleEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const { | 57 void CircleEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const { |
| 58 inout->mulByUnknownSingleComponent(); | 58 inout->mulByUnknownSingleComponent(); |
| 59 } | 59 } |
| 60 | 60 |
| 61 CircleEffect::CircleEffect(GrPrimitiveEdgeType edgeType, const SkPoint& c, SkSca
lar r) | 61 CircleEffect::CircleEffect(GrPrimitiveEdgeType edgeType, const SkPoint& c, SkSca
lar r) |
| 62 : fCenter(c) | 62 : fCenter(c) |
| 63 , fRadius(r) | 63 , fRadius(r) |
| 64 , fEdgeType(edgeType) { | 64 , fEdgeType(edgeType) { |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 } | 170 } |
| 171 | 171 |
| 172 ////////////////////////////////////////////////////////////////////////////////
/////////////////// | 172 ////////////////////////////////////////////////////////////////////////////////
/////////////////// |
| 173 | 173 |
| 174 void CircleEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, | 174 void CircleEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, |
| 175 GrProcessorKeyBuilder* b) const { | 175 GrProcessorKeyBuilder* b) const { |
| 176 GLCircleEffect::GenKey(*this, caps, b); | 176 GLCircleEffect::GenKey(*this, caps, b); |
| 177 } | 177 } |
| 178 | 178 |
| 179 GrGLFragmentProcessor* CircleEffect::onCreateGLInstance() const { | 179 GrGLFragmentProcessor* CircleEffect::onCreateGLInstance() const { |
| 180 return SkNEW_ARGS(GLCircleEffect, (*this)); | 180 return new GLCircleEffect(*this); |
| 181 } | 181 } |
| 182 | 182 |
| 183 ////////////////////////////////////////////////////////////////////////////// | 183 ////////////////////////////////////////////////////////////////////////////// |
| 184 | 184 |
| 185 class EllipseEffect : public GrFragmentProcessor { | 185 class EllipseEffect : public GrFragmentProcessor { |
| 186 public: | 186 public: |
| 187 static GrFragmentProcessor* Create(GrPrimitiveEdgeType, const SkPoint& cente
r, SkScalar rx, | 187 static GrFragmentProcessor* Create(GrPrimitiveEdgeType, const SkPoint& cente
r, SkScalar rx, |
| 188 SkScalar ry); | 188 SkScalar ry); |
| 189 | 189 |
| 190 virtual ~EllipseEffect() {}; | 190 virtual ~EllipseEffect() {}; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 214 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; | 214 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; |
| 215 | 215 |
| 216 typedef GrFragmentProcessor INHERITED; | 216 typedef GrFragmentProcessor INHERITED; |
| 217 }; | 217 }; |
| 218 | 218 |
| 219 GrFragmentProcessor* EllipseEffect::Create(GrPrimitiveEdgeType edgeType, | 219 GrFragmentProcessor* EllipseEffect::Create(GrPrimitiveEdgeType edgeType, |
| 220 const SkPoint& center, | 220 const SkPoint& center, |
| 221 SkScalar rx, | 221 SkScalar rx, |
| 222 SkScalar ry) { | 222 SkScalar ry) { |
| 223 SkASSERT(rx >= 0 && ry >= 0); | 223 SkASSERT(rx >= 0 && ry >= 0); |
| 224 return SkNEW_ARGS(EllipseEffect, (edgeType, center, rx, ry)); | 224 return new EllipseEffect(edgeType, center, rx, ry); |
| 225 } | 225 } |
| 226 | 226 |
| 227 void EllipseEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const { | 227 void EllipseEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const { |
| 228 inout->mulByUnknownSingleComponent(); | 228 inout->mulByUnknownSingleComponent(); |
| 229 } | 229 } |
| 230 | 230 |
| 231 EllipseEffect::EllipseEffect(GrPrimitiveEdgeType edgeType, const SkPoint& c, SkS
calar rx, SkScalar ry) | 231 EllipseEffect::EllipseEffect(GrPrimitiveEdgeType edgeType, const SkPoint& c, SkS
calar rx, SkScalar ry) |
| 232 : fCenter(c) | 232 : fCenter(c) |
| 233 , fRadii(SkVector::Make(rx, ry)) | 233 , fRadii(SkVector::Make(rx, ry)) |
| 234 , fEdgeType(edgeType) { | 234 , fEdgeType(edgeType) { |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 } | 346 } |
| 347 | 347 |
| 348 ////////////////////////////////////////////////////////////////////////////////
/////////////////// | 348 ////////////////////////////////////////////////////////////////////////////////
/////////////////// |
| 349 | 349 |
| 350 void EllipseEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, | 350 void EllipseEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, |
| 351 GrProcessorKeyBuilder* b) const { | 351 GrProcessorKeyBuilder* b) const { |
| 352 GLEllipseEffect::GenKey(*this, caps, b); | 352 GLEllipseEffect::GenKey(*this, caps, b); |
| 353 } | 353 } |
| 354 | 354 |
| 355 GrGLFragmentProcessor* EllipseEffect::onCreateGLInstance() const { | 355 GrGLFragmentProcessor* EllipseEffect::onCreateGLInstance() const { |
| 356 return SkNEW_ARGS(GLEllipseEffect, (*this)); | 356 return new GLEllipseEffect(*this); |
| 357 } | 357 } |
| 358 | 358 |
| 359 ////////////////////////////////////////////////////////////////////////////// | 359 ////////////////////////////////////////////////////////////////////////////// |
| 360 | 360 |
| 361 GrFragmentProcessor* GrOvalEffect::Create(GrPrimitiveEdgeType edgeType, const Sk
Rect& oval) { | 361 GrFragmentProcessor* GrOvalEffect::Create(GrPrimitiveEdgeType edgeType, const Sk
Rect& oval) { |
| 362 if (kHairlineAA_GrProcessorEdgeType == edgeType) { | 362 if (kHairlineAA_GrProcessorEdgeType == edgeType) { |
| 363 return NULL; | 363 return NULL; |
| 364 } | 364 } |
| 365 SkScalar w = oval.width(); | 365 SkScalar w = oval.width(); |
| 366 SkScalar h = oval.height(); | 366 SkScalar h = oval.height(); |
| 367 if (SkScalarNearlyEqual(w, h)) { | 367 if (SkScalarNearlyEqual(w, h)) { |
| 368 w /= 2; | 368 w /= 2; |
| 369 return CircleEffect::Create(edgeType, SkPoint::Make(oval.fLeft + w, oval
.fTop + w), w); | 369 return CircleEffect::Create(edgeType, SkPoint::Make(oval.fLeft + w, oval
.fTop + w), w); |
| 370 } else { | 370 } else { |
| 371 w /= 2; | 371 w /= 2; |
| 372 h /= 2; | 372 h /= 2; |
| 373 return EllipseEffect::Create(edgeType, SkPoint::Make(oval.fLeft + w, ova
l.fTop + h), w, h); | 373 return EllipseEffect::Create(edgeType, SkPoint::Make(oval.fLeft + w, ova
l.fTop + h), w, h); |
| 374 } | 374 } |
| 375 | 375 |
| 376 return NULL; | 376 return NULL; |
| 377 } | 377 } |
| OLD | NEW |