12 #ifndef ROOT_TGImageMap
13 #define ROOT_TGImageMap
35 class TGRegion :
public TObject {
41 TGRegion CopyRegion()
const;
44 enum ERegionType { kRectangle, kEllipse };
47 TGRegion(Int_t x, Int_t y, UInt_t w, UInt_t h, ERegionType = kRectangle);
48 TGRegion(Int_t n, TPoint *points, Bool_t winding = kFALSE);
49 TGRegion(Int_t n, Int_t *x, Int_t *y, Bool_t winding = kFALSE);
50 TGRegion(
const TArrayS &x,
const TArrayS &y, Bool_t winding = kFALSE);
51 TGRegion(
const TGRegion ®);
54 Bool_t Contains(
const TPoint &p)
const;
55 Bool_t Contains(Int_t x, Int_t y)
const;
56 TGRegion Unite(
const TGRegion &r)
const;
57 TGRegion Intersect(
const TGRegion &r)
const;
58 TGRegion Subtract(
const TGRegion &r)
const;
59 TGRegion Eor(
const TGRegion &r)
const;
60 TGDimension GetDimension()
const;
61 TGPosition GetPosition()
const;
62 Bool_t IsNull()
const;
63 Bool_t IsEmpty()
const;
65 TGRegion operator|(
const TGRegion &r)
const {
return Unite(r); }
66 TGRegion operator+(
const TGRegion &r)
const {
return Unite(r); }
67 TGRegion operator&(
const TGRegion &r)
const {
return Intersect(r); }
68 TGRegion operator-(
const TGRegion &r)
const {
return Subtract(r); }
69 TGRegion operator^(
const TGRegion &r)
const {
return Eor(r); }
70 TGRegion& operator|=(
const TGRegion &r) {
return *
this = *
this | r; }
71 TGRegion& operator+=(
const TGRegion &r) {
return *
this = *
this + r; }
72 TGRegion& operator&=(
const TGRegion &r) {
return *
this = *
this & r; }
73 TGRegion& operator-=(
const TGRegion &r) {
return *
this = *
this - r; }
74 TGRegion& operator^=(
const TGRegion &r) {
return *
this = *
this ^ r; }
75 Bool_t operator==(
const TGRegion &r)
const;
76 Bool_t operator!=(
const TGRegion &r)
const {
return !(operator==(r)); }
77 TGRegion &operator=(
const TGRegion &r);
83 class TGRegionWithId :
public TGRegion {
87 TGRegionWithId& operator=(
const TGRegionWithId&);
96 TGRegionWithId(Int_t
id, Int_t x, Int_t y, UInt_t w, UInt_t h,
97 ERegionType = kRectangle);
98 TGRegionWithId(Int_t
id, Int_t n, TPoint *points, Bool_t winding = kFALSE);
99 TGRegionWithId(
const TGRegionWithId ®);
100 TGRegionWithId(
const TGRegion ®, Int_t
id);
101 virtual ~TGRegionWithId();
103 Int_t GetId()
const {
return fId; }
104 TGToolTip *GetToolTipText()
const {
return fTip; }
105 void SetToolTipText(
const char *text, Long_t delayms,
106 const TGFrame *frame);
107 TGPopupMenu *GetPopup()
const {
return fPopup; }
108 void SetPopup(TGPopupMenu *popup) { fPopup = popup; }
111 ClassDef(TGRegionWithId,0)
115 class TGImageMap :
public TGPictureButton {
119 TGImageMap(
const TGImageMap&);
120 TGImageMap& operator=(
const TGImageMap&);
123 enum ENavMode { kNavRegions, kNavGrid };
126 TList *fListOfRegions;
128 ECursor fCursorMouseOver;
129 ECursor fCursorMouseOut;
135 TGImageMap(
const TGWindow *p = 0,
const TGPicture *pic = 0);
136 TGImageMap(
const TGWindow *p,
const TString &pic);
137 virtual ~TGImageMap();
139 virtual Bool_t HandleButton(Event_t *event);
140 virtual Bool_t HandleDoubleClick(Event_t *event);
141 virtual Bool_t HandleMotion(Event_t *event);
143 ENavMode GetNavMode() {
return fNavMode; }
144 void AddRegion(
const TGRegion ®ion, Int_t
id);
145 TGPopupMenu *CreatePopup(Int_t
id);
146 TGPopupMenu *GetPopup(Int_t
id);
148 void SetToolTipText(
const char *text, Long_t delayms = 300);
149 void SetToolTipText(Int_t
id,
const char *text, Long_t delayms = 300);
150 void SetCursor(ECursor cursor = kHand) { fCursorMouseOver = cursor; }
151 void SetPicture(
const TGPicture * ) { }
153 virtual void RegionClicked(Int_t
id);
154 virtual void DoubleClicked(Int_t
id);
155 virtual void DoubleClicked();
156 virtual void OnMouseOver(Int_t
id);
157 virtual void OnMouseOut(Int_t
id);
159 ClassDef(TGImageMap,0)
162 R__EXTERN TGRegionWithId *gCurrentRegion;