boost dependency has been removed

pull/1453/head
ozantonkal 12 years ago
parent e10582ce4f
commit 6603cc4405
  1. 19
      modules/viz/CMakeLists.txt
  2. 3
      modules/viz/include/opencv2/viz/viz3d.hpp
  3. 73
      modules/viz/src/interactor_style.cpp
  4. 4
      modules/viz/src/precomp.hpp
  5. 38
      modules/viz/src/q/interactor_style.h
  6. 48
      modules/viz/src/q/viz3d_impl.hpp
  7. 5
      modules/viz/src/viz3d.cpp
  8. 5
      modules/viz/src/viz_main.cpp

@ -36,26 +36,7 @@ macro(find_vtk)
endif() endif()
endmacro() endmacro()
macro(find_boost)
# Disable the config mode of find_package(Boost)
set(Boost_NO_BOOST_CMAKE ON)
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost 1.49.0 REQUIRED COMPONENTS system thread)
if(Boost_FOUND)
set(HAVE_BOOST ON)
# Obtain diagnostic information about Boost's automatic linking outputted during compilation time.
add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
message(STATUS "Boost found (include: ${Boost_INCLUDE_DIRS})")
endif()
endmacro()
find_vtk() find_vtk()
find_boost()
find_package(OpenGL) find_package(OpenGL)

@ -59,7 +59,8 @@ namespace temp_viz
void spin (); void spin ();
void spinOnce (int time = 1, bool force_redraw = false); void spinOnce (int time = 1, bool force_redraw = false);
void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie = NULL); void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie = 0);
void registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie = 0);
private: private:
Viz3d(const Viz3d&); Viz3d(const Viz3d&);

@ -36,9 +36,13 @@ void temp_viz::InteractorStyle::Initialize ()
init_ = true; init_ = true;
stereo_anaglyph_mask_default_ = true; stereo_anaglyph_mask_default_ = true;
// Initialize the keyboard callback as none // Initialize the keyboard event callback as none
keyboardCallback_ = NULL; keyboardCallback_ = 0;
keyboard_callback_cookie_ = NULL; keyboard_callback_cookie_ = 0;
// Initialize the mouse event callback as none
mouseCallback_ = 0;
mouse_callback_cookie_ = 0;
} }
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////
@ -142,23 +146,19 @@ void temp_viz::InteractorStyle::OnChar ()
} }
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////
boost::signals2::connection temp_viz::InteractorStyle::registerMouseCallback (boost::function<void (const cv::MouseEvent&)> callback) void temp_viz::InteractorStyle::registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie)
{ {
return (mouse_signal_.connect (callback)); // Register the callback function and store the user data
mouseCallback_ = callback;
mouse_callback_cookie_ = cookie;
} }
//////////////////////////////////////////////////////////////////////////////////////////////
// boost::signals2::connection temp_viz::InteractorStyle::registerKeyboardCallback (boost::function<void (const cv::KeyboardEvent&)> callback)
// {
// return (keyboard_signal_.connect (callback));
// }
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////
void temp_viz::InteractorStyle::registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void *cookie) void temp_viz::InteractorStyle::registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void *cookie)
{ {
/* Register the new callback function by assigning it to the internal callback function pointer */ // Register the callback function and store the user data
keyboardCallback_ = callback; keyboardCallback_ = callback;
keyboard_callback_cookie_ = NULL; keyboard_callback_cookie_ = cookie;
} }
////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////
@ -521,9 +521,8 @@ temp_viz::InteractorStyle::OnKeyDown ()
KeyboardEvent event (true, Interactor->GetKeySym (), Interactor->GetKeyCode (), Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); KeyboardEvent event (true, Interactor->GetKeySym (), Interactor->GetKeyCode (), Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
// Check if there is a keyboard callback registered // Check if there is a keyboard callback registered
if (keyboardCallback_ != NULL) if (keyboardCallback_)
keyboardCallback_(event, keyboard_callback_cookie_); keyboardCallback_(event, keyboard_callback_cookie_);
//keyboard_signal_ (event);
renderer_->Render (); renderer_->Render ();
Interactor->Render (); Interactor->Render ();
@ -534,9 +533,9 @@ void temp_viz::InteractorStyle::OnKeyUp ()
{ {
KeyboardEvent event (false, Interactor->GetKeySym (), Interactor->GetKeyCode (), Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); KeyboardEvent event (false, Interactor->GetKeySym (), Interactor->GetKeyCode (), Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
// Check if there is a keyboard callback registered // Check if there is a keyboard callback registered
if (keyboardCallback_ != NULL) if (keyboardCallback_)
keyboardCallback_(event, keyboard_callback_cookie_); keyboardCallback_(event, keyboard_callback_cookie_);
// keyboard_signal_ (event);
Superclass::OnKeyUp (); Superclass::OnKeyUp ();
} }
@ -545,7 +544,8 @@ void temp_viz::InteractorStyle::OnMouseMove ()
{ {
Vec2i p(Interactor->GetEventPosition()); Vec2i p(Interactor->GetEventPosition());
MouseEvent event (MouseEvent::MouseMove, MouseEvent::NoButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); MouseEvent event (MouseEvent::MouseMove, MouseEvent::NoButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
mouse_signal_ (event); if (mouseCallback_)
mouseCallback_(event, mouse_callback_cookie_);
Superclass::OnMouseMove (); Superclass::OnMouseMove ();
} }
@ -555,7 +555,8 @@ void temp_viz::InteractorStyle::OnLeftButtonDown ()
Vec2i p(Interactor->GetEventPosition()); Vec2i p(Interactor->GetEventPosition());
MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick; MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick;
MouseEvent event (type, MouseEvent::LeftButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); MouseEvent event (type, MouseEvent::LeftButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
mouse_signal_ (event); if (mouseCallback_)
mouseCallback_(event, mouse_callback_cookie_);
Superclass::OnLeftButtonDown (); Superclass::OnLeftButtonDown ();
} }
@ -564,7 +565,8 @@ void temp_viz::InteractorStyle::OnLeftButtonUp ()
{ {
Vec2i p(Interactor->GetEventPosition()); Vec2i p(Interactor->GetEventPosition());
MouseEvent event (MouseEvent::MouseButtonRelease, MouseEvent::LeftButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); MouseEvent event (MouseEvent::MouseButtonRelease, MouseEvent::LeftButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
mouse_signal_ (event); if (mouseCallback_)
mouseCallback_(event, mouse_callback_cookie_);
Superclass::OnLeftButtonUp (); Superclass::OnLeftButtonUp ();
} }
@ -575,7 +577,8 @@ void temp_viz::InteractorStyle::OnMiddleButtonDown ()
MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick; MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick;
MouseEvent event (type, MouseEvent::MiddleButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); MouseEvent event (type, MouseEvent::MiddleButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
mouse_signal_ (event); if (mouseCallback_)
mouseCallback_(event, mouse_callback_cookie_);
Superclass::OnMiddleButtonDown (); Superclass::OnMiddleButtonDown ();
} }
@ -584,7 +587,8 @@ void temp_viz::InteractorStyle::OnMiddleButtonUp ()
{ {
Vec2i p(Interactor->GetEventPosition()); Vec2i p(Interactor->GetEventPosition());
MouseEvent event (MouseEvent::MouseButtonRelease, MouseEvent::MiddleButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); MouseEvent event (MouseEvent::MouseButtonRelease, MouseEvent::MiddleButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
mouse_signal_ (event); if (mouseCallback_)
mouseCallback_(event, mouse_callback_cookie_);
Superclass::OnMiddleButtonUp (); Superclass::OnMiddleButtonUp ();
} }
@ -595,7 +599,8 @@ void temp_viz::InteractorStyle::OnRightButtonDown ()
MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick; MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick;
MouseEvent event (type, MouseEvent::RightButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); MouseEvent event (type, MouseEvent::RightButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
mouse_signal_ (event); if (mouseCallback_)
mouseCallback_(event, mouse_callback_cookie_);
Superclass::OnRightButtonDown (); Superclass::OnRightButtonDown ();
} }
@ -604,7 +609,8 @@ void temp_viz::InteractorStyle::OnRightButtonUp ()
{ {
Vec2i p(Interactor->GetEventPosition()); Vec2i p(Interactor->GetEventPosition());
MouseEvent event (MouseEvent::MouseButtonRelease, MouseEvent::RightButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); MouseEvent event (MouseEvent::MouseButtonRelease, MouseEvent::RightButton, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
mouse_signal_ (event); if (mouseCallback_)
mouseCallback_(event, mouse_callback_cookie_);
Superclass::OnRightButtonUp (); Superclass::OnRightButtonUp ();
} }
@ -613,9 +619,11 @@ void temp_viz::InteractorStyle::OnMouseWheelForward ()
{ {
Vec2i p(Interactor->GetEventPosition()); Vec2i p(Interactor->GetEventPosition());
MouseEvent event (MouseEvent::MouseScrollUp, MouseEvent::VScroll, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); MouseEvent event (MouseEvent::MouseScrollUp, MouseEvent::VScroll, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
mouse_signal_ (event); // If a mouse callback registered, call it!
if (Interactor->GetRepeatCount ()) if (mouseCallback_)
mouse_signal_ (event); mouseCallback_(event, mouse_callback_cookie_);
if (Interactor->GetRepeatCount () && mouseCallback_)
mouseCallback_(event, mouse_callback_cookie_);
if (Interactor->GetAltKey ()) if (Interactor->GetAltKey ())
{ {
@ -643,10 +651,13 @@ void temp_viz::InteractorStyle::OnMouseWheelBackward ()
{ {
Vec2i p(Interactor->GetEventPosition()); Vec2i p(Interactor->GetEventPosition());
MouseEvent event (MouseEvent::MouseScrollDown, MouseEvent::VScroll, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ()); MouseEvent event (MouseEvent::MouseScrollDown, MouseEvent::VScroll, p, Interactor->GetAltKey (), Interactor->GetControlKey (), Interactor->GetShiftKey ());
mouse_signal_ (event); // If a mouse callback registered, call it!
if (Interactor->GetRepeatCount ()) if (mouseCallback_)
mouse_signal_ (event); mouseCallback_(event, mouse_callback_cookie_);
if (Interactor->GetRepeatCount () && mouseCallback_)
mouseCallback_(event, mouse_callback_cookie_);
if (Interactor->GetAltKey ()) if (Interactor->GetAltKey ())
{ {
// zoom // zoom

@ -4,11 +4,11 @@
#include <map> #include <map>
#include <vector> #include <vector>
/*
#include <boost/function.hpp> #include <boost/function.hpp>
#include <boost/bind.hpp> #include <boost/bind.hpp>
#include <boost/signals2.hpp> #include <boost/signals2.hpp>
#include <boost/thread.hpp> #include <boost/thread.hpp>*/
#include <Eigen/Geometry> #include <Eigen/Geometry>

@ -56,38 +56,22 @@ namespace temp_viz
*/ */
inline void setCloudActorMap (const cv::Ptr<CloudActorMap>& actors) { actors_ = actors; } inline void setCloudActorMap (const cv::Ptr<CloudActorMap>& actors) { actors_ = actors; }
/** \brief Pass a set of renderers to the interactor style. /** \brief Pass a set of renderers to the interactor style.
* \param[in] rens the vtkRendererCollection to use * \param[in] rens the vtkRendererCollection to use
*/ */
void setRenderer (vtkSmartPointer<vtkRenderer>& ren) { renderer_ = ren; } void setRenderer (vtkSmartPointer<vtkRenderer>& ren) { renderer_ = ren; }
/** \brief Register a callback function for mouse events /** \brief Register a callback function for mouse events
* \param[in] cb a boost function that will be registered as a callback for a mouse event * \param[in] ccallback function that will be registered as a callback for a mouse event
* \return a connection object that allows to disconnect the callback function. * \param[in] cookie for passing user data to callback
*/ */
boost::signals2::connection registerMouseCallback (boost::function<void (const cv::MouseEvent&)> cb); void registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie = 0);
/** \brief Register a callback function for keyboard events /** \brief Register a callback function for keyboard events
* \param[in] callback a function that will be registered as a callback for a keyboard event * \param[in] callback a function that will be registered as a callback for a keyboard event
* \param[in] cookie user data passed to the callback function * \param[in] cookie user data passed to the callback function
*/ */
void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void * cookie = NULL); void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void * cookie = 0);
// TODO Implement callback function as a method of an instance
/** \brief Register a callback function for keyboard input
* \param[in] callback function that will be registered as a callback for a keyboard event
* \param[in] instance the instance that the callback function belongs to
* \param[in] cookie for passing user data to callback
*/
// template<typename T> inline void registerKeyboardCallback(void (T::*callback)(const cv::KeyboardEvent&, void*), T& instance, void* cookie = NULL)
// {
// registerKeyboardCallback(callback, cookie);
// // Set the instance for calling the callback
// keyboard_callback_instance_ = (void *) &instance;
//
// }
/** \brief Save the current rendered image to disk, as a PNG screenshot. /** \brief Save the current rendered image to disk, as a PNG screenshot.
* \param[in] file the name of the PNG file * \param[in] file the name of the PNG file
@ -127,9 +111,6 @@ namespace temp_viz
/** \brief Internal window to image filter. Needed by \a snapshot_writer_. */ /** \brief Internal window to image filter. Needed by \a snapshot_writer_. */
vtkSmartPointer<vtkWindowToImageFilter> wif_; vtkSmartPointer<vtkWindowToImageFilter> wif_;
boost::signals2::signal<void (const cv::MouseEvent&)> mouse_signal_;
boost::signals2::signal<void (const cv::KeyboardEvent&)> keyboard_signal_;
/** \brief Interactor style internal method. Gets called whenever a key is pressed. */ /** \brief Interactor style internal method. Gets called whenever a key is pressed. */
virtual void OnChar (); virtual void OnChar ();
@ -161,9 +142,14 @@ namespace temp_viz
/** \brief The keyboard modifier to use. Default: Alt. */ /** \brief The keyboard modifier to use. Default: Alt. */
KeyboardModifier modifier_; KeyboardModifier modifier_;
/** \brief Keyboard-Callback function */ /** \brief KeyboardEvent callback function pointer*/
void (*keyboardCallback_)(const cv::KeyboardEvent&, void*); void (*keyboardCallback_)(const cv::KeyboardEvent&, void*);
/** \brief KeyboardEvent callback user data*/
void *keyboard_callback_cookie_; void *keyboard_callback_cookie_;
void *keyboard_callback_instance_;
/** \brief MouseEvent callback function pointer */
void (*mouseCallback_)(const cv::MouseEvent&, void*);
/** \brief MouseEvent callback user data */
void *mouse_callback_cookie_;
}; };
} }

@ -27,53 +27,13 @@ public:
* \param[in] callback function that will be registered as a callback for a keyboard event * \param[in] callback function that will be registered as a callback for a keyboard event
* \param[in] cookie for passing user data to callback * \param[in] cookie for passing user data to callback
*/ */
void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie = NULL); void registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie = 0);
// TODO Implement callback function as a method of an instance
/** \brief Register a callback function for keyboard input
* \param[in] callback function that will be registered as a callback for a keyboard event
* \param[in] instance the instance that the callback function belongs to
* \param[in] cookie for passing user data to callback
*/
// template<typename T> inline void registerKeyboardCallback(void (T::*callback)(const cv::KeyboardEvent&, void*), T& instance, void* cookie = NULL)
// { }
// /** \brief Register a callback boost::function for keyboard events
// * \param[in] cb a boost function that will be registered as a callback for a keyboard event
// * \return a connection object that allows to disconnect the callback function.
// */
// void registerKeyboardCallback (boost::function<void (const cv::KeyboardEvent&)> cb);
// inline boost::signals2::connection registerKeyboardCallback (void (*callback) (const cv::KeyboardEvent&, void*), void* cookie = NULL)
// { return (registerKeyboardCallback (boost::bind (callback, _1, cookie))); }
//
// /** \brief Register a callback function for keyboard events
// * \param[in] callback the member function that will be registered as a callback for a keyboard event
// * \param[in] instance instance to the class that implements the callback function
// * \param[in] cookie user data that is passed to the callback
// * \return a connection object that allows to disconnect the callback function.
// */
// template<typename T> inline boost::signals2::connection registerKeyboardCallback (void (T::*callback) (const cv::KeyboardEvent&, void*), T& instance, void* cookie = NULL)
// { return (registerKeyboardCallback (boost::bind (callback, boost::ref (instance), _1, cookie))); }
/** \brief Register a callback function for mouse events
* \param[in] cb a boost function that will be registered as a callback for a mouse event
* \return a connection object that allows to disconnect the callback function.
*/
boost::signals2::connection registerMouseCallback (boost::function<void (const cv::MouseEvent&)> cb);
inline boost::signals2::connection registerMouseCallback (void (*callback) (const cv::MouseEvent&, void*), void* cookie = NULL)
{ return (registerMouseCallback (boost::bind (callback, _1, cookie))); }
/** \brief Register a callback function for mouse events /** \brief Register a callback function for mouse events
* \param[in] callback the member function that will be registered as a callback for a mouse event * \param[in] ccallback function that will be registered as a callback for a mouse event
* \param[in] instance instance to the class that implements the callback function * \param[in] cookie for passing user data to callback
* \param[in] cookie user data that is passed to the callback
* \return a connection object that allows to disconnect the callback function.
*/ */
template<typename T> inline boost::signals2::connection registerMouseCallback (void (T::*callback) (const cv::MouseEvent&, void*), T& instance, void* cookie = NULL) void registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie = 0);
{ return (registerMouseCallback (boost::bind (callback, boost::ref (instance), _1, cookie))); }
void spin (); void spin ();
void spinOnce (int time = 1, bool force_redraw = false); void spinOnce (int time = 1, bool force_redraw = false);

@ -96,4 +96,9 @@ bool temp_viz::Viz3d::removeCoordinateSystem (const String &id)
void temp_viz::Viz3d::registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie) void temp_viz::Viz3d::registerKeyboardCallback(void (*callback)(const cv::KeyboardEvent&, void*), void* cookie)
{ {
impl_->registerKeyboardCallback(callback, cookie); impl_->registerKeyboardCallback(callback, cookie);
}
void temp_viz::Viz3d::registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie)
{
impl_->registerMouseCallback(callback, cookie);
} }

@ -95,9 +95,10 @@ temp_viz::Viz3d::VizImpl::~VizImpl ()
void temp_viz::Viz3d::VizImpl::saveScreenshot (const std::string &file) { style_->saveScreenshot (file); } void temp_viz::Viz3d::VizImpl::saveScreenshot (const std::string &file) { style_->saveScreenshot (file); }
///////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////
boost::signals2::connection temp_viz::Viz3d::VizImpl::registerMouseCallback (boost::function<void (const cv::MouseEvent&)> callback) void temp_viz::Viz3d::VizImpl::registerMouseCallback(void (*callback)(const cv::MouseEvent&, void*), void* cookie)
{ {
return (style_->registerMouseCallback (callback)); // Register the callback function in the interactor style
style_->registerMouseCallback(callback, cookie);
} }
///////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////

Loading…
Cancel
Save