Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
BIAS::RenderContextBase Class Referenceabstract

Base for all classes creating interface between GL and "window manager". More...

#include <GLviewer/RenderContextBase.hh>

+ Inheritance diagram for BIAS::RenderContextBase:
+ Collaboration diagram for BIAS::RenderContextBase:

Public Member Functions

void AppendScene (SceneBase *scene, bool push_front=false)
 attach scenes to render here More...
 
void AppendView (View *view)
 Append a view to the context. More...
 
void CenterViewport (bool center=true)
 center the viewport More...
 
void ClearScenes ()
 Delete the attached scenes. More...
 
virtual void DeactivateTimer ()=0
 deactivate timer More...
 
void DeleteBackgroundImageScene ()
 Delete the background image scene. More...
 
void DeleteCamera ()
 Delete the camera. More...
 
void DeleteControler ()
 
void DeleteController ()
 
void DeleteSceneAt (unsigned int index)
 removes scene with the given index in the vector of scenes More...
 
void DeleteScenes ()
 Delete the attached scenes. More...
 
void EnableStencilUsage (bool enable)
 Enable the useage of stencil buffer. More...
 
const
GLProjectionParametersInterface
GetCamera ()
 get the camera More...
 
virtual int GetDepthMap (BIAS::Image< float > &Image, const float invalid=0.0, bool lock=true)
 brief Get the currently displayed depth image Set lock to false if no context lock should be used (i.e. More...
 
const
GLProjectionParametersInterface
GetGLProjectionParametersInterface ()
 get the camera parameters More...
 
virtual int GetGreyImage (BIAS::Image< unsigned char > &Image, bool lock=true)
 brief Get the currently displayed image as unsigned char grey image Set lock to false if no context lock should be used (i.e. More...
 
virtual int GetImage (BIAS::Image< unsigned char > &Image, bool lock=true)
 brief Get the currently displayed image as unsigned char color image. More...
 
virtual int GetMetricZMap (BIAS::Image< float > &Image, const float invalid=0.0, bool lock=true)
 brief Get the currently displayed zbuffer image in metric (real) values Set lock to false if no context lock should be used (i.e. More...
 
SceneBaseGetSceneAt (unsigned int index)
 returns scene with the given index in the vector of scenes More...
 
bool GetSceneCenter (BIAS::Vector3< double > &center, BIAS::Vector3< double > &radius)
 Returns the center of all bounding boxes of appended scenes and the radius which include all scenes. More...
 
int GetSceneCount ()
 Get the number of attached scenes. More...
 
const std::vector< SceneBase * > & GetScenes () const
 return a vector with pointers to all attached scenes More...
 
virtual bool GetSelectionMode ()
 Get the selectinmode. More...
 
virtual int GetZBuffer (BIAS::Image< float > &Image, bool lock=true)
 brief Get the currently displayed zbuffer image (values 0-1) * Set lock to false if no context lock should be used (i.e. More...
 
void GlobalBoundingBoxSwitch (bool theswitch)
 switches rendering of bounding boxes for all scenes More...
 
void InsertSceneAt (SceneBase *scene, unsigned int index)
 Inserts or deletes a scene at the specified position in std::vector<SceneBase*> scenes_. More...
 
int LockContextSwitch ()
 
virtual void MakeGLContextCurrent ()=0
 try to make this OpenGl context current More...
 
void PrintGLStatus ()
 prints to current status of the OpenGL context More...
 
virtual void Redisplay ()=0
 Demands a rendering from the Context;. More...
 
int ReleaseContextSwitch ()
 
void RemoveScene (SceneBase *scene, bool noWarning=false)
 removes scene with the given pointer from the vector of scenes More...
 
virtual int Render ()
 Simple rendering routine. More...
 
 RenderContextBase ()
 
void SetAutoClipMinZNear (double znear)
 sets minimum znear for autoclipping if autoclpiing is enabled the z-near and z-far plane are computed using the boudingspheres of the scenes. More...
 
void SetAutoClipping (bool on)
 Turn AutoClipping on, now the near and far clipping plane is automatically derived and set. More...
 
bool SetBackfaceCulling (bool cull=true)
 En-/Disable backface culling. More...
 
void SetBackgroundImageScene (SceneBGImage *backgroundImageScene)
 Deactivate background image rendering pass by passing NULL here, or deactivating scene itself. More...
 
bool SetBlending (bool blend=true)
 En-/Disable blending. More...
 
void SetClearColor (const BIAS::Vector4< float > &cc)
 set the opengl clear color for color buffer More...
 
void SetGLProjectionParametersInterface (GLProjectionParametersInterface *newCamera)
 set the camera parameters More...
 
virtual void SetSelectionMode (bool selectionmode)
 Enable or disable selection mode. More...
 
virtual void SetTimer (unsigned int interval)=0
 activate timer with intervall in ms More...
 
virtual ~RenderContextBase ()
 
void AppendAdditionalListener (ControlInterface *listener)
 additional control listeners can be attached, or removed here More...
 
void ClearAdditionalListeners ()
 
void RemoveAdditionalListener (ControlInterface &listener)
 
void SetControl (BIAS::ControlInterface *newControl)
 Control is implemented the following way: cout<<"F1"<<endl; All input is passed to control_ first, if this is not handling the input, the information is passed to all scenes_. More...
 
void DeleteControl ()
 delete the current controller More...
 
bool LeftMouseDoubleClicked (int x, int y, int m)
 
bool LeftMouseSingleClicked (int x, int y)
 
bool LeftMouseDown (int x, int y)
 
bool LeftMouseUp (int x, int y)
 
bool LeftMouseMoved (int x1, int x2, int y1, int y2)
 
bool RightMouseSingleClicked (int x, int y)
 
bool RightMouseDoubleClicked (int x, int y)
 
bool RightMouseMoved (int x1, int x2, int y1, int y2)
 
bool RightMouseDown (int x, int y)
 
bool RightMouseUp (int x, int y)
 
bool MiddleMouseMoved (int x1, int x2, int y1, int y2)
 
bool MiddleMouseDown (int x, int y)
 
bool MiddleMouseUp (int x, int y)
 
bool LeftAndRightMouseMoved (int x1, int x2, int y1, int y2)
 
bool MouseLeftWindow ()
 
bool SpecialKeyPressed (int key)
 
bool SpecialKeyUp (int key)
 
bool StandardKeyPressed (unsigned char, int, int)
 
bool StandardKeyUp (unsigned char, int, int)
 
bool TimerExpired ()
 Always informs both camera and scenes! More...
 
bool WindowReshape (int width, int height)
 
bool MouseWheelUsed (double stepsize)
 
bool MouseMoved (int x, int y)
 

Protected Member Functions

void Init_ ()
 called once when rendering starts More...
 

Protected Attributes

std::vector< ControlInterface * > additionalListeners_
 Listening for special keys only. More...
 
bool AutoClipping_
 
double AutoMinZNear_
 
SceneBGImagebackgroundImageScene_
 
bool blendingAllowed_
 
bool bSelectionMode_
 
GLProjectionParametersInterfacecamera_
 
bool centerViewport_
 
BIAS::Vector4< float > ClearColor_
 
ControlInterfacecontrol_
 
bool culling_
 
bool initialized_
 
std::vector< SceneBase * > scenes_
 
unsigned int TimerInterval_
 
bool UseStencil_
 

Detailed Description

Base for all classes creating interface between GL and "window manager".

new version without glprojection

Definition at line 33 of file RenderContextBase.hh.

Constructor & Destructor Documentation

RenderContextBase::RenderContextBase ( )
virtual BIAS::RenderContextBase::~RenderContextBase ( )
inlinevirtual

Definition at line 36 of file RenderContextBase.hh.

Member Function Documentation

void BIAS::RenderContextBase::AppendAdditionalListener ( ControlInterface listener)
inline

additional control listeners can be attached, or removed here

Definition at line 124 of file RenderContextBase.hh.

void RenderContextBase::AppendScene ( SceneBase scene,
bool  push_front = false 
)

attach scenes to render here

Attention
Do not append scene of type SceneBGImage here, for correct background image rendering rather use SetBackgroundImageScene().

Definition at line 332 of file RenderContextBase.cpp.

References camera_, scenes_, and BIAS::SceneBase::SetGLProjectionParametersInterface().

void RenderContextBase::AppendView ( View view)

Append a view to the context.

Parameters
view[in]: the view to append

Definition at line 949 of file RenderContextBase.cpp.

void RenderContextBase::CenterViewport ( bool  center = true)

center the viewport

Definition at line 893 of file RenderContextBase.cpp.

References centerViewport_.

void BIAS::RenderContextBase::ClearAdditionalListeners ( )
inline

Definition at line 126 of file RenderContextBase.hh.

void RenderContextBase::ClearScenes ( )

Delete the attached scenes.

Attention
The scenes are NOT destroyed, delete outside if intended or use DeleteScenes() instead.

Definition at line 420 of file RenderContextBase.cpp.

References scenes_.

virtual void BIAS::RenderContextBase::DeactivateTimer ( )
pure virtual

deactivate timer

Implemented in BIAS::ContextGLUT, BIAS::ContextWX, and BIAS::ContextPBuffer.

void RenderContextBase::DeleteBackgroundImageScene ( )

Delete the background image scene.

Attention
The scene is deleted by call to delete, do not delete again outside.

Definition at line 379 of file RenderContextBase.cpp.

References backgroundImageScene_, and SetBackgroundImageScene().

void BIAS::RenderContextBase::DeleteCamera ( )
inline

Delete the camera.

Attention
The camera pointer is deleted, do not delete outside again!
Deprecated:
Use DeleteGLProjectionParametersInterface() instead

Definition at line 192 of file RenderContextBase.hh.

void BIAS::RenderContextBase::DeleteControl ( )
inline

delete the current controller

Attention
the controller is deleted, do not delete outside again

Definition at line 148 of file RenderContextBase.hh.

void BIAS::RenderContextBase::DeleteControler ( )
inline

Definition at line 110 of file RenderContextBase.hh.

void BIAS::RenderContextBase::DeleteController ( )
inline

Definition at line 111 of file RenderContextBase.hh.

void RenderContextBase::DeleteSceneAt ( unsigned int  index)

removes scene with the given index in the vector of scenes

Definition at line 387 of file RenderContextBase.cpp.

References scenes_.

void RenderContextBase::DeleteScenes ( )

Delete the attached scenes.

Attention
The scenes are destroyed, do not delete outside again.

Definition at line 406 of file RenderContextBase.cpp.

References scenes_.

void RenderContextBase::EnableStencilUsage ( bool  enable)

Enable the useage of stencil buffer.

Definition at line 955 of file RenderContextBase.cpp.

References UseStencil_.

const GLProjectionParametersInterface* BIAS::RenderContextBase::GetCamera ( )
inline

get the camera

Returns
current camera projection parameters, can be of type GLProjection of any from GLProjectionParametersBase derived class.
Deprecated:
Use GetGLProjectionParametersInterface() instead

Definition at line 185 of file RenderContextBase.hh.

int RenderContextBase::GetDepthMap ( BIAS::Image< float > &  Image,
const float  invalid = 0.0,
bool  lock = true 
)
virtual

brief Get the currently displayed depth image Set lock to false if no context lock should be used (i.e.

if called from within an already context locked environment*

Parameters
invalid[in],:depth value which is set as invalid (default = 0.0)

Reimplemented in BIAS::ContextPBuffer.

Definition at line 103 of file RenderContextBase.cpp.

References camera_, BIAS::GLProjectionParametersInterface::GetDepthMap(), LockContextSwitch(), and ReleaseContextSwitch().

const GLProjectionParametersInterface* BIAS::RenderContextBase::GetGLProjectionParametersInterface ( )
inline

get the camera parameters

Returns
current camera projection parameters, can be of type GLProjection of any from GLProjectionParametersBase derived class.

Definition at line 199 of file RenderContextBase.hh.

int RenderContextBase::GetGreyImage ( BIAS::Image< unsigned char > &  Image,
bool  lock = true 
)
virtual

brief Get the currently displayed image as unsigned char grey image Set lock to false if no context lock should be used (i.e.

if called from within an already context locked environment

Definition at line 90 of file RenderContextBase.cpp.

References camera_, BIAS::GLProjectionParametersInterface::GetGreyImage(), LockContextSwitch(), and ReleaseContextSwitch().

int RenderContextBase::GetImage ( BIAS::Image< unsigned char > &  Image,
bool  lock = true 
)
virtual

brief Get the currently displayed image as unsigned char color image.

Set lock to false if no context lock should be used (i.e. if called from within an already context locked environment

Reimplemented in BIAS::ContextPBuffer.

Definition at line 77 of file RenderContextBase.cpp.

References camera_, BIAS::GLProjectionParametersInterface::GetImage(), LockContextSwitch(), and ReleaseContextSwitch().

int RenderContextBase::GetMetricZMap ( BIAS::Image< float > &  Image,
const float  invalid = 0.0,
bool  lock = true 
)
virtual

brief Get the currently displayed zbuffer image in metric (real) values Set lock to false if no context lock should be used (i.e.

if called from within an already context locked environment.

Parameters
invalid[in],:z value which is set as invalid (default = 0.0)*

Reimplemented in BIAS::ContextPBuffer.

Definition at line 133 of file RenderContextBase.cpp.

References camera_, BIAS::GLProjectionParametersInterface::GetMetricZMap(), LockContextSwitch(), and ReleaseContextSwitch().

SceneBase * RenderContextBase::GetSceneAt ( unsigned int  index)

returns scene with the given index in the vector of scenes

Definition at line 414 of file RenderContextBase.cpp.

References scenes_.

bool BIAS::RenderContextBase::GetSceneCenter ( BIAS::Vector3< double > &  center,
BIAS::Vector3< double > &  radius 
)

Returns the center of all bounding boxes of appended scenes and the radius which include all scenes.

Return true iff at least one scene with a bounding box was found, else false

Definition at line 438 of file RenderContextBase.cpp.

References BIAS::Vector3< T >::Length().

int RenderContextBase::GetSceneCount ( )

Get the number of attached scenes.

Returns
Number of attached scenes

Definition at line 327 of file RenderContextBase.cpp.

References scenes_.

const std::vector<SceneBase*>& BIAS::RenderContextBase::GetScenes ( ) const
inline

return a vector with pointers to all attached scenes

Returns
vector with pointers to scenes of Type SceneBase

Definition at line 115 of file RenderContextBase.hh.

virtual bool BIAS::RenderContextBase::GetSelectionMode ( )
inlinevirtual

Get the selectinmode.

Definition at line 260 of file RenderContextBase.hh.

int RenderContextBase::GetZBuffer ( BIAS::Image< float > &  Image,
bool  lock = true 
)
virtual

brief Get the currently displayed zbuffer image (values 0-1) * Set lock to false if no context lock should be used (i.e.

if called from within an already context locked environment

Definition at line 118 of file RenderContextBase.cpp.

References camera_, BIAS::GLProjectionParametersInterface::GetZBuffer(), LockContextSwitch(), and ReleaseContextSwitch().

void BIAS::RenderContextBase::GlobalBoundingBoxSwitch ( bool  theswitch)
inline

switches rendering of bounding boxes for all scenes

Definition at line 245 of file RenderContextBase.hh.

void RenderContextBase::Init_ ( )
protected

called once when rendering starts

Definition at line 148 of file RenderContextBase.cpp.

References blendingAllowed_, culling_, initialized_, SetBackfaceCulling(), and SetBlending().

Referenced by Render().

void RenderContextBase::InsertSceneAt ( SceneBase scene,
unsigned int  index 
)

Inserts or deletes a scene at the specified position in std::vector<SceneBase*> scenes_.

Definition at line 358 of file RenderContextBase.cpp.

References scenes_.

bool RenderContextBase::LeftAndRightMouseMoved ( int  x1,
int  x2,
int  y1,
int  y2 
)
bool RenderContextBase::LeftMouseDoubleClicked ( int  x,
int  y,
int  m 
)
bool RenderContextBase::LeftMouseDown ( int  x,
int  y 
)
bool RenderContextBase::LeftMouseMoved ( int  x1,
int  x2,
int  y1,
int  y2 
)
bool RenderContextBase::LeftMouseSingleClicked ( int  x,
int  y 
)
bool RenderContextBase::LeftMouseUp ( int  x,
int  y 
)
int RenderContextBase::LockContextSwitch ( )
virtual void BIAS::RenderContextBase::MakeGLContextCurrent ( )
pure virtual

try to make this OpenGl context current

Implemented in BIAS::ContextGLUT, BIAS::ContextWX, and BIAS::ContextPBuffer.

Referenced by LockContextSwitch().

bool RenderContextBase::MiddleMouseDown ( int  x,
int  y 
)
bool RenderContextBase::MiddleMouseMoved ( int  x1,
int  x2,
int  y1,
int  y2 
)
bool RenderContextBase::MiddleMouseUp ( int  x,
int  y 
)
bool RenderContextBase::MouseLeftWindow ( )
bool RenderContextBase::MouseMoved ( int  x,
int  y 
)
bool RenderContextBase::MouseWheelUsed ( double  stepsize)
void RenderContextBase::PrintGLStatus ( )

prints to current status of the OpenGL context

Definition at line 52 of file RenderContextBase.cpp.

virtual void BIAS::RenderContextBase::Redisplay ( )
pure virtual

Demands a rendering from the Context;.

Implemented in BIAS::ContextWX, BIAS::ContextGLUT, and BIAS::ContextPBuffer.

int RenderContextBase::ReleaseContextSwitch ( )
void BIAS::RenderContextBase::RemoveAdditionalListener ( ControlInterface listener)

Definition at line 426 of file RenderContextBase.cpp.

void RenderContextBase::RemoveScene ( SceneBase scene,
bool  noWarning = false 
)

removes scene with the given pointer from the vector of scenes

Definition at line 343 of file RenderContextBase.cpp.

References scenes_.

int RenderContextBase::Render ( )
virtual
bool RenderContextBase::RightMouseDoubleClicked ( int  x,
int  y 
)
bool RenderContextBase::RightMouseDown ( int  x,
int  y 
)
bool RenderContextBase::RightMouseMoved ( int  x1,
int  x2,
int  y1,
int  y2 
)
bool RenderContextBase::RightMouseSingleClicked ( int  x,
int  y 
)
bool RenderContextBase::RightMouseUp ( int  x,
int  y 
)
void BIAS::RenderContextBase::SetAutoClipMinZNear ( double  znear)
inline

sets minimum znear for autoclipping if autoclpiing is enabled the z-near and z-far plane are computed using the boudingspheres of the scenes.

SetAutoClipMinZNear defines the minimal used znear value.

Definition at line 214 of file RenderContextBase.hh.

void BIAS::RenderContextBase::SetAutoClipping ( bool  on)
inline

Turn AutoClipping on, now the near and far clipping plane is automatically derived and set.

Definition at line 208 of file RenderContextBase.hh.

bool RenderContextBase::SetBackfaceCulling ( bool  cull = true)

En-/Disable backface culling.

Definition at line 179 of file RenderContextBase.cpp.

References culling_.

Referenced by Init_().

void RenderContextBase::SetBackgroundImageScene ( SceneBGImage backgroundImageScene)

Deactivate background image rendering pass by passing NULL here, or deactivating scene itself.

First choice will speed up rendering more (if noticeable anyway).

Definition at line 518 of file RenderContextBase.cpp.

References backgroundImageScene_, and SetClearColor().

Referenced by DeleteBackgroundImageScene().

bool RenderContextBase::SetBlending ( bool  blend = true)

En-/Disable blending.

Definition at line 165 of file RenderContextBase.cpp.

References blendingAllowed_.

Referenced by Init_().

void BIAS::RenderContextBase::SetClearColor ( const BIAS::Vector4< float > &  cc)
inline

set the opengl clear color for color buffer

Parameters
cc[in],:clear color, clamped to range [0..1]

Definition at line 227 of file RenderContextBase.hh.

Referenced by SetBackgroundImageScene().

void RenderContextBase::SetControl ( BIAS::ControlInterface newControl)

Control is implemented the following way: cout<<"F1"<<endl; All input is passed to control_ first, if this is not handling the input, the information is passed to all scenes_.

One can think of extending this to different behaviour models, like not passing anything to scenes or always passing input to scenes. Distingushing between the scenes (exluding scene of information) must be handled on scene side.Set the controller.

Parameters
newControl[in],:Pointer to a ControlInterface such as TrackballControl, FlyControl, etc.

Definition at line 526 of file RenderContextBase.cpp.

References camera_, control_, and BIAS::ControlInterface::SetGLProjectionParametersInterface().

void RenderContextBase::SetGLProjectionParametersInterface ( GLProjectionParametersInterface newCamera)

set the camera parameters

Parameters
newCamera[in],:the new camera projection parameters, can be of type GLProjection of any from GLProjectionParametersBase derived class.

Definition at line 488 of file RenderContextBase.cpp.

References camera_, ClearColor_, control_, scenes_, BIAS::GLProjectionParametersInterface::SetClearColor(), and BIAS::ControlInterface::SetGLProjectionParametersInterface().

virtual void BIAS::RenderContextBase::SetSelectionMode ( bool  selectionmode)
inlinevirtual

Enable or disable selection mode.

In selection mode the interception point with a scene is calculated and SelectObjectAt() is called on the scene when double clicked.

Definition at line 257 of file RenderContextBase.hh.

virtual void BIAS::RenderContextBase::SetTimer ( unsigned int  interval)
pure virtual

activate timer with intervall in ms

Implemented in BIAS::ContextGLUT, BIAS::ContextWX, and BIAS::ContextPBuffer.

bool RenderContextBase::SpecialKeyPressed ( int  key)
bool RenderContextBase::SpecialKeyUp ( int  key)
bool RenderContextBase::StandardKeyPressed ( unsigned char  key,
int  x,
int  y 
)
bool RenderContextBase::StandardKeyUp ( unsigned char  key,
int  x,
int  y 
)
bool RenderContextBase::TimerExpired ( )

Always informs both camera and scenes!

Definition at line 878 of file RenderContextBase.cpp.

References additionalListeners_, control_, and BIAS::ControlInterface::TimerExpired().

Referenced by BIAS::WhenIdle_().

bool RenderContextBase::WindowReshape ( int  width,
int  height 
)

Member Data Documentation

std::vector<ControlInterface*> BIAS::RenderContextBase::additionalListeners_
protected
bool BIAS::RenderContextBase::AutoClipping_
protected

Definition at line 282 of file RenderContextBase.hh.

Referenced by Render(), and RenderContextBase().

double BIAS::RenderContextBase::AutoMinZNear_
protected

Definition at line 284 of file RenderContextBase.hh.

Referenced by Render(), and RenderContextBase().

SceneBGImage* BIAS::RenderContextBase::backgroundImageScene_
protected
bool BIAS::RenderContextBase::blendingAllowed_
protected

Definition at line 278 of file RenderContextBase.hh.

Referenced by Init_(), RenderContextBase(), and SetBlending().

bool BIAS::RenderContextBase::bSelectionMode_
protected

Definition at line 283 of file RenderContextBase.hh.

Referenced by LeftMouseDoubleClicked(), and RenderContextBase().

GLProjectionParametersInterface* BIAS::RenderContextBase::camera_
protected
bool BIAS::RenderContextBase::centerViewport_
protected

Definition at line 280 of file RenderContextBase.hh.

Referenced by CenterViewport(), and WindowReshape().

BIAS::Vector4<float> BIAS::RenderContextBase::ClearColor_
protected

Definition at line 271 of file RenderContextBase.hh.

Referenced by Render(), and SetGLProjectionParametersInterface().

ControlInterface* BIAS::RenderContextBase::control_
protected
bool BIAS::RenderContextBase::culling_
protected

Definition at line 279 of file RenderContextBase.hh.

Referenced by Init_(), RenderContextBase(), and SetBackfaceCulling().

bool BIAS::RenderContextBase::initialized_
protected

Definition at line 277 of file RenderContextBase.hh.

Referenced by Init_(), Render(), and RenderContextBase().

std::vector<SceneBase*> BIAS::RenderContextBase::scenes_
protected
unsigned int BIAS::RenderContextBase::TimerInterval_
protected

Definition at line 276 of file RenderContextBase.hh.

Referenced by BIAS::ContextWX::SetTimer().

bool BIAS::RenderContextBase::UseStencil_
protected

Definition at line 281 of file RenderContextBase.hh.

Referenced by EnableStencilUsage(), Render(), and RenderContextBase().


The documentation for this class was generated from the following files: