13#pragma optimize("",off)
111 Warning(
"Open",
"SVG file already open");
125 ww *=
gPad->GetWNDC();
188 Error(
"On",
"no SVG file open");
271 PrintFast(21,
"\" fill=\"none\" stroke=");
293 for (
Int_t i = 1; i <
n; i++) {
324 if(!idx || (ix*idx > 0)) {
337 if(!
idy || (iy*
idy > 0)) {
415 Warning(
"DrawPolyLine",
"not implemented");
430 Warning(
"DrawPolyLineNDC",
"not implemented");
444 else if (ms >= 6 && ms <= 8)
446 else if (ms >= 9 && ms <= 19)
470 if ((ms > 19 && ms < 24) || ms == 29 || ms == 33 || ms == 34 ||
471 ms == 39 || ms == 41 || ms == 43 || ms == 45 ||
472 ms == 47 || ms == 48 || ms == 49) {
485 for (
Int_t i = 0; i <
n; i++) {
501 }
else if (ms == 2) {
522 }
else if (ms == 5) {
543 }
else if (ms == 3 || ms == 31) {
584 }
else if (ms == 24 || ms == 20) {
594 }
else if (ms == 25 || ms == 21) {
605 }
else if (ms == 26 || ms == 22) {
612 }
else if (ms == 23 || ms == 32) {
619 }
else if (ms == 27 || ms == 33) {
627 }
else if (ms == 28 || ms == 34) {
642 }
else if (ms == 29 || ms == 30) {
655 }
else if (ms == 35) {
666 }
else if (ms == 36) {
677 }
else if (ms == 37 || ms == 39) {
690 }
else if (ms == 38) {
708 }
else if (ms == 40 || ms == 41) {
724 }
else if (ms == 42 || ms == 43) {
736 }
else if (ms == 44) {
750 }
else if (ms == 45) {
766 }
else if (ms == 46 || ms == 47) {
782 }
else if (ms == 48) {
802 }
else if (ms == 49) {
860 PrintFast(21,
"\" fill=\"none\" stroke=");
923 Error(
"DrawPS",
"Two points are needed");
955 Error(
"DrawSegments",
"At least one segment has to be provided");
962 for(
Int_t i = 0; i < 2*
n; i += 2) {
1001 PrintStr(
"@<g transform=\"translate(");
1016 Warning(
"CellArrayFill",
"not implemented");
1084 auto a = std::abs(
r);
1091 snprintf(str, 15, (
a > 1) ?
"%3.1f" :
"%5.3f",
r);
1108 if (ix != 0 && iy != 0) {
1113 }
else if (ix != 0) {
1116 }
else if (iy != 0) {
1140 PrintStr(
"@<?xml version=\"1.0\" standalone=\"no\"?>");
1149 PrintStr(
"\" xmlns=\"http://www.w3.org/2000/svg\" shape-rendering=\"crispEdges\">");
1270 if ((
a < 1.) && fill)
1284 if (color < 0) color = 0;
1302 if (
r <= 0. &&
g <= 0. &&
b <= 0. ) {
1304 }
else if (
r >= 1. &&
g >= 1. &&
b >= 1. ) {
1333 "Times" ,
"Times" ,
"Times",
1334 "Helvetica",
"Helvetica",
"Helvetica" ,
"Helvetica",
1335 "Courier" ,
"Courier" ,
"Courier" ,
"Courier",
1336 "Times" ,
"Times" ,
"ZapfDingbats",
"Times"};
1339 "normal",
"bold",
"bold",
1340 "normal",
"normal",
"bold" ,
"bold",
1341 "normal",
"normal",
"bold" ,
"bold",
1342 "normal",
"normal",
"normal",
"normal"};
1345 "italic",
"normal" ,
"italic",
1346 "normal",
"oblique",
"normal",
"oblique",
1347 "normal",
"oblique",
"normal",
"oblique",
1348 "normal",
"normal" ,
"normal",
"italic"};
1363 if (font > 15 || font < 1)
1390 PrintFast(30,
"<text xml:space=\"preserve\" x=\"");
1396 PrintFast(21,
" text-anchor=\"middle\"");
1397 }
else if (
txalh == 3) {
1416 if (font == 12 || font == 15) {
1531 if (
chars[i]!=
'\n') {
1532 if (
chars[i]==
'<') {
1534 }
else if (
chars[i]==
'>') {
1536 }
else if (
chars[i]==
'\305') {
1538 }
else if (
chars[i]==
'\345') {
1540 }
else if (
chars[i]==
'&') {
1591 return 0.5 + 72*cm/2.54;
1600 return 0.5 + 72*cm/2.54;
1626 Warning(
"TSVG::DrawPS",
"not yet implemented");
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
short Style_t
Style number (short)
int Int_t
Signed integer 4 bytes (int)
short Color_t
Color number (short)
short Width_t
Line width (short)
float Float_t
Float 4 bytes (float)
double Double_t
Double 8 bytes.
const char Option_t
Option string (const char)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
Option_t Option_t TPoint TPoint const char y1
R__EXTERN TStyle * gStyle
R__EXTERN TVirtualPS * gVirtualPS
Style_t fFillStyle
Fill area style.
Color_t fFillColor
Fill area color.
Width_t fLineWidth
Line width.
Style_t fLineStyle
Line style.
Color_t fLineColor
Line color.
Color_t fMarkerColor
Marker color.
static Width_t GetMarkerLineWidth(Style_t style)
Internal helper function that returns the line width of the given marker style (0 = filled marker)
Size_t fMarkerSize
Marker size.
Style_t fMarkerStyle
Marker style.
static Style_t GetMarkerStyleBase(Style_t style)
Internal helper function that returns the corresponding marker style with line width 1 for the given ...
Color_t fTextColor
Text color.
Float_t fTextAngle
Text angle.
Font_t fTextFont
Text font.
Short_t fTextAlign
Text alignment.
Float_t fTextSize
Text size.
static TString Encode(const char *data)
Transform data into a null terminated base64 string.
The color creation and management class.
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
const char * AsString() const
Return the date & time as a string (ctime() format).
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
Collectable string class.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
2-D graphics point (world coordinates).
static Int_t fgLineJoin
Appearance of joining lines.
void PrintPolyMarker(Int_t n, T *x, T *y)
Implementation of polymarker printing.
Double_t UtoSVG(Double_t u)
Convert U from NDC coordinate to SVG.
void MovePS(Double_t x, Double_t y)
Move to a new position (ix, iy).
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.
void DrawPolyLineNDC(Int_t, TPoints *)
Draw a PolyLine in NDC space.
Double_t fYsizeSVG
Page's Y size in SVG units.
void CellArrayPng(char *buffer, int size) override
Paint the Cell Array as png image Disabled in compact mode to avoid creation of large SVG files.
void DrawPolyMarker(Int_t n, Float_t *x, Float_t *y) override
Paint PolyMarker.
void TextUrl(Double_t x, Double_t y, const char *string, const char *url) override
Draw text with URL.
void Close(Option_t *opt="") override
Close a SVG file.
void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2) override
Draw a Box.
Bool_t fRange
True when a range has been defined.
void Text(Double_t x, Double_t y, const char *string) override
Draw text.
Double_t YtoSVG(Double_t y)
Convert Y from world coordinate to SVG.
void PrintLineJointAttributes()
Print line join attributes - if present.
void SetFillColor(Color_t cindex=1) override
Set color index for fill areas.
void SetLineWidth(Width_t linewidth=1) override
Set the lines width.
void Initialize()
Initialize the SVG file.
void DrawPS(Int_t n, Float_t *xw, Float_t *yw) override
Not needed in SVG case.
void CellArrayEnd() override
End the Cell Array painting.
void CellArrayFill(Int_t r, Int_t g, Int_t b) override
Paint the Cell Array as single pixel.
void NewPage() override
Start the SVG page.
void PrintLineStyleOnEndOfPath()
Print line style attributes on the end of "path" string.
void SetColor(Int_t color=1)
Set RGB (without alpha channel) color with its color index.
Int_t fType
Workstation type used to know if the SVG is open.
void SetLineCap(Int_t linecap=0)
Set the value of the global parameter TSVG::fgLineCap.
void DrawPolyLine(Int_t, TPoints *)
Draw a PolyLine.
void Off()
Deactivate an already open SVG file.
void Range(Float_t xrange, Float_t yrange)
Set the range for the paper in centimetres.
void SetLineScale(Float_t=3)
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.
void SetLineStyle(Style_t linestyle=1) override
Change the line style.
void On()
Activate an already open SVG file.
TSVG()
Default SVG constructor.
void SetTextColor(Color_t cindex=1) override
Set color index for text.
Double_t CMtoSVG(Double_t u)
Double_t XtoSVG(Double_t x)
Convert X from world coordinate to SVG.
Bool_t fCompact
True when the SVG header is printed.
Bool_t fBoundingBox
True when the SVG header is printed.
Float_t fXsize
Page size along X.
void SetMarkerColor(Color_t cindex=1) override
Set color index for markers.
Float_t fYsize
Page size along Y.
void DrawSegments(Int_t n, Double_t *xw, Double_t *yw) override
This method draw N segments.
void TextNDC(Double_t u, Double_t v, const char *string)
Write a string of characters in NDC.
~TSVG() override
Default SVG destructor.
void SetLineColor(Color_t cindex=1) override
Set color index for lines.
void SetColorAlpha(Int_t color=1, Bool_t fill=kTRUE, Bool_t stroke=kTRUE)
Set RGBa color with its color index.
void SetLineJoin(Int_t linejoin=0)
Set the value of the global parameter TSVG::fgLineJoin.
void PrintPath(Bool_t convert, Int_t n, Double_t *xs, Double_t *ys, Bool_t close_path=kTRUE)
Print a svg path statement for specified points.
void Open(const char *filename, Int_t type=-111) override
Open a SVG file.
void WriteReal(Float_t r, Bool_t space=kTRUE) override
Write float value into output stream In compact form try to store only first 2-3 significant digits.
static Int_t fgLineCap
Appearance of line caps.
Double_t VtoSVG(Double_t v)
Convert V from NDC coordinate to SVG.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Int_t GetJoinLinePS() const
Returns the line join method used for PostScript, PDF and SVG output. See TPostScript::SetLineJoin fo...
const char * GetLineStyleString(Int_t i=1) const
Return line style string (used by PostScript).
Int_t GetCapLinePS() const
Returns the line cap method used for PostScript, PDF and SVG output. See TPostScript::SetLineCap for ...
void GetPaperSize(Float_t &xsize, Float_t &ysize) const
Set paper size for PostScript output.
const char * GetHeaderPS() const
Float_t GetLineScalePS() const
TVirtualPS is an abstract interface to Postscript, PDF, SVG.
virtual void WriteInteger(Int_t i, Bool_t space=kTRUE)
Write one Integer to the file.
void CloseStream()
Close existing stream.
virtual void PrintStr(const char *string="")
Output the string str in the output buffer.
virtual void PrintFast(Int_t nch, const char *string="")
Fast version of Print.
Bool_t OpenStream(const char *fname, Bool_t binary=kFALSE)
Open output stream.
void ClearBuffer()
Clear content of internal buffer.
virtual void WriteReal(Float_t r, Bool_t space=kTRUE)
Write a Real number to the file.
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t Floor(Double_t x)
Rounds x downward, returning the largest integral value that is not greater than x.
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.