LCOV - code coverage report
Current view: top level - gfx/skia/skia/src/gpu - GrSWMaskHelper.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 5 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 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 GrSWMaskHelper_DEFINED
       9             : #define GrSWMaskHelper_DEFINED
      10             : 
      11             : #include "GrColor.h"
      12             : #include "GrRenderTargetContext.h"
      13             : #include "SkAutoPixmapStorage.h"
      14             : #include "SkBitmap.h"
      15             : #include "SkDraw.h"
      16             : #include "SkMatrix.h"
      17             : #include "SkRasterClip.h"
      18             : #include "SkRegion.h"
      19             : #include "SkTypes.h"
      20             : 
      21             : class GrClip;
      22             : class GrPaint;
      23             : class GrShape;
      24             : class GrStyle;
      25             : class GrTexture;
      26             : struct GrUserStencilSettings;
      27             : 
      28             : /**
      29             :  * The GrSWMaskHelper helps generate clip masks using the software rendering
      30             :  * path. It is intended to be used as:
      31             :  *
      32             :  *   GrSWMaskHelper helper(context);
      33             :  *   helper.init(...);
      34             :  *
      35             :  *      draw one or more paths/rects specifying the required boolean ops
      36             :  *
      37             :  *   toTexture();   // to get it from the internal bitmap to the GPU
      38             :  *
      39             :  * The result of this process will be the final mask (on the GPU) in the
      40             :  * upper left hand corner of the texture.
      41             :  */
      42           0 : class GrSWMaskHelper : SkNoncopyable {
      43             : public:
      44           0 :     GrSWMaskHelper() { }
      45             : 
      46             :     // set up the internal state in preparation for draws. Since many masks
      47             :     // may be accumulated in the helper during creation, "resultBounds"
      48             :     // allows the caller to specify the region of interest - to limit the
      49             :     // amount of work.
      50             :     bool init(const SkIRect& resultBounds, const SkMatrix* matrix);
      51             : 
      52             :     // Draw a single rect into the accumulation bitmap using the specified op
      53             :     void drawRect(const SkRect& rect, SkRegion::Op op, GrAA, uint8_t alpha);
      54             : 
      55             :     // Draw a single path into the accumuation bitmap using the specified op
      56             :     void drawShape(const GrShape&, SkRegion::Op op, GrAA, uint8_t alpha);
      57             : 
      58             :     sk_sp<GrTextureProxy> toTextureProxy(GrContext*, SkBackingFit fit);
      59             : 
      60             :     // Convert mask generation results to a signed distance field
      61             :     void toSDF(unsigned char* sdf);
      62             : 
      63             :     // Reset the internal bitmap
      64           0 :     void clear(uint8_t alpha) {
      65           0 :         fPixels.erase(SkColorSetARGB(alpha, 0xFF, 0xFF, 0xFF));
      66           0 :     }
      67             : 
      68             :     // Canonical usage utility that draws a single path and uploads it
      69             :     // to the GPU. The result is returned.
      70             :     static sk_sp<GrTextureProxy> DrawShapeMaskToTexture(GrContext*,
      71             :                                                         const GrShape&,
      72             :                                                         const SkIRect& resultBounds,
      73             :                                                         GrAA,
      74             :                                                         SkBackingFit,
      75             :                                                         const SkMatrix* matrix);
      76             : 
      77             :     // This utility draws a path mask generated by DrawShapeMaskToTexture using a provided paint.
      78             :     // The rectangle is drawn in device space. The 'viewMatrix' will be used to ensure the correct
      79             :     // local coords are provided to any fragment processors in the paint.
      80             :     static void DrawToTargetWithShapeMask(sk_sp<GrTextureProxy>,
      81             :                                           GrRenderTargetContext*,
      82             :                                           GrPaint&& paint,
      83             :                                           const GrUserStencilSettings& userStencilSettings,
      84             :                                           const GrClip&,
      85             :                                           const SkMatrix& viewMatrix,
      86             :                                           const SkIPoint& textureOriginInDeviceSpace,
      87             :                                           const SkIRect& deviceSpaceRectToDraw);
      88             : 
      89             : private:
      90             :     SkMatrix            fMatrix;
      91             :     SkAutoPixmapStorage fPixels;
      92             :     SkDraw              fDraw;
      93             :     SkRasterClip        fRasterClip;
      94             : 
      95             :     typedef SkNoncopyable INHERITED;
      96             : };
      97             : 
      98             : #endif // GrSWMaskHelper_DEFINED

Generated by: LCOV version 1.13