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

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
       2             :  * This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       4             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #ifndef GFX_WEBRENDERUSERDATA_H
       7             : #define GFX_WEBRENDERUSERDATA_H
       8             : 
       9             : #include "mozilla/layers/StackingContextHelper.h"
      10             : #include "mozilla/webrender/WebRenderAPI.h"
      11             : 
      12             : class nsDisplayItemGeometry;
      13             : 
      14             : namespace mozilla {
      15             : namespace layers {
      16             : class ImageClient;
      17             : class ImageContainer;
      18             : class WebRenderBridgeChild;
      19             : class WebRenderImageData;
      20             : class WebRenderLayerManager;
      21             : 
      22             : class WebRenderUserData
      23             : {
      24             : public:
      25           0 :   NS_INLINE_DECL_REFCOUNTING(WebRenderUserData)
      26             : 
      27           0 :   explicit WebRenderUserData(WebRenderLayerManager* aWRManager)
      28           0 :     : mWRManager(aWRManager)
      29           0 :   { }
      30             : 
      31           0 :   virtual WebRenderImageData* AsImageData() { return nullptr; }
      32             : 
      33             :   enum class UserDataType {
      34             :     eImage,
      35             :     eFallback,
      36             :   };
      37             : 
      38             :   virtual UserDataType GetType() = 0;
      39             : 
      40             : protected:
      41           0 :   virtual ~WebRenderUserData() {}
      42             : 
      43             :   WebRenderBridgeChild* WrBridge() const;
      44             : 
      45             :   WebRenderLayerManager* mWRManager;
      46             : };
      47             : 
      48             : class WebRenderImageData : public WebRenderUserData
      49             : {
      50             : public:
      51             :   explicit WebRenderImageData(WebRenderLayerManager* aWRManager);
      52             :   virtual ~WebRenderImageData();
      53             : 
      54           0 :   virtual WebRenderImageData* AsImageData() override { return this; }
      55           0 :   virtual UserDataType GetType() override { return UserDataType::eImage; }
      56           0 :   static UserDataType Type() { return UserDataType::eImage; }
      57           0 :   Maybe<wr::ImageKey> GetKey() { return mKey; }
      58           0 :   void SetKey(const wr::ImageKey& aKey) { mKey = Some(aKey); }
      59             :   already_AddRefed<ImageClient> GetImageClient();
      60             : 
      61             :   Maybe<wr::ImageKey> UpdateImageKey(ImageContainer* aContainer, bool aForceUpdate = false);
      62             : 
      63             :   void CreateAsyncImageWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
      64             :                                          ImageContainer* aContainer,
      65             :                                          const StackingContextHelper& aSc,
      66             :                                          const LayerRect& aBounds,
      67             :                                          const LayerRect& aSCBounds,
      68             :                                          const gfx::Matrix4x4& aSCTransform,
      69             :                                          const gfx::MaybeIntSize& aScaleToSize,
      70             :                                          const WrImageRendering& aFilter,
      71             :                                          const WrMixBlendMode& aMixBlendMode);
      72             : 
      73             :   void CreateImageClientIfNeeded();
      74             : 
      75             : protected:
      76             :   void CreateExternalImageIfNeeded();
      77             : 
      78             :   wr::MaybeExternalImageId mExternalImageId;
      79             :   Maybe<wr::ImageKey> mKey;
      80             :   RefPtr<ImageClient> mImageClient;
      81             :   Maybe<wr::PipelineId> mPipelineId;
      82             :   RefPtr<ImageContainer> mContainer;
      83             : };
      84             : 
      85             : class WebRenderFallbackData : public WebRenderImageData
      86             : {
      87             : public:
      88             :   explicit WebRenderFallbackData(WebRenderLayerManager* aWRManager);
      89             :   virtual ~WebRenderFallbackData();
      90             : 
      91           0 :   virtual UserDataType GetType() override { return UserDataType::eFallback; }
      92           0 :   static UserDataType Type() { return UserDataType::eFallback; }
      93             :   nsAutoPtr<nsDisplayItemGeometry> GetGeometry();
      94             :   void SetGeometry(nsAutoPtr<nsDisplayItemGeometry> aGeometry);
      95           0 :   nsRect GetBounds() { return mBounds; }
      96           0 :   void SetBounds(const nsRect& aRect) { mBounds = aRect; }
      97             : 
      98             : protected:
      99             :   nsAutoPtr<nsDisplayItemGeometry> mGeometry;
     100             :   nsRect mBounds;
     101             : };
     102             : 
     103             : } // namespace layers
     104             : } // namespace mozilla
     105             : 
     106             : #endif /* GFX_WEBRENDERUSERDATA_H */

Generated by: LCOV version 1.13