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 "gl/builders/GrGLProgramBuilder.h" | 8 #include "gl/builders/GrGLProgramBuilder.h" |
9 #include "GrRRectEffect.h" | 9 #include "GrRRectEffect.h" |
10 | 10 |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 } | 132 } |
133 | 133 |
134 ////////////////////////////////////////////////////////////////////////////// | 134 ////////////////////////////////////////////////////////////////////////////// |
135 | 135 |
136 class GLCircularRRectEffect : public GrGLFragmentProcessor { | 136 class GLCircularRRectEffect : public GrGLFragmentProcessor { |
137 public: | 137 public: |
138 GLCircularRRectEffect(const GrBackendProcessorFactory&, const GrProcessor&); | 138 GLCircularRRectEffect(const GrBackendProcessorFactory&, const GrProcessor&); |
139 | 139 |
140 virtual void emitCode(GrGLFPBuilder* builder, | 140 virtual void emitCode(GrGLFPBuilder* builder, |
141 const GrFragmentProcessor& fp, | 141 const GrFragmentProcessor& fp, |
142 const GrProcessorKey& key, | |
143 const char* outputColor, | 142 const char* outputColor, |
144 const char* inputColor, | 143 const char* inputColor, |
145 const TransformedCoordsArray&, | 144 const TransformedCoordsArray&, |
146 const TextureSamplerArray&) SK_OVERRIDE; | 145 const TextureSamplerArray&) SK_OVERRIDE; |
147 | 146 |
148 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe
yBuilder*); | 147 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe
yBuilder*); |
149 | 148 |
150 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O
VERRIDE; | 149 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O
VERRIDE; |
151 | 150 |
152 private: | 151 private: |
153 GrGLProgramDataManager::UniformHandle fInnerRectUniform; | 152 GrGLProgramDataManager::UniformHandle fInnerRectUniform; |
154 GrGLProgramDataManager::UniformHandle fRadiusPlusHalfUniform; | 153 GrGLProgramDataManager::UniformHandle fRadiusPlusHalfUniform; |
155 SkRRect fPrevRRect; | 154 SkRRect fPrevRRect; |
156 typedef GrGLFragmentProcessor INHERITED; | 155 typedef GrGLFragmentProcessor INHERITED; |
157 }; | 156 }; |
158 | 157 |
159 GLCircularRRectEffect::GLCircularRRectEffect(const GrBackendProcessorFactory& fa
ctory, | 158 GLCircularRRectEffect::GLCircularRRectEffect(const GrBackendProcessorFactory& fa
ctory, |
160 const GrProcessor& ) | 159 const GrProcessor& ) |
161 : INHERITED (factory) { | 160 : INHERITED (factory) { |
162 fPrevRRect.setEmpty(); | 161 fPrevRRect.setEmpty(); |
163 } | 162 } |
164 | 163 |
165 void GLCircularRRectEffect::emitCode(GrGLFPBuilder* builder, | 164 void GLCircularRRectEffect::emitCode(GrGLFPBuilder* builder, |
166 const GrFragmentProcessor& fp, | 165 const GrFragmentProcessor& fp, |
167 const GrProcessorKey& key, | 166 const char* outputColor, |
168 const char* outputColor, | 167 const char* inputColor, |
169 const char* inputColor, | 168 const TransformedCoordsArray&, |
170 const TransformedCoordsArray&, | 169 const TextureSamplerArray& samplers) { |
171 const TextureSamplerArray& samplers) { | |
172 const CircularRRectEffect& crre = fp.cast<CircularRRectEffect>(); | 170 const CircularRRectEffect& crre = fp.cast<CircularRRectEffect>(); |
173 const char *rectName; | 171 const char *rectName; |
174 const char *radiusPlusHalfName; | 172 const char *radiusPlusHalfName; |
175 // The inner rect is the rrect bounds inset by the radius. Its left, top, ri
ght, and bottom | 173 // The inner rect is the rrect bounds inset by the radius. Its left, top, ri
ght, and bottom |
176 // edges correspond to components x, y, z, and w, respectively. When a side
of the rrect has | 174 // edges correspond to components x, y, z, and w, respectively. When a side
of the rrect has |
177 // only rectangular corners, that side's value corresponds to the rect edge'
s value outset by | 175 // only rectangular corners, that side's value corresponds to the rect edge'
s value outset by |
178 // half a pixel. | 176 // half a pixel. |
179 fInnerRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, | 177 fInnerRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, |
180 kVec4f_GrSLType, | 178 kVec4f_GrSLType, |
181 "innerRect", | 179 "innerRect", |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 } | 485 } |
488 | 486 |
489 ////////////////////////////////////////////////////////////////////////////// | 487 ////////////////////////////////////////////////////////////////////////////// |
490 | 488 |
491 class GLEllipticalRRectEffect : public GrGLFragmentProcessor { | 489 class GLEllipticalRRectEffect : public GrGLFragmentProcessor { |
492 public: | 490 public: |
493 GLEllipticalRRectEffect(const GrBackendProcessorFactory&, const GrProcessor&
); | 491 GLEllipticalRRectEffect(const GrBackendProcessorFactory&, const GrProcessor&
); |
494 | 492 |
495 virtual void emitCode(GrGLFPBuilder* builder, | 493 virtual void emitCode(GrGLFPBuilder* builder, |
496 const GrFragmentProcessor& effect, | 494 const GrFragmentProcessor& effect, |
497 const GrProcessorKey& key, | |
498 const char* outputColor, | 495 const char* outputColor, |
499 const char* inputColor, | 496 const char* inputColor, |
500 const TransformedCoordsArray&, | 497 const TransformedCoordsArray&, |
501 const TextureSamplerArray&) SK_OVERRIDE; | 498 const TextureSamplerArray&) SK_OVERRIDE; |
502 | 499 |
503 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe
yBuilder*); | 500 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe
yBuilder*); |
504 | 501 |
505 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O
VERRIDE; | 502 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O
VERRIDE; |
506 | 503 |
507 private: | 504 private: |
508 GrGLProgramDataManager::UniformHandle fInnerRectUniform; | 505 GrGLProgramDataManager::UniformHandle fInnerRectUniform; |
509 GrGLProgramDataManager::UniformHandle fInvRadiiSqdUniform; | 506 GrGLProgramDataManager::UniformHandle fInvRadiiSqdUniform; |
510 SkRRect fPrevRRect; | 507 SkRRect fPrevRRect; |
511 typedef GrGLFragmentProcessor INHERITED; | 508 typedef GrGLFragmentProcessor INHERITED; |
512 }; | 509 }; |
513 | 510 |
514 GLEllipticalRRectEffect::GLEllipticalRRectEffect(const GrBackendProcessorFactory
& factory, | 511 GLEllipticalRRectEffect::GLEllipticalRRectEffect(const GrBackendProcessorFactory
& factory, |
515 const GrProcessor& effect) | 512 const GrProcessor& effect) |
516 : INHERITED (factory) { | 513 : INHERITED (factory) { |
517 fPrevRRect.setEmpty(); | 514 fPrevRRect.setEmpty(); |
518 } | 515 } |
519 | 516 |
520 void GLEllipticalRRectEffect::emitCode(GrGLFPBuilder* builder, | 517 void GLEllipticalRRectEffect::emitCode(GrGLFPBuilder* builder, |
521 const GrFragmentProcessor& effect, | 518 const GrFragmentProcessor& effect, |
522 const GrProcessorKey& key, | |
523 const char* outputColor, | 519 const char* outputColor, |
524 const char* inputColor, | 520 const char* inputColor, |
525 const TransformedCoordsArray&, | 521 const TransformedCoordsArray&, |
526 const TextureSamplerArray& samplers) { | 522 const TextureSamplerArray& samplers) { |
527 const EllipticalRRectEffect& erre = effect.cast<EllipticalRRectEffect>(); | 523 const EllipticalRRectEffect& erre = effect.cast<EllipticalRRectEffect>(); |
528 const char *rectName; | 524 const char *rectName; |
529 // The inner rect is the rrect bounds inset by the x/y radii | 525 // The inner rect is the rrect bounds inset by the x/y radii |
530 fInnerRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, | 526 fInnerRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibi
lity, |
531 kVec4f_GrSLType, | 527 kVec4f_GrSLType, |
532 "innerRect", | 528 "innerRect", |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 if (rrect.isNinePatch()) { | 725 if (rrect.isNinePatch()) { |
730 return EllipticalRRectEffect::Create(edgeType, rrect); | 726 return EllipticalRRectEffect::Create(edgeType, rrect); |
731 } | 727 } |
732 return NULL; | 728 return NULL; |
733 } | 729 } |
734 } | 730 } |
735 } | 731 } |
736 | 732 |
737 return NULL; | 733 return NULL; |
738 } | 734 } |
OLD | NEW |