Logo ROOT  
Reference Guide
TGObject.cxx
Go to the documentation of this file.
1// @(#)root/gui:$Id$
2// Author: Fons Rademakers 27/12/97
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
13 This source is based on Xclass95, a Win95-looking GUI toolkit.
14 Copyright (C) 1996, 1997 David Barth, Ricky Ralston, Hector Peraza.
15
16 Xclass95 is free software; you can redistribute it and/or
17 modify it under the terms of the GNU Library General Public
18 License as published by the Free Software Foundation; either
19 version 2 of the License, or (at your option) any later version.
20
21**************************************************************************/
22
23
24/** \class TGObject
25 \ingroup guiwidgets
26
27This class is the baseclass for all ROOT GUI widgets.
28The ROOT GUI components emulate the Win95 look and feel and the code
29is based on the XClass'95 code (see Copyleft in source).
30
31*/
32
33
34#include "TGObject.h"
35#include "TVirtualX.h"
36#include "TImage.h"
37#include "TROOT.h"
38
40
41////////////////////////////////////////////////////////////////////////////////
42/// TGObject destructor.
43
45{
46 // Required since we overload TObject::Hash.
48}
49
50////////////////////////////////////////////////////////////////////////////////
51/// Write this TGObject to a file using TImage, if filename's extension signals
52/// a valid TImage::EImageFileType, as defined by TImage::GetImageFileTypeFromFilename().
53/// Otherwise forward to TObject::SaveAs().
54
55void TGObject::SaveAs(const char* filename /*= ""*/, Option_t* option /*= ""*/) const
56{
58 if (type != TImage::kUnknown) {
60 gVirtualX->GetWindowAttributes(GetId(), wattr);
61 TImage* img = TImage::Create();
62 if (img) {
63 img->FromWindow(GetId(), 0, 0, wattr.fWidth, wattr.fHeight);
64 img->WriteImage(filename, type);
65 delete img;
66 }
67 return;
68 }
69
70 TObject::SaveAs(filename, option);
71}
72
73////////////////////////////////////////////////////////////////////////////////
74/// Equal comparison (TGObjects are equal if they have the same
75/// window identifier). If the TGObjects have not been created by
76/// the Window manager (e.g. a TGLVEntry), then fall back to the
77/// default TObject equal comparison
78
80{
81 if (auto gobj = dynamic_cast<const TGObject *>(obj)) {
82 if (fId == 0 && gobj->fId == 0)
83 return TObject::IsEqual(obj);
84 return fId == gobj->fId;
85 }
86 // TGObject != some-other-TObject:
87 return false;
88}
89
bool Bool_t
Definition: RtypesCore.h:63
const char Option_t
Definition: RtypesCore.h:66
#define ClassImp(name)
Definition: Rtypes.h:364
int type
Definition: TGX11.cxx:121
#define gVirtualX
Definition: TVirtualX.h:338
This class is the baseclass for all ROOT GUI widgets.
Definition: TGObject.h:22
Bool_t IsEqual(const TObject *obj) const
Equal comparison (TGObjects are equal if they have the same window identifier).
Definition: TGObject.cxx:79
Handle_t GetId() const
Definition: TGObject.h:37
Handle_t fId
X11/Win32 Window identifier.
Definition: TGObject.h:26
virtual ~TGObject()
TGObject destructor.
Definition: TGObject.cxx:44
virtual void SaveAs(const char *filename="", Option_t *option="") const
Write this TGObject to a file using TImage, if filename's extension signals a valid TImage::EImageFil...
Definition: TGObject.cxx:55
An abstract interface to image processing library.
Definition: TImage.h:29
EImageFileTypes
Definition: TImage.h:36
@ kUnknown
Definition: TImage.h:54
static TImage * Create()
Create an image.
Definition: TImage.cxx:35
virtual void FromWindow(Drawable_t, Int_t=0, Int_t=0, UInt_t=0, UInt_t=0)
Definition: TImage.h:244
virtual void WriteImage(const char *, EImageFileTypes=TImage::kUnknown)
Definition: TImage.h:115
static EImageFileTypes GetImageFileTypeFromFilename(const char *opt)
Return the image type for the extension specified in filename.
Definition: TImage.cxx:59
Mother of all ROOT objects.
Definition: TObject.h:37
virtual Bool_t IsEqual(const TObject *obj) const
Default equal comparison (objects are equal if they have the same address in memory).
Definition: TObject.cxx:485
virtual void SaveAs(const char *filename="", Option_t *option="") const
Save this object in the file specified by filename.
Definition: TObject.cxx:601
void CallRecursiveRemoveIfNeeded(TObject &obj)
call RecursiveRemove for obj if gROOT is valid and obj.TestBit(kMustCleanup) is true.
Definition: TROOT.h:393
Window attributes that can be inquired.
Definition: GuiTypes.h:114
Int_t fHeight
width and height of window
Definition: GuiTypes.h:116