#ifndef ROOT_TVirtualPS
#define ROOT_TVirtualPS

//+SEQ,CopyRight,T=NOINCLUDE.

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TVirtualPS                                                           //
//                                                                      //
// Abstract interface to a PostScript driver.                           //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


#ifndef ROOT_TNamed
//*KEEP,TNamed.
#include "TNamed.h"
//*KEND.
#endif
#ifndef ROOT_TAttLine
//*KEEP,TAttLine.
#include "TAttLine.h"
//*KEND.
#endif
#ifndef ROOT_TAttFill
//*KEEP,TAttFill.
#include "TAttFill.h"
//*KEND.
#endif
#ifndef ROOT_TAttText
//*KEEP,TAttText.
#include "TAttText.h"
//*KEND.
#endif
#ifndef ROOT_TAttMarker
//*KEEP,TAttMarker.
#include "TAttMarker.h"
//*KEND.
#endif

class TVirtualPS : public TNamed, public TAttLine, public TAttFill, public TAttMarker, public TAttText {

public:
   TVirtualPS();
   TVirtualPS(const char *filename, Int_t type=-111);
   virtual     ~TVirtualPS();
   virtual void  Close(Option_t *opt="") = 0;
   virtual void  DrawBox(Coord_t x1, Coord_t y1,Coord_t x2, Coord_t  y2) = 0;
   virtual void  DrawFrame(Coord_t xl, Coord_t yl, Coord_t xt, Coord_t  yt,
                           Int_t mode, Int_t border, Int_t dark, Int_t light) = 0;
   virtual void  DrawPolyMarker(Int_t n, Float_t *x, Float_t *y) = 0;
   virtual void  DrawPS(Int_t n, Float_t *xw, Float_t *yw) = 0;
   virtual void  NewPage() = 0;
   virtual void  Open(const char *filename, Int_t type=-111) = 0;
   virtual void  PrintFast(Int_t nch, const Text_t *string="") = 0;
   virtual void  Text(Float_t x, Float_t y, const Text_t *string) = 0;

   ClassDef(TVirtualPS,0)  //Abstract interface to a PostScript driver
};


R__EXTERN TVirtualPS  *gVirtualPS;

#endif