64 #define GL_BGRA GL_BGRA_EXT 115 fCurrentCamera(&fPerspectiveCameraXOZ),
120 fStereoZeroParallax (0.03
f),
121 fStereoEyeOffsetFac (1.0
f),
122 fStereoFrustumAsymFac (1.0
f),
126 fSelectedPShapeRef (0),
132 fPushAction(kPushStd), fDragAction(
kDragNone),
134 fMaxSceneDrawTimeHQ(5000),
135 fMaxSceneDrawTimeLQ(100),
136 fPointScale (1), fLineScale(1), fSmoothPoints(
kFALSE), fSmoothLines(
kFALSE),
138 fAxesDepthTest(
kTRUE),
140 fReferencePos(0.0, 0.0, 0.0),
141 fDrawCameraCenter(
kFALSE),
146 fPictureFileName(
"viewer.jpg"),
151 fIgnoreSizesOnUpdate(
kFALSE),
152 fResetCamerasOnUpdate(
kTRUE),
153 fResetCamerasOnNextUpdate(
kFALSE)
233 Int_t viewport[4] = {0};
235 SetViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
311 scenepad =
dynamic_cast<TGLScenePad*
>((*si)->GetScene());
312 if (scenepad && scenepad->
GetPad() == pad)
413 glEnable(GL_LIGHTING);
414 glEnable(GL_DEPTH_TEST);
415 glEnable(GL_CULL_FACE);
417 glClearColor(0.
f, 0.
f, 0.
f, 0.
f);
419 glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
420 glEnable(GL_COLOR_MATERIAL);
421 glMaterialf(GL_BACK, GL_SHININESS, 0.0);
422 glPolygonMode(GL_FRONT, GL_FILL);
425 glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
426 Float_t lmodelAmb[] = {0.5f, 0.5f, 1.f, 1.f};
427 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodelAmb);
428 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);
430 glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
431 glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
454 Info(
"TGLViewer::RequestDraw",
"viewer locked - requesting another draw.");
462 gROOT->ProcessLineFast(
Form(
"((TGLViewer *)0x%lx)->DoDraw()", (
ULong_t)
this));
498 if (
fSmoothPoints) glEnable(GL_POINT_SMOOTH);
else glDisable(GL_POINT_SMOOTH);
499 if (
fSmoothLines) glEnable(GL_LINE_SMOOTH);
else glDisable(GL_LINE_SMOOTH);
502 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
531 glClear(GL_DEPTH_BUFFER_BIT);
572 Info(
"TGLViewer::DoDraw()",
"zero surface area, draw skipped.");
578 Int_t viewport[4] = {};
580 SetViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
606 Info(
"TGLViewer::DoDraw()",
"Took %f msec", timer.
End());
664 Float_t gl_near, gl_far, zero_p_dist;
666 Float_t x_len_at_zero_parallax;
675 glDrawBuffer(GL_BACK_LEFT);
680 glEnable(GL_SCISSOR_TEST);
692 x_len_at_zero_parallax = 2.0f * w_half * zero_p_dist / gl_near;
699 TGLVector3 left_vec = abs_trans.GetBaseVec(2);
701 glTranslatef(stereo_offset*left_vec[0], stereo_offset*left_vec[1], stereo_offset*left_vec[2]);
703 glMatrixMode(GL_PROJECTION);
705 glFrustum(-w_half + frustum_asym, w_half + frustum_asym,
706 -h_half, h_half, gl_near, gl_far);
707 glMatrixMode(GL_MODELVIEW);
727 glDrawBuffer(GL_BACK_RIGHT);
740 glTranslatef(-stereo_offset*left_vec[0], -stereo_offset*left_vec[1], -stereo_offset*left_vec[2]);
742 glMatrixMode(GL_PROJECTION);
744 glFrustum(-w_half - frustum_asym, w_half - frustum_asym,
745 -h_half, h_half, gl_near, gl_far);
746 glMatrixMode(GL_MODELVIEW);
771 glDrawBuffer(GL_BACK);
775 glDisable(GL_SCISSOR_TEST);
817 if (GLEW_EXT_framebuffer_object &&
gEnv->
GetValue(
"OpenGL.SavePicturesViaFBO", 1))
838 static const TString eh(
"TGLViewer::SavePictureUsingBB");
843 Warning(eh,
"file %s cannot be saved with this extension.", fileName.
Data());
848 Error(eh,
"viewer locked - try later.");
858 gROOT->ProcessLineFast(
Form(
"((TGLViewer *)0x%lx)->DoDraw(kFALSE)", (
ULong_t)
this));
864 glReadBuffer(GL_BACK);
867 glPixelStorei(GL_PACK_ALIGNMENT, 1);
869 GL_BGRA, GL_UNSIGNED_BYTE, xx);
873 image->WriteImage(fileName);
896 static const TString eh(
"TGLViewer::SavePictureUsingFBO");
901 Warning(eh,
"file %s cannot be saved with this extension.", fileName.
Data());
906 Error(eh,
"viewer locked - try later.");
919 catch (std::runtime_error& exc)
921 Error(eh,
"%s",exc.what());
922 if (
gEnv->
GetValue(
"OpenGL.SavePictureFallbackToBB", 1)) {
923 Info(eh,
"Falling back to saving image via back-buffer. Window must be fully visible.");
925 Warning(eh,
"Back-buffer does not support image scaling, window size will be used.");
936 if (pixel_object_scale != 0)
948 gROOT->ProcessLineFast(
Form(
"((TGLViewer *)0x%lx)->DoDraw(kFALSE)", (
ULong_t)
this));
959 glPixelStorei(GL_PACK_ALIGNMENT, 1);
961 GL_BGRA, GL_UNSIGNED_BYTE, xx);
965 image->WriteImage(fileName);
971 if (pixel_object_scale != 0)
989 static const TString eh(
"TGLViewer::GetPictureUsingBB");
992 Error(eh,
"viewer locked - try later.");
1002 gROOT->ProcessLineFast(
Form(
"((TGLViewer *)0x%lx)->DoDraw(kFALSE)", (
ULong_t)
this));
1008 glReadBuffer(GL_BACK);
1011 glPixelStorei(GL_PACK_ALIGNMENT, 1);
1013 GL_BGRA, GL_UNSIGNED_BYTE, xx);
1036 static const TString eh(
"TGLViewer::GetPictureUsingFBO");
1039 Error(eh,
"viewer locked - try later.");
1052 catch (std::runtime_error& exc)
1054 Error(eh,
"%s",exc.what());
1055 if (
gEnv->
GetValue(
"OpenGL.GetPictureFallbackToBB", 1)) {
1056 Info(eh,
"Falling back to saving image via back-buffer. Window must be fully visible.");
1058 Warning(eh,
"Back-buffer does not support image scaling, window size will be used.");
1069 if (pixel_object_scale != 0)
1081 gROOT->ProcessLineFast(
Form(
"((TGLViewer *)0x%lx)->DoDraw(kFALSE)", (
ULong_t)
this));
1092 glPixelStorei(GL_PACK_ALIGNMENT, 1);
1094 GL_BGRA, GL_UNSIGNED_BYTE, xx);
1102 if (pixel_object_scale != 0)
1119 Bool_t pixel_object_scale)
1133 Bool_t pixel_object_scale)
1147 Bool_t pixel_object_scale)
1163 glDisable(GL_DEPTH_TEST);
1169 glDisable(GL_DEPTH_TEST);
1171 const UChar_t rgba[4] = { 0, 255, 255, 255 };
1177 glEnable(GL_DEPTH_TEST);
1182 glDisable(GL_DEPTH_TEST);
1187 glEnable(GL_DEPTH_TEST);
1197 glDisable(GL_LIGHTING);
1201 glColor3d(0.0, 1.0, 0.0);
1205 glDisable(GL_DEPTH_TEST);
1210 glEnable(GL_DEPTH_TEST);
1212 glEnable(GL_LIGHTING);
1229 color->
GetRGB(rgb[0], rgb[1], rgb[2]);
1231 rgb[0] = rgb[1] = rgb[2] = 0.0f;
1233 glClearColor(rgb[0], rgb[1], rgb[2], 0.0
f);
1236 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
1258 glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity();
1259 glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity();
1264 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
1267 glVertex3f(-1, -1, z); glVertex3f( 1, -1, z);
1268 glVertex3f( 1, 1, z); glVertex3f(-1, 1, z);
1272 glMatrixMode(GL_PROJECTION); glPopMatrix();
1273 glMatrixMode(GL_MODELVIEW); glPopMatrix();
1318 return Bool_t(
gROOT->ProcessLineFast(
Form(
"((TGLViewer *)0x%lx)->DoSelect(%d, %d)", (
ULong_t)
this, x, y)));
1346 glRenderMode(GL_SELECT);
1352 Int_t nHits = glRenderMode(GL_RENDER);
1356 if (
gDebug > 0)
Info(
"TGLViewer::DoSelect",
"Primary select nHits=%d.", nHits);
1391 return Bool_t(
gROOT->ProcessLineFast(
Form(
"((TGLViewer *)0x%lx)->DoSecondarySelect(%d, %d)", (
ULong_t)
this, x, y)));
1416 Info(
"TGLViewer::SecondarySelect",
"Skipping secondary selection " 1417 "(sinfo=0x%lx, pshape=0x%lx).\n",
1430 foo.push_back(sinfo);
1434 glRenderMode(GL_SELECT);
1441 glPushName(pshp->
ID());
1449 Int_t nSecHits = glRenderMode(GL_RENDER);
1453 if (
gDebug > 0)
Info(
"TGLViewer::DoSelect",
"Secondary select nSecHits=%d.", nSecHits);
1501 return Bool_t(
gROOT->ProcessLineFast(
Form(
"((TGLViewer *)0x%lx)->DoOverlaySelect(%d, %d)", (
ULong_t)
this, x, y)));
1526 glRenderMode(GL_SELECT);
1532 Int_t nHits = glRenderMode(GL_RENDER);
1583 Float_t fade = fViewer->GetFader();
1585 if (fade == fFadeTarget) {
1586 delete this;
return;
1589 fViewer->SetFader(fFadeTarget);
1596 Float_t df = (fFadeTarget - fade)/fNSteps;
1597 fViewer->SetFader(fade + df);
1599 fTime -= dt; --fNSteps;
1601 "TGLFaderHelper",
this,
"MakeFadeStep()");
1639 Info(
"SwitchColorSet()",
"Global color-set is in use, switch not supported.");
1738 Info(
"TGLViewer::SetViewport",
"updated - corner %d,%d dimensions %d,%d", x, y, width, height);
1759 switch(cameraType) {
1783 Error(
"TGLViewer::SetCurrentCamera",
"invalid camera type");
1850 Error(
"TGLViewer::SetCurrentCamera",
"invalid camera type");
1930 Error(
"TGLViewer::SetOrthoCamera",
"invalid camera type");
1978 Error(
"TGLViewer::SetPerspectiveCamera",
"invalid camera type");
2099 Emit(
"MouseOver(TGLPhysicalShape*)", (
Long_t)shape);
2110 Emit(
"MouseOver(TGLPhysicalShape*,UInt_t)", args);
2121 Emit(
"MouseOver(TObject*,UInt_t)", args);
2132 Emit(
"ReMouseOver(TObject*,UInt_t)", args);
2144 Emit(
"UnMouseOver(TObject*,UInt_t)", args);
2164 Emit(
"Clicked(TObject*,UInt_t,UInt_t)", args);
2177 Emit(
"ReClicked(TObject*,UInt_t,UInt_t)", args);
2189 Emit(
"UnClicked(TObject*,UInt_t,UInt_t)", args);
2198 static UInt_t oldx = 0, oldy = 0;
2200 if (oldx != posx || oldy != posy) {
2204 Emit(
"MouseIdle(TGLPhysicalShape*,UInt_t,UInt_t)", args);
2221 gPad->SetSelected(
this);
TGEventHandler * fEventHandler
select record from last overlay select
void FadeView(Float_t alpha)
Draw a rectangle (background color and given alpha) across the whole viewport.
Int_t fAxesType
smooth line edge rendering
TGLCamera * fCurrentCamera
A GL overlay element which displays camera furstum.
TGLVertex3 fReferencePos
reference marker on?
void SetSecSelection(Bool_t secSel)
virtual void ReMouseOver(TObject *obj, UInt_t state)
Emit MouseOver signal.
Class encapsulating a set of colors used throughout standard rendering.
TGLVertex3 Center() const
TGLSelectRecord fSelRec
select record in use as selected
Bool_t fStereoQuadBuf
use stereo rendering
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
TGLColorSet fLightColorSet
color-set with dark background
void MakeCurrent() const
Make GL context current.
virtual void PadPaint(TVirtualPad *pad)
Entry point for updating viewer contents via VirtualViewer3D interface.
TGLClip * GetCurrentClip() const
Abstract base camera class - concrete classes for orthographic and perspective cameras derive from it...
TGLPerspectiveCamera fPerspectiveCameraXOZ
TGLVector3 Extents() const
virtual void PreRender()
Initialize objects that influence rendering.
Bool_t ReleaseLock(ELock lock) const
Release current lock, make sure it the same as the 'lock' argument.
void Start()
Start timing.
Wrapper class for various misc static functions - error checking, draw helpers etc.
void ReinitializeCurrentCamera(const TGLVector3 &hAxis, const TGLVector3 &vAxis, Bool_t redraw=kTRUE)
Change base-vectors defining the camera-base transformation of current camera.
void StdLightBackground()
Set defaults for light (white) background.
Float_t fLineScale
size scale for points
Wrap TGLPysicalShape into TObject so that it can be edited using GED.
void Unbind()
Unbind the frame-buffer object.
virtual void MouseOver(TGLPhysicalShape *)
Emit MouseOver signal.
void SwitchColorSet()
Switch between dark and light colorsets.
TGLAutoRotator * fAutoRotator
static void DrawReferenceMarker(const TGLCamera &camera, const TGLVertex3 &pos, Float_t radius=3, const UChar_t *rgba=0)
Draw a sphere- marker on world-coordinate 'pos' with pixel radius 'radius'.
std::list< TGLSceneInfo * > SceneInfoList_t
16 component (4x4) transform matrix - column MAJOR as per GL.
image html pict1_TGaxis_012 png width
Define new text attributes for the label number "labNum".
virtual void Render()
Render all scenes.
TGLOrthoCamera fOrthoXnOZCamera
Identifier of a shared GL-context.
TGLLogicalShape * GetLogShape() const
static void DrawSimpleAxes(const TGLCamera &camera, const TGLBoundingBox &bbox, Int_t axesType)
Draw simple xyz-axes for given bounding-box.
void Bind()
Bind the frame-buffer object.
void ResetCurrentCamera()
Resets position/rotation of current camera to default values.
Double_t GetFarClip() const
void SetupCameras(Bool_t reset)
Setup cameras for current bounding box.
TGLOrthoCamera fOrthoXOZCamera
static TGLColorSet & GetDefaultColorSet()
Returns reference to the default color-set.
TGLOrthoCamera fOrthoXOYCamera
TGLCamera & RefCamera(ECameraType camera)
Return camera reference by type.
Bool_t RequestOverlaySelect(Int_t x, Int_t y)
Post request for secondary selection rendering of selected object around the window point (x...
virtual void SetEventHandler(TGEventHandler *handler)
Set the event-handler.
Stopwatch object for timing GL work.
virtual void SetPShape(TGLPhysicalShape *shape)
Set phys-shape, override of virtual from TGLPShapeRef.
Scene base-class – provides basic interface expected by the TGLViewer or its sub-classes: ...
Float_t fStereoEyeOffsetFac
position of zero-parallax plane: 0 - near clipping plane, 1 - far clipping plane
virtual void PreRender(TGLRnrCtx &rnrCtx)
Perform pre-render initialization - fill rnrCtx with values stored during PreDraw().
virtual void Reset()
Reinitialise all data to null values.
Bool_t FindClosestRecord(TGLSelectRecord &rec, Int_t &recIdx)
Find next select record that can be resolved, starting from position 'recIdx'.
void SetGrabImage(Bool_t gi)
void MakeFadeStep()
Make one fading step and request redraw.
void DoDraw(Bool_t swap_buffers=kTRUE)
Draw out the viewer.
Bool_t IsColorSetDark() const
Returns true if current color set is dark.
TGLSceneBase * GetScene() const
virtual void RemoveOverlayElement(TGLOverlayElement *el)
Remove overlay element.
static void SingleShot(Int_t milliSec, const char *receiver_class, void *receiver, const char *method)
This static function calls a slot after a given time interval.
Bool_t SavePictureScale(const TString &fileName, Float_t scale, Bool_t pixel_object_scale=kTRUE)
Save picture with given scale to current window size.
const TGLPhysicalShape * GetSelected() const
Return selected physical shape.
R__EXTERN TVirtualMutex * gROOTMutex
static void PointToViewport(Int_t &x, Int_t &y)
Convert from point/screen coordinates to GL viewport coordinates.
void SetRawOnly(UInt_t *data)
Setup the record from raw buffer.
void SetDrawCameraCenter(Bool_t x)
Draw camera look at and rotation point.
An abstract interface to image processing library.
Bool_t SavePictureHeight(const TString &fileName, Int_t height, Bool_t pixel_object_scale=kTRUE)
Save picture with given height (width scaled proportionally).
Bool_t RequestSecondarySelect(Int_t x, Int_t y)
Request secondary select.
virtual void UnMouseOver(TObject *obj, UInt_t state)
Emit UnMouseOver signal.
Float_t GetRenderScale() const
TGLPhysicalShape * GetPShape() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
UInt_t * RawRecord(Int_t i)
Perspective projection camera - with characteristic foreshortening.
virtual void PostRender()
Restore state set in PreRender().
void Set(Double_t x, Double_t y, Double_t z)
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
virtual Bool_t SupportsSecondarySelect() const
TGLCamera * GetCamera() const
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Process event of type 'event' - one of EEventType types, occurring at window location px...
Encapsulates a set of lights for OpenGL.
void StartStopwatch()
Start the stopwatch.
void UseLightColorSet()
Use the light color-set.
Combine all available manipulators in a collection.
void SetShapeLOD(Short_t LOD)
static void UseDefaultColorSetForNewViewers(Bool_t x)
Sets static flag that determines if new viewers should use the default color-set. ...
void SetOrthoCamera(ECameraType camera, Double_t zoom, Double_t dolly, Double_t center[3], Double_t hRotate, Double_t vRotate)
Set an orthographic camera to supplied configuration - note this does not need to be the current came...
void SetClearColor(Color_t col)
Set background method.
Concrete physical shape - a GL drawable.
TGLCamera & CurrentCamera() const
virtual void Render()
Normal rendering, used by mono and stereo rendering.
void AutoFade(Float_t fade, Float_t time=1, Int_t steps=10)
Animate fading from current value to fade over given time (sec) and number of steps.
virtual Bool_t IsPerspective() const
static TGLColorSet fgDefaultColorSet
fade the view (0 - no fade/default, 1 - full fade/no rendering done)
TGLPhysicalShape * GetPhysShape() const
void Release(TGLContext *ctx)
Remove context ctx from the list of references.
Bool_t FindClosestOpaqueRecord(TGLSelectRecord &rec, Int_t &recIdx)
Find next select record that can be resolved and whose result is not transparent, starting from posit...
TGLSelectRecord fCurrentSelRec
virtual TObject * GetModel() const
virtual void PostRenderOverlaySelection()
Perform cleanup after overlay selection.
virtual void OverlayDragFinished()
An overlay operation can result in change to an object.
Bool_t fDebugMode
cache logicals during scene rebuilds
TGLRedrawTimer * fRedrawTimer
void Set(const TGLVertex3 &origin, const TGLVector3 &zAxis, const TGLVector3 &xAxis=0)
Set matrix which when applied puts local origin at 'origin' and the local Z axis in direction 'z'...
virtual void ReleaseViewer3D(Option_t *type="")=0
3 component (x/y/z) vertex class.
TGLContextIdentity * fGLCtxId
for embedded gl viewer
static void DrawSphere(const TGLVertex3 &position, Double_t radius, const UChar_t rgba[4])
Draw sphere, centered on vertex 'position', with radius 'radius', color 'rgba'.
virtual void PostSceneBuildSetup(Bool_t resetCameras)
Perform post scene-build setup.
Bool_t GetGrabImage() const
virtual void Setup(const TGLBoundingBox &box, Bool_t reset=kTRUE)=0
void StopStopwatch()
Stop the stopwatch.
virtual void ResetSceneInfos()
Force rebuild of view-dependent scene-info structures.
void PostDraw()
Perform GL work which must be done after each draw.
Short_t SelectTransparents() const
void SetupCurrentClip(const TGLBoundingBox &sceneBBox)
Setup current clipping object for given scene bounding box.
constexpr Double_t DegToRad()
Conversion from degree to radian: .
void SetSceneInfo(TGLSceneInfo *si)
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
virtual void RenderSelectedForHighlight()
Render selected objects from all scenes for highlight.
Viewport (pixel base) 2D rectangle class.
Bool_t fResetCamerasOnUpdate
void SwapBuffers() const
Swap GL buffers.
Bool_t DoSecondarySelect(Int_t x, Int_t y)
Secondary selection.
virtual Bool_t MouseStillInside(TGLOvlSelectRecord &selRec)
3 component (x/y/z) vector class.
virtual void RemoveOverlayElement(TGLOverlayElement *el)
Remove overlay element.
void DrawGuides()
Draw reference marker and coordinate axes.
TVirtualPad is an abstract base class for the Pad and Canvas classes.
void ApplySelection()
Process result from last selection (in fSelRec) and extract a new current selection from it...
virtual void Reset()
Reinitialise all data to null values.
Bool_t fAxesDepthTest
axes type
virtual void PadPaintFromViewer(TGLViewer *viewer)
Entry point for requesting update of scene's contents from gl-viewer.
TGLManipSet * fSelectedPShapeRef
select record from last secondary select (should go to context)
Bool_t GetClipAutoUpdate() const
Float_t fMaxSceneDrawTimeLQ
max time for scene rendering at high LOD (in ms)
TGLVector3 ViewportDeltaToWorld(const TGLVertex3 &worldRef, Double_t viewportXDelta, Double_t viewportYDelta, TGLMatrix *modviewMat=0) const
Apply a 2D viewport delta (shift) to the projection of worldRef onto viewport, returning the resultan...
void UpdateScene(Bool_t redraw=kTRUE)
Force update of pad-scenes.
void InitGL()
Initialise GL state.
static void SetPointSizeScale(Float_t scale)
Set global point-size scale.
virtual void Setup(const TGLBoundingBox &box, Bool_t reset=kTRUE)
Setup camera limits suitable to view the world volume defined by 'box' and call Reset() to initialise...
Double_t * GetCenterVec()
void SetPerspectiveCamera(ECameraType camera, Double_t fov, Double_t dolly, Double_t center[3], Double_t hRotate, Double_t vRotate)
Set a perspective camera to supplied configuration - note this does not need to be the current camera...
virtual void MouseLeave()
Mouse has left the element.
Float_t fFader
default file-name for SavePicture()
TGLMatrix & RefCamTrans()
TGLVector3 GetTranslation() const
Return the translation component of matrix.
virtual void Setup(const TGLBoundingBox &box, Bool_t reset=kTRUE)
Setup camera limits suitable to view the world volume defined by 'box' and call Reset() to initialise...
TGLPhysicalShape * fPShape
Bool_t IsUsingDefaultColorSet() const
Check if the viewer is using the default color set.
Automatically rotates GL camera.
TGLAutoRotator * GetAutoRotator()
Get the auto-rotator for this viewer.
void RequestDraw(Short_t LOD=TGLRnrCtx::kLODMed)
Post request for redraw of viewer at level of detail 'LOD' Request is directed via cross thread gVirt...
virtual void PrintObjects()
Pass viewer for print capture by TGLOutput.
TVirtualPad * GetPad() const
Bool_t RequestSelect(Int_t x, Int_t y)
Post request for selection render pass viewer, picking objects around the window point (x...
static void SetLineWidthScale(Float_t scale)
Set global line-width scale.
TGLBoundingBox fOverallBoundingBox
static Bool_t IsUsingDefaultColorSetForNewViewers()
Returns the value of the static flag that determines if new viewers should use the default color-set...
virtual void PreRender()
Initialize render-context, setup camera, GL, render-area.
void RequestDraw(Int_t milliSec, Short_t redrawLOD)
Bool_t fIsPrinting
debug mode (forced rebuild + draw scene/frustum/interest boxes)
static const UChar_t fgWhite[4]
Standard selection record including information about containing scene and details ob out selected ob...
Bool_t SavePictureUsingFBO(const TString &fileName, Int_t w, Int_t h, Float_t pixel_object_scale=0)
Save current image in various formats (gif, gif+, jpg, png).
void Init(int w, int h, int ms_samples=0)
Acquire GL resources for given width, height and number of multi-sampling samples.
void GetGuideState(Int_t &axesType, Bool_t &axesDepthTest, Bool_t &referenceOn, Double_t *referencePos) const
Fetch the state of guides (axes & reference markers) into arguments.
virtual void Clicked(TObject *obj)
Emit Clicked signal.
TGLRect fViewport
max time for scene rendering at high LOD (in ms)
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Bool_t IsDrawOrSelectLock() const
char * Form(const char *fmt,...)
Bool_t DoOverlaySelect(Int_t x, Int_t y)
Perform GL selection, picking overlay objects only.
Implements VirtualViewer3D interface and fills the base-class visualization structures from pad conte...
void DoDrawStereo(Bool_t swap_buffers)
Draw out in stereoscopic mode.
A collection of concrete TGLClip objects to be selected from.
ELock CurrentLock() const
void DeleteGLResources()
Delete GL resources registered for destruction.
TGLOvlSelectRecord fOvlSelRec
current overlay element
void UseDarkColorSet()
Use the dark color-set.
virtual void PostRender()
Function called after rendering is finished.
Base GL viewer object - used by both standalone and embedded (in pad) GL.
Bool_t fSmoothPoints
width scale for lines
void SetStereo(Bool_t stereo, Bool_t quad_buf=kTRUE)
Enable stereo rendering.
void SetDrawBBox(Bool_t bb)
Bool_t DoSelect(Int_t x, Int_t y)
Perform GL selection, picking objects overlapping WINDOW area described by 'rect'.
TGLColorSet * ChangeBaseColorSet(TGLColorSet *set)
Change the default/bottom color-set.
friend class TGLAutoRotator
static const UChar_t fgGreen[4]
virtual Color_t GetLineColor() const
Return the line color.
void Print()
Print contents of the select record to stdout.
virtual void Draw(TGLRnrCtx &rnrCtx) const
Draw physical shape, using LOD flags, potential from display list cache.
virtual void PreRenderOverlaySelection()
Perform minimal initialization for overlay selection.
static Bool_t Capture(TGLViewer &viewer, EFormat format, const char *filePath=0)
Capture viewer to file.
virtual void RenderOverlay(Int_t state, Bool_t selection)
Render overlay objects.
virtual void AddOverlayElement(TGLOverlayElement *el)
Add overlay element.
TImage * GetPictureUsingBB()
Returns current image.
void Stop()
Stop the auto-rotator.
virtual void Configure(Double_t fov, Double_t dolly, Double_t center[3], Double_t hRotate, Double_t vRotate)
Configure the camera state.
Bool_t fSmoothLines
smooth point edge rendering
static const char * LockName(ELock lock)
Return name-string for given lock-type.
void EndSelection(Int_t glResult)
End selection.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to an event at (px,py).
TGLSceneInfo * GetSceneInfo() const
Bool_t SavePictureWidth(const TString &fileName, Int_t width, Bool_t pixel_object_scale=kTRUE)
Save picture with given width (height scaled proportionally).
void SetViewport(Int_t x, Int_t y, Int_t width, Int_t height)
Set viewer viewport (window area) with bottom/left at (x,y), with dimensions 'width'/'height'.
TGLSceneInfo * AddScene(TGLSceneBase *scene)
Add new scene, appropriate scene-info is created.
TGLOrthoCamera fOrthoXnOYCamera
void BeginSelection(Int_t x, Int_t y, Int_t r=3)
Setup context for running selection.
void Draw(Bool_t solid=kFALSE) const
Draw the bounding box as either wireframe (default) of solid using current GL color.
TGLOrthoCamera fOrthoZOYCamera
static Bool_t fgUseDefaultColorSetForNewViewers
a shared, default color-set
Float_t fMaxSceneDrawTimeHQ
timer for triggering redraws
TGLOrthoCamera fOrthoZnOYCamera
Float_t fStereoZeroParallax
draw quad buffer or left/right stereo in left/right half of window
virtual Bool_t IsMapped()
Returns kTRUE if window is mapped on screen, kFALSE otherwise.
virtual void SelectionChanged()
Update GUI components for embedded viewer selection change.
virtual Color_t GetFillColor() const
Return the fill area color.
virtual void ReClicked(TObject *obj, UInt_t button, UInt_t state)
Emit ReClicked signal with button id and modifier state.
Color_t GetColorIndex() const
Returns color-index representing the color.
Bool_t fReferenceOn
remove guides hidden-lines
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
#define R__LOCKGUARD(mutex)
Bool_t UpdateInterest(Bool_t force)
Update the internal interest box (fInterestBox) of the camera.
The color creation and management class.
Bool_t FindClosestOverlayRecord(TGLOvlSelectRecord &rec, Int_t &recIdx)
Find next overlay-select record that can be resolved, starting from position 'recIdx'.
void SetCurrentCamera(ECameraType camera)
Set current active camera - 'cameraType' one of: kCameraPerspX, kCameraPerspY, kCameraPerspZ, kCameraOrthoXOY, kCameraOrthoXOZ, kCameraOrthoZOY, kCameraOrthoXnOY, kCameraOrthoXnOZ, kCameraOrthoZnOY.
TGLCameraOverlay * fCameraOverlay
reference marker on?
virtual void MergeSceneBBoxes(TGLBoundingBox &bbox)
Merge bounding-boxes of all active registered scenes.
Bool_t fIgnoreSizesOnUpdate
for embedded gl viewer
void AddRef(TGLContext *ctx)
Add context ctx to the list of references.
TContextMenu * fContextMenu
external pad - remove replace with signal
virtual void SetModel(TVirtualPad *pad, TObject *obj, Int_t event, Bool_t force=kFALSE)
Activate object editors according to the selected object.
TImage * GetPictureUsingFBO(Int_t w, Int_t h, Float_t pixel_object_scale=0)
Returns current image.
virtual void Configure(Double_t zoom, Double_t dolly, Double_t center[3], Double_t hRotate, Double_t vRotate)
Configure the camera state.
void SetDrawPass(Short_t dpass)
TGLOverlayElement * fCurrentOvlElm
void DoDrawMono(Bool_t swap_buffers)
Draw out in monoscopic mode.
Orthographic projection camera.
Double_t GetNearClip() const
Mother of all ROOT objects.
static Int_t CheckError(const char *loc)
Check current GL error state, outputting details via ROOT Error method if one.
Concrete class describing an orientated (free) or axis aligned box of 8 vertices. ...
void SetupCurrentClipIfInvalid(const TGLBoundingBox &sceneBBox)
Setup current clipping object for given scene bounding box.
you should not use this method at all Int_t Int_t z
TGLViewer(const TGLViewer &)
Float_t fStereoFrustumAsymFac
virtual void RefreshPadEditor(TObject *obj=0)
Update GED editor if it is set.
Bool_t GetTransparent() const
void ClearCurrentOvlElm()
Reset current overlay-element to zero, eventually notifying the old one that the mouse has left...
Bool_t SavePictureUsingBB(const TString &fileName)
Save current image in various formats (gif, gif+, jpg, png).
void SetGuideState(Int_t axesType, Bool_t axesDepthTest, Bool_t referenceOn, const Double_t *referencePos)
Set the state of guides (axes & reference markers) from arguments.
void InitSecondaryObjects()
Common initialization.
virtual void MouseIdle(TGLPhysicalShape *, UInt_t, UInt_t)
Emit MouseIdle signal.
virtual ~TGLViewer()
Destroy viewer object.
virtual void SetupClipObject()
name says it all
TGLOrthoCamera fOrthoZOXCamera
TGLPerspectiveCamera fPerspectiveCameraXOY
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Calculate and return pixel distance to nearest viewer object from window location px...
Base class for extended scene context.
TGLColorSet * GetBaseColorSet()
Returns the current base color-set.
static Int_t GetPickingRadius()
Returns picking radius.
void SetRenderTimeOut(Double_t tout)
static Bool_t AreSameSelectionWise(const TGLSelectRecord &r1, const TGLSelectRecord &r2)
Check if the records imply the same selection result, that is, their secondary members are all equal...
Bool_t TakeLock(ELock lock) const
Lock the object in mode 'lock'.
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
SceneInfoList_t::iterator SceneInfoList_i
virtual void UnClicked(TObject *obj, UInt_t button, UInt_t state)
Emit UnClicked signal with button id and modifier state.
void PreDraw()
Perform GL work which must be done before each draw.
void Start()
Start the auto-rotator.
static TImage * Create()
Create an image.
void UseDefaultColorSet(Bool_t x)
Set usage of the default color set.
void SetAutoRotator(TGLAutoRotator *ar)
Set the auto-rotator for this viewer. The old rotator is deleted.
TGLColorSet fDarkColorSet
viewport - drawn area
TGLColorSet & ColorSet()
Return reference to current color-set (top of the stack).
TGLSelectBuffer * GetSelectBuffer() const
void SetViewport(const TGLRect &viewport)
Set viewport extents from passed 'viewport' rect.
void SetColor(Int_t r, Int_t g, Int_t b, Int_t a=255)
Set color with Int_t values.
TGedEditor * fGedEditor
event handler
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
static void ColorAlpha(const TGLColor &color, UChar_t alpha)
Set color from TGLColor and alpha value.
virtual Bool_t MouseEnter(TGLOvlSelectRecord &selRec)
Mouse has entered this element.
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
Bool_t fSmartRefresh
markup size of viewport in scene units
Float_t fPointScale
color-set with light background
virtual void PostRender(TGLRnrCtx &rnrCtx)
Perform post-render clean-up.
Int_t CeilNint(Double_t x)
TGLPerspectiveCamera fPerspectiveCameraYOZ
Bool_t fDrawCameraCenter
reference position
TGLOverlayElement * GetOvlElement() const
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
void StdSetupLights(const TGLBoundingBox &bbox, const TGLCamera &camera, Bool_t debug=kFALSE)
Setup lights for current given bounding box and camera.
Double_t End()
End timing, return total time since Start(), in milliseconds.
Bool_t SavePicture()
Save current image using the default file name which can be set via SetPictureFileName() and defaults...
void Set(Int_t x, Int_t y, Int_t width, Int_t height)
TGLPShapeObj * fPShapeWrap
GED editor.
TGLSelectRecord fSecSelRec
select record from last select (should go to context)
void DrawDebugInfo()
If in debug mode draw camera aids and overall bounding box.
const char * Data() const
Bool_t fResetCamerasOnNextUpdate
TGLOrthoCamera fOrthoZnOXCamera
void DrawDebugAids() const
Draw out some debugging aids for the camera:
void SetGLCtxIdentity(TGLContextIdentity *cid)
void SetRenderScale(Float_t s)