package body MSHTML.ISVGMatrix_Object is

   procedure Put_a
     (This : ISVGMatrix_Type;
      P1   : GNATCOM.Types.VARIANT;
      Free : Boolean := True)
   is
   begin
      Put
        (This,
         ISVGMatrix_Put_a,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => P1),
         Free);
   end Put_a;

   function Get_a
     (This : ISVGMatrix_Type)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Get (This, ISVGMatrix_Get_a);
   end Get_a;

   procedure Put_b
     (This : ISVGMatrix_Type;
      P1   : GNATCOM.Types.VARIANT;
      Free : Boolean := True)
   is
   begin
      Put
        (This,
         ISVGMatrix_Put_b,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => P1),
         Free);
   end Put_b;

   function Get_b
     (This : ISVGMatrix_Type)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Get (This, ISVGMatrix_Get_b);
   end Get_b;

   procedure Put_c
     (This : ISVGMatrix_Type;
      P1   : GNATCOM.Types.VARIANT;
      Free : Boolean := True)
   is
   begin
      Put
        (This,
         ISVGMatrix_Put_c,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => P1),
         Free);
   end Put_c;

   function Get_c
     (This : ISVGMatrix_Type)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Get (This, ISVGMatrix_Get_c);
   end Get_c;

   procedure Put_d
     (This : ISVGMatrix_Type;
      P1   : GNATCOM.Types.VARIANT;
      Free : Boolean := True)
   is
   begin
      Put
        (This,
         ISVGMatrix_Put_d,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => P1),
         Free);
   end Put_d;

   function Get_d
     (This : ISVGMatrix_Type)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Get (This, ISVGMatrix_Get_d);
   end Get_d;

   procedure Put_e
     (This : ISVGMatrix_Type;
      P1   : GNATCOM.Types.VARIANT;
      Free : Boolean := True)
   is
   begin
      Put
        (This,
         ISVGMatrix_Put_e,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => P1),
         Free);
   end Put_e;

   function Get_e
     (This : ISVGMatrix_Type)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Get (This, ISVGMatrix_Get_e);
   end Get_e;

   procedure Put_f
     (This : ISVGMatrix_Type;
      P1   : GNATCOM.Types.VARIANT;
      Free : Boolean := True)
   is
   begin
      Put
        (This,
         ISVGMatrix_Put_f,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => P1),
         Free);
   end Put_f;

   function Get_f
     (This : ISVGMatrix_Type)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Get (This, ISVGMatrix_Get_f);
   end Get_f;

   function multiply
     (This         : ISVGMatrix_Type;
      secondMatrix : GNATCOM.Types.VARIANT;
      Free         : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke
        (This,
         ISVGMatrix_multiply,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => secondMatrix),
         Free);
   end multiply;

   function inverse
     (This : ISVGMatrix_Type)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke (This, ISVGMatrix_inverse);
   end inverse;

   function translate
     (This : ISVGMatrix_Type;
      x    : GNATCOM.Types.VARIANT;
      y    : GNATCOM.Types.VARIANT;
      Free : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke
        (This,
         ISVGMatrix_translate,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => y,
          2 => x),
         Free);
   end translate;

   function scale
     (This        : ISVGMatrix_Type;
      scaleFactor : GNATCOM.Types.VARIANT;
      Free        : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke
        (This,
         ISVGMatrix_scale,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => scaleFactor),
         Free);
   end scale;

   function scaleNonUniform
     (This         : ISVGMatrix_Type;
      scaleFactorX : GNATCOM.Types.VARIANT;
      scaleFactorY : GNATCOM.Types.VARIANT;
      Free         : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke
        (This,
         ISVGMatrix_scaleNonUniform,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => scaleFactorY,
          2 => scaleFactorX),
         Free);
   end scaleNonUniform;

   function rotate
     (This  : ISVGMatrix_Type;
      angle : GNATCOM.Types.VARIANT;
      Free  : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke
        (This,
         ISVGMatrix_rotate,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => angle),
         Free);
   end rotate;

   function rotateFromVector
     (This : ISVGMatrix_Type;
      x    : GNATCOM.Types.VARIANT;
      y    : GNATCOM.Types.VARIANT;
      Free : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke
        (This,
         ISVGMatrix_rotateFromVector,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => y,
          2 => x),
         Free);
   end rotateFromVector;

   function flipX
     (This : ISVGMatrix_Type)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke (This, ISVGMatrix_flipX);
   end flipX;

   function flipY
     (This : ISVGMatrix_Type)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke (This, ISVGMatrix_flipY);
   end flipY;

   function skewX
     (This  : ISVGMatrix_Type;
      angle : GNATCOM.Types.VARIANT;
      Free  : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke
        (This,
         ISVGMatrix_skewX,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => angle),
         Free);
   end skewX;

   function skewY
     (This  : ISVGMatrix_Type;
      angle : GNATCOM.Types.VARIANT;
      Free  : Boolean := True)
     return GNATCOM.Types.VARIANT
   is
   begin
      return Invoke
        (This,
         ISVGMatrix_skewY,
         GNATCOM.Dispinterface.Parameter_Array'
         (1 => angle),
         Free);
   end skewY;

end MSHTML.ISVGMatrix_Object;

