Main MRPT website > C++ reference
MRPT logo
Classes | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends
mrpt::opengl::COpenGLViewport Class Reference

Detailed Description

A viewport within a COpenGLScene, containing a set of OpenGL objects to render.

This class has protected constuctor, thus it cannot be created by users. Use COpenGLScene::createViewport instead. A viewport has these "operation modes":

In any case, the viewport can be resized to only fit a part of the entire parent viewport. There will be always at least one viewport in a COpenGLScene named "main".

This class can be observed (see mrpt::utils::CObserver) for the following events (see mrpt::utils::mrptEvent):

Refer to mrpt::opengl::COpenGLScene for further details.

#include <mrpt/opengl/COpenGLViewport.h>

Inheritance diagram for mrpt::opengl::COpenGLViewport:
Inheritance graph
[legend]

List of all members.

Classes

struct  TLastProjectiveMatrixInfo

Public Member Functions

virtual ~COpenGLViewport ()
 Destructor: clears all objects.
mrpt::utils::CObjectPtr duplicateGetSmartPtr () const
 Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).
CObjectclone () const
 Cloning interface for smart pointers.
Set the viewport "modes"
void setCloneView (const std::string &clonedViewport)
 Set this viewport as a clone of some other viewport, given its name - as a side effect, current list of internal OpenGL objects is cleared.
void setImageView (const mrpt::utils::CImage &img)
 Set this viewport into "image view"-mode, where an image is efficiently drawn (fitting the viewport area) using an OpenGL textured quad.
void setImageView_fast (mrpt::utils::CImage &img)
 Just like setImageView but moves the internal image memory instead of making a copy, so it's faster but empties the input image.
void resetCloneView ()
 Reset the viewport to normal mode: rendering its own objects.
void setCloneCamera (bool enable)
 If set to true, and setCloneView() has been called, this viewport will be rendered using the camera of the cloned viewport.
void setNormalMode ()
 Resets the viewport to a normal 3D viewport.
Change or read viewport properties (except "viewport modes")
std::string getName ()
 Returns the name of the viewport.
void setViewportPosition (const double x, const double y, const double width, const double height)
 Change the viewport position and dimension on the rendering window.
void getViewportPosition (double &x, double &y, double &width, double &height)
 Get the current viewport position and dimension on the rendering window.
void setViewportClipDistances (const double clip_min, const double clip_max)
 Set the min/max clip depth distances of the rendering frustum (default: 0.1 - 10000)
void getViewportClipDistances (double &clip_min, double &clip_max) const
 Get the current min/max clip depth distances of the rendering frustum (default: 0.1 - 10000)
void setBorderSize (unsigned int lineWidth)
 Set the border size ("frame") of the viewport (default=0).
bool isTransparent ()
 Return whether the viewport will be rendered transparent over previous viewports.
void setTransparent (bool trans)
 Set the transparency, that is, whether the viewport will be rendered transparent over previous viewports (default=false).
void setCustomBackgroundColor (const TColorf &color)
 Set a background color different from that of the parent GUI window.
bool hasCustomBackgroundColor () const
TColorf getCustomBackgroundColor () const
void get3DRayForPixelCoord (const double x_coord, const double y_coord, mrpt::math::TLine3D &out_ray, mrpt::poses::CPose3D *out_cameraPose=NULL) const
 Compute the 3D ray corresponding to a given pixel; this can be used to allow the user to pick and select 3D objects by clicking onto the 2D image.

Static Public Attributes

static const
mrpt::utils::TRuntimeClassId 
classCObject

Protected Member Functions

 COpenGLViewport (COpenGLScene *parent=NULL, const std::string &name=std::string(""))
 Constructor, invoked from COpenGLScene only.
void initializeAllTextures ()
 Initializes all textures in the scene (See opengl::CTexturedPlane::loadTextureInOpenGL)
void dumpListOfObjects (utils::CStringList &lst)
 Retrieves a list of all objects in text form.
void render (const int render_width, const int render_height) const
 Render the objects in this viewport (called from COpenGLScene only)
void internal_setImageView_fast (const mrpt::utils::CImage &img, bool is_fast)
virtual void writeToStream (mrpt::utils::CStream &out, int *getVersion) const =0
 Introduces a pure virtual method responsible for writing to a CStream.
virtual void readFromStream (mrpt::utils::CStream &in, int version)=0
 Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori.
void publishEvent (const mrptEvent &e) const
 Called when you want this object to emit an event to all the observers currently subscribed to this object.
bool hasSubscribers () const
 Can be called by a derived class before preparing an event for publishing with publishEvent to determine if there is no one subscribed, so it can save the wasted time preparing an event that will be not read.

Protected Attributes

opengl::CCamera m_camera
 The camera associated to the viewport.
utils::safe_ptr< COpenGLScenem_parent
 The scene that contains this viewport.
bool m_isCloned
 Set by setCloneView.
bool m_isClonedCamera
 Set by setCloneCamera.
std::string m_clonedViewport
 Only if m_isCloned=true.
std::string m_name
 The viewport's name.
bool m_isTransparent
 Whether to clear color buffer.
uint32_t m_borderWidth
 Default=0, the border around the viewport.
double m_view_x
double m_view_y
double m_view_width
double m_view_height
 The viewport position [0,1].
double m_clip_min
double m_clip_max
 The min/max clip depth distances (default: 0.1 - 10000)
bool m_custom_backgb_color
TColorf m_background_color
 used only if m_custom_backgb_color
bool m_isImageView
 Set by setImageView.
mrpt::utils::CImagePtr m_imageview_img
 The image to display, after calling setImageView()
TLastProjectiveMatrixInfo m_lastProjMat
 Info updated with each "render()" and used in "get3DRayForPixelCoord".
opengl::CListOpenGLObjects m_objects
 The list of objects that comprise the 3D scene.

Friends

class COpenGLScene

RTTI stuff

static const
mrpt::utils::TRuntimeClassId 
classCSerializable
class mrpt::utils::CStream

RTTI stuff

typedef COpenGLViewportPtr SmartPtr
static mrpt::utils::CLASSINIT _init_COpenGLViewport
static mrpt::utils::TRuntimeClassId classCOpenGLViewport
static const
mrpt::utils::TRuntimeClassId
classinfo
static const
mrpt::utils::TRuntimeClassId
_GetBaseClass ()
virtual const
mrpt::utils::TRuntimeClassId
GetRuntimeClass () const
 Returns information about the class of an object in runtime.
virtual mrpt::utils::CObjectduplicate () const
 Returns a copy of the object, indepently of its class.
static mrpt::utils::CObjectCreateObject ()
static COpenGLViewportPtr Create ()

Contained objects set/get/search

typedef
CListOpenGLObjects::const_iterator 
const_iterator
typedef
CListOpenGLObjects::iterator 
iterator
const_iterator begin () const
const_iterator end () const
iterator begin ()
iterator end ()
void clear ()
 Delete all internal obejcts.
void insert (const CRenderizablePtr &newObject)
 Insert a new object into the list.
void getCurrentCameraPose (mrpt::poses::CPose3D &out_cameraPose) const
 Compute the current 3D camera pose.
CRenderizablePtr getByName (const std::string &str)
 Returns the first object with a given name, or NULL if not found.
template<typename T >
T::SmartPtr getByClass (const size_t &ith=0) const
 Returns the i'th object of a given class (or of a descendant class), or NULL (an empty smart pointer) if not found.
void removeObject (const CRenderizablePtr &obj)
 Removes the given object from the scene (it also deletes the object to free its memory).
size_t size () const
 Number of objects contained.
bool empty () const
opengl::CCameragetCamera ()
 Get a reference to the camera associated with this viewport.
const opengl::CCameragetCamera () const
 Get a reference to the camera associated with this viewport.

Member Typedef Documentation

Definition at line 203 of file COpenGLViewport.h.

Definition at line 204 of file COpenGLViewport.h.

A typedef for the associated smart pointer

Definition at line 74 of file COpenGLViewport.h.


Constructor & Destructor Documentation

virtual mrpt::opengl::COpenGLViewport::~COpenGLViewport ( ) [virtual]

Destructor: clears all objects.

mrpt::opengl::COpenGLViewport::COpenGLViewport ( COpenGLScene parent = NULL,
const std::string name = std::string("") 
) [protected]

Constructor, invoked from COpenGLScene only.


Member Function Documentation

static const mrpt::utils::TRuntimeClassId* mrpt::opengl::COpenGLViewport::_GetBaseClass ( ) [static, protected]

Reimplemented from mrpt::utils::CSerializable.

const_iterator mrpt::opengl::COpenGLViewport::begin ( ) const [inline]

Definition at line 206 of file COpenGLViewport.h.

iterator mrpt::opengl::COpenGLViewport::begin ( ) [inline]

Definition at line 208 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::clear ( )

Delete all internal obejcts.

See also:
insert
CObject* mrpt::utils::CObject::clone ( ) const [inline, inherited]

Cloning interface for smart pointers.

Reimplemented in mrpt::opengl::CRenderizable, and mrpt::opengl::CRenderizableDisplayList.

Definition at line 154 of file CObject.h.

static COpenGLViewportPtr mrpt::opengl::COpenGLViewport::Create ( ) [static]
static mrpt::utils::CObject* mrpt::opengl::COpenGLViewport::CreateObject ( ) [static]
void mrpt::opengl::COpenGLViewport::dumpListOfObjects ( utils::CStringList lst) [protected]

Retrieves a list of all objects in text form.

virtual mrpt::utils::CObject* mrpt::opengl::COpenGLViewport::duplicate ( ) const [virtual]

Returns a copy of the object, indepently of its class.

Implements mrpt::utils::CObject.

mrpt::utils::CObjectPtr mrpt::utils::CObject::duplicateGetSmartPtr ( ) const [inline, inherited]

Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).

Definition at line 151 of file CObject.h.

bool mrpt::opengl::COpenGLViewport::empty ( ) const [inline]

Definition at line 267 of file COpenGLViewport.h.

const_iterator mrpt::opengl::COpenGLViewport::end ( ) const [inline]

Definition at line 207 of file COpenGLViewport.h.

iterator mrpt::opengl::COpenGLViewport::end ( ) [inline]

Definition at line 209 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::get3DRayForPixelCoord ( const double  x_coord,
const double  y_coord,
mrpt::math::TLine3D out_ray,
mrpt::poses::CPose3D out_cameraPose = NULL 
) const

Compute the 3D ray corresponding to a given pixel; this can be used to allow the user to pick and select 3D objects by clicking onto the 2D image.

Parameters:
x_coordHorizontal coordinate with the usual meaning (0:left of the viewport, W-1: right border).
y_coordHorizontal coordinate with the usual meaning (0:top of the viewport, H-1: right border).
out_cameraPoseIf not NULL, will have the camera 3D pose as a mrpt::poses::CPose3D. See also
Note:
(x,y) refer to VIEWPORT coordinates. Take into account this when viewports do not extend to the whole window size.
x and y are double instead of integers to allow sub-pixel precision.
See also:
getCurrentCameraPose
template<typename T >
T::SmartPtr mrpt::opengl::COpenGLViewport::getByClass ( const size_t &  ith = 0) const [inline]

Returns the i'th object of a given class (or of a descendant class), or NULL (an empty smart pointer) if not found.

Example:

                                        CSpherePtr obs = view.getByClass<CSphere>();

By default (ith=0), the first observation is returned.

Definition at line 237 of file COpenGLViewport.h.

References MRPT_START, CLASS_ID_NAMESPACE, and MRPT_END.

CRenderizablePtr mrpt::opengl::COpenGLViewport::getByName ( const std::string str)

Returns the first object with a given name, or NULL if not found.

opengl::CCamera& mrpt::opengl::COpenGLViewport::getCamera ( ) [inline]

Get a reference to the camera associated with this viewport.

Definition at line 270 of file COpenGLViewport.h.

const opengl::CCamera& mrpt::opengl::COpenGLViewport::getCamera ( ) const [inline]

Get a reference to the camera associated with this viewport.

Definition at line 272 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::getCurrentCameraPose ( mrpt::poses::CPose3D out_cameraPose) const

Compute the current 3D camera pose.

See also:
get3DRayForPixelCoord
TColorf mrpt::opengl::COpenGLViewport::getCustomBackgroundColor ( ) const [inline]

Definition at line 183 of file COpenGLViewport.h.

std::string mrpt::opengl::COpenGLViewport::getName ( ) [inline]

Returns the name of the viewport.

Definition at line 121 of file COpenGLViewport.h.

virtual const mrpt::utils::TRuntimeClassId* mrpt::opengl::COpenGLViewport::GetRuntimeClass ( ) const [virtual]

Returns information about the class of an object in runtime.

Reimplemented from mrpt::utils::CSerializable.

void mrpt::opengl::COpenGLViewport::getViewportClipDistances ( double &  clip_min,
double &  clip_max 
) const

Get the current min/max clip depth distances of the rendering frustum (default: 0.1 - 10000)

See also:
setViewportClipDistances
void mrpt::opengl::COpenGLViewport::getViewportPosition ( double &  x,
double &  y,
double &  width,
double &  height 
)

Get the current viewport position and dimension on the rendering window.

X & Y coordinates here can have two interpretations:

  • If in the range [0,1], they are factors with respect to the actual window sizes (i.e. width=1 means the entire width of the rendering window).
  • If >1, they are interpreted as pixels.
    Note:
    (x,y) specify the lower left corner of the viewport rectangle.
    See also:
    setViewportPosition
bool mrpt::opengl::COpenGLViewport::hasCustomBackgroundColor ( ) const [inline]

Definition at line 181 of file COpenGLViewport.h.

bool mrpt::utils::CObservable::hasSubscribers ( ) const [inline, protected, inherited]

Can be called by a derived class before preparing an event for publishing with publishEvent to determine if there is no one subscribed, so it can save the wasted time preparing an event that will be not read.

Definition at line 69 of file CObservable.h.

void mrpt::opengl::COpenGLViewport::initializeAllTextures ( ) [protected]

Initializes all textures in the scene (See opengl::CTexturedPlane::loadTextureInOpenGL)

void mrpt::opengl::COpenGLViewport::insert ( const CRenderizablePtr newObject)

Insert a new object into the list.

The object MUST NOT be deleted, it will be deleted automatically by this object when not required anymore.

void mrpt::opengl::COpenGLViewport::internal_setImageView_fast ( const mrpt::utils::CImage img,
bool  is_fast 
) [protected]
bool mrpt::opengl::COpenGLViewport::isTransparent ( ) [inline]

Return whether the viewport will be rendered transparent over previous viewports.

Definition at line 172 of file COpenGLViewport.h.

void mrpt::utils::CObservable::publishEvent ( const mrptEvent e) const [protected, inherited]

Called when you want this object to emit an event to all the observers currently subscribed to this object.

virtual void mrpt::utils::CSerializable::readFromStream ( mrpt::utils::CStream in,
int  version 
) [protected, pure virtual, inherited]

Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori.

Parameters:
inThe input binary stream where the object data must read from.
versionThe version of the object stored in the stream: use this version number in your code to know how to read the incoming data.
Exceptions:
std::exceptionOn any error, see CStream::ReadBuffer
See also:
CStream

Implemented in mrpt::math::CMatrixD, and mrpt::math::CMatrix.

void mrpt::opengl::COpenGLViewport::removeObject ( const CRenderizablePtr obj)

Removes the given object from the scene (it also deletes the object to free its memory).

void mrpt::opengl::COpenGLViewport::render ( const int  render_width,
const int  render_height 
) const [protected]

Render the objects in this viewport (called from COpenGLScene only)

void mrpt::opengl::COpenGLViewport::resetCloneView ( ) [inline]

Reset the viewport to normal mode: rendering its own objects.

See also:
setCloneView, setNormalMode

Definition at line 103 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::setBorderSize ( unsigned int  lineWidth) [inline]

Set the border size ("frame") of the viewport (default=0).

Definition at line 168 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::setCloneCamera ( bool  enable) [inline]

If set to true, and setCloneView() has been called, this viewport will be rendered using the camera of the cloned viewport.

Definition at line 107 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::setCloneView ( const std::string clonedViewport)

Set this viewport as a clone of some other viewport, given its name - as a side effect, current list of internal OpenGL objects is cleared.

By default, only the objects are cloned, not the camera. See

See also:
resetCloneView
void mrpt::opengl::COpenGLViewport::setCustomBackgroundColor ( const TColorf color) [inline]

Set a background color different from that of the parent GUI window.

Definition at line 179 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::setImageView ( const mrpt::utils::CImage img)

Set this viewport into "image view"-mode, where an image is efficiently drawn (fitting the viewport area) using an OpenGL textured quad.

Call this method with the new image to update the displayed image (but recall to first lock the parent openglscene's critical section, then do the update, then release the lock, and then issue a window repaint). Internally, the texture is drawn using a mrpt::opengl::CTexturedPlane The viewport can be reverted to behave like a normal viewport by calling setNormalMode()

See also:
setImageView_fast
void mrpt::opengl::COpenGLViewport::setImageView_fast ( mrpt::utils::CImage img)

Just like setImageView but moves the internal image memory instead of making a copy, so it's faster but empties the input image.

See also:
setImageView
void mrpt::opengl::COpenGLViewport::setNormalMode ( )

Resets the viewport to a normal 3D viewport.

See also:
setCloneView, setImageView
void mrpt::opengl::COpenGLViewport::setTransparent ( bool  trans) [inline]

Set the transparency, that is, whether the viewport will be rendered transparent over previous viewports (default=false).

Definition at line 176 of file COpenGLViewport.h.

void mrpt::opengl::COpenGLViewport::setViewportClipDistances ( const double  clip_min,
const double  clip_max 
)

Set the min/max clip depth distances of the rendering frustum (default: 0.1 - 10000)

See also:
getViewportClipDistances
void mrpt::opengl::COpenGLViewport::setViewportPosition ( const double  x,
const double  y,
const double  width,
const double  height 
)

Change the viewport position and dimension on the rendering window.

X & Y coordinates here can have two interpretations:

  • If in the range [0,1], they are factors with respect to the actual window sizes (i.e. width=1 means the entire width of the rendering window).
  • If >1, they are interpreted as pixels.

width & height can be interpreted as:

  • If >1, they are the size of the viewport in that dimension, in pixels.
  • If in [0,1], they are the size of the viewport in that dimension, in a factor of the width/height.
  • If in [-1,0[, the size is computed such as the right/top border ends up in the given coordinate, interpreted as a factor (e.g. -1: up to the end of the viewport, -0.5: up to the middle of it).
  • If <-1 the size is computed such as the right/top border ends up in the given absolute coordinate (e.g. -200: up to the row/column 200px).
Note:
(x,y) specify the lower left corner of the viewport rectangle.
See also:
getViewportPosition
size_t mrpt::opengl::COpenGLViewport::size ( ) const [inline]

Number of objects contained.

Definition at line 265 of file COpenGLViewport.h.

virtual void mrpt::utils::CSerializable::writeToStream ( mrpt::utils::CStream out,
int *  getVersion 
) const [protected, pure virtual, inherited]

Introduces a pure virtual method responsible for writing to a CStream.

This can not be used directly be users, instead use "stream << object;" for writing it to a stream.

Parameters:
outThe output binary stream where object must be dumped.
getVersionIf NULL, the object must be dumped. If not, only the version of the object dump must be returned in this pointer. This enables the versioning of objects dumping and backward compatibility with previously stored data.
Exceptions:
std::exceptionOn any error, see CStream::WriteBuffer
See also:
CStream

Implemented in mrpt::math::CMatrixD, and mrpt::math::CMatrix.


Friends And Related Function Documentation

friend class COpenGLScene [friend]

Definition at line 75 of file COpenGLViewport.h.

friend class mrpt::utils::CStream [friend, inherited]

Member Data Documentation

Definition at line 74 of file COpenGLViewport.h.

Definition at line 139 of file CObject.h.

Definition at line 74 of file COpenGLViewport.h.

Definition at line 56 of file CSerializable.h.

Definition at line 74 of file COpenGLViewport.h.

used only if m_custom_backgb_color

Definition at line 309 of file COpenGLViewport.h.

Default=0, the border around the viewport.

Definition at line 305 of file COpenGLViewport.h.

The camera associated to the viewport.

Definition at line 298 of file COpenGLViewport.h.

The min/max clip depth distances (default: 0.1 - 10000)

Definition at line 307 of file COpenGLViewport.h.

Definition at line 307 of file COpenGLViewport.h.

Only if m_isCloned=true.

Definition at line 302 of file COpenGLViewport.h.

Definition at line 308 of file COpenGLViewport.h.

The image to display, after calling setImageView()

Definition at line 312 of file COpenGLViewport.h.

Set by setCloneView.

Definition at line 300 of file COpenGLViewport.h.

Set by setCloneCamera.

Definition at line 301 of file COpenGLViewport.h.

Set by setImageView.

Definition at line 310 of file COpenGLViewport.h.

Whether to clear color buffer.

Definition at line 304 of file COpenGLViewport.h.

Info updated with each "render()" and used in "get3DRayForPixelCoord".

Definition at line 327 of file COpenGLViewport.h.

The viewport's name.

Definition at line 303 of file COpenGLViewport.h.

The list of objects that comprise the 3D scene.

Objects are automatically deleted when calling "clear" or in the destructor.

Definition at line 332 of file COpenGLViewport.h.

The scene that contains this viewport.

Definition at line 299 of file COpenGLViewport.h.

The viewport position [0,1].

Definition at line 306 of file COpenGLViewport.h.

Definition at line 306 of file COpenGLViewport.h.

Definition at line 306 of file COpenGLViewport.h.

Definition at line 306 of file COpenGLViewport.h.




Page generated by Doxygen 1.7.5 for MRPT 0.9.5 SVN: at Thu Oct 13 21:25:36 UTC 2011