11 #include <mrpt/config.h>    22 #if MRPT_HAS_WXWIDGETS    25 #include <wx/artprov.h>    26 #include <wx/bitmap.h>    27 #include <wx/busyinfo.h>    28 #include <wx/colordlg.h>    29 #include <wx/dcmemory.h>    30 #include <wx/dirdlg.h>    31 #include <wx/filedlg.h>    34 #include <wx/imaglist.h>    38 #include <wx/msgdlg.h>    40 #include <wx/progdlg.h>    42 #include <wx/statbmp.h>    43 #include <wx/statusbr.h>    44 #include <wx/string.h>    45 #include <wx/textdlg.h>    47 #include <wx/toolbar.h>    50 #include <mrpt/3rdparty/mathplot/mathplot.h>    54 #include <wx/bars/barplot.h>    55 #include <wx/chartpanel.h>    57 #include <wx/axis/categoryaxis.h>    58 #include <wx/axis/dateaxis.h>    59 #include <wx/axis/numberaxis.h>    61 #include <wx/xy/xydataset.h>    62 #include <wx/xy/xyhistorenderer.h>    63 #include <wx/xy/xylinerenderer.h>    64 #include <wx/xy/xyplot.h>    65 #include <wx/xy/xysimpledataset.h>    67 #include <wx/xyz/bubbleplot.h>    68 #include <wx/xyz/xyzdataset.h>    70 #include <wx/category/categorydataset.h>    71 #include <wx/category/categorysimpledataset.h>    98 #if MRPT_HAS_WXWIDGETS   163         DECLARE_EVENT_TABLE()
   311 #if MRPT_HAS_WXWIDGETS   329             wxWindow* parent, wxWindowID winID, 
int x, 
int y, 
int width,
   341         void OnPaint(wxPaintEvent& ev);
   344         void OnChar(wxKeyEvent& ev);
   355         const std::string& caption = std::string(
"[MRPT-CDisplayWindow]"),
   356         wxSize initialSize = wxDefaultSize);
   368     void OnClose(wxCloseEvent& event);
   372     void OnChar(wxKeyEvent& event);
   378     DECLARE_EVENT_TABLE()
   389         const std::string& caption = std::string(
"[MRPT-CDisplayWindow3D]"),
   390         wxSize initialSize = wxDefaultSize);
   399     void OnClose(wxCloseEvent& event);
   402     void OnChar(wxKeyEvent& event);
   408     DECLARE_EVENT_TABLE()
   419         const std::string& caption = std::string(
"[MRPT-CDisplayWindowPlots]"),
   420         wxSize initialSize = wxDefaultSize);
   446         const std::string& lineFormat, 
const std::string& plotName);
   452         const std::string& lineFormat, 
const std::string& plotName,
   453         bool showName = 
false);
   458         void* theWxImage, 
float x0, 
float y0, 
float w, 
float h,
   459         const std::string& plotName);
   462     void OnClose(wxCloseEvent& event);
   466     void OnChar(wxKeyEvent& event);
   470     DECLARE_EVENT_TABLE()
 An auxiliary global object used just to launch a final request to the wxSubsystem for shutdown: ...
 
std::map< long, long > m_ID2ID
wxIDs to user IDs for submenus. 
 
std::unique_ptr< wxBitmap > m_img
 
static void pushPendingWxRequest(TRequestToWxMainThread *data)
Thread-safe method to insert a new pending request (The memory must be dinamically allocated with "ne...
 
void * voidPtr
Parameters, depending on OPCODE. 
 
void OnMenuAbout(wxCommandEvent &event)
 
static TRequestToWxMainThread * popPendingWxRequest()
Thread-safe method to return the next pending request, or nullptr if there is none (After usage...
 
void OnClose(wxCloseEvent &event)
 
mrpt::gui::CDisplayWindow3D * source3D
Only one of source* can be non-nullptr, indicating the class that generated the request. 
 
void OnMenuSave(wxCommandEvent &event)
 
friend class gui::CMyGLCanvas_DisplayWindow3D
 
void OnResize(wxSizeEvent &event)
 
The data structure for each inter-thread request: 
 
~CAuxWxSubsystemShutdowner()
 
static std::mutex cs_windowCount
 
Template for column vectors of dynamic size, compatible with Eigen. 
 
Create a GUI window and display plots with MATLAB-like interfaces and commands. 
 
static int notifyWindowCreation()
Atomically increments the number of windows created with the main frame as parent. 
 
void AssignImage(wxBitmap *img)
Assigns this image. 
 
void OnTimerProcessRequests(wxTimerEvent &event)
This method processes the pending requests from the main MRPT application thread. ...
 
static std::mutex * cs_listPendingWxRequests
 
std::thread m_wxMainThreadId
The thread ID of wxMainThread, or 0 if it is not running. 
 
void GetBitmap(wxBitmap &bmp)
 
void OnMenuClose(wxCommandEvent &event)
 
The wx dialog for gui::CDisplayWindowPlots. 
 
void OnMenuClose(wxCommandEvent &event)
 
void OnMouseClick(wxMouseEvent &ev)
 
wxPoint m_last_mouse_point
In pixels. 
 
static wxBitmap getMRPTDefaultIcon()
 
std::promise< void > m_done
 
CDisplayWindow3D * m_win3D
 
static volatile CWXMainFrame * oneInstance
 
C3DWindowDialog(CDisplayWindow3D *win3D, WxSubsystem::CWXMainFrame *parent, wxWindowID id=-1, const std::string &caption=std::string("[MRPT-CDisplayWindow3D]"), wxSize initialSize=wxDefaultSize)
 
std::mutex m_csWxMainThreadId
The critical section for accessing "m_wxMainThreadId". 
 
static TWxMainThreadData & GetWxMainThreadInstance()
 
wxPoint m_last_mouse_point
 
wxMRPTImageControl(wxWindow *parent, wxWindowID winID, int x, int y, int width, int height)
 
void OnResize(wxSizeEvent &event)
 
WxSubsystem::CWXMainFrame * m_mainFrame
 
int OPCODE
Valid codes are: For CDisplayWindow: 
 
void OnChar(wxKeyEvent &event)
 
static std::queue< TRequestToWxMainThread * > * listPendingWxRequests
Do not access directly to this, use the thread-safe functions. 
 
static const long ID_MENUITEM1
 
CWindowDialogPlots(CDisplayWindowPlots *winPlots, WxSubsystem::CWXMainFrame *parent, wxWindowID id=-1, const std::string &caption=std::string("[MRPT-CDisplayWindowPlots]"), wxSize initialSize=wxDefaultSize)
 
wxMRPTImageControl * m_image
 
CDisplayWindowPlots * m_winPlots
 
static const long ID_PLOT
 
void OnKeyDown(wxKeyEvent &event)
 
void OnMouseDown(wxMouseEvent &event)
 
void OnMenuClose(wxCommandEvent &event)
 
void OnMenuSelected(wxCommandEvent &ev)
 
~C3DWindowDialog() override
 
CWXMainFrame(wxWindow *parent, wxWindowID id=-1)
 
A custom control to display the bitmap and avoid flicker. 
 
mrpt::math::TPoint2D m_curCursorPos
In graph coords. 
 
void OnChar(wxKeyEvent &ev)
 
TRequestToWxMainThread()=default
 
std::promise< void > m_semWxMainThreadReady
This is signaled when wxMainThread is ready. 
 
This class creates a window as a graphical user interface (GUI) for displaying images to the user...
 
~CWindowDialogPlots() override
 
void plot(const mrpt::math::CVectorFloat &x, const mrpt::math::CVectorFloat &y, const std::string &lineFormat, const std::string &plotName)
Redirected from CDisplayWindowPlots::plot. 
 
mrpt::math::CVectorFloat vector_y
 
The main frame of the wxWidgets application. 
 
void OnPaint(wxPaintEvent &ev)
 
The wx dialog for gui::CDisplayWindow. 
 
bool sourceCameraSelectDialog
Only one of source* can be non-nullptr, indicating the class that generated the request. 
 
void OnMouseMove(wxMouseEvent &event)
 
static void wxMainThread()
This will be the "MAIN" of wxWidgets: It starts an application object and does not end until all the ...
 
void OnChar(wxKeyEvent &event)
 
void OnMouseMove(wxMouseEvent &event)
 
static void waitWxShutdownsIfNoWindows()
This method must be called in the destructor of the user class FROM THE MAIN THREAD, in order to wait for the shutdown of the wx thread if this was the last open window. 
 
static const long ID_MENU_PRINT
 
WxSubsystem::CWXMainFrame * m_mainFrame
 
void OnResize(wxSizeEvent &event)
 
This class implements the GUI thread required for the wxWidgets-based GUI. 
 
void OnClose(wxCloseEvent &event)
 
void OnMenuAbout(wxCommandEvent &event)
 
void plotEllipse(const mrpt::math::CVectorFloat &x, const mrpt::math::CVectorFloat &y, const std::string &lineFormat, const std::string &plotName, bool showName=false)
Redirected from CDisplayWindowPlots::plotEllipse. 
 
CAuxWxSubsystemShutdowner()
 
static const long ID_IMAGE_BITMAP
 
void OnMouseDown(wxMouseEvent &event)
 
CWindowDialog(CDisplayWindow *win2D, WxSubsystem::CWXMainFrame *parent, wxWindowID id=-1, const std::string &caption=std::string("[MRPT-CDisplayWindow]"), wxSize initialSize=wxDefaultSize)
 
static CAuxWxSubsystemShutdowner global_wxsubsystem_shutdown
 
mrpt::gui::CDisplayWindowPlots * sourcePlots
Only one of source* can be non-nullptr, indicating the class that generated the request. 
 
static bool isConsoleApp()
Will be set to true at runtime if it's not detected a running wxApp instance. 
 
void OnClose(wxCloseEvent &event)
 
void image(void *theWxImage, float x0, float y0, float w, float h, const std::string &plotName)
Redirected from CDisplayWindowPlots::image. 
 
Classes for creating GUI windows for 2D and 3D visualization. 
 
void OnMenuPrint(wxCommandEvent &event)
 
mrpt::math::CVectorFloat vector_x
 
mrpt::gui::CDisplayWindow * source2D
Only one of source* can be non-nullptr, indicating the class that generated the request. 
 
void OnMouseMove(wxMouseEvent &ev)
 
void OnMenuAbout(wxCommandEvent &event)
 
void OnChar(wxKeyEvent &event)
 
std::string str
Parameters, depending on OPCODE. 
 
~CWindowDialog() override
 
WxSubsystem::CWXMainFrame * m_mainFrame
 
~wxMRPTImageControl() override
 
static const long ID_MENUITEM2
 
void OnEraseBackground(wxEraseEvent &ev)
 
static bool createOneInstanceMainThread()
Thread-safe method to create one single instance of the main wxWidgets thread: it will create the thr...
 
static int notifyWindowDestruction()
Atomically decrements the number of windows created with the main frame as parent. 
 
CMyGLCanvas_DisplayWindow3D * m_canvas
 
wxPoint m_last_mouse_click
 
A graphical user interface (GUI) for efficiently rendering 3D scenes in real-time. 
 
static struct FontData data
 
bool m_firstSubmenu
to know whether to insert a separator the first time.