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

          Line data    Source code
       1             : /*
       2             :  * Copyright 2015 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 SkBigPicture_DEFINED
       9             : #define SkBigPicture_DEFINED
      10             : 
      11             : #include "SkOnce.h"
      12             : #include "SkPicture.h"
      13             : #include "SkRect.h"
      14             : #include "SkTemplates.h"
      15             : 
      16             : class SkBBoxHierarchy;
      17             : class SkMatrix;
      18             : class SkRecord;
      19             : 
      20             : // An implementation of SkPicture supporting an arbitrary number of drawing commands.
      21           0 : class SkBigPicture final : public SkPicture {
      22             : public:
      23             :     // An array of refcounted const SkPicture pointers.
      24             :     class SnapshotArray : ::SkNoncopyable {
      25             :     public:
      26           0 :         SnapshotArray(const SkPicture* pics[], int count) : fPics(pics), fCount(count) {}
      27           0 :         ~SnapshotArray() { for (int i = 0; i < fCount; i++) { fPics[i]->unref(); } }
      28             : 
      29           0 :         const SkPicture* const* begin() const { return fPics; }
      30           0 :         int count() const { return fCount; }
      31             :     private:
      32             :         SkAutoTMalloc<const SkPicture*> fPics;
      33             :         int fCount;
      34             :     };
      35             : 
      36             :     SkBigPicture(const SkRect& cull,
      37             :                  SkRecord*,            // We take ownership of the caller's ref.
      38             :                  SnapshotArray*,       // We take exclusive ownership.
      39             :                  SkBBoxHierarchy*,     // We take ownership of the caller's ref.
      40             :                  size_t approxBytesUsedBySubPictures);
      41             : 
      42             : 
      43             : // SkPicture overrides
      44             :     void playback(SkCanvas*, AbortCallback*) const override;
      45             :     SkRect cullRect() const override;
      46             :     bool willPlayBackBitmaps() const override;
      47             :     int approximateOpCount() const override;
      48             :     size_t approximateBytesUsed() const override;
      49           0 :     const SkBigPicture* asSkBigPicture() const override { return this; }
      50             : 
      51             : // Used by GrLayerHoister
      52             :     void partialPlayback(SkCanvas*,
      53             :                          int start,
      54             :                          int stop,
      55             :                          const SkMatrix& initialCTM) const;
      56             : // Used by GrRecordReplaceDraw
      57             :     const SkBBoxHierarchy* bbh() const { return fBBH.get(); }
      58             :     const SkRecord*     record() const { return fRecord.get(); }
      59             : 
      60             : private:
      61             :     struct Analysis {
      62             :         void init(const SkRecord&);
      63             : 
      64             :         bool suitableForGpuRasterization(const char** reason) const;
      65             : 
      66             :         uint8_t fNumSlowPathsAndDashEffects;
      67             :         bool    fWillPlaybackBitmaps : 1;
      68             :     };
      69             : 
      70             :     int numSlowPaths() const override;
      71             :     const Analysis& analysis() const;
      72             :     int drawableCount() const;
      73             :     SkPicture const* const* drawablePicts() const;
      74             : 
      75             :     const SkRect                         fCullRect;
      76             :     const size_t                         fApproxBytesUsedBySubPictures;
      77             :     mutable SkOnce                       fAnalysisOnce;
      78             :     mutable Analysis                     fAnalysis;
      79             :     sk_sp<const SkRecord>                fRecord;
      80             :     std::unique_ptr<const SnapshotArray> fDrawablePicts;
      81             :     sk_sp<const SkBBoxHierarchy>         fBBH;
      82             : };
      83             : 
      84             : #endif//SkBigPicture_DEFINED

Generated by: LCOV version 1.13