128 if (ix1<0 || ix2 <0 || iy1 < 0 || iy2 <0)
return;
149 if ((fillis == 3) || (fillis == 2)) {
157 if ((fillsi > 0) && (fillsi < 26)) {
197 bordersize = bordersize < 1 ? 1 : bordersize;
209 Short_t pxl,pyl,pxt,pyt,px1,py1,px2,py2;
213 if (px1 < px2) {pxl = px1; pxt = px2;}
214 else {pxl = px2; pxt = px1;}
215 if (py1 > py2) {pyl = py1; pyt = py2;}
216 else {pyl = py2; pyt = py1;}
218 if (bordersize == 1) {
235 fImage->DrawBox(pxl, pyl, pxt, pyt,
241 frame[0].
fX = pxl; frame[0].
fY = pyl;
242 frame[1].
fX = pxl + bordersize; frame[1].
fY = pyl - bordersize;
243 frame[2].
fX = pxl + bordersize; frame[2].
fY = pyt + bordersize;
244 frame[3].
fX = pxt - bordersize; frame[3].
fY = pyt + bordersize;
245 frame[4].
fX = pxt; frame[4].
fY = pyt;
246 frame[5].
fX = pxl; frame[5].
fY = pyt;
248 if (
mode == -1) col = lo;
253 frame[0].
fX = pxl; frame[0].
fY = pyl;
254 frame[1].
fX = pxl + bordersize; frame[1].
fY = pyl - bordersize;
255 frame[2].
fX = pxt - bordersize; frame[2].
fY = frame[1].
fY;
256 frame[3].
fX = frame[2].
fX; frame[3].
fY = pyt + bordersize;
257 frame[4].
fX = pxt; frame[4].
fY = pyt;
258 frame[5].
fX = pxt; frame[5].
fY = pyl;
286 Int_t markerSize = 0;
287 std::vector<TPoint> markerShape;
291 for (
Int_t i = 0; i <
n; i++) {
294 for (
auto &pnt : markerShape) {
312 fImage->DrawPolyLine(markerShape.size(), markerShape.data(), colHex.
Data(), markerLineWidth);
320 for (std::size_t s = 0; s < markerShape.size(); s += 2)
321 fImage->DrawLine(markerShape[s].fX, markerShape[s].fY, markerShape[s + 1].fX, markerShape[s + 1].fY, colHex.
Data(), markerLineWidth);
325 for (std::size_t t = 0; t < markerShape.size(); t += 3)
329 for (
auto &pnt : markerShape) {
341 DrawPolyMarkerShape<Float_t>(
n, xw, yw);
349 DrawPolyMarkerShape<Double_t>(
n, xw, yw);
372 std::vector<char> dashList;
392 std::unique_ptr<TObjArray> tokens(st.
Tokenize(
" "));
395 for (
int j = 0; j < tokens->GetEntries(); j++) {
397 sscanf(tokens->At(j)->GetName(),
"%d", &it);
398 dashList.emplace_back((
char)(it/4));
422 fImage->DrawDashLine(px1, py1, px2, py2, dashList.size(), dashList.data(),
429 if (!
line && ((fais == 3) || (fais == 2)) && (fasi > 100))
432 std::vector<TPoint>
pt(
n+1);
434 for (
UInt_t i = 0; i <
n; i++) {
441 const char *stipple = (fais == 3) && (fasi > 0) && (fasi < 26) ? (
const char*)
gStipples[fasi] :
nullptr;
481 const char* pDash,
const char* col,
UInt_t thick)
486 for (
Int_t i = 1; i < nn; i++) {
490 fImage->DrawDashLine(x0, y0,
x,
y, nDash, pDash, col, thick);
509 w =
w *
gPad->GetAbsWNDC();
510 h =
h *
gPad->GetAbsHNDC();
512 fImage->DrawRectangle(0, 0,
w,
h,
"#ffffffff");
633 fImage->Merge(img,
"alphablend",
x,
y);
const unsigned char gStipples[26][32]
float Float_t
Float 4 bytes (float)
short Short_t
Signed Short integer 2 bytes (short)
const char Option_t
Option string (const char)
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 x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint xy
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 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 type
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.
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual Color_t GetMarkerColor() const
Return the marker color.
EMarkerShape GetMarkerShape(Int_t &sz, std::vector< TPoint > &points, Float_t scale=1., UInt_t flags=0) const
Return marker shape.
static Width_t GetMarkerLineWidth(Style_t style)
Internal helper function that returns the line width of the given marker style (0 = filled marker)
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
Color_t fTextColor
Text color.
Float_t fTextAngle
Text angle.
virtual void SetTextAngle(Float_t tangle=0)
Set the text angle.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
Font_t fTextFont
Text font.
virtual void SetTextSize(Float_t tsize=1)
Set the text size.
Short_t fTextAlign
Text alignment.
Float_t fTextSize
Text size.
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",...
const char * AsHexString() const
Return color as hexadecimal string.
void NewPage() override
new page
void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2) override
Draw a Box.
void CellArrayEnd() override
Cell array end.
std::vector< UInt_t > fCellArrayColors
void DrawDashPolyLine(Int_t npoints, TPoint *pt, UInt_t nDash, const char *pDash, const char *col, UInt_t thick)
draw dashed polyline
TImageDump()
Default constructor.
Int_t YtoPixel(Double_t y)
y to pixel
void CellArrayFill(Int_t r, Int_t g, Int_t b) override
Cell array fill.
~TImageDump() override
destructor
void DrawPolyMarker(Int_t n, Float_t *x, Float_t *y) override
draw polymarker
void Open(const char *filename, Int_t type=-111) override
Open a image file.
void DrawPolyMarkerShape(Int_t n, T *x, T *y)
draw polymarker
void Close(Option_t *opt="") override
Close a image file.
void DrawPS(Int_t n, Float_t *xw, Float_t *yw) override
not used
void Text(Double_t x, Double_t y, const char *string) override
Draw text.
void SetColor(Float_t r, Float_t g, Float_t b) override
Set color with its R G B components.
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.
Int_t fType
PostScript workstation type.
Int_t XtoPixel(Double_t x)
x to pixel
void DrawImage(TImage *img, Int_t x, Int_t y, Int_t flags=0) override
Draw image.
Int_t fY0
offset of selected pad to canvas
void TextUrl(Double_t x, Double_t y, const char *string, const char *url) override
Draw text with URL.
void CellArrayBegin(Int_t W, Int_t H, Double_t x1, Double_t x2, Double_t y1, Double_t y2) override
cell array begin
An abstract interface to image processing library.
virtual void DrawFillArea(UInt_t, TPoint *, const char *="#000000", const char *=nullptr, UInt_t=16, UInt_t=16)
virtual void DrawCellArray(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, UInt_t *)
static TImage * Create()
Create an image.
virtual void WriteImage(const char *, EImageFileTypes=TImage::kUnknown)
virtual void FillPolygon(UInt_t, TPoint *, const char *="#000000", const char *=nullptr, UInt_t=16, UInt_t=16)
virtual Bool_t IsValid() const
virtual void DrawCircle(Int_t, Int_t, Int_t, const char *="#000000", Int_t=1)
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
const char * Data() const
TObjArray * Tokenize(const TString &delim) const
This function is used to isolate sequential tokens in a TString.
Float_t GetImageScaling() const
const char * GetLineStyleString(Int_t i=1) const
Return line style string (used by PostScript).
Base class for several text objects.
TVirtualPS is an abstract interface to Postscript, PDF, SVG.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.