Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TVirtualPS.h
Go to the documentation of this file.
1 // @(#)root/base:$Id$
2 // Author: Rene Brun 05/09/99
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 #ifndef ROOT_TVirtualPS
12 #define ROOT_TVirtualPS
13 
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TVirtualPS //
18 // //
19 // Abstract interface to a PostScript driver. //
20 // //
21 //////////////////////////////////////////////////////////////////////////
22 
23 
24 #include "TNamed.h"
25 #include "TAttLine.h"
26 #include "TAttFill.h"
27 #include "TAttText.h"
28 #include "TAttMarker.h"
29 
30 class TVirtualPS : public TNamed, public TAttLine, public TAttFill, public TAttMarker, public TAttText {
31 
32 private:
33  TVirtualPS(const TVirtualPS&); // Not implemented
34  TVirtualPS& operator=(const TVirtualPS&); // Not implemented
35 
36 protected:
37  Int_t fNByte; //Number of bytes written in the file (PDF)
38  Int_t fLenBuffer; //Buffer length
39  Int_t fSizBuffer; //Buffer size
40  Bool_t fPrinted; //True when a page must be printed
41  std::ofstream *fStream; //File stream identifier
42  char *fBuffer; //File buffer
43  const char *fImplicitCREsc; //Escape symbol before enforced new line
44 
45 public:
46  TVirtualPS();
47  TVirtualPS(const char *filename, Int_t type=-111);
48  virtual ~TVirtualPS();
49  virtual void CellArrayBegin(Int_t W, Int_t H, Double_t x1, Double_t x2, Double_t y1, Double_t y2) = 0;
50  virtual void CellArrayFill(Int_t r, Int_t g, Int_t b) = 0;
51  virtual void CellArrayEnd() = 0;
52  virtual void Close(Option_t *opt="") = 0;
53  virtual void DrawBox(Double_t x1, Double_t y1,Double_t x2, Double_t y2) = 0;
54  virtual void DrawFrame(Double_t xl, Double_t yl, Double_t xt, Double_t yt,
55  Int_t mode, Int_t border, Int_t dark, Int_t light) = 0;
56  virtual void DrawPolyMarker(Int_t n, Float_t *x, Float_t *y) = 0;
57  virtual void DrawPolyMarker(Int_t n, Double_t *x, Double_t *y) = 0;
58  virtual void DrawPS(Int_t n, Float_t *xw, Float_t *yw) = 0;
59  virtual void DrawPS(Int_t n, Double_t *xw, Double_t *yw) = 0;
60  virtual void NewPage() = 0;
61  virtual void Open(const char *filename, Int_t type=-111) = 0;
62  virtual void Text(Double_t x, Double_t y, const char *string) = 0;
63  virtual void Text(Double_t x, Double_t y, const wchar_t *string) = 0;
64  virtual void SetColor(Float_t r, Float_t g, Float_t b) = 0;
65 
66  virtual void PrintFast(Int_t nch, const char *string="");
67  virtual void PrintStr(const char *string="");
68  virtual void WriteInteger(Int_t i, Bool_t space=kTRUE);
69  virtual void WriteReal(Float_t r, Bool_t space=kTRUE);
70  virtual void PrintRaw(Int_t len, const char *str);
71  virtual void *GetStream() const { return (void*)fStream; }
72  virtual void SetStream(std::ofstream *os) { fStream = os; }
73 
74  virtual void SetType(Int_t /*type*/ = -111) { }
75  virtual Int_t GetType() const { return 111; }
76 
77  ClassDef(TVirtualPS,0) //Abstract interface to a PostScript driver
78 };
79 
80 
81 R__EXTERN TVirtualPS *gVirtualPS;
82 
83 #endif