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 "GrRRectEffect.h" | 8 #include "GrRRectEffect.h" |
9 | 9 |
10 #include "GrConvexPolyEffect.h" | 10 #include "GrConvexPolyEffect.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 | 53 |
54 const SkRRect& getRRect() const { return fRRect; } | 54 const SkRRect& getRRect() const { return fRRect; } |
55 | 55 |
56 uint32_t getCircularCornerFlags() const { return fCircularCornerFlags; } | 56 uint32_t getCircularCornerFlags() const { return fCircularCornerFlags; } |
57 | 57 |
58 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } | 58 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } |
59 | 59 |
60 private: | 60 private: |
61 CircularRRectEffect(GrPrimitiveEdgeType, uint32_t circularCornerFlags, const
SkRRect&); | 61 CircularRRectEffect(GrPrimitiveEdgeType, uint32_t circularCornerFlags, const
SkRRect&); |
62 | 62 |
63 GrGLSLFragmentProcessor* onCreateGLInstance() const override; | 63 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override; |
64 | 64 |
65 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov
erride; | 65 void onGetGLSLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const
override; |
66 | 66 |
67 bool onIsEqual(const GrFragmentProcessor& other) const override; | 67 bool onIsEqual(const GrFragmentProcessor& other) const override; |
68 | 68 |
69 void onComputeInvariantOutput(GrInvariantOutput* inout) const override; | 69 void onComputeInvariantOutput(GrInvariantOutput* inout) const override; |
70 | 70 |
71 SkRRect fRRect; | 71 SkRRect fRRect; |
72 GrPrimitiveEdgeType fEdgeType; | 72 GrPrimitiveEdgeType fEdgeType; |
73 uint32_t fCircularCornerFlags; | 73 uint32_t fCircularCornerFlags; |
74 | 74 |
75 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; | 75 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 SkFAIL("Should have been one of the above cases."); | 357 SkFAIL("Should have been one of the above cases."); |
358 } | 358 } |
359 pdman.set4f(fInnerRectUniform, rect.fLeft, rect.fTop, rect.fRight, rect.
fBottom); | 359 pdman.set4f(fInnerRectUniform, rect.fLeft, rect.fTop, rect.fRight, rect.
fBottom); |
360 pdman.set1f(fRadiusPlusHalfUniform, radius + 0.5f); | 360 pdman.set1f(fRadiusPlusHalfUniform, radius + 0.5f); |
361 fPrevRRect = rrect; | 361 fPrevRRect = rrect; |
362 } | 362 } |
363 } | 363 } |
364 | 364 |
365 ////////////////////////////////////////////////////////////////////////////////
//////////////////// | 365 ////////////////////////////////////////////////////////////////////////////////
//////////////////// |
366 | 366 |
367 void CircularRRectEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, | 367 void CircularRRectEffect::onGetGLSLProcessorKey(const GrGLSLCaps& caps, |
368 GrProcessorKeyBuilder* b) const { | 368 GrProcessorKeyBuilder* b) const
{ |
369 GLCircularRRectEffect::GenKey(*this, caps, b); | 369 GLCircularRRectEffect::GenKey(*this, caps, b); |
370 } | 370 } |
371 | 371 |
372 GrGLSLFragmentProcessor* CircularRRectEffect::onCreateGLInstance() const { | 372 GrGLSLFragmentProcessor* CircularRRectEffect::onCreateGLSLInstance() const { |
373 return new GLCircularRRectEffect(*this); | 373 return new GLCircularRRectEffect(*this); |
374 } | 374 } |
375 | 375 |
376 ////////////////////////////////////////////////////////////////////////////// | 376 ////////////////////////////////////////////////////////////////////////////// |
377 | 377 |
378 class EllipticalRRectEffect : public GrFragmentProcessor { | 378 class EllipticalRRectEffect : public GrFragmentProcessor { |
379 public: | 379 public: |
380 static GrFragmentProcessor* Create(GrPrimitiveEdgeType, const SkRRect&); | 380 static GrFragmentProcessor* Create(GrPrimitiveEdgeType, const SkRRect&); |
381 | 381 |
382 virtual ~EllipticalRRectEffect() {}; | 382 virtual ~EllipticalRRectEffect() {}; |
383 | 383 |
384 const char* name() const override { return "EllipticalRRect"; } | 384 const char* name() const override { return "EllipticalRRect"; } |
385 | 385 |
386 const SkRRect& getRRect() const { return fRRect; } | 386 const SkRRect& getRRect() const { return fRRect; } |
387 | 387 |
388 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } | 388 GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } |
389 | 389 |
390 private: | 390 private: |
391 EllipticalRRectEffect(GrPrimitiveEdgeType, const SkRRect&); | 391 EllipticalRRectEffect(GrPrimitiveEdgeType, const SkRRect&); |
392 | 392 |
393 GrGLSLFragmentProcessor* onCreateGLInstance() const override; | 393 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override; |
394 | 394 |
395 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov
erride; | 395 void onGetGLSLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const
override; |
396 | 396 |
397 bool onIsEqual(const GrFragmentProcessor& other) const override; | 397 bool onIsEqual(const GrFragmentProcessor& other) const override; |
398 | 398 |
399 void onComputeInvariantOutput(GrInvariantOutput* inout) const override; | 399 void onComputeInvariantOutput(GrInvariantOutput* inout) const override; |
400 | 400 |
401 SkRRect fRRect; | 401 SkRRect fRRect; |
402 GrPrimitiveEdgeType fEdgeType; | 402 GrPrimitiveEdgeType fEdgeType; |
403 | 403 |
404 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; | 404 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; |
405 | 405 |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
608 default: | 608 default: |
609 SkFAIL("RRect should always be simple or nine-patch."); | 609 SkFAIL("RRect should always be simple or nine-patch."); |
610 } | 610 } |
611 pdman.set4f(fInnerRectUniform, rect.fLeft, rect.fTop, rect.fRight, rect.
fBottom); | 611 pdman.set4f(fInnerRectUniform, rect.fLeft, rect.fTop, rect.fRight, rect.
fBottom); |
612 fPrevRRect = rrect; | 612 fPrevRRect = rrect; |
613 } | 613 } |
614 } | 614 } |
615 | 615 |
616 ////////////////////////////////////////////////////////////////////////////////
//////////////////// | 616 ////////////////////////////////////////////////////////////////////////////////
//////////////////// |
617 | 617 |
618 void EllipticalRRectEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, | 618 void EllipticalRRectEffect::onGetGLSLProcessorKey(const GrGLSLCaps& caps, |
619 GrProcessorKeyBuilder* b) const
{ | 619 GrProcessorKeyBuilder* b) cons
t { |
620 GLEllipticalRRectEffect::GenKey(*this, caps, b); | 620 GLEllipticalRRectEffect::GenKey(*this, caps, b); |
621 } | 621 } |
622 | 622 |
623 GrGLSLFragmentProcessor* EllipticalRRectEffect::onCreateGLInstance() const { | 623 GrGLSLFragmentProcessor* EllipticalRRectEffect::onCreateGLSLInstance() const { |
624 return new GLEllipticalRRectEffect(*this); | 624 return new GLEllipticalRRectEffect(*this); |
625 } | 625 } |
626 | 626 |
627 ////////////////////////////////////////////////////////////////////////////// | 627 ////////////////////////////////////////////////////////////////////////////// |
628 | 628 |
629 GrFragmentProcessor* GrRRectEffect::Create(GrPrimitiveEdgeType edgeType, const S
kRRect& rrect) { | 629 GrFragmentProcessor* GrRRectEffect::Create(GrPrimitiveEdgeType edgeType, const S
kRRect& rrect) { |
630 if (rrect.isRect()) { | 630 if (rrect.isRect()) { |
631 return GrConvexPolyEffect::Create(edgeType, rrect.getBounds()); | 631 return GrConvexPolyEffect::Create(edgeType, rrect.getBounds()); |
632 } | 632 } |
633 | 633 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
715 if (rrect.isNinePatch()) { | 715 if (rrect.isNinePatch()) { |
716 return EllipticalRRectEffect::Create(edgeType, rrect); | 716 return EllipticalRRectEffect::Create(edgeType, rrect); |
717 } | 717 } |
718 return nullptr; | 718 return nullptr; |
719 } | 719 } |
720 } | 720 } |
721 } | 721 } |
722 | 722 |
723 return nullptr; | 723 return nullptr; |
724 } | 724 } |
OLD | NEW |