Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
TPDF.h
Go to the documentation of this file.
1// @(#)root/postscript:$Id: TPDF.h,v 1.0
2// Author: Olivier Couet
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
12#ifndef ROOT_TPDF
13#define ROOT_TPDF
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TPDF //
19// //
20// PDF driver. //
21// //
22//////////////////////////////////////////////////////////////////////////
23
24#include "TVirtualPS.h"
25#include <vector>
26#include <string>
27
28
29class TPoints;
30
31class TPDF : public TVirtualPS {
32
33protected:
34 Float_t fRed = 0.; ///< Per cent of red
35 Float_t fGreen = 0.; ///< Per cent of green
36 Float_t fBlue = 0.; ///< Per cent of blue
37 Float_t fAlpha = 1.; ///< Per cent of transparency
38 std::vector<float> fAlphas; ///< List of alpha values used
39 Float_t fXsize = 0.; ///< Page size along X
40 Float_t fYsize = 0.; ///< Page size along Y
41 Int_t fType = 0; ///< Workstation type used to know if the PDF is open
42 Int_t fPageFormat = 0; ///< Page format (A4, Letter etc ...)
43 Int_t fPageOrientation = 0; ///< Page orientation (Portrait, Landscape)
44 Int_t fStartStream = 0; ///< Stream start
45 Float_t fLineScale = 0.; ///< Line width scale factor
46 std::vector<Int_t> fObjPos; ///< Objects position
47 Int_t fNbPage = 0; ///< Number of pages
48 Int_t fCurrentPage = 0; ///< Object number of the current page
49 std::vector<int> fPageObjects; ///< Page object numbers
50 std::vector<std::string> fUrls; ///< URLs
51 std::vector<float> fRectX1; ///< x1 /Rect coordinates for url annots
52 std::vector<float> fRectY1; ///< y1 /Rect coordinates for url annots
53 std::vector<float> fRectX2; ///< x2 /Rect coordinates for url annots
54 std::vector<float> fRectY2; ///< y2 /Rect coordinates for url annots
55 Bool_t fObjectIsOpen = kFALSE; ///< True if an object is opened
56 Bool_t fPageNotEmpty = kFALSE; ///< True if the current page is not empty
57 Bool_t fCompress = kFALSE; ///< True when fBuffer must be compressed
58 Bool_t fRange = kFALSE; ///< True when a range has been defined
59 Bool_t fUrl = kFALSE; ///< True when the text has an URL
60 Int_t fNbUrl = 1; ///< Number of URLs in the current page
61 Double_t fA = 1.; ///< "a" value of the Current Transformation Matrix (CTM)
62 Double_t fB = 0.; ///< "b" value of the Current Transformation Matrix (CTM)
63 Double_t fC = 0.; ///< "c" value of the Current Transformation Matrix (CTM)
64 Double_t fD = 1.; ///< "d" value of the Current Transformation Matrix (CTM)
65 Double_t fE = 0.; ///< "e" value of the Current Transformation Matrix (CTM)
66 Double_t fF = 0.; ///< "f" value of the Current Transformation Matrix (CTM)
67
68 static Int_t fgLineJoin; ///< Appearance of joining lines
69 static Int_t fgLineCap; ///< Appearance of line caps
70
71 void EnsureBufferSize(Int_t required_size);
72
73public:
74 TPDF();
75 TPDF(const char *filename, Int_t type=-111);
76 ~TPDF() override;
77
78 void CellArrayBegin(Int_t W, Int_t H, Double_t x1, Double_t x2, Double_t y1, Double_t y2) override;
79 void CellArrayFill(Int_t r, Int_t g, Int_t b) override;
80 void CellArrayEnd() override;
81 void Close(Option_t *opt = "") override;
82 Double_t CMtoPDF(Double_t u) { return Int_t(0.5 + 72 * u / 2.54); }
83 void ComputeRect(const char* chars, Double_t fontsize, Double_t a, Double_t b, Double_t c, Double_t d, Double_t e, Double_t f);
84 void DrawBox(Double_t x1, Double_t y1,Double_t x2, Double_t y2) override;
85 void DrawFrame(Double_t xl, Double_t yl, Double_t xt, Double_t yt,
86 Int_t mode, Int_t border, Int_t dark, Int_t light) override;
87 void DrawHatch(Float_t dy, Float_t angle, Int_t n, Float_t *x, Float_t *y);
88 void DrawHatch(Float_t dy, Float_t angle, Int_t n, Double_t *x, Double_t *y);
89 void DrawPolyLine(Int_t n, TPoints *xy);
90 void DrawPolyLineNDC(Int_t n, TPoints *uv);
91 void DrawPolyMarker(Int_t n, Float_t *x, Float_t *y) override;
92 void DrawPolyMarker(Int_t n, Double_t *x, Double_t *y) override;
93 void DrawPS(Int_t n, Float_t *xw, Float_t *yw) override;
94 void DrawPS(Int_t n, Double_t *xw, Double_t *yw) override;
95 void LineTo(Double_t x, Double_t y);
96 void MoveTo(Double_t x, Double_t y);
97 void EndObject();
98 void FontEncode();
99 void NewObject(Int_t n);
100 void NewPage() override;
101 void Off();
102 void On();
103 void Open(const char *filename, Int_t type = -111) override;
104 void PatternEncode();
105 void PrintFast(Int_t nch, const char *string = "") override;
106 void PrintStr(const char *string = "") override;
107 void Range(Float_t xrange, Float_t yrange);
108 void SetAlpha(Float_t alpha = 1.);
109 void SetColor(Int_t color = 1);
110 void SetColor(Float_t r, Float_t g, Float_t b) override;
111 void SetFillColor( Color_t cindex = 1) override;
112 void SetFillPatterns(Int_t ipat, Int_t color);
113 void SetLineColor( Color_t cindex = 1) override;
114 void SetLineJoin(Int_t linejoin = 0);
115 void SetLineCap(Int_t linecap = 0);
116 void SetLineScale(Float_t scale = 1) {fLineScale = scale;}
117 void SetLineStyle(Style_t linestyle = 1) override;
118 void SetLineWidth(Width_t linewidth = 1) override;
119 void SetMarkerColor(Color_t cindex = 1) override;
120 void SetTextColor(Color_t cindex = 1) override;
121 void Text(Double_t x, Double_t y, const char *string) override;
122 void Text(Double_t, Double_t, const wchar_t *) override;
123 void TextUrl(Double_t x, Double_t y, const char *string, const char *url) override;
124 void TextNDC(Double_t u, Double_t v, const char *string);
125 void TextNDC(Double_t, Double_t, const wchar_t *);
128 void WriteReal(Float_t r, Bool_t space = kTRUE) override;
129 void WriteUrlObjects();
134
135 ClassDefOverride(TPDF, 1); // PDF driver
136};
137
138#endif
ROOT::R::TRInterface & r
Definition Object.C:4
#define d(i)
Definition RSha256.hxx:102
#define b(i)
Definition RSha256.hxx:100
#define f(i)
Definition RSha256.hxx:104
#define c(i)
Definition RSha256.hxx:101
#define g(i)
Definition RSha256.hxx:105
#define a(i)
Definition RSha256.hxx:99
#define e(i)
Definition RSha256.hxx:103
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
short Width_t
Line width (short).
Definition RtypesCore.h:98
bool Bool_t
Boolean (0=false, 1=true) (bool).
Definition RtypesCore.h:77
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
double Double_t
Double 8 bytes.
Definition RtypesCore.h:73
short Color_t
Color number (short).
Definition RtypesCore.h:99
short Style_t
Style number (short).
Definition RtypesCore.h:96
float Float_t
Float 4 bytes (float).
Definition RtypesCore.h:71
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
const char Option_t
Option string (const char).
Definition RtypesCore.h:80
#define ClassDefOverride(name, id)
Definition Rtypes.h:348
void SetLineStyle(Style_t linestyle=1) override
Change the line style.
Definition TPDF.cxx:2088
void Off()
Deactivate an already open PDF file.
Definition TPDF.cxx:1634
std::vector< int > fPageObjects
Page object numbers.
Definition TPDF.h:49
Int_t fCurrentPage
Object number of the current page.
Definition TPDF.h:48
void SetMarkerColor(Color_t cindex=1) override
Set color index for markers.
Definition TPDF.cxx:2120
Int_t fType
Workstation type used to know if the PDF is open.
Definition TPDF.h:41
void SetColor(Int_t color=1)
Set color with its color index.
Definition TPDF.cxx:1894
Double_t YtoPDF(Double_t y)
Convert Y from world coordinate to PDF.
Definition TPDF.cxx:2414
void Open(const char *filename, Int_t type=-111) override
Open a PDF file.
Definition TPDF.cxx:1658
void Close(Option_t *opt="") override
Close a PDF file.
Definition TPDF.cxx:163
std::vector< Int_t > fObjPos
Objects position.
Definition TPDF.h:46
TPDF()
Default PDF constructor.
Definition TPDF.cxx:104
void Range(Float_t xrange, Float_t yrange)
Set the range for the paper in centimetres.
Definition TPDF.cxx:1864
Double_t fD
"d" value of the Current Transformation Matrix (CTM)
Definition TPDF.h:64
void LineTo(Double_t x, Double_t y)
Draw a line to a new position.
Definition TPDF.cxx:1401
Bool_t fUrl
True when the text has an URL.
Definition TPDF.h:59
void SetLineCap(Int_t linecap=0)
Set the value of the global parameter TPDF::fgLineCap.
Definition TPDF.cxx:2073
Double_t XtoPDF(Double_t x)
Convert X from world coordinate to PDF.
Definition TPDF.cxx:2405
void WriteReal(Float_t r, Bool_t space=kTRUE) override
Write a Real number to the file.
Definition TPDF.cxx:2473
Double_t fB
"b" value of the Current Transformation Matrix (CTM)
Definition TPDF.h:62
void SetLineJoin(Int_t linejoin=0)
Set the value of the global parameter TPDF::fgLineJoin.
Definition TPDF.cxx:2049
Double_t CMtoPDF(Double_t u)
Definition TPDF.h:82
void CellArrayEnd() override
End the Cell Array painting.
Definition TPDF.cxx:155
void NewPage() override
Start a new PDF page.
Definition TPDF.cxx:1440
Float_t fAlpha
Per cent of transparency.
Definition TPDF.h:37
Float_t fLineScale
Line width scale factor.
Definition TPDF.h:45
void SetFillColor(Color_t cindex=1) override
Set color index for fill areas.
Definition TPDF.cxx:1967
Float_t fGreen
Per cent of green.
Definition TPDF.h:35
Int_t fNbUrl
Number of URLs in the current page.
Definition TPDF.h:60
Int_t fPageOrientation
Page orientation (Portrait, Landscape).
Definition TPDF.h:43
void On()
Activate an already open PDF file.
Definition TPDF.cxx:1642
Bool_t fObjectIsOpen
True if an object is opened.
Definition TPDF.h:55
Int_t fStartStream
Stream start.
Definition TPDF.h:44
Double_t fE
"e" value of the Current Transformation Matrix (CTM)
Definition TPDF.h:65
void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2) override
Draw a Box.
Definition TPDF.cxx:333
void SetLineColor(Color_t cindex=1) override
Set color index for lines.
Definition TPDF.cxx:2027
void ComputeRect(const char *chars, Double_t fontsize, Double_t a, Double_t b, Double_t c, Double_t d, Double_t e, Double_t f)
Compute the Rect for url.
Definition TPDF.cxx:2976
void FontEncode()
Font encoding.
Definition TPDF.cxx:1369
Bool_t fCompress
True when fBuffer must be compressed.
Definition TPDF.h:57
static Int_t fgLineCap
Appearance of line caps.
Definition TPDF.h:69
void TextUrl(Double_t x, Double_t y, const char *string, const char *url) override
Draw text with URL.
Definition TPDF.cxx:2355
void DrawPS(Int_t n, Float_t *xw, Float_t *yw) override
Draw a PolyLine.
Definition TPDF.cxx:1191
Float_t fYsize
Page size along Y.
Definition TPDF.h:40
Double_t UtoPDF(Double_t u)
Convert U from NDC coordinate to PDF.
Definition TPDF.cxx:2387
std::vector< std::string > fUrls
URLs.
Definition TPDF.h:50
std::vector< float > fRectY1
y1 /Rect coordinates for url annots
Definition TPDF.h:52
void SetAlpha(Float_t alpha=1.)
Set the alpha channel value.
Definition TPDF.cxx:1874
Float_t fRed
Per cent of red.
Definition TPDF.h:34
std::vector< float > fRectY2
y2 /Rect coordinates for url annots
Definition TPDF.h:54
Int_t fPageFormat
Page format (A4, Letter etc ...).
Definition TPDF.h:42
Bool_t fRange
True when a range has been defined.
Definition TPDF.h:58
std::vector< float > fRectX1
x1 /Rect coordinates for url annots
Definition TPDF.h:51
void DrawPolyMarker(Int_t n, Float_t *x, Float_t *y) override
Draw markers at the n WC points xw, yw.
Definition TPDF.cxx:563
std::vector< float > fRectX2
x2 /Rect coordinates for url annots
Definition TPDF.h:53
Float_t fBlue
Per cent of blue.
Definition TPDF.h:36
std::vector< float > fAlphas
List of alpha values used.
Definition TPDF.h:38
void MoveTo(Double_t x, Double_t y)
Move to a new position.
Definition TPDF.cxx:1411
void SetLineScale(Float_t scale=1)
Definition TPDF.h:116
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) override
Draw a Frame around a box.
Definition TPDF.cxx:399
Double_t fC
"c" value of the Current Transformation Matrix (CTM)
Definition TPDF.h:63
void CellArrayFill(Int_t r, Int_t g, Int_t b) override
Paint the Cell Array.
Definition TPDF.cxx:147
~TPDF() override
Default PDF destructor.
Definition TPDF.cxx:130
void WriteUrlObjects()
Write the annotation objects containing the URLs.
Definition TPDF.cxx:2931
void EnsureBufferSize(Int_t required_size)
Ensure that required space in the buffer is available.
Definition TPDF.cxx:1818
Double_t fA
"a" value of the Current Transformation Matrix (CTM)
Definition TPDF.h:61
void EndObject()
Close the current opened object.
Definition TPDF.cxx:1357
void PrintStr(const char *string="") override
Output the string str in the output buffer.
Definition TPDF.cxx:1831
Int_t fNbPage
Number of pages.
Definition TPDF.h:47
void SetFillPatterns(Int_t ipat, Int_t color)
Set the fill patterns (1 to 25) for fill areas.
Definition TPDF.cxx:1975
void WriteCM(Double_t a, Double_t b, Double_t c, Double_t d, Double_t e, Double_t f, Bool_t acc=kTRUE)
Write and Accumulate (if acc is true) the Current Transformation Matrix (CTM).
Definition TPDF.cxx:2900
void SetTextColor(Color_t cindex=1) override
Set color index for text.
Definition TPDF.cxx:2128
void DrawPolyLineNDC(Int_t n, TPoints *uv)
Draw a PolyLine in NDC space.
Definition TPDF.cxx:517
Float_t fXsize
Page size along X.
Definition TPDF.h:39
void CellArrayBegin(Int_t W, Int_t H, Double_t x1, Double_t x2, Double_t y1, Double_t y2) override
Begin the Cell Array painting.
Definition TPDF.cxx:138
void DrawHatch(Float_t dy, Float_t angle, Int_t n, Float_t *x, Float_t *y)
Draw Fill area with hatch styles.
Definition TPDF.cxx:439
void SetLineWidth(Width_t linewidth=1) override
Change the line width.
Definition TPDF.cxx:2107
Double_t VtoPDF(Double_t v)
Convert V from NDC coordinate to PDF.
Definition TPDF.cxx:2396
Bool_t fPageNotEmpty
True if the current page is not empty.
Definition TPDF.h:56
void NewObject(Int_t n)
Create a new object in the PDF file.
Definition TPDF.cxx:1421
void DrawPolyLine(Int_t n, TPoints *xy)
Draw a PolyLine.
Definition TPDF.cxx:463
void Text(Double_t x, Double_t y, const char *string) override
Draw text.
Definition TPDF.cxx:2140
void PatternEncode()
Patterns encoding.
Definition TPDF.cxx:2489
Double_t fF
"f" value of the Current Transformation Matrix (CTM)
Definition TPDF.h:66
void WriteCompressedBuffer()
Write the buffer in a compressed way.
Definition TPDF.cxx:2423
void TextNDC(Double_t u, Double_t v, const char *string)
Write a string of characters in NDC.
Definition TPDF.cxx:2367
static Int_t fgLineJoin
Appearance of joining lines.
Definition TPDF.h:68
void PrintFast(Int_t nch, const char *string="") override
Fast version of Print.
Definition TPDF.cxx:1849
2-D graphics point (world coordinates).
Definition TPoints.h:19
TVirtualPS(const TVirtualPS &)=delete
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
const Int_t n
Definition legend1.C:16
#define H(x, y, z)