Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 4bc66056a634db26a1f4d0845dc41ca6 > files > 2764

mrpt-doc-0.9.5-0.1.20110925svn2670.fc16.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>WxSubsystem.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<div align="left"><a href="http://www.mrpt.org/">Main MRPT website</a> &gt; <b>C++ reference</b> </div>
<div align="right">
<a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a>
</div>
<!-- Generated by Doxygen 1.7.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
          <div class="left">
            <form id="FSearchBox" action="search.php" method="get">
              <img id="MSearchSelect" src="search/mag.png" alt=""/>
              <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" 
                     onfocus="searchBox.OnSearchFieldFocus(true)" 
                     onblur="searchBox.OnSearchFieldFocus(false)"/>
            </form>
          </div><div class="right"></div>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<div class="title">WxSubsystem.h</div>  </div>
</div>
<div class="contents">
<a href="_wx_subsystem_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* +---------------------------------------------------------------------------+</span>
<a name="l00002"></a>00002 <span class="comment">   |          The Mobile Robot Programming Toolkit (MRPT) C++ library          |</span>
<a name="l00003"></a>00003 <span class="comment">   |                                                                           |</span>
<a name="l00004"></a>00004 <span class="comment">   |                       http://www.mrpt.org/                                |</span>
<a name="l00005"></a>00005 <span class="comment">   |                                                                           |</span>
<a name="l00006"></a>00006 <span class="comment">   |   Copyright (C) 2005-2011  University of Malaga                           |</span>
<a name="l00007"></a>00007 <span class="comment">   |                                                                           |</span>
<a name="l00008"></a>00008 <span class="comment">   |    This software was written by the Machine Perception and Intelligent    |</span>
<a name="l00009"></a>00009 <span class="comment">   |      Robotics Lab, University of Malaga (Spain).                          |</span>
<a name="l00010"></a>00010 <span class="comment">   |    Contact: Jose-Luis Blanco  &lt;jlblanco@ctima.uma.es&gt;                     |</span>
<a name="l00011"></a>00011 <span class="comment">   |                                                                           |</span>
<a name="l00012"></a>00012 <span class="comment">   |  This file is part of the MRPT project.                                   |</span>
<a name="l00013"></a>00013 <span class="comment">   |                                                                           |</span>
<a name="l00014"></a>00014 <span class="comment">   |     MRPT is free software: you can redistribute it and/or modify          |</span>
<a name="l00015"></a>00015 <span class="comment">   |     it under the terms of the GNU General Public License as published by  |</span>
<a name="l00016"></a>00016 <span class="comment">   |     the Free Software Foundation, either version 3 of the License, or     |</span>
<a name="l00017"></a>00017 <span class="comment">   |     (at your option) any later version.                                   |</span>
<a name="l00018"></a>00018 <span class="comment">   |                                                                           |</span>
<a name="l00019"></a>00019 <span class="comment">   |   MRPT is distributed in the hope that it will be useful,                 |</span>
<a name="l00020"></a>00020 <span class="comment">   |     but WITHOUT ANY WARRANTY; without even the implied warranty of        |</span>
<a name="l00021"></a>00021 <span class="comment">   |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         |</span>
<a name="l00022"></a>00022 <span class="comment">   |     GNU General Public License for more details.                          |</span>
<a name="l00023"></a>00023 <span class="comment">   |                                                                           |</span>
<a name="l00024"></a>00024 <span class="comment">   |     You should have received a copy of the GNU General Public License     |</span>
<a name="l00025"></a>00025 <span class="comment">   |     along with MRPT.  If not, see &lt;http://www.gnu.org/licenses/&gt;.         |</span>
<a name="l00026"></a>00026 <span class="comment">   |                                                                           |</span>
<a name="l00027"></a>00027 <span class="comment">   +---------------------------------------------------------------------------+ */</span>
<a name="l00028"></a>00028 <span class="preprocessor">#ifndef  MRPT_WX_SUBSYSTEM_H</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define  MRPT_WX_SUBSYSTEM_H</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;<a class="code" href="opengl__fonts_8h.html">mrpt/opengl/opengl_fonts.h</a>&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="utils__defs_8h.html">mrpt/utils/utils_defs.h</a>&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="threads_8h.html">mrpt/system/threads.h</a>&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;mrpt/config.h&gt;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;<a class="code" href="synch_8h.html">mrpt/synch.h</a>&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;<a class="code" href="lightweight__geom__data_8h.html">mrpt/math/lightweight_geom_data.h</a>&gt;</span>
<a name="l00037"></a>00037 
<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;<a class="code" href="gui_2include_2mrpt_2gui_2link__pragmas_8h.html">mrpt/gui/link_pragmas.h</a>&gt;</span>
<a name="l00039"></a>00039 
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;queue&gt;</span>
<a name="l00041"></a>00041 
<a name="l00042"></a>00042 <span class="preprocessor">#if MRPT_HAS_WXWIDGETS</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span>
<a name="l00044"></a>00044 <span class="comment">// This is to prevent wxWidgets to include winsock.h, and</span>
<a name="l00045"></a>00045 <span class="comment">//  later the user to include winsock2.h, what leads to conflicts:</span>
<a name="l00046"></a>00046 <span class="comment">//#ifdef HAVE_WINSOCK2_H</span>
<a name="l00047"></a>00047 <span class="comment">//# include &lt;winsock2.h&gt;</span>
<a name="l00048"></a>00048 <span class="comment">//#endif</span>
<a name="l00049"></a>00049 
<a name="l00050"></a>00050 <span class="preprocessor">#include &lt;wx/sizer.h&gt;</span>
<a name="l00051"></a>00051 <span class="preprocessor">#include &lt;wx/statbmp.h&gt;</span>
<a name="l00052"></a>00052 <span class="preprocessor">#include &lt;wx/menu.h&gt;</span>
<a name="l00053"></a>00053 <span class="preprocessor">#include &lt;wx/toolbar.h&gt;</span>
<a name="l00054"></a>00054 <span class="preprocessor">#include &lt;wx/frame.h&gt;</span>
<a name="l00055"></a>00055 <span class="preprocessor">#include &lt;wx/timer.h&gt;</span>
<a name="l00056"></a>00056 <span class="preprocessor">#include &lt;wx/statusbr.h&gt;</span>
<a name="l00057"></a>00057 <span class="preprocessor">#include &lt;wx/msgdlg.h&gt;</span>
<a name="l00058"></a>00058 <span class="preprocessor">#include &lt;wx/artprov.h&gt;</span>
<a name="l00059"></a>00059 <span class="preprocessor">#include &lt;wx/bitmap.h&gt;</span>
<a name="l00060"></a>00060 <span class="preprocessor">#include &lt;wx/intl.h&gt;</span>
<a name="l00061"></a>00061 <span class="preprocessor">#include &lt;wx/image.h&gt;</span>
<a name="l00062"></a>00062 <span class="preprocessor">#include &lt;wx/string.h&gt;</span>
<a name="l00063"></a>00063 <span class="preprocessor">#include &lt;wx/msgdlg.h&gt;</span>
<a name="l00064"></a>00064 <span class="preprocessor">#include &lt;wx/filedlg.h&gt;</span>
<a name="l00065"></a>00065 <span class="preprocessor">#include &lt;wx/progdlg.h&gt;</span>
<a name="l00066"></a>00066 <span class="preprocessor">#include &lt;wx/imaglist.h&gt;</span>
<a name="l00067"></a>00067 <span class="preprocessor">#include &lt;wx/busyinfo.h&gt;</span>
<a name="l00068"></a>00068 <span class="preprocessor">#include &lt;wx/log.h&gt;</span>
<a name="l00069"></a>00069 <span class="preprocessor">#include &lt;wx/textdlg.h&gt;</span>
<a name="l00070"></a>00070 <span class="preprocessor">#include &lt;wx/dirdlg.h&gt;</span>
<a name="l00071"></a>00071 <span class="preprocessor">#include &lt;wx/colordlg.h&gt;</span>
<a name="l00072"></a>00072 <span class="preprocessor">#include &lt;wx/dcmemory.h&gt;</span>
<a name="l00073"></a>00073 <span class="preprocessor">#include &lt;wx/app.h&gt;</span>
<a name="l00074"></a>00074 <span class="preprocessor">#include &lt;wx/pen.h&gt;</span>
<a name="l00075"></a>00075 
<a name="l00076"></a>00076 <span class="comment">// The wxMathPlot library</span>
<a name="l00077"></a>00077 <span class="preprocessor">#include &lt;<a class="code" href="mathplot_8h.html">mrpt/otherlibs/mathplot/mathplot.h</a>&gt;</span>
<a name="l00078"></a>00078 
<a name="l00079"></a>00079 <span class="preprocessor">#if 0</span>
<a name="l00080"></a>00080 <span class="preprocessor"></span><span class="comment">// The wxFreeChart library</span>
<a name="l00081"></a>00081 <span class="preprocessor">#include &lt;wx/chartpanel.h&gt;</span>
<a name="l00082"></a>00082 <span class="preprocessor">#include &lt;wx/bars/barplot.h&gt;</span>
<a name="l00083"></a>00083 
<a name="l00084"></a>00084 <span class="preprocessor">#include &lt;wx/axis/numberaxis.h&gt;</span>
<a name="l00085"></a>00085 <span class="preprocessor">#include &lt;wx/axis/categoryaxis.h&gt;</span>
<a name="l00086"></a>00086 <span class="preprocessor">#include &lt;wx/axis/dateaxis.h&gt;</span>
<a name="l00087"></a>00087 
<a name="l00088"></a>00088 <span class="preprocessor">#include &lt;wx/xy/xyhistorenderer.h&gt;</span>
<a name="l00089"></a>00089 <span class="preprocessor">#include &lt;wx/xy/xydataset.h&gt;</span>
<a name="l00090"></a>00090 <span class="preprocessor">#include &lt;wx/xy/xylinerenderer.h&gt;</span>
<a name="l00091"></a>00091 <span class="preprocessor">#include &lt;wx/xy/xyplot.h&gt;</span>
<a name="l00092"></a>00092 <span class="preprocessor">#include &lt;wx/xy/xysimpledataset.h&gt;</span>
<a name="l00093"></a>00093 
<a name="l00094"></a>00094 <span class="preprocessor">#include &lt;wx/xyz/xyzdataset.h&gt;</span>
<a name="l00095"></a>00095 <span class="preprocessor">#include &lt;wx/xyz/bubbleplot.h&gt;</span>
<a name="l00096"></a>00096 
<a name="l00097"></a>00097 <span class="preprocessor">#include &lt;wx/category/categorydataset.h&gt;</span>
<a name="l00098"></a>00098 <span class="preprocessor">#include &lt;wx/category/categorysimpledataset.h&gt;</span>
<a name="l00099"></a>00099 <span class="preprocessor">#endif</span>
<a name="l00100"></a>00100 <span class="preprocessor"></span>
<a name="l00101"></a>00101 <span class="preprocessor">#endif</span>
<a name="l00102"></a>00102 <span class="preprocessor"></span>
<a name="l00103"></a>00103 <span class="keyword">namespace </span>mrpt
<a name="l00104"></a>00104 {
<a name="l00105"></a>00105         <span class="keyword">namespace </span>gui
<a name="l00106"></a>00106         {
<a name="l00107"></a>00107                 <span class="keyword">using namespace </span>mrpt::system;
<a name="l00108"></a>00108 
<a name="l00109"></a>00109                 <span class="keyword">class </span>CDisplayWindow;
<a name="l00110"></a>00110                 <span class="keyword">class </span>CDisplayWindow3D;
<a name="l00111"></a>00111                 <span class="keyword">class </span>CDisplayWindowPlots;
<a name="l00112"></a>00112                 <span class="keyword">class </span>CMyGLCanvas_DisplayWindow3D;
<a name="l00113"></a>00113 <span class="comment"></span>
<a name="l00114"></a>00114 <span class="comment">                /** This class implements the GUI thread required for the wxWidgets-based GUI.</span>
<a name="l00115"></a>00115 <span class="comment">                  *  This system is employed internally by gui::CDisplayWindow and gui::CDisplayWindow3D, and must be not used in any way directly by the MRPT user.</span>
<a name="l00116"></a>00116 <span class="comment">                  *</span>
<a name="l00117"></a>00117 <span class="comment">                  *  The system works by creating a invisible wxFrame that process timer events where it checks a queue of requests sent from the main MRPT thread. The</span>
<a name="l00118"></a>00118 <span class="comment">                  *   requests include the creation, deletion,... of windows (2D/3D). In that way, just one thread is required for all the GUI windows, and the wxWidgets</span>
<a name="l00119"></a>00119 <span class="comment">                  *   is initialized and clean-up correctly.</span>
<a name="l00120"></a>00120 <span class="comment">                  *</span>
<a name="l00121"></a>00121 <span class="comment">                  *  This header should be included just from the implementation files of CDisplayWindow and CDisplayWindow3D, since it uses wxWidgets classes.</span>
<a name="l00122"></a>00122 <span class="comment">                  *</span>
<a name="l00123"></a>00123 <span class="comment">                  *  \sa gui::CDisplayWindow, gui::CDisplayWindow3D</span>
<a name="l00124"></a>00124 <span class="comment">                  * \ingroup mrpt_gui_grp</span>
<a name="l00125"></a>00125 <span class="comment">                  */</span>
<a name="l00126"></a>00126                 <span class="keyword">class </span><a class="code" href="gui_2include_2mrpt_2gui_2link__pragmas_8h.html#a69a861d20c11137851da0fe69a66d7b6">GUI_IMPEXP</a> WxSubsystem
<a name="l00127"></a>00127                 {
<a name="l00128"></a>00128 <span class="preprocessor">        #if MRPT_HAS_WXWIDGETS</span>
<a name="l00129"></a>00129 <span class="preprocessor"></span>
<a name="l00130"></a>00130                 <span class="keyword">public</span>:
<a name="l00131"></a>00131 <span class="comment"></span>
<a name="l00132"></a>00132 <span class="comment">                        /** 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.</span>
<a name="l00133"></a>00133 <span class="comment">                          */</span>
<a name="l00134"></a>00134                         <span class="keyword">static</span> <span class="keywordtype">void</span> waitWxShutdownsIfNoWindows();
<a name="l00135"></a>00135 <span class="comment"></span>
<a name="l00136"></a>00136 <span class="comment">                        /** Will be set to true at runtime if it&#39;s not detected a running wxApp instance.</span>
<a name="l00137"></a>00137 <span class="comment">                          *  For console apps, we&#39;ll create a new thread and run wxEntry from there.</span>
<a name="l00138"></a>00138 <span class="comment">                          *  For GUI apps (MRPT-based Windows are a part of a user wxWidget apps), we must leave the control of</span>
<a name="l00139"></a>00139 <span class="comment">                          *   message dispatching to the current main loop, so we cannot create a different threads, making things a little different (hence this variable).</span>
<a name="l00140"></a>00140 <span class="comment">                          */</span>
<a name="l00141"></a>00141                         <span class="keyword">static</span> <span class="keyword">volatile</span> <span class="keywordtype">bool</span> isConsoleApp;
<a name="l00142"></a>00142 <span class="comment"></span>
<a name="l00143"></a>00143 <span class="comment">                        /** An auxiliary global object used just to launch a final request to the wxSubsystem for shutdown:</span>
<a name="l00144"></a>00144 <span class="comment">                          */</span>
<a name="l00145"></a>00145                         <span class="keyword">class </span>CAuxWxSubsystemShutdowner
<a name="l00146"></a>00146                         {
<a name="l00147"></a>00147                         <span class="keyword">public</span>:
<a name="l00148"></a>00148                                 CAuxWxSubsystemShutdowner();
<a name="l00149"></a>00149                                 ~CAuxWxSubsystemShutdowner();
<a name="l00150"></a>00150                         };
<a name="l00151"></a>00151 
<a name="l00152"></a>00152                         <span class="keyword">static</span> CAuxWxSubsystemShutdowner  global_wxsubsystem_shutdown;
<a name="l00153"></a>00153 
<a name="l00154"></a>00154 <span class="comment"></span>
<a name="l00155"></a>00155 <span class="comment">                        /** The main frame of the wxWidgets application</span>
<a name="l00156"></a>00156 <span class="comment">                          */</span>
<a name="l00157"></a>00157                         <span class="keyword">class </span>CWXMainFrame: <span class="keyword">public</span> wxFrame
<a name="l00158"></a>00158                         {
<a name="l00159"></a>00159                         <span class="keyword">friend</span>  <span class="keywordtype">void</span> WxSubsystem::waitWxShutdownsIfNoWindows();
<a name="l00160"></a>00160 
<a name="l00161"></a>00161                                 <span class="keyword">public</span>:
<a name="l00162"></a>00162                                         CWXMainFrame(wxWindow* parent,wxWindowID <span class="keywordtype">id</span> = -1);
<a name="l00163"></a>00163                                         <span class="keyword">virtual</span> ~CWXMainFrame();
<a name="l00164"></a>00164 <span class="comment"></span>
<a name="l00165"></a>00165 <span class="comment">                                        /** Atomically increments the number of windows created with the main frame as parent.</span>
<a name="l00166"></a>00166 <span class="comment">                                          * \return The updated number of windows.</span>
<a name="l00167"></a>00167 <span class="comment">                                          */</span>
<a name="l00168"></a>00168                                         <span class="keyword">static</span> <span class="keywordtype">int</span> notifyWindowCreation();
<a name="l00169"></a>00169 <span class="comment"></span>
<a name="l00170"></a>00170 <span class="comment">                                        /** Atomically decrements the number of windows created with the main frame as parent.</span>
<a name="l00171"></a>00171 <span class="comment">                                          * \return The updated number of windows (0 if the calling was the last one).</span>
<a name="l00172"></a>00172 <span class="comment">                                          */</span>
<a name="l00173"></a>00173                                         <span class="keyword">static</span> <span class="keywordtype">int</span> notifyWindowDestruction();
<a name="l00174"></a>00174 
<a name="l00175"></a>00175                                         <span class="keyword">static</span> <span class="keyword">volatile</span> CWXMainFrame* oneInstance;
<a name="l00176"></a>00176 
<a name="l00177"></a>00177 
<a name="l00178"></a>00178                                 <span class="keyword">private</span>:
<a name="l00179"></a>00179 
<a name="l00180"></a>00180                                         <span class="keyword">static</span> synch::CCriticalSection     cs_windowCount;
<a name="l00181"></a>00181                                         <span class="keyword">static</span> <span class="keywordtype">int</span>                         m_windowCount;
<a name="l00182"></a>00182 
<a name="l00183"></a>00183                                         wxTimer                         *m_theTimer;
<a name="l00184"></a>00184 
<a name="l00185"></a>00185                                         <span class="keywordtype">void</span> OnTimerProcessRequests(wxTimerEvent&amp; event);
<a name="l00186"></a>00186 
<a name="l00187"></a>00187                                         DECLARE_EVENT_TABLE()
<a name="l00188"></a>00188 
<a name="l00189"></a>00189                         }; <span class="comment">// end class CWXMainFrame</span>
<a name="l00190"></a>00190 
<a name="l00191"></a>00191                         <span class="keyword">struct </span>TWxMainThreadData
<a name="l00192"></a>00192                         {
<a name="l00193"></a>00193                                 TWxMainThreadData();
<a name="l00194"></a>00194 <span class="comment"></span>
<a name="l00195"></a>00195 <span class="comment">                                /** The thread ID of wxMainThread, or 0 if it is not running.</span>
<a name="l00196"></a>00196 <span class="comment">                                  */</span>
<a name="l00197"></a>00197                                 <a class="code" href="structmrpt_1_1system_1_1_t_thread_handle.html" title="This structure contains the information needed to interface the threads API on each platform:...">TThreadHandle</a>  m_wxMainThreadId;
<a name="l00198"></a>00198 <span class="comment"></span>
<a name="l00199"></a>00199 <span class="comment">                                /** This is signaled when wxMainThread is ready.</span>
<a name="l00200"></a>00200 <span class="comment">                                  */</span>
<a name="l00201"></a>00201                                 synch::CSemaphore m_semWxMainThreadReady;
<a name="l00202"></a>00202 <span class="comment"></span>
<a name="l00203"></a>00203 <span class="comment">                                /** The critical section for accessing &quot;m_wxMainThreadId&quot;</span>
<a name="l00204"></a>00204 <span class="comment">                                  */</span>
<a name="l00205"></a>00205                                 synch::CCriticalSection m_csWxMainThreadId;
<a name="l00206"></a>00206                         };
<a name="l00207"></a>00207 
<a name="l00208"></a>00208                         <span class="keyword">static</span> TWxMainThreadData&amp; GetWxMainThreadInstance();
<a name="l00209"></a>00209 
<a name="l00210"></a>00210 <span class="comment"></span>
<a name="l00211"></a>00211 <span class="comment">                        /**  This will be the &quot;MAIN&quot; of wxWidgets: It starts an application object and does not end until all the windows are closed.</span>
<a name="l00212"></a>00212 <span class="comment">                          *   Only one instance of this thread can be running at a given instant, no matter how many windows are open.</span>
<a name="l00213"></a>00213 <span class="comment">                          */</span>
<a name="l00214"></a>00214                         <span class="keyword">static</span> <span class="keywordtype">void</span>     wxMainThread();
<a name="l00215"></a>00215 <span class="comment"></span>
<a name="l00216"></a>00216 <span class="comment">                        /** The data structure for each inter-thread request:</span>
<a name="l00217"></a>00217 <span class="comment">                          */</span>
<a name="l00218"></a>00218                         <span class="keyword">struct </span><a class="code" href="gui_2include_2mrpt_2gui_2link__pragmas_8h.html#a69a861d20c11137851da0fe69a66d7b6">GUI_IMPEXP</a> TRequestToWxMainThread
<a name="l00219"></a>00219                         {
<a name="l00220"></a>00220                         TRequestToWxMainThread() :
<a name="l00221"></a>00221                                         source2D                ( NULL ),
<a name="l00222"></a>00222                                         source3D                ( NULL ),
<a name="l00223"></a>00223                                         sourcePlots             ( NULL ),
<a name="l00224"></a>00224                                         sourceCameraSelectDialog(false),
<a name="l00225"></a>00225                                         voidPtr                 (NULL),
<a name="l00226"></a>00226                                         voidPtr2                (NULL),
<a name="l00227"></a>00227                                         x                               (400),
<a name="l00228"></a>00228                                         <a class="code" href="namespace_eigen_1_1internal.html#a3d7a581aeb951248dc6fe114e9e05f07">y</a>                               (400),
<a name="l00229"></a>00229                                         boolVal                 (false)
<a name="l00230"></a>00230                         { }
<a name="l00231"></a>00231 <span class="comment"></span>
<a name="l00232"></a>00232 <span class="comment">                                /** Only one of source* can be non-NULL, indicating the class that generated the request. */</span>
<a name="l00233"></a>00233                                 gui::CDisplayWindow    *source2D;
<a name="l00234"></a>00234 <span class="comment"></span>
<a name="l00235"></a>00235 <span class="comment">                                /** Only one of source* can be non-NULL, indicating the class that generated the request. */</span>
<a name="l00236"></a>00236                                 gui::CDisplayWindow3D  *source3D;
<a name="l00237"></a>00237 <span class="comment"></span>
<a name="l00238"></a>00238 <span class="comment">                                /** Only one of source* can be non-NULL, indicating the class that generated the request. */</span>
<a name="l00239"></a>00239                                 gui::CDisplayWindowPlots *sourcePlots;
<a name="l00240"></a>00240 <span class="comment"></span>
<a name="l00241"></a>00241 <span class="comment">                                /** Only one of source* can be non-NULL, indicating the class that generated the request. */</span>
<a name="l00242"></a>00242                                 <span class="keywordtype">bool</span> sourceCameraSelectDialog;
<a name="l00243"></a>00243 <span class="comment"></span>
<a name="l00244"></a>00244 <span class="comment">                                /** Parameters, depending on OPCODE.</span>
<a name="l00245"></a>00245 <span class="comment">                                  */</span>
<a name="l00246"></a>00246                                 std::string  str;
<a name="l00247"></a>00247 <span class="comment"></span>
<a name="l00248"></a>00248 <span class="comment">                                /** Parameters, depending on OPCODE.</span>
<a name="l00249"></a>00249 <span class="comment">                                  */</span>
<a name="l00250"></a>00250                                 <span class="keywordtype">void</span>         *voidPtr, *voidPtr2;
<a name="l00251"></a>00251                                 <span class="keywordtype">int</span>          x,<a class="code" href="namespace_eigen_1_1internal.html#a3d7a581aeb951248dc6fe114e9e05f07">y</a>;
<a name="l00252"></a>00252                                 <span class="keywordtype">bool</span>         boolVal;
<a name="l00253"></a>00253                                 <a class="code" href="namespacemrpt.html#aa271572e3985202e030758bfd54a02e1">vector_float</a> vector_x,vector_y;
<a name="l00254"></a>00254                                 std::string  plotName;
<a name="l00255"></a>00255 <span class="comment"></span>
<a name="l00256"></a>00256 <span class="comment">                                /** Valid codes are:</span>
<a name="l00257"></a>00257 <span class="comment">                                  *  For CDisplayWindow:</span>
<a name="l00258"></a>00258 <span class="comment">                                  *     - 200: Create a new 2D window, with caption &quot;str&quot; and initial size &quot;x&quot; &amp; &quot;y&quot;, and save the &quot;wxFrame*&quot; in the &quot;void**&quot; passed in voidPtr.</span>
<a name="l00259"></a>00259 <span class="comment">                                  *     - 201: Updates the image shown in the window, from a &quot;wxImage*&quot; passed in voidPtr2. The wxImage object will be freed with delete after that. voidPtr must be a &quot;wxFrame*&quot;, a &quot;CWindowDialog*&quot; actually.</span>
<a name="l00260"></a>00260 <span class="comment">                                  *     - 202: Set position to x,y</span>
<a name="l00261"></a>00261 <span class="comment">                                  *     - 203: Change size to x,y</span>
<a name="l00262"></a>00262 <span class="comment">                                  *     - 204: Change title to &quot;str&quot;</span>
<a name="l00263"></a>00263 <span class="comment">                                  *     - 299: Delete the window associated with this source object.</span>
<a name="l00264"></a>00264 <span class="comment">                                  *</span>
<a name="l00265"></a>00265 <span class="comment">                                  *  For CDisplayWindow3D:</span>
<a name="l00266"></a>00266 <span class="comment">                                  *     - 300: Create a new 3D window, with caption &quot;str&quot; and initial size &quot;x&quot; &amp; &quot;y&quot;, and save the &quot;wxFrame*&quot; in the &quot;void**&quot; passed in voidPtr.</span>
<a name="l00267"></a>00267 <span class="comment">                                  *     - 302: Set position to x,y</span>
<a name="l00268"></a>00268 <span class="comment">                                  *     - 303: Change size to x,y</span>
<a name="l00269"></a>00269 <span class="comment">                                  *     - 304: Change title to &quot;str&quot;</span>
<a name="l00270"></a>00270 <span class="comment">                                  *             - 350: Force refresh</span>
<a name="l00271"></a>00271 <span class="comment">                                  *             - 360: Add a 2D text message: vector_x: [0]:x, [1]:y, [2,3,4]:R G B, &quot;x&quot;: enum of desired font. &quot;y&quot;: unique index, &quot;str&quot;: String.</span>
<a name="l00272"></a>00272 <span class="comment">                                  *             - 361: Clear all 2D text messages.</span>
<a name="l00273"></a>00273 <span class="comment">                                  *             - 362: Add a 2D text message (vectorized fonts)</span>
<a name="l00274"></a>00274 <span class="comment">                                  *             - 370: Change min/max range: min=vector_x[0], max=vector_x[1]</span>
<a name="l00275"></a>00275 <span class="comment">                                  *     - 399: Delete the window associated with this source object.</span>
<a name="l00276"></a>00276 <span class="comment">                                  *</span>
<a name="l00277"></a>00277 <span class="comment">                                  *  For CDisplayWindowPlots:</span>
<a name="l00278"></a>00278 <span class="comment">                                  *     - 400: Create a new Plots window, with caption &quot;str&quot; and initial size &quot;x&quot; &amp; &quot;y&quot;,and save the &quot;wxFrame*&quot; in the &quot;void**&quot; passed in voidPtr.</span>
<a name="l00279"></a>00279 <span class="comment">                                  *     - 402: Set position to x,y</span>
<a name="l00280"></a>00280 <span class="comment">                                  *     - 403: Change size to x,y</span>
<a name="l00281"></a>00281 <span class="comment">                                  *     - 404: Change title to &quot;str&quot;</span>
<a name="l00282"></a>00282 <span class="comment">                                  *     - 499: Delete the window associated with this source object.</span>
<a name="l00283"></a>00283 <span class="comment">                                  *             - 410: Depending on &quot;boolVal&quot;, enable/disable the mouse-zoom &amp; pan</span>
<a name="l00284"></a>00284 <span class="comment">                                  *             - 411: Depending on &quot;boolVal&quot;, enable/disable the aspect ratio fix</span>
<a name="l00285"></a>00285 <span class="comment">                                  *             - 412: Zoom over a rectangle vectorx[0-1] &amp; vectory[0-1]</span>
<a name="l00286"></a>00286 <span class="comment">                                  *             - 413: Axis fit, with aspect ratio fix to boolVal.</span>
<a name="l00287"></a>00287 <span class="comment">                                  *             - 414: Clear all plot objects.</span>
<a name="l00288"></a>00288 <span class="comment">                                  *             - 420: Add/update a 2D line/points plot: x/y data= vector_x/vector_y, format string=str, plot name =plotName.</span>
<a name="l00289"></a>00289 <span class="comment">                                  *             - 421: Add/update a 2D ellipse: format string=str, plot name =plotName, vector_x[0,1]:X/Y center, vector_x[2]:quantiles, vector_y[0,1,2]: Covariance matrix entries 00,11,01,  boolVal=showName?</span>
<a name="l00290"></a>00290 <span class="comment">                                  *             - 422: Add/update a bitmap: plot name =plotName, vector_x[0,1]:X/Y corner, vector_x[2,3]: X/Y widths, voidPtr2: pointer to a newly created wxImage with the bitmap.</span>
<a name="l00291"></a>00291 <span class="comment">                                  *             - 440: Insert submenu in the popup menu. plotName=menu label, x=user-defined ID.</span>
<a name="l00292"></a>00292 <span class="comment">                                  *             - 700: Shows a camera-pick-dialog and wait for user selection. &quot;voidPtr&quot; must point to a CSemaphore, which will be signaled twice (1st upon construction, 2nd upon dialog close); voidPtr2 must point to a &quot;mrpt::gui::CPanelCameraSelection*&quot; which will be filled with the selection (the panel must be deleted by the caller)</span>
<a name="l00293"></a>00293 <span class="comment">                                  *</span>
<a name="l00294"></a>00294 <span class="comment">                                  */</span>
<a name="l00295"></a>00295                                 <span class="keywordtype">int</span>  OPCODE;
<a name="l00296"></a>00296 
<a name="l00297"></a>00297                         };
<a name="l00298"></a>00298 <span class="comment"></span>
<a name="l00299"></a>00299 <span class="comment">                        /** Thread-safe method to return the next pending request, or NULL if there is none (After usage, FREE the memory!)</span>
<a name="l00300"></a>00300 <span class="comment">                          */</span>
<a name="l00301"></a>00301                         <span class="keyword">static</span> TRequestToWxMainThread  * popPendingWxRequest();
<a name="l00302"></a>00302 <span class="comment"></span>
<a name="l00303"></a>00303 <span class="comment">                        /** Thread-safe method to insert a new pending request (The memory must be dinamically allocated with &quot;new T[1]&quot;, will be freed by receiver.)</span>
<a name="l00304"></a>00304 <span class="comment">                          */</span>
<a name="l00305"></a>00305                         <span class="keyword">static</span> <span class="keywordtype">void</span> pushPendingWxRequest( TRequestToWxMainThread *data );
<a name="l00306"></a>00306 <span class="comment"></span>
<a name="l00307"></a>00307 <span class="comment">                        /** Thread-safe method to create one single instance of the main wxWidgets thread: it will create the thread only if it is not running yet.</span>
<a name="l00308"></a>00308 <span class="comment">                          */</span>
<a name="l00309"></a>00309                         <span class="keyword">static</span> <span class="keywordtype">bool</span> createOneInstanceMainThread();
<a name="l00310"></a>00310 
<a name="l00311"></a>00311 
<a name="l00312"></a>00312                         <span class="keyword">static</span> wxBitmap getMRPTDefaultIcon();
<a name="l00313"></a>00313                 <span class="keyword">private</span>:<span class="comment"></span>
<a name="l00314"></a>00314 <span class="comment">                        /** Do not access directly to this, use the thread-safe functions</span>
<a name="l00315"></a>00315 <span class="comment">                          */</span>
<a name="l00316"></a>00316                         <span class="keyword">static</span> std::queue&lt;TRequestToWxMainThread*&gt;  *listPendingWxRequests;
<a name="l00317"></a>00317                         <span class="keyword">static</span> synch::CCriticalSection              *cs_listPendingWxRequests;
<a name="l00318"></a>00318 <span class="preprocessor">        #endif</span>
<a name="l00319"></a>00319 <span class="preprocessor"></span>                }; <span class="comment">// End of class def.</span>
<a name="l00320"></a>00320 
<a name="l00321"></a>00321 
<a name="l00322"></a>00322 <span class="preprocessor">        #if MRPT_HAS_WXWIDGETS</span>
<a name="l00323"></a>00323 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00324"></a>00324 <span class="comment">                /** The wx dialog for gui::CDisplayWindow</span>
<a name="l00325"></a>00325 <span class="comment">                  */</span>
<a name="l00326"></a>00326                 <span class="keyword">class </span>CWindowDialog: <span class="keyword">public</span> wxFrame
<a name="l00327"></a>00327                 {
<a name="l00328"></a>00328                 <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00329"></a>00329 <span class="comment">                        /** A custom control to display the bitmap and avoid flicker</span>
<a name="l00330"></a>00330 <span class="comment">                          */</span>
<a name="l00331"></a>00331                         <span class="keyword">class </span>wxMRPTImageControl : <span class="keyword">public</span> wxPanel
<a name="l00332"></a>00332                         {
<a name="l00333"></a>00333                         <span class="keyword">protected</span>:
<a name="l00334"></a>00334                                 wxBitmap *m_img;
<a name="l00335"></a>00335                                 mrpt::synch::CCriticalSection   m_img_cs;
<a name="l00336"></a>00336                                 CDisplayWindow *m_win2D;
<a name="l00337"></a>00337 
<a name="l00338"></a>00338                         <span class="keyword">public</span>:
<a name="l00339"></a>00339                                 wxMRPTImageControl(     wxWindow *parent,wxWindowID winID,<span class="keywordtype">int</span> x, <span class="keywordtype">int</span> <a class="code" href="namespace_eigen_1_1internal.html#a3d7a581aeb951248dc6fe114e9e05f07">y</a>, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);
<a name="l00340"></a>00340                                 <span class="keyword">virtual</span> ~wxMRPTImageControl();
<a name="l00341"></a>00341 
<a name="l00342"></a>00342                                 wxPoint m_last_mouse_point, m_last_mouse_click;
<a name="l00343"></a>00343                                 <span class="comment">//mrpt::synch::CCriticalSection m_mouse_cs;</span>
<a name="l00344"></a>00344 
<a name="l00345"></a>00345                                 <span class="keywordtype">void</span> AssignImage(wxBitmap *img); <span class="comment">//!&lt; Assigns this image. This object has the ownship of the image and will delete it when appropriate.</span>
<a name="l00346"></a>00346 <span class="comment"></span>                                <span class="keywordtype">void</span> GetBitmap(wxBitmap &amp;bmp);
<a name="l00347"></a>00347 
<a name="l00348"></a>00348                                 <span class="keywordtype">void</span> OnPaint(wxPaintEvent &amp;ev);
<a name="l00349"></a>00349                                 <span class="keywordtype">void</span> OnMouseMove(wxMouseEvent&amp; ev);
<a name="l00350"></a>00350                                 <span class="keywordtype">void</span> OnMouseClick(wxMouseEvent&amp; ev);
<a name="l00351"></a>00351                                 <span class="keywordtype">void</span> OnChar(wxKeyEvent&amp; ev);
<a name="l00352"></a>00352 
<a name="l00353"></a>00353                                 <span class="keywordtype">void</span> OnEraseBackground(wxEraseEvent &amp;ev) { <span class="comment">/* Do nothing */</span> }
<a name="l00354"></a>00354                         };
<a name="l00355"></a>00355 
<a name="l00356"></a>00356 
<a name="l00357"></a>00357 
<a name="l00358"></a>00358                         <span class="keyword">public</span>:
<a name="l00359"></a>00359                                 CWindowDialog( CDisplayWindow *win2D, WxSubsystem::CWXMainFrame* parent,wxWindowID <span class="keywordtype">id</span> = -1, <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;caption = <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>(<span class="stringliteral">&quot;[MRPT-CDisplayWindow]&quot;</span>), wxSize initialSize = wxDefaultSize );
<a name="l00360"></a>00360                                 <span class="keyword">virtual</span> ~CWindowDialog();
<a name="l00361"></a>00361 
<a name="l00362"></a>00362                                 CDisplayWindow *m_win2D;
<a name="l00363"></a>00363                                 WxSubsystem::CWXMainFrame   *m_mainFrame;
<a name="l00364"></a>00364 
<a name="l00365"></a>00365                                 <span class="comment">//wxStaticBitmap      *m_image;</span>
<a name="l00366"></a>00366                                 wxMRPTImageControl    *m_image;
<a name="l00367"></a>00367 
<a name="l00368"></a>00368                                 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">long</span>         ID_IMAGE_BITMAP;
<a name="l00369"></a>00369 
<a name="l00370"></a>00370                         <span class="keyword">private</span>:
<a name="l00371"></a>00371 
<a name="l00372"></a>00372                                 <span class="keywordtype">void</span> OnClose (wxCloseEvent&amp; event);
<a name="l00373"></a>00373                                 <span class="keywordtype">void</span> OnMenuClose(wxCommandEvent&amp; event);
<a name="l00374"></a>00374                                 <span class="keywordtype">void</span> OnMenuAbout(wxCommandEvent&amp; event);
<a name="l00375"></a>00375                                 <span class="keywordtype">void</span> OnMenuSave(wxCommandEvent&amp; event);
<a name="l00376"></a>00376                                 <span class="keywordtype">void</span> OnChar(wxKeyEvent&amp; event);
<a name="l00377"></a>00377                                 <span class="keywordtype">void</span> OnKeyDown(wxKeyEvent&amp; event);
<a name="l00378"></a>00378                                 <span class="keywordtype">void</span> OnResize(wxSizeEvent&amp; event);
<a name="l00379"></a>00379                                 <span class="keywordtype">void</span> OnMouseDown(wxMouseEvent&amp; event);
<a name="l00380"></a>00380 
<a name="l00381"></a>00381                                 DECLARE_EVENT_TABLE()
<a name="l00382"></a>00382                 }; <span class="comment">// end class CWindowDialog</span>
<a name="l00383"></a>00383 
<a name="l00384"></a>00384                 <span class="keyword">class </span>C3DWindowDialog: <span class="keyword">public</span> wxFrame
<a name="l00385"></a>00385                 {
<a name="l00386"></a>00386                         <span class="keyword">friend</span> <span class="keyword">class </span>gui::CMyGLCanvas_DisplayWindow3D;
<a name="l00387"></a>00387 
<a name="l00388"></a>00388                         <span class="keyword">public</span>:
<a name="l00389"></a>00389 
<a name="l00390"></a>00390                                 C3DWindowDialog(CDisplayWindow3D *win3D, WxSubsystem::CWXMainFrame* parent,wxWindowID <span class="keywordtype">id</span> = -1, <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;caption = <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>(<span class="stringliteral">&quot;[MRPT-CDisplayWindow3D]&quot;</span>), wxSize initialSize = wxDefaultSize );
<a name="l00391"></a>00391                                 <span class="keyword">virtual</span> ~C3DWindowDialog();
<a name="l00392"></a>00392 
<a name="l00393"></a>00393                                 CDisplayWindow3D *m_win3D;
<a name="l00394"></a>00394                                 WxSubsystem::CWXMainFrame   *m_mainFrame;
<a name="l00395"></a>00395 
<a name="l00396"></a>00396                                 CMyGLCanvas_DisplayWindow3D     *m_canvas;
<a name="l00397"></a>00397 
<a name="l00398"></a>00398                                 <span class="keywordtype">void</span> clearTextMessages();
<a name="l00399"></a>00399                                 <span class="keywordtype">void</span> addTextMessage(
<a name="l00400"></a>00400                                         <span class="keyword">const</span> <span class="keywordtype">double</span> x_frac,
<a name="l00401"></a>00401                                         <span class="keyword">const</span> <span class="keywordtype">double</span> y_frac,
<a name="l00402"></a>00402                                         <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;text,
<a name="l00403"></a>00403                                         <span class="keyword">const</span> <a class="code" href="structmrpt_1_1utils_1_1_t_colorf.html" title="A RGB color - floats in the range [0,1].">mrpt::utils::TColorf</a> &amp;color,
<a name="l00404"></a>00404                                         <span class="keyword">const</span> <span class="keywordtype">size_t</span> unique_index,
<a name="l00405"></a>00405                                         <span class="keyword">const</span> <a class="code" href="group__mrpt__opengl__grp.html#ga4e54252970d0b0a6dd251335064a2346" title="Existing fonts for 2D texts in mrpt::opengl methods.">mrpt::opengl::TOpenGLFont</a> font
<a name="l00406"></a>00406                                         );
<a name="l00407"></a>00407                                 <span class="keywordtype">void</span> addTextMessage(
<a name="l00408"></a>00408                                         <span class="keyword">const</span> <span class="keywordtype">double</span> x_frac,
<a name="l00409"></a>00409                                         <span class="keyword">const</span> <span class="keywordtype">double</span> y_frac,
<a name="l00410"></a>00410                                         <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;text,
<a name="l00411"></a>00411                                         <span class="keyword">const</span> <a class="code" href="structmrpt_1_1utils_1_1_t_colorf.html" title="A RGB color - floats in the range [0,1].">mrpt::utils::TColorf</a> &amp;color,
<a name="l00412"></a>00412                                         <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>  &amp;font_name,
<a name="l00413"></a>00413                                         <span class="keyword">const</span> <span class="keywordtype">double</span>  font_size,
<a name="l00414"></a>00414                                         <span class="keyword">const</span> <a class="code" href="namespacemrpt_1_1opengl.html#a2a3950732480ac3cffe2c391a45fb4ef" title="Different style for vectorized font rendering.">mrpt::opengl::TOpenGLFontStyle</a> font_style,
<a name="l00415"></a>00415                                         <span class="keyword">const</span> <span class="keywordtype">size_t</span>  unique_index,
<a name="l00416"></a>00416                                         <span class="keyword">const</span> <span class="keywordtype">double</span>  font_spacing,
<a name="l00417"></a>00417                                         <span class="keyword">const</span> <span class="keywordtype">double</span>  font_kerning
<a name="l00418"></a>00418                                         );
<a name="l00419"></a>00419 
<a name="l00420"></a>00420                         <span class="keyword">private</span>:
<a name="l00421"></a>00421 
<a name="l00422"></a>00422                                 <span class="keywordtype">void</span> OnClose (wxCloseEvent&amp; event);
<a name="l00423"></a>00423                                 <span class="keywordtype">void</span> OnMenuClose(wxCommandEvent&amp; event);
<a name="l00424"></a>00424                                 <span class="keywordtype">void</span> OnMenuAbout(wxCommandEvent&amp; event);
<a name="l00425"></a>00425                                 <span class="keywordtype">void</span> OnChar(wxKeyEvent&amp; event);
<a name="l00426"></a>00426                                 <span class="keywordtype">void</span> OnResize(wxSizeEvent&amp; event);
<a name="l00427"></a>00427 
<a name="l00428"></a>00428                                 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">long</span> ID_MENUITEM1;
<a name="l00429"></a>00429                                 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">long</span> ID_MENUITEM2;
<a name="l00430"></a>00430 
<a name="l00431"></a>00431                                 DECLARE_EVENT_TABLE()
<a name="l00432"></a>00432                 };
<a name="l00433"></a>00433 <span class="comment"></span>
<a name="l00434"></a>00434 <span class="comment">                /** The wx dialog for gui::CDisplayWindowPlots</span>
<a name="l00435"></a>00435 <span class="comment">                  */</span>
<a name="l00436"></a>00436                 <span class="keyword">class </span>CWindowDialogPlots: <span class="keyword">public</span> wxFrame
<a name="l00437"></a>00437                 {
<a name="l00438"></a>00438                         <span class="keyword">public</span>:
<a name="l00439"></a>00439                                 CWindowDialogPlots( CDisplayWindowPlots *winPlots, WxSubsystem::CWXMainFrame* parent,wxWindowID <span class="keywordtype">id</span> = -1, <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;caption = <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>(<span class="stringliteral">&quot;[MRPT-CDisplayWindowPlots]&quot;</span>), wxSize initialSize = wxDefaultSize );
<a name="l00440"></a>00440                                 <span class="keyword">virtual</span> ~CWindowDialogPlots();
<a name="l00441"></a>00441 
<a name="l00442"></a>00442                                 CDisplayWindowPlots             *m_winPlots;
<a name="l00443"></a>00443                                 WxSubsystem::CWXMainFrame   *m_mainFrame;
<a name="l00444"></a>00444 
<a name="l00445"></a>00445                                 <a class="code" href="classmp_window.html" title="Canvas for plotting mpLayer implementations.">mpWindow</a>                                        *m_plot;
<a name="l00446"></a>00446                                 <span class="comment">// wxChartPanel                         *m_chartPanel;</span>
<a name="l00447"></a>00447                                 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">long</span>           ID_PLOT;
<a name="l00448"></a>00448                                 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">long</span>           ID_MENU_PRINT;
<a name="l00449"></a>00449                                 <span class="keywordtype">bool</span>                        m_firstSubmenu; <span class="comment">//!&lt; to know whether to insert a separator the first time.</span>
<a name="l00450"></a>00450 <span class="comment"></span>                                std::map&lt;long,long&gt;                     m_ID2ID; <span class="comment">//!&lt; wxIDs to user IDs for submenus.</span>
<a name="l00451"></a>00451 <span class="comment"></span>                                mrpt::math::TPoint2D            m_curCursorPos;  <span class="comment">//!&lt; In graph coords</span>
<a name="l00452"></a>00452 <span class="comment"></span>                                wxPoint                                         m_last_mouse_point; <span class="comment">//!&lt; In pixels</span>
<a name="l00453"></a>00453 <span class="comment"></span>
<a name="l00454"></a>00454                                 <span class="keywordtype">void</span> OnMenuSelected(wxCommandEvent&amp; ev);
<a name="l00455"></a>00455                                 <span class="keywordtype">void</span> OnMouseMove(wxMouseEvent&amp; event);
<a name="l00456"></a>00456 
<a name="l00457"></a>00457 <span class="comment"></span>
<a name="l00458"></a>00458 <span class="comment">                                /** Redirected from CDisplayWindowPlots::plot</span>
<a name="l00459"></a>00459 <span class="comment">                                  */</span>
<a name="l00460"></a>00460                                 <span class="keywordtype">void</span> plot(
<a name="l00461"></a>00461                                         <span class="keyword">const</span> <a class="code" href="namespacemrpt.html#aa271572e3985202e030758bfd54a02e1">vector_float</a> &amp;x,
<a name="l00462"></a>00462                                         <span class="keyword">const</span> <a class="code" href="namespacemrpt.html#aa271572e3985202e030758bfd54a02e1">vector_float</a> &amp;<a class="code" href="namespace_eigen_1_1internal.html#a3d7a581aeb951248dc6fe114e9e05f07">y</a>,
<a name="l00463"></a>00463                                         <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>  &amp;lineFormat,
<a name="l00464"></a>00464                                         <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>  &amp;plotName);
<a name="l00465"></a>00465 <span class="comment"></span>
<a name="l00466"></a>00466 <span class="comment">                                /** Redirected from CDisplayWindowPlots::plotEllipse</span>
<a name="l00467"></a>00467 <span class="comment">                                  */</span>
<a name="l00468"></a>00468                                 <span class="keywordtype">void</span> plotEllipse(
<a name="l00469"></a>00469                                         <span class="keyword">const</span> <a class="code" href="namespacemrpt.html#aa271572e3985202e030758bfd54a02e1">vector_float</a> &amp;x,
<a name="l00470"></a>00470                                         <span class="keyword">const</span> <a class="code" href="namespacemrpt.html#aa271572e3985202e030758bfd54a02e1">vector_float</a> &amp;<a class="code" href="namespace_eigen_1_1internal.html#a3d7a581aeb951248dc6fe114e9e05f07">y</a>,
<a name="l00471"></a>00471                                         <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>  &amp;lineFormat,
<a name="l00472"></a>00472                                         <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>  &amp;plotName,
<a name="l00473"></a>00473                                         <span class="keywordtype">bool</span> showName = <span class="keyword">false</span>);
<a name="l00474"></a>00474 <span class="comment"></span>
<a name="l00475"></a>00475 <span class="comment">                                /** Redirected from CDisplayWindowPlots::image</span>
<a name="l00476"></a>00476 <span class="comment">                                  */</span>
<a name="l00477"></a>00477                                 <span class="keywordtype">void</span> image(
<a name="l00478"></a>00478                                         <span class="keywordtype">void</span> *theWxImage,
<a name="l00479"></a>00479                                         <span class="keyword">const</span> <span class="keywordtype">float</span> &amp;x0,
<a name="l00480"></a>00480                                         <span class="keyword">const</span> <span class="keywordtype">float</span> &amp;y0,
<a name="l00481"></a>00481                                         <span class="keyword">const</span> <span class="keywordtype">float</span> &amp;w,
<a name="l00482"></a>00482                                         <span class="keyword">const</span> <span class="keywordtype">float</span> &amp;h,
<a name="l00483"></a>00483                                         <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;plotName);
<a name="l00484"></a>00484 
<a name="l00485"></a>00485                         <span class="keyword">private</span>:
<a name="l00486"></a>00486 
<a name="l00487"></a>00487                                 <span class="keywordtype">void</span> OnClose (wxCloseEvent&amp; event);
<a name="l00488"></a>00488                                 <span class="keywordtype">void</span> OnMenuPrint(wxCommandEvent&amp; event);
<a name="l00489"></a>00489                                 <span class="keywordtype">void</span> OnMenuClose(wxCommandEvent&amp; event);
<a name="l00490"></a>00490                                 <span class="keywordtype">void</span> OnMenuAbout(wxCommandEvent&amp; event);
<a name="l00491"></a>00491                                 <span class="keywordtype">void</span> OnChar(wxKeyEvent&amp; event);
<a name="l00492"></a>00492                                 <span class="keywordtype">void</span> OnResize(wxSizeEvent&amp; event);
<a name="l00493"></a>00493                                 <span class="keywordtype">void</span> OnMouseDown(wxMouseEvent&amp; event);
<a name="l00494"></a>00494 
<a name="l00495"></a>00495                                 DECLARE_EVENT_TABLE()
<a name="l00496"></a>00496                 }; <span class="comment">// end class CWindowDialog</span>
<a name="l00497"></a>00497 
<a name="l00498"></a>00498 <span class="preprocessor">                #ifndef _U</span>
<a name="l00499"></a>00499 <span class="preprocessor"></span><span class="preprocessor">                        #ifdef wxUSE_UNICODE</span>
<a name="l00500"></a>00500 <span class="preprocessor"></span><span class="preprocessor">                        #define _U(x) wxString((x),wxConvUTF8)</span>
<a name="l00501"></a>00501 <span class="preprocessor"></span><span class="preprocessor">                        #define _UU(x,y) wxString((x),y)</span>
<a name="l00502"></a>00502 <span class="preprocessor"></span><span class="preprocessor">                        #else</span>
<a name="l00503"></a>00503 <span class="preprocessor"></span><span class="preprocessor">                        #define _U(x) (x)</span>
<a name="l00504"></a>00504 <span class="preprocessor"></span><span class="preprocessor">                        #define _UU(x,y) (x)</span>
<a name="l00505"></a>00505 <span class="preprocessor"></span><span class="preprocessor">                        #endif</span>
<a name="l00506"></a>00506 <span class="preprocessor"></span><span class="preprocessor">                #endif</span>
<a name="l00507"></a>00507 <span class="preprocessor"></span>
<a name="l00508"></a>00508 
<a name="l00509"></a>00509 <span class="preprocessor">        #endif</span>
<a name="l00510"></a>00510 <span class="preprocessor"></span>
<a name="l00511"></a>00511         } <span class="comment">// End of namespace</span>
<a name="l00512"></a>00512 } <span class="comment">// End of namespace</span>
<a name="l00513"></a>00513 
<a name="l00514"></a>00514 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<br><hr><br> <table border="0" width="100%"> <tr> <td> Page generated by <a href="http://www.doxygen.org" target="_blank">Doxygen 1.7.5</a> for MRPT 0.9.5 SVN: at Sun Sep 25 17:20:18 UTC 2011</td><td></td> <td width="100"> </td> <td width="150">  </td></tr> </table>  </body></html>