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 "GrOvalEffect.h" | 9 #include "GrOvalEffect.h" |
10 #include "GrInvariantOutput.h" | 10 #include "GrInvariantOutput.h" |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 } | 96 } |
97 | 97 |
98 ////////////////////////////////////////////////////////////////////////////// | 98 ////////////////////////////////////////////////////////////////////////////// |
99 | 99 |
100 class GLCircleEffect : public GrGLFragmentProcessor { | 100 class GLCircleEffect : public GrGLFragmentProcessor { |
101 public: | 101 public: |
102 GLCircleEffect(const GrBackendProcessorFactory&, const GrProcessor&); | 102 GLCircleEffect(const GrBackendProcessorFactory&, const GrProcessor&); |
103 | 103 |
104 virtual void emitCode(GrGLFPBuilder* builder, | 104 virtual void emitCode(GrGLFPBuilder* builder, |
105 const GrFragmentProcessor& fp, | 105 const GrFragmentProcessor& fp, |
106 const GrProcessorKey& key, | |
107 const char* outputColor, | 106 const char* outputColor, |
108 const char* inputColor, | 107 const char* inputColor, |
109 const TransformedCoordsArray&, | 108 const TransformedCoordsArray&, |
110 const TextureSamplerArray&) SK_OVERRIDE; | 109 const TextureSamplerArray&) SK_OVERRIDE; |
111 | 110 |
112 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe
yBuilder*); | 111 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe
yBuilder*); |
113 | 112 |
114 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O
VERRIDE; | 113 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O
VERRIDE; |
115 | 114 |
116 private: | 115 private: |
117 GrGLProgramDataManager::UniformHandle fCircleUniform; | 116 GrGLProgramDataManager::UniformHandle fCircleUniform; |
118 SkPoint fPrevCenter; | 117 SkPoint fPrevCenter; |
119 SkScalar fPrevRadius; | 118 SkScalar fPrevRadius; |
120 | 119 |
121 typedef GrGLFragmentProcessor INHERITED; | 120 typedef GrGLFragmentProcessor INHERITED; |
122 }; | 121 }; |
123 | 122 |
124 GLCircleEffect::GLCircleEffect(const GrBackendProcessorFactory& factory, | 123 GLCircleEffect::GLCircleEffect(const GrBackendProcessorFactory& factory, |
125 const GrProcessor&) | 124 const GrProcessor&) |
126 : INHERITED (factory) { | 125 : INHERITED (factory) { |
127 fPrevRadius = -1.f; | 126 fPrevRadius = -1.f; |
128 } | 127 } |
129 | 128 |
130 void GLCircleEffect::emitCode(GrGLFPBuilder* builder, | 129 void GLCircleEffect::emitCode(GrGLFPBuilder* builder, |
131 const GrFragmentProcessor& fp, | 130 const GrFragmentProcessor& fp, |
132 const GrProcessorKey& key, | |
133 const char* outputColor, | 131 const char* outputColor, |
134 const char* inputColor, | 132 const char* inputColor, |
135 const TransformedCoordsArray&, | 133 const TransformedCoordsArray&, |
136 const TextureSamplerArray& samplers) { | 134 const TextureSamplerArray& samplers) { |
137 const CircleEffect& ce = fp.cast<CircleEffect>(); | 135 const CircleEffect& ce = fp.cast<CircleEffect>(); |
138 const char *circleName; | 136 const char *circleName; |
139 // The circle uniform is (center.x, center.y, radius + 0.5) for regular fill
s and | 137 // The circle uniform is (center.x, center.y, radius + 0.5) for regular fill
s and |
140 // (... ,radius - 0.5) for inverse fills. | 138 // (... ,radius - 0.5) for inverse fills. |
141 fCircleUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibilit
y, | 139 fCircleUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibilit
y, |
142 kVec3f_GrSLType, | 140 kVec3f_GrSLType, |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 } | 269 } |
272 | 270 |
273 ////////////////////////////////////////////////////////////////////////////// | 271 ////////////////////////////////////////////////////////////////////////////// |
274 | 272 |
275 class GLEllipseEffect : public GrGLFragmentProcessor { | 273 class GLEllipseEffect : public GrGLFragmentProcessor { |
276 public: | 274 public: |
277 GLEllipseEffect(const GrBackendProcessorFactory&, const GrProcessor&); | 275 GLEllipseEffect(const GrBackendProcessorFactory&, const GrProcessor&); |
278 | 276 |
279 virtual void emitCode(GrGLFPBuilder* builder, | 277 virtual void emitCode(GrGLFPBuilder* builder, |
280 const GrFragmentProcessor& fp, | 278 const GrFragmentProcessor& fp, |
281 const GrProcessorKey& key, | |
282 const char* outputColor, | 279 const char* outputColor, |
283 const char* inputColor, | 280 const char* inputColor, |
284 const TransformedCoordsArray&, | 281 const TransformedCoordsArray&, |
285 const TextureSamplerArray&) SK_OVERRIDE; | 282 const TextureSamplerArray&) SK_OVERRIDE; |
286 | 283 |
287 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe
yBuilder*); | 284 static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKe
yBuilder*); |
288 | 285 |
289 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O
VERRIDE; | 286 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O
VERRIDE; |
290 | 287 |
291 private: | 288 private: |
292 GrGLProgramDataManager::UniformHandle fEllipseUniform; | 289 GrGLProgramDataManager::UniformHandle fEllipseUniform; |
293 SkPoint fPrevCenter; | 290 SkPoint fPrevCenter; |
294 SkVector fPrevRadii; | 291 SkVector fPrevRadii; |
295 | 292 |
296 typedef GrGLFragmentProcessor INHERITED; | 293 typedef GrGLFragmentProcessor INHERITED; |
297 }; | 294 }; |
298 | 295 |
299 GLEllipseEffect::GLEllipseEffect(const GrBackendProcessorFactory& factory, | 296 GLEllipseEffect::GLEllipseEffect(const GrBackendProcessorFactory& factory, |
300 const GrProcessor& effect) | 297 const GrProcessor& effect) |
301 : INHERITED (factory) { | 298 : INHERITED (factory) { |
302 fPrevRadii.fX = -1.f; | 299 fPrevRadii.fX = -1.f; |
303 } | 300 } |
304 | 301 |
305 void GLEllipseEffect::emitCode(GrGLFPBuilder* builder, | 302 void GLEllipseEffect::emitCode(GrGLFPBuilder* builder, |
306 const GrFragmentProcessor& fp, | 303 const GrFragmentProcessor& fp, |
307 const GrProcessorKey& key, | |
308 const char* outputColor, | 304 const char* outputColor, |
309 const char* inputColor, | 305 const char* inputColor, |
310 const TransformedCoordsArray&, | 306 const TransformedCoordsArray&, |
311 const TextureSamplerArray& samplers) { | 307 const TextureSamplerArray& samplers) { |
312 const EllipseEffect& ee = fp.cast<EllipseEffect>(); | 308 const EllipseEffect& ee = fp.cast<EllipseEffect>(); |
313 const char *ellipseName; | 309 const char *ellipseName; |
314 // The ellipse uniform is (center.x, center.y, 1 / rx^2, 1 / ry^2) | 310 // The ellipse uniform is (center.x, center.y, 1 / rx^2, 1 / ry^2) |
315 fEllipseUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibili
ty, | 311 fEllipseUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibili
ty, |
316 kVec4f_GrSLType, | 312 kVec4f_GrSLType, |
317 "ellipse", | 313 "ellipse", |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 w /= 2; | 377 w /= 2; |
382 return CircleEffect::Create(edgeType, SkPoint::Make(oval.fLeft + w, oval
.fTop + w), w); | 378 return CircleEffect::Create(edgeType, SkPoint::Make(oval.fLeft + w, oval
.fTop + w), w); |
383 } else { | 379 } else { |
384 w /= 2; | 380 w /= 2; |
385 h /= 2; | 381 h /= 2; |
386 return EllipseEffect::Create(edgeType, SkPoint::Make(oval.fLeft + w, ova
l.fTop + h), w, h); | 382 return EllipseEffect::Create(edgeType, SkPoint::Make(oval.fLeft + w, ova
l.fTop + h), w, h); |
387 } | 383 } |
388 | 384 |
389 return NULL; | 385 return NULL; |
390 } | 386 } |
OLD | NEW |