Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: src/effects/gradients/SkGradientShaderPriv.h

Issue 582963002: Solo gp (Closed) Base URL: https://skia.googlesource.com/skia.git@no_peb
Patch Set: rebase Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/effects/gradients/SkGradientShader.cpp ('k') | src/effects/gradients/SkLinearGradient.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 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 #ifndef SkGradientShaderPriv_DEFINED 8 #ifndef SkGradientShaderPriv_DEFINED
9 #define SkGradientShaderPriv_DEFINED 9 #define SkGradientShaderPriv_DEFINED
10 10
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 291
292 static inline int next_dither_toggle16(int toggle) { 292 static inline int next_dither_toggle16(int toggle) {
293 return toggle ^ SkGradientShaderBase::kDitherStride16; 293 return toggle ^ SkGradientShaderBase::kDitherStride16;
294 } 294 }
295 295
296 /////////////////////////////////////////////////////////////////////////////// 296 ///////////////////////////////////////////////////////////////////////////////
297 297
298 #if SK_SUPPORT_GPU 298 #if SK_SUPPORT_GPU
299 299
300 #include "GrCoordTransform.h" 300 #include "GrCoordTransform.h"
301 #include "gl/GrGLEffect.h" 301 #include "gl/GrGLProcessor.h"
302 302
303 class GrEffectStage; 303 class GrProcessorStage;
304 class GrBackendEffectFactory; 304 class GrBackendProcessorFactory;
305 305
306 /* 306 /*
307 * The interpretation of the texture matrix depends on the sample mode. The 307 * The interpretation of the texture matrix depends on the sample mode. The
308 * texture matrix is applied both when the texture coordinates are explicit 308 * texture matrix is applied both when the texture coordinates are explicit
309 * and when vertex positions are used as texture coordinates. In the latter 309 * and when vertex positions are used as texture coordinates. In the latter
310 * case the texture matrix is applied to the pre-view-matrix position 310 * case the texture matrix is applied to the pre-view-matrix position
311 * values. 311 * values.
312 * 312 *
313 * Normal SampleMode 313 * Normal SampleMode
314 * The post-matrix texture coordinates are in normalize space with (0,0) at 314 * The post-matrix texture coordinates are in normalize space with (0,0) at
315 * the top-left and (1,1) at the bottom right. 315 * the top-left and (1,1) at the bottom right.
316 * RadialGradient 316 * RadialGradient
317 * The matrix specifies the radial gradient parameters. 317 * The matrix specifies the radial gradient parameters.
318 * (0,0) in the post-matrix space is center of the radial gradient. 318 * (0,0) in the post-matrix space is center of the radial gradient.
319 * Radial2Gradient 319 * Radial2Gradient
320 * Matrix transforms to space where first circle is centered at the 320 * Matrix transforms to space where first circle is centered at the
321 * origin. The second circle will be centered (x, 0) where x may be 321 * origin. The second circle will be centered (x, 0) where x may be
322 * 0 and is provided by setRadial2Params. The post-matrix space is 322 * 0 and is provided by setRadial2Params. The post-matrix space is
323 * normalized such that 1 is the second radius - first radius. 323 * normalized such that 1 is the second radius - first radius.
324 * SweepGradient 324 * SweepGradient
325 * The angle from the origin of texture coordinates in post-matrix space 325 * The angle from the origin of texture coordinates in post-matrix space
326 * determines the gradient value. 326 * determines the gradient value.
327 */ 327 */
328 328
329 class GrTextureStripAtlas; 329 class GrTextureStripAtlas;
330 330
331 // Base class for Gr gradient effects 331 // Base class for Gr gradient effects
332 class GrGradientEffect : public GrEffect { 332 class GrGradientEffect : public GrFragmentProcessor {
333 public: 333 public:
334 334
335 GrGradientEffect(GrContext* ctx, 335 GrGradientEffect(GrContext* ctx,
336 const SkGradientShaderBase& shader, 336 const SkGradientShaderBase& shader,
337 const SkMatrix& matrix, 337 const SkMatrix& matrix,
338 SkShader::TileMode tileMode); 338 SkShader::TileMode tileMode);
339 339
340 virtual ~GrGradientEffect(); 340 virtual ~GrGradientEffect();
341 341
342 bool useAtlas() const { return SkToBool(-1 != fRow); } 342 bool useAtlas() const { return SkToBool(-1 != fRow); }
(...skipping 24 matching lines...) Expand all
367 sized to be at least kMaxRandomGradientColors. stops is a pointer to an array of at least 367 sized to be at least kMaxRandomGradientColors. stops is a pointer to an array of at least
368 size kMaxRandomGradientColors. It may be updated to NULL, indicating tha t NULL should be 368 size kMaxRandomGradientColors. It may be updated to NULL, indicating tha t NULL should be
369 passed to the gradient factory rather than the array. 369 passed to the gradient factory rather than the array.
370 */ 370 */
371 static const int kMaxRandomGradientColors = 4; 371 static const int kMaxRandomGradientColors = 4;
372 static int RandomGradientParams(SkRandom* r, 372 static int RandomGradientParams(SkRandom* r,
373 SkColor colors[kMaxRandomGradientColors], 373 SkColor colors[kMaxRandomGradientColors],
374 SkScalar** stops, 374 SkScalar** stops,
375 SkShader::TileMode* tm); 375 SkShader::TileMode* tm);
376 376
377 virtual bool onIsEqual(const GrEffect& effect) const SK_OVERRIDE; 377 virtual bool onIsEqual(const GrProcessor&) const SK_OVERRIDE;
378 378
379 const GrCoordTransform& getCoordTransform() const { return fCoordTransform; } 379 const GrCoordTransform& getCoordTransform() const { return fCoordTransform; }
380 380
381 private: 381 private:
382 static const GrCoordSet kCoordSet = kLocal_GrCoordSet; 382 static const GrCoordSet kCoordSet = kLocal_GrCoordSet;
383 383
384 GrCoordTransform fCoordTransform; 384 GrCoordTransform fCoordTransform;
385 GrTextureAccess fTextureAccess; 385 GrTextureAccess fTextureAccess;
386 SkScalar fYCoord; 386 SkScalar fYCoord;
387 GrTextureStripAtlas* fAtlas; 387 GrTextureStripAtlas* fAtlas;
388 int fRow; 388 int fRow;
389 bool fIsOpaque; 389 bool fIsOpaque;
390 SkGradientShaderBase::GpuColorType fColorType; 390 SkGradientShaderBase::GpuColorType fColorType;
391 SkColor fColors[3]; // More than 3 colors we use texture 391 SkColor fColors[3]; // More than 3 colors we use texture
392 PremulType fPremulType; // This only changes behavior for two and three colo r special cases. 392 PremulType fPremulType; // This only changes behavior for two and three colo r special cases.
393 // It is already baked into to the table for texture gradients. 393 // It is already baked into to the table for texture gradients.
394 typedef GrEffect INHERITED; 394 typedef GrFragmentProcessor INHERITED;
395 395
396 }; 396 };
397 397
398 /////////////////////////////////////////////////////////////////////////////// 398 ///////////////////////////////////////////////////////////////////////////////
399 399
400 // Base class for GL gradient effects 400 // Base class for GL gradient effects
401 class GrGLGradientEffect : public GrGLEffect { 401 class GrGLGradientEffect : public GrGLFragmentProcessor {
402 public: 402 public:
403 GrGLGradientEffect(const GrBackendEffectFactory& factory); 403 GrGLGradientEffect(const GrBackendProcessorFactory& factory);
404 virtual ~GrGLGradientEffect(); 404 virtual ~GrGLGradientEffect();
405 405
406 virtual void setData(const GrGLProgramDataManager&, const GrEffect&) SK_OVER RIDE; 406 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O VERRIDE;
407 407
408 protected: 408 protected:
409 /** 409 /**
410 * Subclasses must call this. It will return a key for the part of the shade r code controlled 410 * Subclasses must call this. It will return a key for the part of the shade r code controlled
411 * by the base class. The subclasses must stick it in their key and then pas s it to the below 411 * by the base class. The subclasses must stick it in their key and then pas s it to the below
412 * emit* functions from their emitCode function. 412 * emit* functions from their emitCode function.
413 */ 413 */
414 static uint32_t GenBaseGradientKey(const GrEffect&); 414 static uint32_t GenBaseGradientKey(const GrProcessor&);
415 415
416 // Emits the uniform used as the y-coord to texture samples in derived class es. Subclasses 416 // Emits the uniform used as the y-coord to texture samples in derived class es. Subclasses
417 // should call this method from their emitCode(). 417 // should call this method from their emitCode().
418 void emitUniforms(GrGLProgramBuilder* builder, uint32_t baseKey); 418 void emitUniforms(GrGLProgramBuilder* builder, uint32_t baseKey);
419 419
420 420
421 // emit code that gets a fragment's color from an expression for t; Has bran ches for 3 separate 421 // emit code that gets a fragment's color from an expression for t; Has bran ches for 3 separate
422 // control flows inside -- 2 color gradients, 3 color symmetric gradients (b oth using 422 // control flows inside -- 2 color gradients, 3 color symmetric gradients (b oth using
423 // native GLSL mix), and 4+ color gradients that use the traditional texture lookup. 423 // native GLSL mix), and 4+ color gradients that use the traditional texture lookup.
424 void emitColor(GrGLProgramBuilder* builder, 424 void emitColor(GrGLProgramBuilder* builder,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 return GrGradientEffect::kAfterInterp_PremulType; 460 return GrGradientEffect::kAfterInterp_PremulType;
461 } 461 }
462 } 462 }
463 463
464 SkScalar fCachedYCoord; 464 SkScalar fCachedYCoord;
465 GrGLProgramDataManager::UniformHandle fFSYUni; 465 GrGLProgramDataManager::UniformHandle fFSYUni;
466 GrGLProgramDataManager::UniformHandle fColorStartUni; 466 GrGLProgramDataManager::UniformHandle fColorStartUni;
467 GrGLProgramDataManager::UniformHandle fColorMidUni; 467 GrGLProgramDataManager::UniformHandle fColorMidUni;
468 GrGLProgramDataManager::UniformHandle fColorEndUni; 468 GrGLProgramDataManager::UniformHandle fColorEndUni;
469 469
470 typedef GrGLEffect INHERITED; 470 typedef GrGLFragmentProcessor INHERITED;
471 }; 471 };
472 472
473 #endif 473 #endif
474 474
475 #endif 475 #endif
OLDNEW
« no previous file with comments | « src/effects/gradients/SkGradientShader.cpp ('k') | src/effects/gradients/SkLinearGradient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698