31 class TGLClip :
public TGLPhysicalShape
52 TGLClip(
const TGLLogicalShape & logical,
const TGLMatrix & transform,
const float color[4]);
55 virtual void Modified() { TGLPhysicalShape::Modified(); IncTimeStamp(); }
57 virtual void Setup(
const TGLBoundingBox & bbox) = 0;
58 virtual void Setup(
const TGLVector3&,
const TGLVector3&);
60 EMode GetMode()
const {
return fMode; }
61 void SetMode(EMode mode) {
if (mode != fMode) { fMode = mode; ++fTimeStamp; } }
63 UInt_t TimeStamp()
const {
return fTimeStamp; }
64 void IncTimeStamp() { ++fTimeStamp; }
66 Bool_t IsValid()
const {
return fValid; }
67 void Invalidate() { fValid = kFALSE; }
69 virtual void Draw(TGLRnrCtx & rnrCtx)
const;
70 virtual void PlaneSet(TGLPlaneSet_t & set)
const = 0;
85 class TGLClipPlane :
public TGLClip
88 static const float fgColor[4];
92 virtual ~TGLClipPlane();
94 virtual void Setup(
const TGLBoundingBox & bbox);
95 virtual void Setup(
const TGLVector3& point,
const TGLVector3& normal);
97 void Set(
const TGLPlane & plane);
99 virtual void PlaneSet(TGLPlaneSet_t & set)
const;
101 ClassDef(TGLClipPlane, 0);
113 class TGLClipBox :
public TGLClip
116 static const float fgColor[4];
120 virtual ~TGLClipBox();
122 virtual void Setup(
const TGLBoundingBox & bbox);
123 virtual void Setup(
const TGLVector3& min_point,
const TGLVector3& max_point);
125 virtual void PlaneSet(TGLPlaneSet_t & set)
const;
127 ClassDef(TGLClipBox, 0);
139 class TGLClipSet :
public TGLOverlayElement
142 TGLClipSet(
const TGLClipSet&);
143 TGLClipSet& operator=(
const TGLClipSet&);
146 TGLClipPlane *fClipPlane;
147 TGLClipBox *fClipBox;
148 TGLClip *fCurrentClip;
155 TGLBoundingBox fLastBBox;
159 virtual ~TGLClipSet();
161 virtual Bool_t MouseEnter(TGLOvlSelectRecord& selRec);
162 virtual Bool_t MouseStillInside(TGLOvlSelectRecord& selRec);
163 virtual Bool_t Handle(TGLRnrCtx& rnrCtx, TGLOvlSelectRecord& selRec,
165 virtual void MouseLeave();
167 virtual void Render(TGLRnrCtx& rnrCtx);
169 Bool_t IsClipping()
const {
return fCurrentClip != 0; }
170 TGLClip* GetCurrentClip()
const {
return fCurrentClip; }
171 void FillPlaneSet(TGLPlaneSet_t& set)
const;
174 void SetupClips(
const TGLBoundingBox& sceneBBox);
175 void SetupCurrentClip(
const TGLBoundingBox& sceneBBox);
176 void SetupCurrentClipIfInvalid(
const TGLBoundingBox& sceneBBox);
178 void InvalidateClips();
179 void InvalidateCurrentClip();
181 void GetClipState(TGLClip::EType type, Double_t data[6])
const;
182 void SetClipState(TGLClip::EType type,
const Double_t data[6]);
184 TGLClip::EType GetClipType()
const;
185 void SetClipType(TGLClip::EType type);
188 Bool_t GetAutoUpdate()
const {
return fAutoUpdate; }
189 void SetAutoUpdate(Bool_t aup) { fAutoUpdate = aup; }
190 Bool_t GetShowManip()
const {
return fShowManip; }
191 void SetShowManip(Bool_t show) { fShowManip = show; }
192 Bool_t GetShowClip()
const {
return fShowClip; }
193 void SetShowClip(Bool_t show) { fShowClip = show; }
195 ClassDef(TGLClipSet, 0);