ROOT » GRAF2D » POSTSCRIPT » TPDF

class TPDF: public TVirtualPS


TPDF: Graphics interface to PDF

Like PostScript, PDF is a vector graphics output format allowing a very high graphics output quality. The functionnalities provided by this class are very similar to those provided by TPostScript.

Compare to PostScript output, the PDF files are usually smaller because some parts of them can be compressed.

PDF also allows to define table of contents. This facility can be used in ROOT. The following example shows how to proceed:

{
   TCanvas* canvas = new TCanvas("canvas");
   TH1F* histo = new TH1F("histo","test 1",10,0.,10.);
   histo->SetFillColor(2);
   histo->Fill(2.);
   histo->Draw();
   canvas->Print("plots.pdf(","Title:One bin filled");
   histo->Fill(4.);
   histo->Draw();
   canvas->Print("plots.pdf","Title:Two bins filled");
   histo->Fill(6.);
   histo->Draw();
   canvas->Print("plots.pdf","Title:Three bins filled");
   histo->Fill(8.);
   histo->Draw();
   canvas->Print("plots.pdf","Title:Four bins filled");
   histo->Fill(8.);
   histo->Draw();
   canvas->Print("plots.pdf)","Title:The fourth bin content is 2");
}
Each character string following the keyword "Title:" makes a new entry in the table of contents.
 

Function Members (Methods)

public:
virtual~TPDF()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
virtual voidCellArrayBegin(Int_t W, Int_t H, Double_t x1, Double_t x2, Double_t y1, Double_t y2)
virtual voidCellArrayEnd()
virtual voidCellArrayFill(Int_t r, Int_t g, Int_t b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual voidClose(Option_t* opt = "")
Double_tCMtoPDF(Double_t u)
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
Int_tTAttLine::DistancetoLine(Int_t px, Int_t py, Double_t xp1, Double_t yp1, Double_t xp2, Double_t yp2)
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidDrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidDrawFrame(Double_t xl, Double_t yl, Double_t xt, Double_t yt, Int_t mode, Int_t border, Int_t dark, Int_t light)
voidDrawHatch(Float_t dy, Float_t angle, Int_t n, Float_t* x, Float_t* y)
voidDrawHatch(Float_t dy, Float_t angle, Int_t n, Double_t* x, Double_t* y)
voidDrawPolyLine(Int_t n, TPoints* xy)
voidDrawPolyLineNDC(Int_t n, TPoints* uv)
virtual voidDrawPolyMarker(Int_t n, Float_t* x, Float_t* y)
virtual voidDrawPolyMarker(Int_t n, Double_t* x, Double_t* y)
virtual voidDrawPS(Int_t n, Float_t* xw, Float_t* yw)
virtual voidDrawPS(Int_t n, Double_t* xw, Double_t* yw)
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
voidFontEncode()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Color_tTAttFill::GetFillColor() const
virtual Style_tTAttFill::GetFillStyle() const
virtual const char*TObject::GetIconName() const
virtual Color_tTAttLine::GetLineColor() const
virtual Style_tTAttLine::GetLineStyle() const
virtual Width_tTAttLine::GetLineWidth() const
virtual Color_tTAttMarker::GetMarkerColor() const
virtual Size_tTAttMarker::GetMarkerSize() const
virtual Style_tTAttMarker::GetMarkerStyle() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual void*TVirtualPS::GetStream() const
virtual Short_tTAttText::GetTextAlign() const
virtual Float_tTAttText::GetTextAngle() const
virtual Color_tTAttText::GetTextColor() const
virtual Font_tTAttText::GetTextFont() const
virtual Float_tTAttText::GetTextSize() const
virtual const char*TNamed::GetTitle() const
virtual Int_tTVirtualPS::GetType() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
virtual Bool_tTAttFill::IsTransparent() const
Bool_tTObject::IsZombie() const
voidLineTo(Double_t x, Double_t y)
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual voidTAttLine::Modify()
voidMoveTo(Double_t x, Double_t y)
voidNewObject(Int_t n)
virtual voidNewPage()
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
voidOff()
voidOn()
virtual voidOpen(const char* filename, Int_t type = -111)
voidTObject::operator delete(void* ptr)
voidTObject::operator delete(void* ptr, void* vp)
voidTObject::operator delete[](void* ptr)
voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TPDF&operator=(const TPDF&)
virtual voidTObject::Paint(Option_t* option = "")
voidPatternEncode()
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual voidPrintFast(Int_t nch, const char* string = "")
virtual voidTVirtualPS::PrintRaw(Int_t len, const char* str)
virtual voidPrintStr(const char* string = "")
voidRange(Float_t xrange, Float_t yrange)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual voidTAttFill::ResetAttFill(Option_t* option = "")
virtual voidTAttLine::ResetAttLine(Option_t* option = "")
virtual voidTAttMarker::ResetAttMarker(Option_t* toption = "")
virtual voidTAttText::ResetAttText(Option_t* toption = "")
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTAttFill::SaveFillAttributes(ostream& out, const char* name, Int_t coldef = 1, Int_t stydef = 1001)
virtual voidTAttLine::SaveLineAttributes(ostream& out, const char* name, Int_t coldef = 1, Int_t stydef = 1, Int_t widdef = 1)
virtual voidTAttMarker::SaveMarkerAttributes(ostream& out, const char* name, Int_t coldef = 1, Int_t stydef = 1, Int_t sizdef = 1)
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
virtual voidTAttText::SaveTextAttributes(ostream& out, const char* name, Int_t alidef = 12, Float_t angdef = 0, Int_t coldef = 1, Int_t fondef = 61, Float_t sizdef = 1)
voidSetAlpha(Float_t alpha = 1.)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetColor(Int_t color = 1)
virtual voidSetColor(Float_t r, Float_t g, Float_t b)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidTAttFill::SetFillAttributes()MENU
virtual voidSetFillColor(Color_t cindex = 1)
virtual voidTAttFill::SetFillColorAlpha(Color_t fcolor, Float_t falpha)
voidSetFillPatterns(Int_t ipat, Int_t color)
virtual voidTAttFill::SetFillStyle(Style_t fstyle)
virtual voidTAttLine::SetLineAttributes()MENU
virtual voidSetLineColor(Color_t cindex = 1)
virtual voidTAttLine::SetLineColorAlpha(Color_t lcolor, Float_t lalpha)
voidSetLineScale(Float_t scale = 1)
virtual voidSetLineStyle(Style_t linestyle = 1)
virtual voidSetLineWidth(Width_t linewidth = 1)
virtual voidTAttMarker::SetMarkerAttributes()MENU
virtual voidSetMarkerColor(Color_t cindex = 1)
virtual voidTAttMarker::SetMarkerColorAlpha(Color_t mcolor, Float_t malpha)
virtual voidTAttMarker::SetMarkerSize(Size_t msize = 1)
virtual voidTAttMarker::SetMarkerStyle(Style_t mstyle = 1)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTVirtualPS::SetStream(ofstream* os)
virtual voidTAttText::SetTextAlign(Short_t align = 11)
virtual voidTAttText::SetTextAngle(Float_t tangle = 0)MENU
virtual voidTAttText::SetTextAttributes()MENU
virtual voidSetTextColor(Color_t cindex = 1)
virtual voidTAttText::SetTextColorAlpha(Color_t tcolor, Float_t talpha)
virtual voidTAttText::SetTextFont(Font_t tfont = 62)
virtual voidTAttText::SetTextSize(Float_t tsize = 1)
virtual voidTAttText::SetTextSizePixels(Int_t npixels)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTVirtualPS::SetType(Int_t = -111)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp) const
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidText(Double_t x, Double_t y, const char* string)
virtual voidText(Double_t, Double_t, const wchar_t*)
voidTextNDC(Double_t u, Double_t v, const char* string)
voidTextNDC(Double_t, Double_t, const wchar_t*)
TPDF()
TPDF(const TPDF&)
TPDF(const char* filename, Int_t type = -111)
virtual voidTObject::UseCurrentStyle()
Double_tUtoPDF(Double_t u)
Double_tVtoPDF(Double_t v)
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
voidWriteCompressedBuffer()
virtual voidTVirtualPS::WriteInteger(Int_t i, Bool_t space = kTRUE)
virtual voidWriteReal(Float_t r, Bool_t space = kTRUE)
Double_tXtoPDF(Double_t x)
Double_tYtoPDF(Double_t y)
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

public:
static TObject::(anonymous)TObject::kBitMask
static TObject::EStatusBitsTObject::kCanDelete
static TObject::EStatusBitsTObject::kCannotPick
static TObject::EStatusBitsTObject::kHasUUID
static TObject::EStatusBitsTObject::kInvalidObject
static TObject::(anonymous)TObject::kIsOnHeap
static TObject::EStatusBitsTObject::kIsReferenced
static TObject::EStatusBitsTObject::kMustCleanup
static TObject::EStatusBitsTObject::kNoContextMenu
static TObject::(anonymous)TObject::kNotDeleted
static TObject::EStatusBitsTObject::kObjInCanvas
static TObject::(anonymous)TObject::kOverwrite
static TObject::(anonymous)TObject::kSingleKey
static TObject::(anonymous)TObject::kWriteDelete
static TObject::(anonymous)TObject::kZombie
protected:
Float_tfAlphaPer cent of transparency
vector<float>fAlphasList of alpha values used
Float_tfBluePer cent of blue
char*TVirtualPS::fBufferFile buffer
Bool_tfCompressTrue when fBuffer must be compressed
Color_tTAttFill::fFillColorfill area color
Style_tTAttFill::fFillStylefill area style
Float_tfGreenPer cent of green
const char*TVirtualPS::fImplicitCREscEscape symbol before enforced new line
Int_tTVirtualPS::fLenBufferBuffer length
Color_tTAttLine::fLineColorline color
Float_tfLineScaleLine width scale factor
Style_tTAttLine::fLineStyleline style
Width_tTAttLine::fLineWidthline width
Color_tTAttMarker::fMarkerColorMarker color index
Size_tTAttMarker::fMarkerSizeMarker size
Style_tTAttMarker::fMarkerStyleMarker style
Int_tTVirtualPS::fNByteNumber of bytes written in the file (PDF)
TStringTNamed::fNameobject identifier
Int_tfNbObjNumber of objects
Int_tfNbPageNumber of pages
Int_t*fObjPosObjets position
Int_tfObjPosSizeReal size of fObjPos
Int_tfPageFormatPage format (A4, Letter etc ...)
Bool_tfPageNotEmptyTrue if the current page is not empty
Int_tfPageOrientationPage orientation (Portrait, Landscape)
Bool_tTVirtualPS::fPrintedTrue when a page must be printed
Bool_tfRangeTrue when a range has been defined
Float_tfRedPer cent of red
Int_tTVirtualPS::fSizBufferBuffer size
Int_tfStartStream
ofstream*TVirtualPS::fStreamFile stream identifier
Short_tTAttText::fTextAlignText alignment
Float_tTAttText::fTextAngleText angle
Color_tTAttText::fTextColorText color index
Font_tTAttText::fTextFontText font number
Float_tTAttText::fTextSizeText size
TStringTNamed::fTitleobject title
Int_tfTypeWorkstation type used to know if the PDF is open
Float_tfXsizePage size along X
Float_tfYsizePage size along Y

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TPDF()
 Default PDF constructor
TPDF(const char* filename, Int_t type = -111)
 Initialize the PDF interface

  fname : PDF file name
  wtype : PDF workstation type. Not used in the PDF driver. But as TPDF
          inherits from TVirtualPS it should be kept. Anyway it is not
          necessary to specify this parameter at creation time because it
          has a default value (which is ignore in the PDF case).
~TPDF()
 Default PDF destructor
void CellArrayBegin(Int_t W, Int_t H, Double_t x1, Double_t x2, Double_t y1, Double_t y2)
 Begin the Cell Array painting
void CellArrayFill(Int_t r, Int_t g, Int_t b)
 Paint the Cell Array
void CellArrayEnd()
 End the Cell Array painting
void Close(Option_t* opt = "")
 Close a PDF file
void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
 Draw a Box
void DrawFrame(Double_t xl, Double_t yl, Double_t xt, Double_t yt, Int_t mode, Int_t border, Int_t dark, Int_t light)
 Draw a Frame around a box

 mode = -1  box looks as it is behind the screen
 mode =  1  box looks as it is in front of the screen
 border is the border size in already precomputed PDF units
 dark  is the color for the dark part of the frame
 light is the color for the light part of the frame
void DrawHatch(Float_t dy, Float_t angle, Int_t n, Float_t* x, Float_t* y)
 Draw Fill area with hatch styles
void DrawHatch(Float_t dy, Float_t angle, Int_t n, Double_t* x, Double_t* y)
 Draw Fill area with hatch styles
void DrawPolyLine(Int_t n, TPoints* xy)
 Draw a PolyLine

  Draw a polyline through  the points xy.
  If NN=1 moves only to point x,y.
  If NN=0 the x,y are  written  in the PDF file
     according to the current transformation.
  If NN>0 the line is clipped as a line.
  If NN<0 the line is clipped as a fill area.
void DrawPolyLineNDC(Int_t n, TPoints* uv)
 Draw a PolyLine in NDC space

  Draw a polyline through the points xy.
  If NN=1 moves only to point x,y.
  If NN=0 the x,y are  written in the PDF file
     according to the current transformation.
  If NN>0 the line is clipped as a line.
  If NN<0 the line is clipped as a fill area.
void DrawPolyMarker(Int_t n, Float_t* x, Float_t* y)
 Draw markers at the n WC points xw, yw
void DrawPolyMarker(Int_t n, Double_t* x, Double_t* y)
 Draw markers at the n WC points xw, yw
void DrawPS(Int_t n, Float_t* xw, Float_t* yw)
 Draw a PolyLine

  Draw a polyline through the points xw,yw.
  If nn=1 moves only to point xw,yw.
  If nn=0 the XW(1) and YW(1) are  written  in the PDF file
          according to the current NT.
  If nn>0 the line is clipped as a line.
  If nn<0 the line is clipped as a fill area.
void DrawPS(Int_t n, Double_t* xw, Double_t* yw)
 Draw a PolyLine

 Draw a polyline through  the points xw,yw.
 If nn=1 moves only to point xw,yw.
 If nn=0 the xw(1) and YW(1) are  written  in the PDF file
         according to the current NT.
 If nn>0 the line is clipped as a line.
 If nn<0 the line is clipped as a fill area.
void FontEncode()
 Font encoding
void LineTo(Double_t x, Double_t y)
 Draw a line to a new position
void MoveTo(Double_t x, Double_t y)
 Move to a new position
void NewObject(Int_t n)
 Create a new object in the PDF file
void NewPage()
 Start a new PDF page.
void Off()
 Deactivate an already open PDF file
void On()
 Activate an already open PDF file
void Open(const char* filename, Int_t type = -111)
 Open a PDF file
void PatternEncode()
 Patterns encoding
void PrintStr(const char* string = "")
 Output the string str in the output buffer
void PrintFast(Int_t nch, const char* string = "")
 Fast version of Print
void Range(Float_t xrange, Float_t yrange)
 Set the range for the paper in centimetres
void SetAlpha(Float_t alpha = 1.)
 Set the alpha channel value.
void SetColor(Int_t color = 1)
 Set color with its color index.
void SetColor(Float_t r, Float_t g, Float_t b)
 Set color with its R G B components:

  r: % of red in [0,1]
  g: % of green in [0,1]
  b: % of blue in [0,1]
void SetFillColor(Color_t cindex = 1)
 Set color index for fill areas
void SetFillPatterns(Int_t ipat, Int_t color)
 Set the fill patterns (1 to 25) for fill areas
void SetLineColor(Color_t cindex = 1)
 Set color index for lines
void SetLineStyle(Style_t linestyle = 1)
 Change the line style

 linestyle = 2 dashed
           = 3 dotted
           = 4 dash-dotted
           = else solid (1 in is used most of the time)
void SetLineWidth(Width_t linewidth = 1)
 Change the line width
void SetMarkerColor(Color_t cindex = 1)
 Set color index for markers.
void SetTextColor(Color_t cindex = 1)
 Set color index for text
void Text(Double_t x, Double_t y, const char* string)
 Draw text

 xx: x position of the text
 yy: y position of the text
 chars: text to be drawn
void TextNDC(Double_t u, Double_t v, const char* string)
 Write a string of characters in NDC
Double_t UtoPDF(Double_t u)
 Convert U from NDC coordinate to PDF
Double_t VtoPDF(Double_t v)
 Convert V from NDC coordinate to PDF
Double_t XtoPDF(Double_t x)
 Convert X from world coordinate to PDF
Double_t YtoPDF(Double_t y)
 Convert Y from world coordinate to PDF
void WriteCompressedBuffer()
 Write the buffer in a compressed way
void WriteReal(Float_t r, Bool_t space = kTRUE)
 Write a Real number to the file.
 This method overwrites TVirtualPS::WriteReal. Some PDF reader like
 Acrobat do not work when a PDF file contains reals with exponent. This
 method writes the real number "z" using the format "%f" instead of the
 format "%g" when writing it with "%g" generates a number with exponent.
TPDF()
Double_t CMtoPDF(Double_t u)
{return Int_t(0.5 + 72*u/2.54);}
void SetLineScale(Float_t scale = 1)
{fLineScale = scale;}
void Text(Double_t x, Double_t y, const char* string)
void TextNDC(Double_t u, Double_t v, const char* string)