DISTRHO Plugin Framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

385 lines
19KB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  6. <meta name="generator" content="Doxygen 1.9.1"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>DISTRHO Plugin Framework: Application Class Reference</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="search/searchdata.js"></script>
  14. <script type="text/javascript" src="search/search.js"></script>
  15. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  16. </head>
  17. <body>
  18. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  19. <div id="titlearea">
  20. <table cellspacing="0" cellpadding="0">
  21. <tbody>
  22. <tr style="height: 56px;">
  23. <td id="projectalign" style="padding-left: 0.5em;">
  24. <div id="projectname">DISTRHO Plugin Framework
  25. </div>
  26. </td>
  27. </tr>
  28. </tbody>
  29. </table>
  30. </div>
  31. <!-- end header part -->
  32. <!-- Generated by Doxygen 1.9.1 -->
  33. <script type="text/javascript">
  34. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  35. var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
  36. /* @license-end */
  37. </script>
  38. <script type="text/javascript" src="menudata.js"></script>
  39. <script type="text/javascript" src="menu.js"></script>
  40. <script type="text/javascript">
  41. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  42. $(function() {
  43. initMenu('',true,false,'search.php','Search');
  44. $(document).ready(function() { init_search(); });
  45. });
  46. /* @license-end */</script>
  47. <div id="main-nav"></div>
  48. <!-- window showing the filter options -->
  49. <div id="MSearchSelectWindow"
  50. onmouseover="return searchBox.OnSearchSelectShow()"
  51. onmouseout="return searchBox.OnSearchSelectHide()"
  52. onkeydown="return searchBox.OnSearchSelectKey(event)">
  53. </div>
  54. <!-- iframe showing the search results (closed by default) -->
  55. <div id="MSearchResultsWindow">
  56. <iframe src="javascript:void(0)" frameborder="0"
  57. name="MSearchResults" id="MSearchResults">
  58. </iframe>
  59. </div>
  60. </div><!-- top -->
  61. <div class="header">
  62. <div class="summary">
  63. <a href="#pub-methods">Public Member Functions</a> &#124;
  64. <a href="#friends">Friends</a> &#124;
  65. <a href="classApplication-members.html">List of all members</a> </div>
  66. <div class="headertitle">
  67. <div class="title">Application Class Reference</div> </div>
  68. </div><!--header-->
  69. <div class="contents">
  70. <p><code>#include &lt;<a class="el" href="Application_8hpp_source.html">Application.hpp</a>&gt;</code></p>
  71. <table class="memberdecls">
  72. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
  73. Public Member Functions</h2></td></tr>
  74. <tr class="memitem:af9dd089d30cf442f8ffda646305089bb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#af9dd089d30cf442f8ffda646305089bb">Application</a> (bool <a class="el" href="classApplication.html#aa0728e9c72545d81ba403b44c92ecd50">isStandalone</a>=true)</td></tr>
  75. <tr class="separator:af9dd089d30cf442f8ffda646305089bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
  76. <tr class="memitem:a20573928a0d53fb96d929513bc5acde6"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#a20573928a0d53fb96d929513bc5acde6">~Application</a> ()</td></tr>
  77. <tr class="separator:a20573928a0d53fb96d929513bc5acde6"><td class="memSeparator" colspan="2">&#160;</td></tr>
  78. <tr class="memitem:ac8382754f04f4de15768981459a28e3a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#ac8382754f04f4de15768981459a28e3a">idle</a> ()</td></tr>
  79. <tr class="separator:ac8382754f04f4de15768981459a28e3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  80. <tr class="memitem:a805dd37af3b9adfc1d0ee1e734ad81e3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#a805dd37af3b9adfc1d0ee1e734ad81e3">exec</a> (uint idleTimeInMs=30)</td></tr>
  81. <tr class="separator:a805dd37af3b9adfc1d0ee1e734ad81e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
  82. <tr class="memitem:af77b716ee803aecb2ce1674695dc3986"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#af77b716ee803aecb2ce1674695dc3986">quit</a> ()</td></tr>
  83. <tr class="separator:af77b716ee803aecb2ce1674695dc3986"><td class="memSeparator" colspan="2">&#160;</td></tr>
  84. <tr class="memitem:aa2dd05d544834e8fca24a58f5e57f795"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#aa2dd05d544834e8fca24a58f5e57f795">isQuitting</a> () const noexcept</td></tr>
  85. <tr class="separator:aa2dd05d544834e8fca24a58f5e57f795"><td class="memSeparator" colspan="2">&#160;</td></tr>
  86. <tr class="memitem:aa0728e9c72545d81ba403b44c92ecd50"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#aa0728e9c72545d81ba403b44c92ecd50">isStandalone</a> () const noexcept</td></tr>
  87. <tr class="separator:aa0728e9c72545d81ba403b44c92ecd50"><td class="memSeparator" colspan="2">&#160;</td></tr>
  88. <tr class="memitem:a2f6f8250f31dbb600bdef12692d62b73"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#a2f6f8250f31dbb600bdef12692d62b73">getTime</a> () const</td></tr>
  89. <tr class="separator:a2f6f8250f31dbb600bdef12692d62b73"><td class="memSeparator" colspan="2">&#160;</td></tr>
  90. <tr class="memitem:ad6aab76a79b7b3c2883785040b46017a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#ad6aab76a79b7b3c2883785040b46017a">addIdleCallback</a> (<a class="el" href="structIdleCallback.html">IdleCallback</a> *callback)</td></tr>
  91. <tr class="separator:ad6aab76a79b7b3c2883785040b46017a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  92. <tr class="memitem:a082f532e2922924c6c72517f9272f67d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#a082f532e2922924c6c72517f9272f67d">removeIdleCallback</a> (<a class="el" href="structIdleCallback.html">IdleCallback</a> *callback)</td></tr>
  93. <tr class="separator:a082f532e2922924c6c72517f9272f67d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  94. <tr class="memitem:a4eb331050ea4835aea5ad06cad1265fb"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#a4eb331050ea4835aea5ad06cad1265fb">getClassName</a> () const noexcept</td></tr>
  95. <tr class="separator:a4eb331050ea4835aea5ad06cad1265fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
  96. <tr class="memitem:a203d22d1ce0c0de90c2379f6bc839815"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApplication.html#a203d22d1ce0c0de90c2379f6bc839815">setClassName</a> (const char *name)</td></tr>
  97. <tr class="separator:a203d22d1ce0c0de90c2379f6bc839815"><td class="memSeparator" colspan="2">&#160;</td></tr>
  98. </table><table class="memberdecls">
  99. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
  100. Friends</h2></td></tr>
  101. <tr class="memitem:a553f958a25683445088050a69d3de8e9"><td class="memItemLeft" align="right" valign="top"><a id="a553f958a25683445088050a69d3de8e9"></a>
  102. class&#160;</td><td class="memItemRight" valign="bottom"><b>Window</b></td></tr>
  103. <tr class="separator:a553f958a25683445088050a69d3de8e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
  104. <tr class="memitem:a883b722c934d56ad3fd6758b74fa4f4d"><td class="memItemLeft" align="right" valign="top"><a id="a883b722c934d56ad3fd6758b74fa4f4d"></a>
  105. class&#160;</td><td class="memItemRight" valign="bottom"><b>DISTRHO_NAMESPACE::PluginApplication</b></td></tr>
  106. <tr class="separator:a883b722c934d56ad3fd6758b74fa4f4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  107. </table>
  108. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  109. <div class="textblock"><p>Base DGL <a class="el" href="classApplication.html">Application</a> class.</p>
  110. <p>One application instance is required for creating a window. There's no single/global application instance in DGL, and multiple windows can share the same app instance.</p>
  111. <p>In standalone mode an application will automatically quit its event-loop when all its windows are closed.</p>
  112. <p>Unless stated otherwise, functions within this class are not thread-safe. </p>
  113. </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
  114. <a id="af9dd089d30cf442f8ffda646305089bb"></a>
  115. <h2 class="memtitle"><span class="permalink"><a href="#af9dd089d30cf442f8ffda646305089bb">&#9670;&nbsp;</a></span>Application()</h2>
  116. <div class="memitem">
  117. <div class="memproto">
  118. <table class="memname">
  119. <tr>
  120. <td class="memname">Application::Application </td>
  121. <td>(</td>
  122. <td class="paramtype">bool&#160;</td>
  123. <td class="paramname"><em>isStandalone</em> = <code>true</code></td><td>)</td>
  124. <td></td>
  125. </tr>
  126. </table>
  127. </div><div class="memdoc">
  128. <p>Constructor. </p>
  129. </div>
  130. </div>
  131. <a id="a20573928a0d53fb96d929513bc5acde6"></a>
  132. <h2 class="memtitle"><span class="permalink"><a href="#a20573928a0d53fb96d929513bc5acde6">&#9670;&nbsp;</a></span>~Application()</h2>
  133. <div class="memitem">
  134. <div class="memproto">
  135. <table class="mlabels">
  136. <tr>
  137. <td class="mlabels-left">
  138. <table class="memname">
  139. <tr>
  140. <td class="memname">virtual Application::~Application </td>
  141. <td>(</td>
  142. <td class="paramname"></td><td>)</td>
  143. <td></td>
  144. </tr>
  145. </table>
  146. </td>
  147. <td class="mlabels-right">
  148. <span class="mlabels"><span class="mlabel">virtual</span></span> </td>
  149. </tr>
  150. </table>
  151. </div><div class="memdoc">
  152. <p>Destructor. </p>
  153. </div>
  154. </div>
  155. <h2 class="groupheader">Member Function Documentation</h2>
  156. <a id="ac8382754f04f4de15768981459a28e3a"></a>
  157. <h2 class="memtitle"><span class="permalink"><a href="#ac8382754f04f4de15768981459a28e3a">&#9670;&nbsp;</a></span>idle()</h2>
  158. <div class="memitem">
  159. <div class="memproto">
  160. <table class="memname">
  161. <tr>
  162. <td class="memname">void Application::idle </td>
  163. <td>(</td>
  164. <td class="paramname"></td><td>)</td>
  165. <td></td>
  166. </tr>
  167. </table>
  168. </div><div class="memdoc">
  169. <p>Idle function. This runs the application event-loop once. </p>
  170. </div>
  171. </div>
  172. <a id="a805dd37af3b9adfc1d0ee1e734ad81e3"></a>
  173. <h2 class="memtitle"><span class="permalink"><a href="#a805dd37af3b9adfc1d0ee1e734ad81e3">&#9670;&nbsp;</a></span>exec()</h2>
  174. <div class="memitem">
  175. <div class="memproto">
  176. <table class="memname">
  177. <tr>
  178. <td class="memname">void Application::exec </td>
  179. <td>(</td>
  180. <td class="paramtype">uint&#160;</td>
  181. <td class="paramname"><em>idleTimeInMs</em> = <code>30</code></td><td>)</td>
  182. <td></td>
  183. </tr>
  184. </table>
  185. </div><div class="memdoc">
  186. <p>Run the application event-loop until all Windows are closed. <a class="el" href="classApplication.html#ac8382754f04f4de15768981459a28e3a">idle()</a> is called at regular intervals. </p><dl class="section note"><dt>Note</dt><dd>This function is meant for standalones only, <em>never</em> call this from plugins. </dd></dl>
  187. </div>
  188. </div>
  189. <a id="af77b716ee803aecb2ce1674695dc3986"></a>
  190. <h2 class="memtitle"><span class="permalink"><a href="#af77b716ee803aecb2ce1674695dc3986">&#9670;&nbsp;</a></span>quit()</h2>
  191. <div class="memitem">
  192. <div class="memproto">
  193. <table class="memname">
  194. <tr>
  195. <td class="memname">void Application::quit </td>
  196. <td>(</td>
  197. <td class="paramname"></td><td>)</td>
  198. <td></td>
  199. </tr>
  200. </table>
  201. </div><div class="memdoc">
  202. <p>Quit the application. This stops the event-loop and closes all Windows. This function is thread-safe. </p>
  203. </div>
  204. </div>
  205. <a id="aa2dd05d544834e8fca24a58f5e57f795"></a>
  206. <h2 class="memtitle"><span class="permalink"><a href="#aa2dd05d544834e8fca24a58f5e57f795">&#9670;&nbsp;</a></span>isQuitting()</h2>
  207. <div class="memitem">
  208. <div class="memproto">
  209. <table class="mlabels">
  210. <tr>
  211. <td class="mlabels-left">
  212. <table class="memname">
  213. <tr>
  214. <td class="memname">bool Application::isQuitting </td>
  215. <td>(</td>
  216. <td class="paramname"></td><td>)</td>
  217. <td> const</td>
  218. </tr>
  219. </table>
  220. </td>
  221. <td class="mlabels-right">
  222. <span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
  223. </tr>
  224. </table>
  225. </div><div class="memdoc">
  226. <p>Check if the application is about to quit. Returning true means there's no event-loop running at the moment (or it's just about to stop). This function is thread-safe. </p>
  227. </div>
  228. </div>
  229. <a id="aa0728e9c72545d81ba403b44c92ecd50"></a>
  230. <h2 class="memtitle"><span class="permalink"><a href="#aa0728e9c72545d81ba403b44c92ecd50">&#9670;&nbsp;</a></span>isStandalone()</h2>
  231. <div class="memitem">
  232. <div class="memproto">
  233. <table class="mlabels">
  234. <tr>
  235. <td class="mlabels-left">
  236. <table class="memname">
  237. <tr>
  238. <td class="memname">bool Application::isStandalone </td>
  239. <td>(</td>
  240. <td class="paramname"></td><td>)</td>
  241. <td> const</td>
  242. </tr>
  243. </table>
  244. </td>
  245. <td class="mlabels-right">
  246. <span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
  247. </tr>
  248. </table>
  249. </div><div class="memdoc">
  250. <p>Check if the application is standalone, otherwise running as a module or plugin. This function is thread-safe. </p>
  251. </div>
  252. </div>
  253. <a id="a2f6f8250f31dbb600bdef12692d62b73"></a>
  254. <h2 class="memtitle"><span class="permalink"><a href="#a2f6f8250f31dbb600bdef12692d62b73">&#9670;&nbsp;</a></span>getTime()</h2>
  255. <div class="memitem">
  256. <div class="memproto">
  257. <table class="memname">
  258. <tr>
  259. <td class="memname">double Application::getTime </td>
  260. <td>(</td>
  261. <td class="paramname"></td><td>)</td>
  262. <td> const</td>
  263. </tr>
  264. </table>
  265. </div><div class="memdoc">
  266. <p>Return the time in seconds.</p>
  267. <p>This is a monotonically increasing clock with high resolution.<br />
  268. The returned time is only useful to compare against other times returned by this function, its absolute value has no meaning. </p>
  269. </div>
  270. </div>
  271. <a id="ad6aab76a79b7b3c2883785040b46017a"></a>
  272. <h2 class="memtitle"><span class="permalink"><a href="#ad6aab76a79b7b3c2883785040b46017a">&#9670;&nbsp;</a></span>addIdleCallback()</h2>
  273. <div class="memitem">
  274. <div class="memproto">
  275. <table class="memname">
  276. <tr>
  277. <td class="memname">void Application::addIdleCallback </td>
  278. <td>(</td>
  279. <td class="paramtype"><a class="el" href="structIdleCallback.html">IdleCallback</a> *&#160;</td>
  280. <td class="paramname"><em>callback</em></td><td>)</td>
  281. <td></td>
  282. </tr>
  283. </table>
  284. </div><div class="memdoc">
  285. <p>Add a callback function to be triggered on every idle cycle. You can add more than one, and remove them at anytime with <a class="el" href="classApplication.html#a082f532e2922924c6c72517f9272f67d">removeIdleCallback()</a>. Idle callbacks trigger right after OS event handling and <a class="el" href="classWindow.html">Window</a> idle events (within the same cycle). There are no guarantees in terms of timing, use <a class="el" href="classWindow.html#ad17a7f53a62673982f4861cdc27fd54e">Window::addIdleCallback</a> for time-relative callbacks. </p>
  286. </div>
  287. </div>
  288. <a id="a082f532e2922924c6c72517f9272f67d"></a>
  289. <h2 class="memtitle"><span class="permalink"><a href="#a082f532e2922924c6c72517f9272f67d">&#9670;&nbsp;</a></span>removeIdleCallback()</h2>
  290. <div class="memitem">
  291. <div class="memproto">
  292. <table class="memname">
  293. <tr>
  294. <td class="memname">void Application::removeIdleCallback </td>
  295. <td>(</td>
  296. <td class="paramtype"><a class="el" href="structIdleCallback.html">IdleCallback</a> *&#160;</td>
  297. <td class="paramname"><em>callback</em></td><td>)</td>
  298. <td></td>
  299. </tr>
  300. </table>
  301. </div><div class="memdoc">
  302. <p>Remove an idle callback previously added via <a class="el" href="classApplication.html#ad6aab76a79b7b3c2883785040b46017a">addIdleCallback()</a>. </p>
  303. </div>
  304. </div>
  305. <a id="a4eb331050ea4835aea5ad06cad1265fb"></a>
  306. <h2 class="memtitle"><span class="permalink"><a href="#a4eb331050ea4835aea5ad06cad1265fb">&#9670;&nbsp;</a></span>getClassName()</h2>
  307. <div class="memitem">
  308. <div class="memproto">
  309. <table class="mlabels">
  310. <tr>
  311. <td class="mlabels-left">
  312. <table class="memname">
  313. <tr>
  314. <td class="memname">const char* Application::getClassName </td>
  315. <td>(</td>
  316. <td class="paramname"></td><td>)</td>
  317. <td> const</td>
  318. </tr>
  319. </table>
  320. </td>
  321. <td class="mlabels-right">
  322. <span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
  323. </tr>
  324. </table>
  325. </div><div class="memdoc">
  326. <p>Get the class name of the application.</p>
  327. <p>This is a stable identifier for the application, used as the window class/instance name on X11 and Windows. It is not displayed to the user, but can be used in scripts and by window managers, so it should be the same for every instance of the application, but different from other applications.</p>
  328. <p>Plugins created with DPF have their class name automatically set based on DGL_NAMESPACE and plugin name. </p>
  329. </div>
  330. </div>
  331. <a id="a203d22d1ce0c0de90c2379f6bc839815"></a>
  332. <h2 class="memtitle"><span class="permalink"><a href="#a203d22d1ce0c0de90c2379f6bc839815">&#9670;&nbsp;</a></span>setClassName()</h2>
  333. <div class="memitem">
  334. <div class="memproto">
  335. <table class="memname">
  336. <tr>
  337. <td class="memname">void Application::setClassName </td>
  338. <td>(</td>
  339. <td class="paramtype">const char *&#160;</td>
  340. <td class="paramname"><em>name</em></td><td>)</td>
  341. <td></td>
  342. </tr>
  343. </table>
  344. </div><div class="memdoc">
  345. <p>Set the class name of the application. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="classApplication.html#a4eb331050ea4835aea5ad06cad1265fb">getClassName</a> </dd></dl>
  346. </div>
  347. </div>
  348. <hr/>The documentation for this class was generated from the following file:<ul>
  349. <li>dgl/<a class="el" href="Application_8hpp_source.html">Application.hpp</a></li>
  350. </ul>
  351. </div><!-- contents -->
  352. <!-- start footer part -->
  353. <hr class="footer"/><address class="footer"><small>
  354. Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
  355. </small></address>
  356. </body>
  357. </html>