9 #ifndef opengl_COpenGLViewport_H 10 #define opengl_COpenGLViewport_H 25 namespace utils {
class CImage; }
57 public
mrpt::utils::CSerializable,
58 public
mrpt::utils::CObservable
71 void setCloneView( const
std::
string &clonedViewport );
79 void setImageView(const
mrpt::utils::CImage &
img);
84 void setImageView_fast(
mrpt::utils::CImage &
img);
89 inline
void resetCloneView() { setNormalMode(); }
144 void setViewportPosition(
157 void getViewportPosition(
166 void setViewportClipDistances(
const double clip_min,
const double clip_max);
171 void getViewportClipDistances(
double &clip_min,
double &clip_max)
const;
175 inline void setBorderSize(
unsigned int lineWidth ) { m_borderWidth = lineWidth; }
223 void insert(
const CRenderizablePtr &newObject );
232 CRenderizablePtr getByName(
const std::string &str );
241 template <
typename T>
245 size_t foundCount = 0;
248 if ( (*it).present() && (*it)->GetRuntimeClass()->derivedFrom( class_ID ) )
249 if (foundCount++ == ith)
250 return typename T::Ptr(*it);
257 typename T::Ptr o = CSetOfObjectsPtr(*it)->getByClass<T>(ith);
258 if (o.present())
return o;
261 return typename T::Ptr();
267 void removeObject(
const CRenderizablePtr &
obj );
270 inline size_t size()
const {
return m_objects.size(); }
272 inline bool empty()
const {
return m_objects.empty(); }
295 void initializeAllTextures();
302 void render(
const int render_width,
const int render_height )
const;
313 double m_view_x,
m_view_y,m_view_width,m_view_height;
323 TLastProjectiveMatrixInfo() :
eye(0,0,0),pointing(0,0,0),up(0,0,0), viewport_width(640), viewport_height(480), FOV(30),
azimuth(0), elev(0), zoom(1),is_projective(true)
353 inline COpenGLViewportPtr &operator<<(COpenGLViewportPtr &
s,const CRenderizablePtr &
r) {
361 inline COpenGLViewportPtr &operator<<(COpenGLViewportPtr &s,const std::vector<CRenderizablePtr> &
v) {
opengl::CListOpenGLObjects m_objects
The list of objects that comprise the 3D scene.
void setBorderSize(unsigned int lineWidth)
Set the border size ("frame") of the viewport (default=0).
const COpenGLViewport *const source_viewport
const_iterator begin() const
mrpt::utils::CImagePtr m_imageview_img
The image to display, after calling setImageView()
bool m_isTransparent
Whether to clear color buffer.
opengl::CCamera & getCamera()
Get a reference to the camera associated with this viewport.
A set of object, which are referenced to the coordinates framework established in this object...
uint32_t m_borderWidth
Default=0, the border around the viewport.
The virtual base class which provides a unified interface for all persistent objects in MRPT...
mrptEventGLPostRender(const COpenGLViewport *obj)
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
A class for storing images as grayscale or RGB bitmaps.
The basic event type for the observer-observable pattern in MRPT.
std::vector< CLight > m_lights
#define ASSERT_BELOW_(__A, __B)
bool m_custom_backgb_color
std::deque< CRenderizablePtr > CListOpenGLObjects
A list of objects pointers, automatically managing memory free at destructor, and managing copies cor...
CLight & getLight(const size_t i)
const Scalar * const_iterator
const opengl::CCamera & getCamera() const
Get a reference to the camera associated with this viewport.
mrpt::utils::TColorf m_background_color
used only if m_custom_backgb_color
CListOpenGLObjects::iterator iterator
mrpt::math::TPoint3D eye
The camera is here.
GLsizei GLsizei GLuint * obj
void clear()
Clear the contents of this container.
const CLight & getLight(const size_t i) const
A viewport within a COpenGLScene, containing a set of OpenGL objects to render.
void setCloneCamera(bool enable)
If set to true, and setCloneView() has been called, this viewport will be rendered using the camera o...
Each of the possible lights of a 3D scene.
const COpenGLViewport *const source_viewport
bool m_isClonedCamera
Set by setCloneCamera.
void do_nothing() MRPT_OVERRIDE
Just to allow this class to be polymorphic.
A class for storing a list of text lines.
bool m_isImageView
Set by setImageView.
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
const_iterator end() const
mrpt::math::TPoint3D up
Up vector of the camera.
TLastProjectiveMatrixInfo m_lastProjMat
Info updated with each "render()" and used in "get3DRayForPixelCoord".
bool m_OpenGL_enablePolygonNicest
GLsizei const GLchar ** string
bool isPolygonNicestEnabled() const
void do_nothing() MRPT_OVERRIDE
Just to allow this class to be polymorphic.
mrpt::math::TPoint3D pointing
The camera points to here.
size_t size() const
Number of objects contained.
mrptEventGLPreRender(const COpenGLViewport *obj)
#define CLASS_ID_NAMESPACE(class_name, namespaceName)
Access to runtime class ID for a defined class name.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
TLastProjectiveMatrixInfo()
GLdouble GLdouble GLdouble r
An event sent by an mrpt::opengl::COpenGLViewport just after clearing the viewport and setting the GL...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
float elev
Camera elev & azimuth, in radians.
An event sent by an mrpt::opengl::COpenGLViewport after calling the scene OpenGL drawing primitives a...
void enablePolygonNicest(bool enable=true)
Sets glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST) is enabled, or GL_FASTEST otherwise.
CListOpenGLObjects::const_iterator const_iterator
mrpt::utils::TColorf getCustomBackgroundColor() const
The namespace for 3D scene representation and rendering.
GLuint const GLchar * name
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives...
void setTransparent(bool trans)
Set the transparency, that is, whether the viewport will be rendered transparent over previous viewpo...
A RGB color - floats in the range [0,1].
std::string m_clonedViewport
Only if m_isCloned=true.
void lightsClearAll()
Removes all lights (and disables the global "GL_LIGHTING")
std::string getName()
Returns the name of the viewport.
void addLight(const CLight &l)
Append a new light to the scene.
T::Ptr 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)...
void setCustomBackgroundColor(const mrpt::utils::TColorf &color)
Set a background color different from that of the parent GUI window.
A structure that holds runtime class type information.
EIGEN_STRONG_INLINE void eye()
Make the matrix an identity matrix.
A camera: if added to a scene, the viewpoint defined by this camera will be used instead of the camer...
GLenum GLsizei GLsizei height
unsigned __int32 uint32_t
bool isTransparent()
Return whether the viewport will be rendered transparent over previous viewports. ...
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
utils::safe_ptr< COpenGLScene > m_parent
The scene that contains this viewport.
opengl::CCamera m_camera
The camera associated to the viewport.
A wrapper class for pointers that can be safely copied with "=" operator without problems.
std::string m_name
The viewport's name.
bool m_isCloned
Set by setCloneView.
3D line, represented by a base point and a director vector.
void setNumberOfLights(const size_t N)
Allocates a number of lights, which must be correctly defined via getLight(i), etc.