with GNATCOM.Dispinterface;

package MSHTML.ITemplatePrinter_Interface is

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

   procedure Initialize (This : in out ITemplatePrinter_Type);

   function Pointer (This : ITemplatePrinter_Type)
     return Pointer_To_ITemplatePrinter;

   procedure Attach (This    : in out ITemplatePrinter_Type;
                     Pointer : in     Pointer_To_ITemplatePrinter);

   function startDoc
     (This      : ITemplatePrinter_Type;
      bstrTitle : GNATCOM.Types.BSTR;
      Free      : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure stopDoc
     (This : ITemplatePrinter_Type);

   procedure printBlankPage
     (This : ITemplatePrinter_Type);

   procedure printPage
     (This      : ITemplatePrinter_Type;
      pElemDisp : GNATCOM.Types.Pointer_To_IDispatch);

   function ensurePrintDialogDefaults
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   function showPrintDialog
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   function showPageSetupDialog
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   function printNonNative
     (This    : ITemplatePrinter_Type;
      pMarkup : GNATCOM.Types.Pointer_To_IUnknown)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure printNonNativeFrames
     (This         : ITemplatePrinter_Type;
      pMarkup      : GNATCOM.Types.Pointer_To_IUnknown;
      fActiveFrame : GNATCOM.Types.VARIANT_BOOL);

   procedure Put_framesetDocument
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_framesetDocument
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_frameActive
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_frameActive
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_frameAsShown
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_frameAsShown
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_selection
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_selection
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_selectedPages
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_selectedPages
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_currentPage
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_currentPage
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_currentPageAvail
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_currentPageAvail
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_collate
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_collate
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   function Get_duplex
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_copies
     (This : ITemplatePrinter_Type;
      p    : Interfaces.C.unsigned_short);

   function Get_copies
     (This : ITemplatePrinter_Type)
     return Interfaces.C.unsigned_short;

   procedure Put_pageFrom
     (This : ITemplatePrinter_Type;
      p    : Interfaces.C.unsigned_short);

   function Get_pageFrom
     (This : ITemplatePrinter_Type)
     return Interfaces.C.unsigned_short;

   procedure Put_pageTo
     (This : ITemplatePrinter_Type;
      p    : Interfaces.C.unsigned_short);

   function Get_pageTo
     (This : ITemplatePrinter_Type)
     return Interfaces.C.unsigned_short;

   procedure Put_tableOfLinks
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_tableOfLinks
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_allLinkedDocuments
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_allLinkedDocuments
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_header
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_header
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.BSTR;

   procedure Put_footer
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_footer
     (This : ITemplatePrinter_Type)
     return GNATCOM.Types.BSTR;

   procedure Put_marginLeft
     (This : ITemplatePrinter_Type;
      p    : Interfaces.C.long);

   function Get_marginLeft
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   procedure Put_marginRight
     (This : ITemplatePrinter_Type;
      p    : Interfaces.C.long);

   function Get_marginRight
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   procedure Put_marginTop
     (This : ITemplatePrinter_Type;
      p    : Interfaces.C.long);

   function Get_marginTop
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   procedure Put_marginBottom
     (This : ITemplatePrinter_Type;
      p    : Interfaces.C.long);

   function Get_marginBottom
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   function Get_pageWidth
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   function Get_pageHeight
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   function Get_unprintableLeft
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   function Get_unprintableTop
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   function Get_unprintableRight
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   function Get_unprintableBottom
     (This : ITemplatePrinter_Type)
     return Interfaces.C.long;

   procedure updatePageStatus
     (This : ITemplatePrinter_Type;
      p    : GNATCOM.Types.Pointer_To_long);

end MSHTML.ITemplatePrinter_Interface;

