Logo ROOT   6.08/07
Reference Guide
TGShapedFrame.cxx
Go to the documentation of this file.
1 // @(#)root/gui:$Id$
2 // Author: Bertrand Bellenot 23/01/2008
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2008, 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 #include "TGFrame.h"
13 #include "TGLayout.h"
14 #include "TString.h"
15 #include "TGPicture.h"
16 #include "TImage.h"
17 #include "TGShapedFrame.h"
18 #include "Riostream.h"
19 
21 
22 ////////////////////////////////////////////////////////////////////////////////
23 /// Shaped window default constructor
24 
25 TGShapedFrame::TGShapedFrame(const char *pname, const TGWindow *p, UInt_t w,
26  UInt_t h, UInt_t options) :
27  TGCompositeFrame(p, w, h, options), fBgnd(0), fImage(0)
28 {
29  TString picName;
30  // set a few attributes
31  if (options & kTempFrame) {
34  attr.fOverrideRedirect = kTRUE;
35  attr.fSaveUnder = kTRUE;
36  gVirtualX->ChangeWindowAttributes(fId, &attr);
37  }
38  // open the image file used as shape & background
39  if (pname)
40  picName = pname;
41  else
42  picName = "Default.png";
43  fImage = TImage::Open(picName.Data());
44  if (!fImage || !fImage->IsValid())
45  Error("TGShapedFrame", "%s not found", picName.Data());
46  fBgnd = fClient->GetPicturePool()->GetPicture(picName.Data(),
47  fImage->GetPixmap(), fImage->GetMask());
48  // shape the window with the picture mask
49  gVirtualX->ShapeCombineMask(fId, 0, 0, fBgnd->GetMask());
50  // and finally set the background picture
51  SetBackgroundPixmap(fBgnd->GetPicture());
52 
53  MapSubwindows();
54  Resize();
55  Resize(fBgnd->GetWidth(), fBgnd->GetHeight());
56 }
57 
58 ////////////////////////////////////////////////////////////////////////////////
59 /// Destructor.
60 
62 {
63  delete fImage;
65 }
66 
67 ////////////////////////////////////////////////////////////////////////////////
68 /// Save a shaped frame as a C++ statement(s) on output stream out.
69 
70 void TGShapedFrame::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
71 {
73 
74  out << std::endl << " // shaped frame" << std::endl;
75  out << " TGShapedFrame *";
76  out << GetName() << " = new TGShapedFrame(" << fImage->GetName()
77  << "," << fParent->GetName() << "," << GetWidth() << ","
78  << GetHeight();
79 
81  if (!GetOptions()) {
82  out << ");" << std::endl;
83  } else {
84  out << "," << GetOptionString() <<");" << std::endl;
85  }
86  } else {
87  out << "," << GetOptionString() << ",ucolor);" << std::endl;
88  }
89  if (option && strstr(option, "keep_names"))
90  out << " " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;
91 
92  // setting layout manager if it differs from the main frame type
93  // coverity[returned_null]
94  // coverity[dereference]
96  if ((GetOptions() & kHorizontalFrame) &&
98  ;
99  } else if ((GetOptions() & kVerticalFrame) &&
101  ;
102  } else {
103  out << " " << GetName() <<"->SetLayoutManager(";
104  lm->SavePrimitive(out, option);
105  out << ");"<< std::endl;
106  }
107 
108  SavePrimitiveSubframes(out, option);
109 }
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:51
const TGWindow * fParent
Definition: TGWindow.h:43
virtual UInt_t GetOptions() const
Definition: TGFrame.h:260
const TGPicture * fBgnd
Definition: TGShapedFrame.h:38
const char Option_t
Definition: RtypesCore.h:62
UInt_t GetHeight() const
Definition: TGFrame.h:288
TH1 * h
Definition: legend2.C:5
Basic string class.
Definition: TString.h:137
Pixel_t fBackground
Definition: TGFrame.h:158
UInt_t GetWidth() const
Definition: TGFrame.h:287
const char * Class
Definition: TXMLSetup.cxx:64
static Pixel_t GetDefaultFrameBackground()
Get default frame background.
Definition: TGFrame.cxx:665
void FreePicture(const TGPicture *pic)
Free picture resource.
Definition: TGClient.cxx:306
void Error(const char *location, const char *msgfmt,...)
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a shaped frame as a C++ statement(s) on output stream out.
Bool_t fOverrideRedirect
Definition: GuiTypes.h:108
TImage * fImage
Definition: TGShapedFrame.h:39
virtual void SavePrimitiveSubframes(std::ostream &out, Option_t *option="")
Auxilary protected method used to save subframes.
Definition: TGFrame.cxx:2621
const Mask_t kWASaveUnder
Definition: GuiTypes.h:151
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition: TObject.cxx:488
virtual const char * GetName() const
Return unique name, used in SavePrimitive methods.
Definition: TGWindow.cxx:221
unsigned int UInt_t
Definition: RtypesCore.h:42
virtual ~TGShapedFrame()
Destructor.
#define gVirtualX
Definition: TVirtualX.h:362
#define ClassImp(name)
Definition: Rtypes.h:279
const Mask_t kWAOverrideRedirect
Definition: GuiTypes.h:150
virtual TGLayoutManager * GetLayoutManager() const
Definition: TGFrame.h:413
TGClient * fClient
Definition: TGObject.h:41
void SaveUserColor(std::ostream &out, Option_t *)
Save a user color in a C++ macro file - used in SavePrimitive().
Definition: TGFrame.cxx:2433
TString GetOptionString() const
Returns a frame option string - used in SavePrimitive().
Definition: TGFrame.cxx:2460
static TImage * Open(const char *file, EImageFileTypes type=kUnknown)
Open a specified image file.
Definition: TImage.cxx:110
const Bool_t kTRUE
Definition: Rtypes.h:91
const char * Data() const
Definition: TString.h:349
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
Definition: TObject.cxx:709