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

          Line data    Source code
       1             : /*
       2             :  * Copyright 2016 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 SkSpecialSurface_DEFINED
       9             : #define SkSpecialSurface_DEFINED
      10             : 
      11             : #include "SkImageInfo.h"
      12             : #include "SkRefCnt.h"
      13             : #include "SkSurfaceProps.h"
      14             : 
      15             : #if SK_SUPPORT_GPU
      16             : #include "GrTypes.h"
      17             : #endif
      18             : 
      19             : class GrContext;
      20             : class SkBitmap;
      21             : class SkCanvas;
      22             : class SkSpecialImage;
      23             : 
      24             : /**
      25             :  * SkSpecialSurface is a restricted form of SkSurface solely for internal use. It differs
      26             :  * from SkSurface in that:
      27             :  *     - it can be backed by GrTextures larger than [ fWidth, fHeight ]
      28             :  *     - it can't be used for tiling
      29             :  *     - it becomes inactive once a snapshot of it is taken (i.e., no copy-on-write)
      30             :  *     - it has no generation ID
      31             :  */
      32           0 : class SkSpecialSurface : public SkRefCnt {
      33             : public:
      34           0 :     const SkSurfaceProps& props() const { return fProps; }
      35             : 
      36             :     int width() const { return fSubset.width(); }
      37             :     int height() const { return fSubset.height(); }
      38             : 
      39             :     /**
      40             :     *  Return a canvas that will draw into this surface. This will always
      41             :     *  return the same canvas for a given surface, and is managed/owned by the
      42             :     *  surface.
      43             :     *
      44             :     *  The canvas will be invalid after 'newImageSnapshot' is called.
      45             :     */
      46             :     SkCanvas* getCanvas();
      47             : 
      48             :     /**
      49             :     *  Returns an image of the current state of the surface pixels up to this
      50             :     *  point. The canvas returned by 'getCanvas' becomes invalidated by this
      51             :     *  call and no more drawing to this surface is allowed.
      52             :     *
      53             :     *  Note: the caller inherits a ref from this call that must be balanced
      54             :     */
      55             :     sk_sp<SkSpecialImage> makeImageSnapshot();
      56             : 
      57             : #if SK_SUPPORT_GPU
      58             :     /**
      59             :      *  Allocate a new GPU-backed SkSpecialSurface. If the requested surface cannot
      60             :      *  be created, nullptr will be returned.
      61             :      */
      62             :     static sk_sp<SkSpecialSurface> MakeRenderTarget(GrContext*,
      63             :                                                     int width, int height,
      64             :                                                     GrPixelConfig config,
      65             :                                                     sk_sp<SkColorSpace> colorSpace);
      66             : #endif
      67             : 
      68             :     /**
      69             :      * Use and existing SkBitmap as the backing store.
      70             :      */
      71             :     static sk_sp<SkSpecialSurface> MakeFromBitmap(const SkIRect& subset, SkBitmap& bm,
      72             :                                                   const SkSurfaceProps* = nullptr);
      73             : 
      74             :     /**
      75             :      *  Return a new CPU-backed surface, with the memory for the pixels automatically
      76             :      *  allocated.
      77             :      *
      78             :      *  If the requested surface cannot be created, or the request is not a
      79             :      *  supported configuration, nullptr will be returned.
      80             :      */
      81             :     static sk_sp<SkSpecialSurface> MakeRaster(const SkImageInfo&,
      82             :                                               const SkSurfaceProps* = nullptr);
      83             : 
      84             : protected:
      85             :     SkSpecialSurface(const SkIRect& subset, const SkSurfaceProps*);
      86             : 
      87             :     // For testing only
      88             :     friend class TestingSpecialSurfaceAccess;
      89           0 :     const SkIRect& subset() const { return fSubset; }
      90             : 
      91             : private:
      92             :     const SkSurfaceProps fProps;
      93             :     const SkIRect        fSubset;
      94             : 
      95             :     typedef SkRefCnt INHERITED;
      96             : };
      97             : 
      98             : #endif

Generated by: LCOV version 1.13