ROOT logo
#ifndef GROUPOFGOBJECTS
#define GROUPOFGOBJECTS

#include "TNamed.h"
#include "TList.h"
#include "TPad.h"
#include "TCutG.h"
#include "HprElement.h"

//___________________________________________________________________

class GroupOfGObjects : public TCutG {
//friend class HTCanvas;
friend class GEdit;
protected:
   Double_t fXorigin;
   Double_t fYorigin;
   Double_t fXLowEdge;      // Bounding Box X Low Edge
   Double_t fYLowEdge;      // Bounding Box Y Low Edge
   Double_t fXUpEdge;       // Bounding Box X Upper Edge
   Double_t fYUpEdge;       // Bounding Box Y Upper Edge
   Bool_t   fIsVisible;
   Bool_t   fForceVerticalShiftOnly;
   Bool_t   fForceHorizontalShiftOnly;
   TList    fMembers;       // Members
   Double_t fAngle;
	Int_t    fAlign;
	Int_t    fMirror;
public:
   GroupOfGObjects(){};

   GroupOfGObjects(const char * name,
                   Double_t x, Double_t y,  TCutG* cut);
   virtual ~GroupOfGObjects();
   void    RecursiveRemove(TObject * obj);
   void    SetOrigin(Double_t x, Double_t y){fXorigin = x; fYorigin = y;}
   Double_t GetXorigin(){return fXorigin;}
   Double_t GetYorigin(){return fYorigin;}
   TList * GetMemberList() {return & fMembers;};
   void    SetEnclosingCut(TCutG *cut);
   void    AddMember(TObject * obj, Option_t *option);
   void    RemoveMember(TObject * obj) {fMembers.Remove(obj);};
   Bool_t  BindMember(TObject * obj);
   Bool_t  FreeMember(TObject * obj);
   Int_t   GetNMembers() {return fMembers.GetSize();};
   Int_t   AddMembersToList(TPad * pad, Double_t xoff = 0, Double_t yoff = 0,
                            Double_t scaleNDC = 1,Double_t scaleG = 1,
                            Double_t angle = 0, Int_t align = 11, Int_t mirror = 0, Int_t draw_cut=0, Int_t plane = -1);
   void Transform(Double_t x, Double_t y, Double_t xoff,Double_t yoff,
                    Double_t scale, Double_t* xt, Double_t* yt);
   void Print(Option_t *chopt="") const;                                                // *MENU*
   void ExecuteEvent(Int_t event, Int_t px, Int_t py);
   void Paint(Option_t* opt) {if (fIsVisible) TGraph::Paint(opt);};
   void SetVisible(Bool_t vis) {fIsVisible = vis;};          // *MENU*
   Bool_t GetVisible() {return fIsVisible;};
   void BindObjects() {BindReleaseObjects(kTRUE);};            // *MENU*
   void ReleaseObjects() {BindReleaseObjects(kFALSE);};        // *MENU*
   void DeleteObjects();                                       // *MENU*
   void ListObjects();                                         // *MENU*
   void ForceVerticalShiftOnly(Bool_t fs) {fForceVerticalShiftOnly = fs;};   // *MENU*
   void ForceHorizontalShiftOnly(Bool_t fs) {fForceHorizontalShiftOnly = fs;};   // *MENU*
   void ShiftObjects(Double_t xshift, Double_t yshift, Bool_t shiftcut = kTRUE);        // *MENU*
   void BindReleaseObjects(Bool_t bind) ;
   Bool_t SloppyInside(Double_t x, Double_t y);
   void SetPlane(Int_t plane);                    // *MENU*

ClassDef(GroupOfGObjects,2)
};
#endif
 GroupOfGObjects.h:1
 GroupOfGObjects.h:2
 GroupOfGObjects.h:3
 GroupOfGObjects.h:4
 GroupOfGObjects.h:5
 GroupOfGObjects.h:6
 GroupOfGObjects.h:7
 GroupOfGObjects.h:8
 GroupOfGObjects.h:9
 GroupOfGObjects.h:10
 GroupOfGObjects.h:11
 GroupOfGObjects.h:12
 GroupOfGObjects.h:13
 GroupOfGObjects.h:14
 GroupOfGObjects.h:15
 GroupOfGObjects.h:16
 GroupOfGObjects.h:17
 GroupOfGObjects.h:18
 GroupOfGObjects.h:19
 GroupOfGObjects.h:20
 GroupOfGObjects.h:21
 GroupOfGObjects.h:22
 GroupOfGObjects.h:23
 GroupOfGObjects.h:24
 GroupOfGObjects.h:25
 GroupOfGObjects.h:26
 GroupOfGObjects.h:27
 GroupOfGObjects.h:28
 GroupOfGObjects.h:29
 GroupOfGObjects.h:30
 GroupOfGObjects.h:31
 GroupOfGObjects.h:32
 GroupOfGObjects.h:33
 GroupOfGObjects.h:34
 GroupOfGObjects.h:35
 GroupOfGObjects.h:36
 GroupOfGObjects.h:37
 GroupOfGObjects.h:38
 GroupOfGObjects.h:39
 GroupOfGObjects.h:40
 GroupOfGObjects.h:41
 GroupOfGObjects.h:42
 GroupOfGObjects.h:43
 GroupOfGObjects.h:44
 GroupOfGObjects.h:45
 GroupOfGObjects.h:46
 GroupOfGObjects.h:47
 GroupOfGObjects.h:48
 GroupOfGObjects.h:49
 GroupOfGObjects.h:50
 GroupOfGObjects.h:51
 GroupOfGObjects.h:52
 GroupOfGObjects.h:53
 GroupOfGObjects.h:54
 GroupOfGObjects.h:55
 GroupOfGObjects.h:56
 GroupOfGObjects.h:57
 GroupOfGObjects.h:58
 GroupOfGObjects.h:59
 GroupOfGObjects.h:60
 GroupOfGObjects.h:61
 GroupOfGObjects.h:62
 GroupOfGObjects.h:63
 GroupOfGObjects.h:64
 GroupOfGObjects.h:65
 GroupOfGObjects.h:66
 GroupOfGObjects.h:67
 GroupOfGObjects.h:68
 GroupOfGObjects.h:69