with GNATCOM.IInterface;

with GNATCOM.Errors;

package body MSHTML.ISVGPathElement_Interface is

   procedure Initialize (This : in out ISVGPathElement_Type) is
   begin
      Set_IID (This, IID_ISVGPathElement);
   end Initialize;

   function Pointer (This : ISVGPathElement_Type)
     return Pointer_To_ISVGPathElement
   is
   begin
      return To_Pointer_To_ISVGPathElement (Address (This));
   end Pointer;

   procedure Attach (This    : in out ISVGPathElement_Type;
                     Pointer : in     Pointer_To_ISVGPathElement)
   is
   begin
      Attach (This, GNATCOM.IInterface.To_Pointer_To_IUnknown
              (Pointer.all'Address));
   end Attach;

   procedure PutRef_pathLength
     (This : ISVGPathElement_Type;
      p    : Pointer_To_ISVGAnimatedNumber)
   is
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.PutRef_pathLength
         (Pointer (This),
          p));

   end PutRef_pathLength;

   function Get_pathLength
     (This : ISVGPathElement_Type)
     return Pointer_To_ISVGAnimatedNumber
   is
       RetVal : aliased Pointer_To_ISVGAnimatedNumber;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.Get_pathLength
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end Get_pathLength;

   function getTotalLength
     (This       : ISVGPathElement_Type)
     return Interfaces.C.C_float
   is
       RetVal : aliased Interfaces.C.C_float;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.getTotalLength
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end getTotalLength;

   function getPointAtLength
     (This          : ISVGPathElement_Type;
      fltdistance   : Interfaces.C.C_float)
     return Pointer_To_ISVGPoint
   is
       RetVal : aliased Pointer_To_ISVGPoint;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.getPointAtLength
         (Pointer (This),
          fltdistance,
          RetVal'Unchecked_Access));

      return RetVal;
   end getPointAtLength;

   function getPathSegAtLength
     (This        : ISVGPathElement_Type;
      fltdistance : Interfaces.C.C_float)
     return Interfaces.C.long
   is
       RetVal : aliased Interfaces.C.long;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.getPathSegAtLength
         (Pointer (This),
          fltdistance,
          RetVal'Unchecked_Access));

      return RetVal;
   end getPathSegAtLength;

   function createSVGPathSegClosePath
     (This     : ISVGPathElement_Type)
     return Pointer_To_ISVGPathSegClosePath
   is
       RetVal : aliased Pointer_To_ISVGPathSegClosePath;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegClosePath
         (Pointer (This),
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegClosePath;

   function createSVGPathSegMovetoAbs
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegMovetoAbs
   is
       RetVal : aliased Pointer_To_ISVGPathSegMovetoAbs;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegMovetoAbs
         (Pointer (This),
          x,
          y,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegMovetoAbs;

   function createSVGPathSegMovetoRel
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegMovetoRel
   is
       RetVal : aliased Pointer_To_ISVGPathSegMovetoRel;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegMovetoRel
         (Pointer (This),
          x,
          y,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegMovetoRel;

   function createSVGPathSegLinetoAbs
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegLinetoAbs
   is
       RetVal : aliased Pointer_To_ISVGPathSegLinetoAbs;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegLinetoAbs
         (Pointer (This),
          x,
          y,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegLinetoAbs;

   function createSVGPathSegLinetoRel
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegLinetoRel
   is
       RetVal : aliased Pointer_To_ISVGPathSegLinetoRel;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegLinetoRel
         (Pointer (This),
          x,
          y,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegLinetoRel;

   function createSVGPathSegCurvetoCubicAbs
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float;
      x1       : Interfaces.C.C_float;
      y1       : Interfaces.C.C_float;
      x2       : Interfaces.C.C_float;
      y2       : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegCurvetoCubicAbs
   is
       RetVal : aliased Pointer_To_ISVGPathSegCurvetoCubicAbs;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegCurvetoCubicAbs
         (Pointer (This),
          x,
          y,
          x1,
          y1,
          x2,
          y2,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegCurvetoCubicAbs;

   function createSVGPathSegCurvetoCubicRel
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float;
      x1       : Interfaces.C.C_float;
      y1       : Interfaces.C.C_float;
      x2       : Interfaces.C.C_float;
      y2       : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegCurvetoCubicRel
   is
       RetVal : aliased Pointer_To_ISVGPathSegCurvetoCubicRel;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegCurvetoCubicRel
         (Pointer (This),
          x,
          y,
          x1,
          y1,
          x2,
          y2,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegCurvetoCubicRel;

   function createSVGPathSegCurvetoQuadraticAbs
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float;
      x1       : Interfaces.C.C_float;
      y1       : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegCurvetoQuadraticAbs
   is
       RetVal : aliased Pointer_To_ISVGPathSegCurvetoQuadraticAbs;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegCurvetoQuadraticAbs
         (Pointer (This),
          x,
          y,
          x1,
          y1,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegCurvetoQuadraticAbs;

   function createSVGPathSegCurvetoQuadraticRel
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float;
      x1       : Interfaces.C.C_float;
      y1       : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegCurvetoQuadraticRel
   is
       RetVal : aliased Pointer_To_ISVGPathSegCurvetoQuadraticRel;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegCurvetoQuadraticRel
         (Pointer (This),
          x,
          y,
          x1,
          y1,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegCurvetoQuadraticRel;

   function createSVGPathSegArcAbs
     (This         : ISVGPathElement_Type;
      x            : Interfaces.C.C_float;
      y            : Interfaces.C.C_float;
      r1           : Interfaces.C.C_float;
      r2           : Interfaces.C.C_float;
      angle        : Interfaces.C.C_float;
      largeArcFlag : GNATCOM.Types.VARIANT_BOOL;
      sweepFlag    : GNATCOM.Types.VARIANT_BOOL)
     return Pointer_To_ISVGPathSegArcAbs
   is
       RetVal : aliased Pointer_To_ISVGPathSegArcAbs;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegArcAbs
         (Pointer (This),
          x,
          y,
          r1,
          r2,
          angle,
          largeArcFlag,
          sweepFlag,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegArcAbs;

   function createSVGPathSegArcRel
     (This         : ISVGPathElement_Type;
      x            : Interfaces.C.C_float;
      y            : Interfaces.C.C_float;
      r1           : Interfaces.C.C_float;
      r2           : Interfaces.C.C_float;
      angle        : Interfaces.C.C_float;
      largeArcFlag : GNATCOM.Types.VARIANT_BOOL;
      sweepFlag    : GNATCOM.Types.VARIANT_BOOL)
     return Pointer_To_ISVGPathSegArcRel
   is
       RetVal : aliased Pointer_To_ISVGPathSegArcRel;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegArcRel
         (Pointer (This),
          x,
          y,
          r1,
          r2,
          angle,
          largeArcFlag,
          sweepFlag,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegArcRel;

   function createSVGPathSegLinetoHorizontalAbs
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegLinetoHorizontalAbs
   is
       RetVal : aliased Pointer_To_ISVGPathSegLinetoHorizontalAbs;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegLinetoHorizontalAbs
         (Pointer (This),
          x,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegLinetoHorizontalAbs;

   function createSVGPathSegLinetoHorizontalRel
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegLinetoHorizontalRel
   is
       RetVal : aliased Pointer_To_ISVGPathSegLinetoHorizontalRel;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegLinetoHorizontalRel
         (Pointer (This),
          x,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegLinetoHorizontalRel;

   function createSVGPathSegLinetoVerticalAbs
     (This     : ISVGPathElement_Type;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegLinetoVerticalAbs
   is
       RetVal : aliased Pointer_To_ISVGPathSegLinetoVerticalAbs;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegLinetoVerticalAbs
         (Pointer (This),
          y,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegLinetoVerticalAbs;

   function createSVGPathSegLinetoVerticalRel
     (This     : ISVGPathElement_Type;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegLinetoVerticalRel
   is
       RetVal : aliased Pointer_To_ISVGPathSegLinetoVerticalRel;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegLinetoVerticalRel
         (Pointer (This),
          y,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegLinetoVerticalRel;

   function createSVGPathSegCurvetoCubicSmoothAbs
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float;
      x2       : Interfaces.C.C_float;
      y2       : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegCurvetoCubicSmoothAbs
   is
       RetVal : aliased Pointer_To_ISVGPathSegCurvetoCubicSmoothAbs;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegCurvetoCubicSmoothAbs
         (Pointer (This),
          x,
          y,
          x2,
          y2,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegCurvetoCubicSmoothAbs;

   function createSVGPathSegCurvetoCubicSmoothRel
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float;
      x2       : Interfaces.C.C_float;
      y2       : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegCurvetoCubicSmoothRel
   is
       RetVal : aliased Pointer_To_ISVGPathSegCurvetoCubicSmoothRel;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegCurvetoCubicSmoothRel
         (Pointer (This),
          x,
          y,
          x2,
          y2,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegCurvetoCubicSmoothRel;

   function createSVGPathSegCurvetoQuadraticSmoothAbs
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegCurvetoQuadraticSmoothAbs
   is
       RetVal : aliased Pointer_To_ISVGPathSegCurvetoQuadraticSmoothAbs;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegCurvetoQuadraticSmoothAbs
         (Pointer (This),
          x,
          y,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegCurvetoQuadraticSmoothAbs;

   function createSVGPathSegCurvetoQuadraticSmoothRel
     (This     : ISVGPathElement_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGPathSegCurvetoQuadraticSmoothRel
   is
       RetVal : aliased Pointer_To_ISVGPathSegCurvetoQuadraticSmoothRel;
   begin
      GNATCOM.Errors.Error_Check
        (Pointer (This).Vtbl.createSVGPathSegCurvetoQuadraticSmoothRel
         (Pointer (This),
          x,
          y,
          RetVal'Unchecked_Access));

      return RetVal;
   end createSVGPathSegCurvetoQuadraticSmoothRel;

end MSHTML.ISVGPathElement_Interface;

