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

          Line data    Source code
       1             : /*
       2             :  * Copyright 2007 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 SkColorShader_DEFINED
       9             : #define SkColorShader_DEFINED
      10             : 
      11             : #include "SkShader.h"
      12             : #include "SkPM4f.h"
      13             : 
      14             : /** \class SkColorShader
      15             :     A Shader that represents a single color. In general, this effect can be
      16             :     accomplished by just using the color field on the paint, but if an
      17             :     actual shader object is needed, this provides that feature.
      18             : */
      19           0 : class SK_API SkColorShader : public SkShader {
      20             : public:
      21             :     /** Create a ColorShader that ignores the color in the paint, and uses the
      22             :         specified color. Note: like all shaders, at draw time the paint's alpha
      23             :         will be respected, and is applied to the specified color.
      24             :     */
      25             :     explicit SkColorShader(SkColor c);
      26             : 
      27             :     bool isOpaque() const override;
      28           0 :     bool isConstant() const override { return true; }
      29             : 
      30           0 :     class ColorShaderContext : public SkShader::Context {
      31             :     public:
      32             :         ColorShaderContext(const SkColorShader& shader, const ContextRec&);
      33             : 
      34             :         uint32_t getFlags() const override;
      35             :         void shadeSpan(int x, int y, SkPMColor span[], int count) override;
      36             :         void shadeSpanAlpha(int x, int y, uint8_t alpha[], int count) override;
      37             :         void shadeSpan4f(int x, int y, SkPM4f[], int count) override;
      38             : 
      39             :     protected:
      40             :         bool onChooseBlitProcs(const SkImageInfo&, BlitState*) override;
      41             : 
      42             :     private:
      43             :         SkPM4f      fPM4f;
      44             :         SkPMColor   fPMColor;
      45             :         uint32_t    fFlags;
      46             : 
      47             :         typedef SkShader::Context INHERITED;
      48             :     };
      49             : 
      50             :     GradientType asAGradient(GradientInfo* info) const override;
      51             : 
      52             : #if SK_SUPPORT_GPU
      53             :     sk_sp<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
      54             : #endif
      55             : 
      56             :     SK_TO_STRING_OVERRIDE()
      57           0 :     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorShader)
      58             : 
      59             : protected:
      60             :     SkColorShader(SkReadBuffer&);
      61             :     void flatten(SkWriteBuffer&) const override;
      62             :     Context* onMakeContext(const ContextRec&, SkArenaAlloc* storage) const override;
      63             : 
      64           0 :     bool onAsLuminanceColor(SkColor* lum) const override {
      65           0 :         *lum = fColor;
      66           0 :         return true;
      67             :     }
      68             : 
      69             :     bool onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAlloc*,
      70             :                         const SkMatrix& ctm, const SkPaint&, const SkMatrix*) const override;
      71             : 
      72             : private:
      73             :     SkColor fColor;
      74             : 
      75             :     typedef SkShader INHERITED;
      76             : };
      77             : 
      78           0 : class SkColor4Shader : public SkShader {
      79             : public:
      80             :     SkColor4Shader(const SkColor4f&, sk_sp<SkColorSpace>);
      81             : 
      82           0 :     bool isOpaque() const override {
      83           0 :         return SkColorGetA(fCachedByteColor) == 255;
      84             :     }
      85           0 :     bool isConstant() const override { return true; }
      86             : 
      87           0 :     class Color4Context : public SkShader::Context {
      88             :     public:
      89             :         Color4Context(const SkColor4Shader& shader, const ContextRec&);
      90             : 
      91             :         uint32_t getFlags() const override;
      92             :         void shadeSpan(int x, int y, SkPMColor span[], int count) override;
      93             :         void shadeSpanAlpha(int x, int y, uint8_t alpha[], int count) override;
      94             :         void shadeSpan4f(int x, int y, SkPM4f[], int count) override;
      95             : 
      96             :     protected:
      97             :         bool onChooseBlitProcs(const SkImageInfo&, BlitState*) override;
      98             : 
      99             :     private:
     100             :         SkPM4f      fPM4f;
     101             :         SkPMColor   fPMColor;
     102             :         uint32_t    fFlags;
     103             : 
     104             :         typedef SkShader::Context INHERITED;
     105             :     };
     106             : 
     107             :     GradientType asAGradient(GradientInfo* info) const override;
     108             : 
     109             : #if SK_SUPPORT_GPU
     110             :     sk_sp<GrFragmentProcessor> asFragmentProcessor(const AsFPArgs&) const override;
     111             : #endif
     112             : 
     113             :     SK_TO_STRING_OVERRIDE()
     114           0 :     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorShader)
     115             : 
     116             : protected:
     117             :     SkColor4Shader(SkReadBuffer&);
     118             :     void flatten(SkWriteBuffer&) const override;
     119             :     Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override;
     120           0 :     bool onAsLuminanceColor(SkColor* lum) const override {
     121           0 :         *lum = fCachedByteColor;
     122           0 :         return true;
     123             :     }
     124             :     bool onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAlloc*,
     125             :                         const SkMatrix& ctm, const SkPaint&, const SkMatrix*) const override;
     126             : 
     127             : private:
     128             :     sk_sp<SkColorSpace> fColorSpace;
     129             :     const SkColor4f     fColor4;
     130             :     const SkColor       fCachedByteColor;
     131             : 
     132             :     typedef SkShader INHERITED;
     133             : };
     134             : 
     135             : #endif

Generated by: LCOV version 1.13