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

          Line data    Source code
       1             : /*
       2             :  * Copyright 2012 Google Inc.
       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 SkTwoPointConicalGradient_DEFINED
       9             : #define SkTwoPointConicalGradient_DEFINED
      10             : 
      11             : #include "SkGradientShaderPriv.h"
      12             : 
      13             : // TODO(dominikg): Worth making it truly immutable (i.e. set values in constructor)?
      14             : // Should only be initialized once via init(). Immutable afterwards.
      15             : struct TwoPtRadial {
      16             :     enum {
      17             :         // This value is outside the range SK_FixedMin to SK_FixedMax.
      18             :         kDontDrawT  = 0x80000000
      19             :     };
      20             : 
      21             :     float   fCenterX, fCenterY;
      22             :     float   fDCenterX, fDCenterY;
      23             :     float   fRadius;
      24             :     float   fDRadius;
      25             :     float   fA;
      26             :     float   fRadius2;
      27             :     float   fRDR;
      28             :     bool    fFlipped;
      29             : 
      30             :     void init(const SkPoint& center0, SkScalar rad0,
      31             :               const SkPoint& center1, SkScalar rad1,
      32             :               bool flipped);
      33             : 
      34           0 :     static bool DontDrawT(SkFixed t) {
      35           0 :         return kDontDrawT == (uint32_t)t;
      36             :     }
      37             : };
      38             : 
      39             : 
      40           0 : class SkTwoPointConicalGradient : public SkGradientShaderBase {
      41             :     TwoPtRadial fRec;
      42             : public:
      43             :     SkTwoPointConicalGradient(const SkPoint& start, SkScalar startRadius,
      44             :                               const SkPoint& end, SkScalar endRadius,
      45             :                               bool flippedGrad, const Descriptor&);
      46             : 
      47             :     class TwoPointConicalGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
      48             :     public:
      49             :         TwoPointConicalGradientContext(const SkTwoPointConicalGradient&, const ContextRec&);
      50           0 :         ~TwoPointConicalGradientContext() override {}
      51             : 
      52             :         void shadeSpan(int x, int y, SkPMColor dstC[], int count) override;
      53             : 
      54             :     private:
      55             :         typedef SkGradientShaderBase::GradientShaderBaseContext INHERITED;
      56             :     };
      57             : 
      58             :     SkShader::GradientType asAGradient(GradientInfo* info) const  override;
      59             : #if SK_SUPPORT_GPU
      60             :     sk_sp<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
      61             : #endif
      62             :     bool isOpaque() const override;
      63             : 
      64           0 :     SkScalar getCenterX1() const { return SkPoint::Distance(fCenter1, fCenter2); }
      65           0 :     SkScalar getStartRadius() const { return fRadius1; }
      66           0 :     SkScalar getDiffRadius() const { return fRadius2 - fRadius1; }
      67           0 :     const SkPoint& getStartCenter() const { return fCenter1; }
      68           0 :     const SkPoint& getEndCenter() const { return fCenter2; }
      69           0 :     SkScalar getEndRadius() const { return fRadius2; }
      70           0 :     bool isFlippedGrad() const { return fFlippedGrad; }
      71             : 
      72             :     SK_TO_STRING_OVERRIDE()
      73           0 :     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTwoPointConicalGradient)
      74             : 
      75             : protected:
      76             :     SkTwoPointConicalGradient(SkReadBuffer& buffer);
      77             :     void flatten(SkWriteBuffer& buffer) const override;
      78             :     Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override;
      79             : 
      80             : private:
      81             :     SkPoint fCenter1;
      82             :     SkPoint fCenter2;
      83             :     SkScalar fRadius1;
      84             :     SkScalar fRadius2;
      85             :     bool fFlippedGrad;
      86             : 
      87             :     friend class SkGradientShader;
      88             :     typedef SkGradientShaderBase INHERITED;
      89             : };
      90             : 
      91             : #endif

Generated by: LCOV version 1.13