13#include "TGLIncludes.h"
30 glNormal3d (0.0, 0.0, 1.0);
31 glVertex3dv(fBoundingBox[4].CArr());
32 glVertex3dv(fBoundingBox[7].CArr());
33 glVertex3dv(fBoundingBox[6].CArr());
34 glVertex3dv(fBoundingBox[5].CArr());
40 ~TGLClipPlaneLogical()
override {}
44 fBoundingBox.SetAligned(
TGLVertex3(-ext, -ext, 0),
57 glEnable(GL_NORMALIZE);
59 glDisable(GL_NORMALIZE);
64 ~TGLClipBoxLogical()
override {}
68 fBoundingBox.SetAligned(lowVertex, highVertex);
112 Warning(
"TGLClip::Setup",
"Called on base-class -- should be re-implemented in derived class.");
124 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
125 glDisable(GL_CULL_FACE);
126 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
130 glPolygonMode(GL_FRONT, GL_FILL);
131 glEnable(GL_CULL_FACE);
166 TGLPlane plane(0.0, -1.0, 0.0, 0.0);
184 TGLClipPlaneLogical* cpl = (TGLClipPlaneLogical*)
GetLogical();
185 cpl->Resize(extents);
213 TGLClipPlaneLogical* cpl = (TGLClipPlaneLogical*)
GetLogical();
214 cpl->Resize(extents);
222 Warning(
"TGLClipPlane::Setup",
"Normal with zero length passed.");
284 TGLClipBoxLogical* cbl = (TGLClipBoxLogical*)
GetLogical();
285 cbl->Resize(center - halfLengths, center + halfLengths);
304 TGLClipBoxLogical* cbl = (TGLClipBoxLogical*)
GetLogical();
305 cbl->Resize(min_point, max_point);
319 while (i != set.end()) {
340 fCurrentClip (nullptr),
490 data[0] = planes[0].A();
491 data[1] = planes[0].B();
492 data[2] = planes[0].C();
493 data[3] = planes[0].D();
511 Error(
"TGLClipSet::GetClipState",
"invalid clip type '%d'.",
type);
570 Error(
"TGLClipSet::GetClipType" ,
"Unknown clip type");
596 Error(
"TGLClipSet::SetClipType" ,
"Unknown clip type");
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
std::vector< TGLPlane > TGLPlaneSet_t
std::vector< TGLPlane >::iterator TGLPlaneSet_i
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Concrete class describing an orientated (free) or axis aligned box of 8 vertices.
TGLPlane GetNearPlane() const
Return the near-plane.
TGLVector3 Extents() const
TGLVertex3 Center() const
void PlaneSet(TGLPlaneSet_t &planeSet) const
Fill out supplied plane set vector with TGLPlane objects representing six faces of box.
Concrete clip box object.
~TGLClipBox() override
Destroy clip box object.
void Setup(const TGLBoundingBox &bbox) override
Setup the clip object for scene encompassed by bbox.
void PlaneSet(TGLPlaneSet_t &set) const override
Return set of 6 planes describing faces of the box but invert them so that they point inside of box.
TGLClipBox()
Fixed color of clip box.
static const float fgColor[4]
Concrete clip plane object.
static const float fgColor[4]
void Set(const TGLPlane &plane)
Update clip plane object to follow passed 'plane' equation.
void PlaneSet(TGLPlaneSet_t &set) const override
Return set of planes (actually a single one) describing this clip plane.
~TGLClipPlane() override
Destroy clip plane object.
void Setup(const TGLBoundingBox &bbox) override
Setup the clip object for scene encompassed by bbox.
TGLClipPlane()
Fixed color of clip plane.
A collection of concrete TGLClip objects to be selected from.
~TGLClipSet() override
Destructor.
void InvalidateClips()
Invalidate clip objects.
void GetClipState(TGLClip::EType type, Double_t data[6]) const
Get state of clip object 'type' into data vector:
void SetClipState(TGLClip::EType type, const Double_t data[6])
Set state of clip object 'type' into data vector:
void FillPlaneSet(TGLPlaneSet_t &set) const
Forward request to fill the plane-set to the current clip.
void SetupCurrentClip(const TGLBoundingBox &sceneBBox)
Setup current clipping object for given scene bounding box.
void SetClipType(TGLClip::EType type)
Set current clip active in viewer - 'type' is one of kClipNone kClipPlane or kClipBox.
Bool_t Handle(TGLRnrCtx &rnrCtx, TGLOvlSelectRecord &selRec, Event_t *event) override
Handle overlay event.
void MouseLeave() override
Mouse has left the element.
Bool_t MouseStillInside(TGLOvlSelectRecord &selRec) override
TGLClipPlane * fClipPlane
Bool_t MouseEnter(TGLOvlSelectRecord &selRec) override
Mouse has entered this element.
void SetupCurrentClipIfInvalid(const TGLBoundingBox &sceneBBox)
Setup current clipping object for given scene bounding box.
TGLClip::EType GetClipType() const
Get current type active in viewer - returns one of kClipNone kClipPlane or kClipBox.
void SetupClips(const TGLBoundingBox &sceneBBox)
Setup clipping objects for given scene bounding box.
void Render(TGLRnrCtx &rnrCtx) override
Render clip-shape and manipulator.
void InvalidateCurrentClip()
Invalidate current clip object.
Abstract clipping shape - derives from TGLPhysicalShape Adds clip mode (inside/outside) and pure virt...
~TGLClip() override
Destroy clip object.
virtual void Setup(const TGLBoundingBox &bbox)=0
TGLClip(const TGLLogicalShape &logical, const TGLMatrix &transform, const float color[4])
Construct a stand-alone physical clipping object.
virtual void PlaneSet(TGLPlaneSet_t &set) const =0
void Draw(TGLRnrCtx &rnrCtx) const override
Draw out clipping object with blending and back + front filling.
Abstract logical shape - a GL 'drawable' - base for all shapes - faceset sphere etc.
virtual void DirectDraw(TGLRnrCtx &rnrCtx) const =0
void UpdateBoundingBoxesOfPhysicals()
Update bounding-boxed of all dependent physicals.
void StrongRef(Bool_t strong) const
Combine all available manipulators in a collection.
void MouseLeave() override
Mouse has left the element.
Bool_t Handle(TGLRnrCtx &rnrCtx, TGLOvlSelectRecord &selRec, Event_t *event) override
Handle overlay event.
Bool_t MouseEnter(TGLOvlSelectRecord &selRec) override
Mouse has entered this element.
void Render(TGLRnrCtx &rnrCtx) override
Render the manipulator and bounding-box.
void SetPShape(TGLPhysicalShape *shape) override
Set phys-shape, override of virtual from TGLPShapeRef.
16 component (4x4) transform matrix - column MAJOR as per GL.
virtual Bool_t MouseStillInside(TGLOvlSelectRecord &selRec)
Selection record for overlay objects.
Concrete physical shape - a GL drawable.
void Scale(const TGLVector3 &scale)
void SetTransform(const TGLMatrix &transform)
const TGLBoundingBox & BoundingBox() const
void SetManip(EManip manip)
TGLVector3 GetScale() const
const TGLLogicalShape * GetLogical() const
virtual void Draw(TGLRnrCtx &rnrCtx) const
Draw physical shape, using LOD flags, potential from display list cache.
void Translate(const TGLVector3 &vect)
3D plane class - of format Ax + By + Cz + D = 0
void Negate()
Negate the plane.
TGLVertex3 NearestOn(const TGLVertex3 &point) const
Return nearest point on plane.
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
void SetShapeLOD(Short_t LOD)
Bool_t IsDrawPassFilled() const
Returns true if current render-pass uses filled polygon style.
void SetDrawPass(Short_t dpass)
3 component (x/y/z) vector class.
3 component (x/y/z) vertex class.
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)