LCOV - code coverage report
Current view: top level - dom/svg - SVGFEDisplacementMapElement.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 45 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 14 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #include "mozilla/dom/SVGFEDisplacementMapElement.h"
       8             : #include "mozilla/dom/SVGFEDisplacementMapElementBinding.h"
       9             : #include "nsSVGFilterInstance.h"
      10             : #include "nsSVGUtils.h"
      11             : 
      12           0 : NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(FEDisplacementMap)
      13             : 
      14             : using namespace mozilla::gfx;
      15             : 
      16             : namespace mozilla {
      17             : namespace dom {
      18             : 
      19             : JSObject*
      20           0 : SVGFEDisplacementMapElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
      21             : {
      22           0 :   return SVGFEDisplacementMapElementBinding::Wrap(aCx, this, aGivenProto);
      23             : }
      24             : 
      25             : nsSVGElement::NumberInfo SVGFEDisplacementMapElement::sNumberInfo[1] =
      26             : {
      27             :   { &nsGkAtoms::scale, 0, false },
      28             : };
      29             : 
      30             : nsSVGEnumMapping SVGFEDisplacementMapElement::sChannelMap[] = {
      31             :   {&nsGkAtoms::R, SVG_CHANNEL_R},
      32             :   {&nsGkAtoms::G, SVG_CHANNEL_G},
      33             :   {&nsGkAtoms::B, SVG_CHANNEL_B},
      34             :   {&nsGkAtoms::A, SVG_CHANNEL_A},
      35             :   {nullptr, 0}
      36             : };
      37             : 
      38             : nsSVGElement::EnumInfo SVGFEDisplacementMapElement::sEnumInfo[2] =
      39             : {
      40             :   { &nsGkAtoms::xChannelSelector,
      41             :     sChannelMap,
      42             :     SVG_CHANNEL_A
      43             :   },
      44             :   { &nsGkAtoms::yChannelSelector,
      45             :     sChannelMap,
      46             :     SVG_CHANNEL_A
      47             :   }
      48             : };
      49             : 
      50             : nsSVGElement::StringInfo SVGFEDisplacementMapElement::sStringInfo[3] =
      51             : {
      52             :   { &nsGkAtoms::result, kNameSpaceID_None, true },
      53             :   { &nsGkAtoms::in, kNameSpaceID_None, true },
      54             :   { &nsGkAtoms::in2, kNameSpaceID_None, true }
      55             : };
      56             : 
      57             : //----------------------------------------------------------------------
      58             : // nsIDOMNode methods
      59             : 
      60           0 : NS_IMPL_ELEMENT_CLONE_WITH_INIT(SVGFEDisplacementMapElement)
      61             : 
      62             : //----------------------------------------------------------------------
      63             : 
      64             : already_AddRefed<SVGAnimatedString>
      65           0 : SVGFEDisplacementMapElement::In1()
      66             : {
      67           0 :   return mStringAttributes[IN1].ToDOMAnimatedString(this);
      68             : }
      69             : 
      70             : already_AddRefed<SVGAnimatedString>
      71           0 : SVGFEDisplacementMapElement::In2()
      72             : {
      73           0 :   return mStringAttributes[IN2].ToDOMAnimatedString(this);
      74             : }
      75             : 
      76             : already_AddRefed<SVGAnimatedNumber>
      77           0 : SVGFEDisplacementMapElement::Scale()
      78             : {
      79           0 :   return mNumberAttributes[SCALE].ToDOMAnimatedNumber(this);
      80             : }
      81             : 
      82             : already_AddRefed<SVGAnimatedEnumeration>
      83           0 : SVGFEDisplacementMapElement::XChannelSelector()
      84             : {
      85           0 :   return mEnumAttributes[CHANNEL_X].ToDOMAnimatedEnum(this);
      86             : }
      87             : 
      88             : already_AddRefed<SVGAnimatedEnumeration>
      89           0 : SVGFEDisplacementMapElement::YChannelSelector()
      90             : {
      91           0 :   return mEnumAttributes[CHANNEL_Y].ToDOMAnimatedEnum(this);
      92             : }
      93             : 
      94             : FilterPrimitiveDescription
      95           0 : SVGFEDisplacementMapElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
      96             :                                                      const IntRect& aFilterSubregion,
      97             :                                                      const nsTArray<bool>& aInputsAreTainted,
      98             :                                                      nsTArray<RefPtr<SourceSurface>>& aInputImages)
      99             : {
     100           0 :   if (aInputsAreTainted[1]) {
     101             :     // If the map is tainted, refuse to apply the effect and act as a
     102             :     // pass-through filter instead, as required by the spec.
     103           0 :     FilterPrimitiveDescription descr(PrimitiveType::Offset);
     104           0 :     descr.Attributes().Set(eOffsetOffset, IntPoint(0, 0));
     105           0 :     return descr;
     106             :   }
     107             : 
     108             :   float scale = aInstance->GetPrimitiveNumber(SVGContentUtils::XY,
     109           0 :                                               &mNumberAttributes[SCALE]);
     110           0 :   uint32_t xChannel = mEnumAttributes[CHANNEL_X].GetAnimValue();
     111           0 :   uint32_t yChannel = mEnumAttributes[CHANNEL_Y].GetAnimValue();
     112           0 :   FilterPrimitiveDescription descr(PrimitiveType::DisplacementMap);
     113           0 :   descr.Attributes().Set(eDisplacementMapScale, scale);
     114           0 :   descr.Attributes().Set(eDisplacementMapXChannel, xChannel);
     115           0 :   descr.Attributes().Set(eDisplacementMapYChannel, yChannel);
     116           0 :   return descr;
     117             : }
     118             : 
     119             : bool
     120           0 : SVGFEDisplacementMapElement::AttributeAffectsRendering(int32_t aNameSpaceID,
     121             :                                                        nsIAtom* aAttribute) const
     122             : {
     123           0 :   return SVGFEDisplacementMapElementBase::AttributeAffectsRendering(aNameSpaceID, aAttribute) ||
     124           0 :          (aNameSpaceID == kNameSpaceID_None &&
     125           0 :           (aAttribute == nsGkAtoms::in ||
     126           0 :            aAttribute == nsGkAtoms::in2 ||
     127           0 :            aAttribute == nsGkAtoms::scale ||
     128           0 :            aAttribute == nsGkAtoms::xChannelSelector ||
     129           0 :            aAttribute == nsGkAtoms::yChannelSelector));
     130             : }
     131             : 
     132             : void
     133           0 : SVGFEDisplacementMapElement::GetSourceImageNames(nsTArray<nsSVGStringInfo>& aSources)
     134             : {
     135           0 :   aSources.AppendElement(nsSVGStringInfo(&mStringAttributes[IN1], this));
     136           0 :   aSources.AppendElement(nsSVGStringInfo(&mStringAttributes[IN2], this));
     137           0 : }
     138             : 
     139             : //----------------------------------------------------------------------
     140             : // nsSVGElement methods
     141             : 
     142             : nsSVGElement::NumberAttributesInfo
     143           0 : SVGFEDisplacementMapElement::GetNumberInfo()
     144             : {
     145             :   return NumberAttributesInfo(mNumberAttributes, sNumberInfo,
     146           0 :                               ArrayLength(sNumberInfo));
     147             : }
     148             : 
     149             : nsSVGElement::EnumAttributesInfo
     150           0 : SVGFEDisplacementMapElement::GetEnumInfo()
     151             : {
     152             :   return EnumAttributesInfo(mEnumAttributes, sEnumInfo,
     153           0 :                             ArrayLength(sEnumInfo));
     154             : }
     155             : 
     156             : nsSVGElement::StringAttributesInfo
     157           0 : SVGFEDisplacementMapElement::GetStringInfo()
     158             : {
     159             :   return StringAttributesInfo(mStringAttributes, sStringInfo,
     160           0 :                               ArrayLength(sStringInfo));
     161             : }
     162             : 
     163             : } // namespace dom
     164             : } // namespace mozilla

Generated by: LCOV version 1.13