LCOV - code coverage report
Current view: top level - gfx/skia/skia/include/effects - SkGradientShader.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 16 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 8 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2006 The Android Open Source Project
       3             :  *
       4             :  * Use of this source code is governed by a BSD-style license that can be
       5             :  * found in the LICENSE file.
       6             :  */
       7             : 
       8             : #ifndef SkGradientShader_DEFINED
       9             : #define SkGradientShader_DEFINED
      10             : 
      11             : #include "SkShader.h"
      12             : 
      13             : /** \class SkGradientShader
      14             : 
      15             :     SkGradientShader hosts factories for creating subclasses of SkShader that
      16             :     render linear and radial gradients.
      17             : */
      18             : class SK_API SkGradientShader {
      19             : public:
      20             :     enum Flags {
      21             :         /** By default gradients will interpolate their colors in unpremul space
      22             :          *  and then premultiply each of the results. By setting this flag, the
      23             :          *  gradients will premultiply their colors first, and then interpolate
      24             :          *  between them.
      25             :          */
      26             :         kInterpolateColorsInPremul_Flag = 1 << 0,
      27             :     };
      28             : 
      29             :     /** Returns a shader that generates a linear gradient between the two specified points.
      30             :         <p />
      31             :         @param  pts     The start and end points for the gradient.
      32             :         @param  colors  The array[count] of colors, to be distributed between the two points
      33             :         @param  pos     May be NULL. array[count] of SkScalars, or NULL, of the relative position of
      34             :                         each corresponding color in the colors array. If this is NULL,
      35             :                         the the colors are distributed evenly between the start and end point.
      36             :                         If this is not null, the values must begin with 0, end with 1.0, and
      37             :                         intermediate values must be strictly increasing.
      38             :         @param  count   Must be >=2. The number of colors (and pos if not NULL) entries.
      39             :         @param  mode    The tiling mode
      40             :     */
      41             :     static sk_sp<SkShader> MakeLinear(const SkPoint pts[2],
      42             :                                       const SkColor colors[], const SkScalar pos[], int count,
      43             :                                       SkShader::TileMode mode,
      44             :                                       uint32_t flags, const SkMatrix* localMatrix);
      45           0 :     static sk_sp<SkShader> MakeLinear(const SkPoint pts[2],
      46             :                                       const SkColor colors[], const SkScalar pos[], int count,
      47             :                                       SkShader::TileMode mode) {
      48           0 :         return MakeLinear(pts, colors, pos, count, mode, 0, NULL);
      49             :     }
      50             : 
      51             :     /** Returns a shader that generates a linear gradient between the two specified points.
      52             :         <p />
      53             :         @param  pts     The start and end points for the gradient.
      54             :         @param  colors  The array[count] of colors, to be distributed between the two points
      55             :         @param  pos     May be NULL. array[count] of SkScalars, or NULL, of the relative position of
      56             :                         each corresponding color in the colors array. If this is NULL,
      57             :                         the the colors are distributed evenly between the start and end point.
      58             :                         If this is not null, the values must begin with 0, end with 1.0, and
      59             :                         intermediate values must be strictly increasing.
      60             :         @param  count   Must be >=2. The number of colors (and pos if not NULL) entries.
      61             :         @param  mode    The tiling mode
      62             :     */
      63             :     static sk_sp<SkShader> MakeLinear(const SkPoint pts[2],
      64             :                                       const SkColor4f colors[], sk_sp<SkColorSpace> colorSpace,
      65             :                                       const SkScalar pos[], int count, SkShader::TileMode mode,
      66             :                                       uint32_t flags, const SkMatrix* localMatrix);
      67           0 :     static sk_sp<SkShader> MakeLinear(const SkPoint pts[2],
      68             :                                       const SkColor4f colors[], sk_sp<SkColorSpace> colorSpace,
      69             :                                       const SkScalar pos[], int count, SkShader::TileMode mode) {
      70           0 :         return MakeLinear(pts, colors, std::move(colorSpace), pos, count, mode, 0, NULL);
      71             :     }
      72             : 
      73             :     /** Returns a shader that generates a radial gradient given the center and radius.
      74             :         <p />
      75             :         @param  center  The center of the circle for this gradient
      76             :         @param  radius  Must be positive. The radius of the circle for this gradient
      77             :         @param  colors  The array[count] of colors, to be distributed between the center and edge of the circle
      78             :         @param  pos     May be NULL. The array[count] of SkScalars, or NULL, of the relative position of
      79             :                         each corresponding color in the colors array. If this is NULL,
      80             :                         the the colors are distributed evenly between the center and edge of the circle.
      81             :                         If this is not null, the values must begin with 0, end with 1.0, and
      82             :                         intermediate values must be strictly increasing.
      83             :         @param  count   Must be >= 2. The number of colors (and pos if not NULL) entries
      84             :         @param  mode    The tiling mode
      85             :     */
      86             :     static sk_sp<SkShader> MakeRadial(const SkPoint& center, SkScalar radius,
      87             :                                       const SkColor colors[], const SkScalar pos[], int count,
      88             :                                       SkShader::TileMode mode,
      89             :                                       uint32_t flags, const SkMatrix* localMatrix);
      90           0 :     static sk_sp<SkShader> MakeRadial(const SkPoint& center, SkScalar radius,
      91             :                                       const SkColor colors[], const SkScalar pos[], int count,
      92             :                                       SkShader::TileMode mode) {
      93           0 :         return MakeRadial(center, radius, colors, pos, count, mode, 0, NULL);
      94             :     }
      95             : 
      96             :     /** Returns a shader that generates a radial gradient given the center and radius.
      97             :         <p />
      98             :         @param  center  The center of the circle for this gradient
      99             :         @param  radius  Must be positive. The radius of the circle for this gradient
     100             :         @param  colors  The array[count] of colors, to be distributed between the center and edge of the circle
     101             :         @param  pos     May be NULL. The array[count] of SkScalars, or NULL, of the relative position of
     102             :                         each corresponding color in the colors array. If this is NULL,
     103             :                         the the colors are distributed evenly between the center and edge of the circle.
     104             :                         If this is not null, the values must begin with 0, end with 1.0, and
     105             :                         intermediate values must be strictly increasing.
     106             :         @param  count   Must be >= 2. The number of colors (and pos if not NULL) entries
     107             :         @param  mode    The tiling mode
     108             :     */
     109             :     static sk_sp<SkShader> MakeRadial(const SkPoint& center, SkScalar radius,
     110             :                                       const SkColor4f colors[], sk_sp<SkColorSpace> colorSpace,
     111             :                                       const SkScalar pos[], int count, SkShader::TileMode mode,
     112             :                                       uint32_t flags, const SkMatrix* localMatrix);
     113           0 :     static sk_sp<SkShader> MakeRadial(const SkPoint& center, SkScalar radius,
     114             :                                       const SkColor4f colors[], sk_sp<SkColorSpace> colorSpace,
     115             :                                       const SkScalar pos[], int count, SkShader::TileMode mode) {
     116           0 :         return MakeRadial(center, radius, colors, std::move(colorSpace), pos, count, mode, 0, NULL);
     117             :     }
     118             : 
     119             :     /**
     120             :      *  Returns a shader that generates a conical gradient given two circles, or
     121             :      *  returns NULL if the inputs are invalid. The gradient interprets the
     122             :      *  two circles according to the following HTML spec.
     123             :      *  http://dev.w3.org/html5/2dcontext/#dom-context-2d-createradialgradient
     124             :      */
     125             :     static sk_sp<SkShader> MakeTwoPointConical(const SkPoint& start, SkScalar startRadius,
     126             :                                                const SkPoint& end, SkScalar endRadius,
     127             :                                                const SkColor colors[], const SkScalar pos[],
     128             :                                                int count, SkShader::TileMode mode,
     129             :                                                uint32_t flags, const SkMatrix* localMatrix);
     130           0 :     static sk_sp<SkShader> MakeTwoPointConical(const SkPoint& start, SkScalar startRadius,
     131             :                                                const SkPoint& end, SkScalar endRadius,
     132             :                                                const SkColor colors[], const SkScalar pos[],
     133             :                                                int count, SkShader::TileMode mode) {
     134             :         return MakeTwoPointConical(start, startRadius, end, endRadius, colors, pos, count, mode,
     135           0 :                                    0, NULL);
     136             :     }
     137             : 
     138             :     /**
     139             :      *  Returns a shader that generates a conical gradient given two circles, or
     140             :      *  returns NULL if the inputs are invalid. The gradient interprets the
     141             :      *  two circles according to the following HTML spec.
     142             :      *  http://dev.w3.org/html5/2dcontext/#dom-context-2d-createradialgradient
     143             :      */
     144             :     static sk_sp<SkShader> MakeTwoPointConical(const SkPoint& start, SkScalar startRadius,
     145             :                                                const SkPoint& end, SkScalar endRadius,
     146             :                                                const SkColor4f colors[],
     147             :                                                sk_sp<SkColorSpace> colorSpace, const SkScalar pos[],
     148             :                                                int count, SkShader::TileMode mode,
     149             :                                                uint32_t flags, const SkMatrix* localMatrix);
     150           0 :     static sk_sp<SkShader> MakeTwoPointConical(const SkPoint& start, SkScalar startRadius,
     151             :                                                const SkPoint& end, SkScalar endRadius,
     152             :                                                const SkColor4f colors[],
     153             :                                                sk_sp<SkColorSpace> colorSpace, const SkScalar pos[],
     154             :                                                int count, SkShader::TileMode mode) {
     155             :         return MakeTwoPointConical(start, startRadius, end, endRadius, colors,
     156           0 :                                    std::move(colorSpace), pos, count, mode, 0, NULL);
     157             :     }
     158             : 
     159             :     /** Returns a shader that generates a sweep gradient given a center.
     160             :         <p />
     161             :         @param  cx      The X coordinate of the center of the sweep
     162             :         @param  cx      The Y coordinate of the center of the sweep
     163             :         @param  colors  The array[count] of colors, to be distributed around the center.
     164             :         @param  pos     May be NULL. The array[count] of SkScalars, or NULL, of the relative position of
     165             :                         each corresponding color in the colors array. If this is NULL,
     166             :                         the the colors are distributed evenly between the center and edge of the circle.
     167             :                         If this is not null, the values must begin with 0, end with 1.0, and
     168             :                         intermediate values must be strictly increasing.
     169             :         @param  count   Must be >= 2. The number of colors (and pos if not NULL) entries
     170             :     */
     171             :     static sk_sp<SkShader> MakeSweep(SkScalar cx, SkScalar cy,
     172             :                                      const SkColor colors[], const SkScalar pos[], int count,
     173             :                                      uint32_t flags, const SkMatrix* localMatrix);
     174           0 :     static sk_sp<SkShader> MakeSweep(SkScalar cx, SkScalar cy,
     175             :                                      const SkColor colors[], const SkScalar pos[], int count) {
     176           0 :         return MakeSweep(cx, cy, colors, pos, count, 0, NULL);
     177             :     }
     178             : 
     179             :     /** Returns a shader that generates a sweep gradient given a center.
     180             :         <p />
     181             :         @param  cx      The X coordinate of the center of the sweep
     182             :         @param  cx      The Y coordinate of the center of the sweep
     183             :         @param  colors  The array[count] of colors, to be distributed around the center.
     184             :         @param  pos     May be NULL. The array[count] of SkScalars, or NULL, of the relative position of
     185             :                         each corresponding color in the colors array. If this is NULL,
     186             :                         the the colors are distributed evenly between the center and edge of the circle.
     187             :                         If this is not null, the values must begin with 0, end with 1.0, and
     188             :                         intermediate values must be strictly increasing.
     189             :         @param  count   Must be >= 2. The number of colors (and pos if not NULL) entries
     190             :     */
     191             :     static sk_sp<SkShader> MakeSweep(SkScalar cx, SkScalar cy,
     192             :                                      const SkColor4f colors[], sk_sp<SkColorSpace> colorSpace,
     193             :                                      const SkScalar pos[], int count,
     194             :                                      uint32_t flags, const SkMatrix* localMatrix);
     195           0 :     static sk_sp<SkShader> MakeSweep(SkScalar cx, SkScalar cy,
     196             :                                      const SkColor4f colors[], sk_sp<SkColorSpace> colorSpace,
     197             :                                      const SkScalar pos[], int count) {
     198           0 :         return MakeSweep(cx, cy, colors, std::move(colorSpace), pos, count, 0, NULL);
     199             :     }
     200             : 
     201             :     SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
     202             : };
     203             : 
     204             : #endif

Generated by: LCOV version 1.13