LCOV - code coverage report
Current view: top level - gfx/layers/wr - StackingContextHelper.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 50 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 9 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             : #include "mozilla/layers/StackingContextHelper.h"
       7             : 
       8             : #include "mozilla/layers/WebRenderLayer.h"
       9             : #include "UnitTransforms.h"
      10             : 
      11             : namespace mozilla {
      12             : namespace layers {
      13             : 
      14           0 : StackingContextHelper::StackingContextHelper()
      15           0 :   : mBuilder(nullptr)
      16             : {
      17             :   // mOrigin remains at 0,0
      18           0 : }
      19             : 
      20           0 : StackingContextHelper::StackingContextHelper(const StackingContextHelper& aParentSC,
      21             :                                              wr::DisplayListBuilder& aBuilder,
      22             :                                              LayerRect aBoundForSC,
      23             :                                              LayerPoint aOrigin,
      24             :                                              uint64_t aAnimationsId,
      25             :                                              float* aOpacityPtr,
      26             :                                              gfx::Matrix4x4* aTransformPtr,
      27           0 :                                              const nsTArray<WrFilterOp>& aFilters)
      28           0 :   : mBuilder(&aBuilder)
      29             : {
      30           0 :   WrRect scBounds = aParentSC.ToRelativeWrRect(aBoundForSC);
      31           0 :   if (aTransformPtr) {
      32           0 :     mTransform = *aTransformPtr;
      33             :   }
      34             : 
      35           0 :   mBuilder->PushStackingContext(scBounds,
      36             :                                 aAnimationsId,
      37             :                                 aOpacityPtr,
      38             :                                 aTransformPtr,
      39             :                                 WrTransformStyle::Flat,
      40             :                                 // TODO: set correct blend mode.
      41           0 :                                 wr::ToWrMixBlendMode(gfx::CompositionOp::OP_OVER),
      42           0 :                                 aFilters);
      43             : 
      44           0 :   mOrigin = aOrigin;
      45           0 : }
      46             : 
      47           0 : StackingContextHelper::StackingContextHelper(const StackingContextHelper& aParentSC,
      48             :                                              wr::DisplayListBuilder& aBuilder,
      49             :                                              WebRenderLayer* aLayer,
      50             :                                              const Maybe<gfx::Matrix4x4>& aTransform,
      51           0 :                                              const nsTArray<WrFilterOp>& aFilters)
      52           0 :   : mBuilder(&aBuilder)
      53             : {
      54           0 :   WrRect scBounds = aParentSC.ToRelativeWrRect(aLayer->BoundsForStackingContext());
      55           0 :   Layer* layer = aLayer->GetLayer();
      56           0 :   mTransform = aTransform.valueOr(layer->GetTransform());
      57             : 
      58           0 :   float opacity = 1.0f;
      59           0 :   mBuilder->PushStackingContext(scBounds, 0, &opacity,
      60           0 :                                 mTransform.IsIdentity() ? nullptr : &mTransform,
      61             :                                 WrTransformStyle::Flat,
      62           0 :                                 wr::ToWrMixBlendMode(layer->GetMixBlendMode()),
      63           0 :                                 aFilters);
      64           0 :   mOrigin = aLayer->Bounds().TopLeft();
      65           0 : }
      66             : 
      67           0 : StackingContextHelper::StackingContextHelper(const StackingContextHelper& aParentSC,
      68             :                                              wr::DisplayListBuilder& aBuilder,
      69             :                                              WebRenderLayer* aLayer,
      70             :                                              uint64_t aAnimationsId,
      71             :                                              float* aOpacityPtr,
      72             :                                              gfx::Matrix4x4* aTransformPtr,
      73           0 :                                              const nsTArray<WrFilterOp>& aFilters)
      74           0 :   : mBuilder(&aBuilder)
      75             : {
      76           0 :   WrRect scBounds = aParentSC.ToRelativeWrRect(aLayer->BoundsForStackingContext());
      77           0 :   if (aTransformPtr) {
      78           0 :     mTransform = *aTransformPtr;
      79             :   }
      80             : 
      81           0 :   mBuilder->PushStackingContext(scBounds,
      82             :                                 aAnimationsId,
      83             :                                 aOpacityPtr,
      84             :                                 aTransformPtr,
      85             :                                 WrTransformStyle::Flat,
      86           0 :                                 wr::ToWrMixBlendMode(aLayer->GetLayer()->GetMixBlendMode()),
      87           0 :                                 aFilters);
      88           0 :   mOrigin = aLayer->Bounds().TopLeft();
      89           0 : }
      90             : 
      91           0 : StackingContextHelper::~StackingContextHelper()
      92             : {
      93           0 :   if (mBuilder) {
      94           0 :     mBuilder->PopStackingContext();
      95             :   }
      96           0 : }
      97             : 
      98             : WrRect
      99           0 : StackingContextHelper::ToRelativeWrRect(const LayerRect& aRect) const
     100             : {
     101           0 :   return wr::ToWrRect(aRect - mOrigin);
     102             : }
     103             : 
     104             : WrRect
     105           0 : StackingContextHelper::ToRelativeWrRect(const LayoutDeviceRect& aRect) const
     106             : {
     107           0 :   return wr::ToWrRect(ViewAs<LayerPixel>(aRect, PixelCastJustification::WebRenderHasUnitResolution) - mOrigin);
     108             : }
     109             : 
     110             : WrPoint
     111           0 : StackingContextHelper::ToRelativeWrPoint(const LayerPoint& aPoint) const
     112             : {
     113           0 :   return wr::ToWrPoint(aPoint - mOrigin);
     114             : }
     115             : 
     116             : WrRect
     117           0 : StackingContextHelper::ToRelativeWrRectRounded(const LayoutDeviceRect& aRect) const
     118             : {
     119           0 :   return wr::ToWrRect(RoundedToInt(ViewAs<LayerPixel>(aRect, PixelCastJustification::WebRenderHasUnitResolution) - mOrigin));
     120             : }
     121             : 
     122             : } // namespace layers
     123             : } // namespace mozilla

Generated by: LCOV version 1.13