with GNATCOM.Dispinterface;

package MSHTML.ISVGMatrix_Interface is

   type ISVGMatrix_Type is
     new GNATCOM.Dispinterface.Dispinterface_Type with null record;

   procedure Initialize (This : in out ISVGMatrix_Type);

   function Pointer (This : ISVGMatrix_Type)
     return Pointer_To_ISVGMatrix;

   procedure Attach (This    : in out ISVGMatrix_Type;
                     Pointer : in     Pointer_To_ISVGMatrix);

   procedure Put_a
     (This : ISVGMatrix_Type;
      p    : Interfaces.C.C_float);

   function Get_a
     (This : ISVGMatrix_Type)
     return Interfaces.C.C_float;

   procedure Put_b
     (This : ISVGMatrix_Type;
      p    : Interfaces.C.C_float);

   function Get_b
     (This : ISVGMatrix_Type)
     return Interfaces.C.C_float;

   procedure Put_c
     (This : ISVGMatrix_Type;
      p    : Interfaces.C.C_float);

   function Get_c
     (This : ISVGMatrix_Type)
     return Interfaces.C.C_float;

   procedure Put_d
     (This : ISVGMatrix_Type;
      p    : Interfaces.C.C_float);

   function Get_d
     (This : ISVGMatrix_Type)
     return Interfaces.C.C_float;

   procedure Put_e
     (This : ISVGMatrix_Type;
      p    : Interfaces.C.C_float);

   function Get_e
     (This : ISVGMatrix_Type)
     return Interfaces.C.C_float;

   procedure Put_f
     (This : ISVGMatrix_Type;
      p    : Interfaces.C.C_float);

   function Get_f
     (This : ISVGMatrix_Type)
     return Interfaces.C.C_float;

   function multiply
     (This         : ISVGMatrix_Type;
      secondMatrix : Pointer_To_ISVGMatrix)
     return Pointer_To_ISVGMatrix;

   function inverse
     (This     : ISVGMatrix_Type)
     return Pointer_To_ISVGMatrix;

   function translate
     (This     : ISVGMatrix_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGMatrix;

   function scale
     (This        : ISVGMatrix_Type;
      scaleFactor : Interfaces.C.C_float)
     return Pointer_To_ISVGMatrix;

   function scaleNonUniform
     (This         : ISVGMatrix_Type;
      scaleFactorX : Interfaces.C.C_float;
      scaleFactorY : Interfaces.C.C_float)
     return Pointer_To_ISVGMatrix;

   function rotate
     (This     : ISVGMatrix_Type;
      angle    : Interfaces.C.C_float)
     return Pointer_To_ISVGMatrix;

   function rotateFromVector
     (This     : ISVGMatrix_Type;
      x        : Interfaces.C.C_float;
      y        : Interfaces.C.C_float)
     return Pointer_To_ISVGMatrix;

   function flipX
     (This     : ISVGMatrix_Type)
     return Pointer_To_ISVGMatrix;

   function flipY
     (This     : ISVGMatrix_Type)
     return Pointer_To_ISVGMatrix;

   function skewX
     (This     : ISVGMatrix_Type;
      angle    : Interfaces.C.C_float)
     return Pointer_To_ISVGMatrix;

   function skewY
     (This     : ISVGMatrix_Type;
      angle    : Interfaces.C.C_float)
     return Pointer_To_ISVGMatrix;

end MSHTML.ISVGMatrix_Interface;

