summaryrefslogtreecommitdiffstats
path: root/dev/MinGfx/docs/html/graphics__app_8h_source.html
diff options
context:
space:
mode:
Diffstat (limited to 'dev/MinGfx/docs/html/graphics__app_8h_source.html')
-rw-r--r--dev/MinGfx/docs/html/graphics__app_8h_source.html716
1 files changed, 358 insertions, 358 deletions
diff --git a/dev/MinGfx/docs/html/graphics__app_8h_source.html b/dev/MinGfx/docs/html/graphics__app_8h_source.html
index 2353eb8..ac73a31 100644
--- a/dev/MinGfx/docs/html/graphics__app_8h_source.html
+++ b/dev/MinGfx/docs/html/graphics__app_8h_source.html
@@ -1,358 +1,358 @@
-<!-- HTML header for doxygen 1.8.9.1-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.9.1"/>
-<title>MinGfx Toolkit: src/graphics_app.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/x-mathjax-config">
- MathJax.Hub.Config({
- extensions: ["tex2jax.js"],
- jax: ["input/TeX","output/HTML-CSS"],
-});
-</script>
-<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td style="padding-left: 0.5em;">
- <div id="projectname">MinGfx Toolkit
- &#160;<span id="projectnumber">1.0</span>
- </div>
- <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.9.1 -->
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
-/* @license-end */
-</script>
-<script type="text/javascript" src="menudata.js"></script>
-<script type="text/javascript" src="menu.js"></script>
-<script type="text/javascript">
-/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
-$(function() {
- initMenu('',true,false,'search.php','Search');
- $(document).ready(function() { init_search(); });
-});
-/* @license-end */</script>
-<div id="main-nav"></div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
- <ul>
-<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
-</div>
-</div><!-- top -->
-<div class="header">
- <div class="headertitle">
-<div class="title">graphics_app.h</div> </div>
-</div><!--header-->
-<div class="contents">
-<a href="graphics__app_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2017, University of Minnesota</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ... </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef SRC_GRAPHICS_APP_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define SRC_GRAPHICS_APP_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// disable warnings for this 3rd party code</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#pragma warning ( push, 0 )</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;nanogui/nanogui.h&gt;</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#pragma warning ( pop )</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector2_8h.html">vector2.h</a>&quot;</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
-<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html"> 135</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_graphics_app.html">GraphicsApp</a> {</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
-<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b"> 144</a></span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">GraphicsApp</a>(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keyword">const</span> std::string &amp;caption);</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
-<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb"> 148</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">~GraphicsApp</a>();</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// Callback methods -- override these and fill in to respond to user</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// input events.</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
-<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f"> 165</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; </div>
-<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17"> 174</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">OnLeftMouseDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
-<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b"> 187</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">OnLeftMouseDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
-<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613"> 196</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">OnLeftMouseUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; </div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
-<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48"> 200</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">OnMiddleMouseDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
-<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6"> 203</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">OnMiddleMouseDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
-<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08"> 206</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">OnMiddleMouseUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
-<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c"> 210</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">OnRightMouseDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; </div>
-<div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7"> 213</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">OnRightMouseDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
-<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3"> 216</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">OnRightMouseUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; </div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
-<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01"> 225</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">OnKeyDown</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {}</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
-<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0"> 233</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">OnKeyRepeat</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {}</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
-<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c"> 241</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">OnKeyUp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {}</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
-<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952"> 247</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">OnSpecialKeyDown</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {}</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
-<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22"> 251</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">OnSpecialKeyRepeat</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {}</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
-<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14"> 255</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">OnSpecialKeyUp</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {}</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
-<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a"> 261</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">OnWindowResize</a>(<span class="keywordtype">int</span> new_width, <span class="keywordtype">int</span> new_height) {}</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div>
-<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9"> 271</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">Run</a>();</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
-<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a"> 284</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">InitNanoGUI</a>() {}</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; </div>
-<div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3"> 297</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">InitOpenGL</a>() {}</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
-<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa"> 306</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">UpdateSimulation</a>(<span class="keywordtype">double</span> dt) {}</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; </div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
-<div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0"> 311</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">DrawUsingNanoVG</a>(NVGcontext *ctx) {}</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; </div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; </div>
-<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca"> 317</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">DrawUsingOpenGL</a>() {}</div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; </div>
-<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac"> 322</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">IsKeyDown</a>(<span class="keywordtype">int</span> key);</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
-<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7"> 325</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">IsLeftMouseDown</a>();</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
-<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434"> 328</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">IsMiddleMouseDown</a>();</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
-<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d"> 331</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">IsRightMouseDown</a>();</div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; </div>
-<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0"> 334</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">window_width</a>();</div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
-<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016"> 337</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">window_height</a>();</div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
-<div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696"> 343</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">framebuffer_width</a>();</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; </div>
-<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32"> 349</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">framebuffer_height</a>();</div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; </div>
-<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23"> 352</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">aspect_ratio</a>();</div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; </div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; </div>
-<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a"> 359</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">PixelsToNormalizedDeviceCoords</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInPixels);</div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; </div>
-<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248"> 365</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">NormalizedDeviceCoordsToPixels</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInNDC);</div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; </div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; </div>
-<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1"> 372</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1">PixelsToNormalizedDeviceCoords</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;vectorInPixels);</div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; </div>
-<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93"> 378</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93">NormalizedDeviceCoordsToPixels</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;pointInNDC);</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; </div>
-<div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646"> 382</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">ReadZValueAtPixel</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInPixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> whichBuffer = GL_BACK);</div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; </div>
-<div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16"> 385</a></span>&#160; <span class="keyword">virtual</span> nanogui::Screen* <a class="code" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">screen</a>();</div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; </div>
-<div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94"> 388</a></span>&#160; <span class="keyword">virtual</span> GLFWwindow* <a class="code" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a>();</div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; </div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; </div>
-<div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5"> 393</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">ResizeWindow</a>(<span class="keywordtype">int</span> new_width, <span class="keywordtype">int</span> new_height);</div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; </div>
-<div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1"> 403</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">InitGraphicsContext</a>();</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; </div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; </div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordtype">bool</span> cursor_pos_glfw_cb(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordtype">bool</span> mouse_button_glfw_cb(<span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> modifiers);</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordtype">bool</span> key_glfw_cb(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods);</div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordtype">bool</span> char_glfw_cb(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint);</div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordtype">bool</span> drop_glfw_cb(<span class="keywordtype">int</span> count, <span class="keyword">const</span> <span class="keywordtype">char</span> **filenames);</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordtype">bool</span> scroll_glfw_cb(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordtype">bool</span> resize_glfw_cb(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; </div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mouse_move(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {</div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a>(pos, delta);</div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> left_mouse_down(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {</div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">OnLeftMouseDown</a>(pos);</div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> left_mouse_drag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">OnLeftMouseDrag</a>(pos, delta);</div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> left_mouse_up(<span class="keyword">const</span> Point2 &amp;pos) {</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">OnLeftMouseUp</a>(pos);</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> middle_mouse_down(<span class="keyword">const</span> Point2 &amp;pos) {</div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">OnMiddleMouseDown</a>(pos);</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> middle_mouse_drag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">OnMiddleMouseDrag</a>(pos, delta);</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> middle_mouse_up(<span class="keyword">const</span> Point2 &amp;pos) {</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">OnMiddleMouseUp</a>(pos);</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> right_mouse_down(<span class="keyword">const</span> Point2 &amp;pos) {</div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">OnRightMouseDown</a>(pos);</div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> right_mouse_drag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">OnRightMouseDrag</a>(pos, delta);</div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> right_mouse_up(<span class="keyword">const</span> Point2 &amp;pos) {</div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">OnRightMouseUp</a>(pos);</div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> key_down(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {</div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">OnKeyDown</a>(c, modifiers);</div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> key_repeat(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {</div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">OnKeyRepeat</a>(c, modifiers);</div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> key_up(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {</div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">OnKeyUp</a>(c, modifiers);</div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> special_key_down(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {</div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">OnSpecialKeyDown</a>(key, scancode, modifiers);</div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> special_key_repeat(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {</div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">OnSpecialKeyRepeat</a>(key, scancode, modifiers);</div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> special_key_up(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {</div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">OnSpecialKeyUp</a>(key, scancode, modifiers);</div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; </div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordtype">bool</span> graphicsInitialized_;</div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordtype">int</span> width_;</div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordtype">int</span> height_;</div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> std::string caption_;</div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; nanogui::Screen *screen_;</div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; GLFWwindow* window_;</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordtype">double</span> lastDrawT_;</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; Point2 lastMouse_;</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordtype">bool</span> leftDown_;</div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordtype">bool</span> middleDown_;</div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordtype">bool</span> rightDown_;</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;};</div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; </div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; </div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;} <span class="comment">// end namespace</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; </div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; </div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></div><div class="ttdoc">This is the main application base class for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00135">graphics_app.h:135</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a002560456139e537877d079978db4b01"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">mingfx::GraphicsApp::OnKeyDown</a></div><div class="ttdeci">virtual void OnKeyDown(const char *c, int modifiers)</div><div class="ttdoc">Transforms a keyboard down event into the actual character typed.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00225">graphics_app.h:225</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a00ad5039af2f428a08fe45751a9731c7"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">mingfx::GraphicsApp::OnRightMouseDrag</a></div><div class="ttdeci">virtual void OnRightMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse button is held down and the mouse has moved in the past frame then this function will be...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00213">graphics_app.h:213</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a04beb462aa04371dc86d807838f999e1"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">mingfx::GraphicsApp::InitGraphicsContext</a></div><div class="ttdeci">virtual void InitGraphicsContext()</div><div class="ttdoc">Users cannot make any graphics calls (e.g., setting the clear color, saving mesh data to the GPU) unt...</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a0db71b2465e12a8aef4eefbe8b9fcee5"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">mingfx::GraphicsApp::ResizeWindow</a></div><div class="ttdeci">virtual void ResizeWindow(int new_width, int new_height)</div><div class="ttdoc">Cause the graphics windows to resize programmatically rather than by dragging on the corner manually.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a0deb6da45fc0d3980e44556a861c7a14"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">mingfx::GraphicsApp::OnSpecialKeyUp</a></div><div class="ttdeci">virtual void OnSpecialKeyUp(int key, int scancode, int modifiers)</div><div class="ttdoc">The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00255">graphics_app.h:255</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a1c682fa2dd0bce855e1e32ffeac532b0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">mingfx::GraphicsApp::window_width</a></div><div class="ttdeci">virtual int window_width()</div><div class="ttdoc">Returns the current width of the client area of the window in pixels.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a1d5831953b37fae615fbd1bf527214b0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">mingfx::GraphicsApp::OnKeyRepeat</a></div><div class="ttdeci">virtual void OnKeyRepeat(const char *c, int modifiers)</div><div class="ttdoc">Transforms a keyboard repeat event into the actual character typed.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00233">graphics_app.h:233</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a23a780feda9b52eea7319a53b204ce8f"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">mingfx::GraphicsApp::OnMouseMove</a></div><div class="ttdeci">virtual void OnMouseMove(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse has moved in the past frame and no mouse buttons are currently pressed,...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00165">graphics_app.h:165</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a378b8a102775eeb01a6da9dd68482d08"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">mingfx::GraphicsApp::OnMiddleMouseUp</a></div><div class="ttdeci">virtual void OnMiddleMouseUp(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was released since the last frame, then this function will be called to notify yo...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00206">graphics_app.h:206</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a45596da36aa3905e7c752826a7fd9f93"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93">mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels</a></div><div class="ttdeci">virtual Vector2 NormalizedDeviceCoordsToPixels(const Vector2 &amp;pointInNDC)</div><div class="ttdoc">Transforms a vector in normalized device coordinates (top left = (-1,1) bottom right (1,...</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a471951dbf45ffa88027cb92707443646"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">mingfx::GraphicsApp::ReadZValueAtPixel</a></div><div class="ttdeci">virtual float ReadZValueAtPixel(const Point2 &amp;pointInPixels, unsigned int whichBuffer=GL_BACK)</div><div class="ttdoc">Returns the z buffer value under the specified pixel. z will be 0 at the near plane and +1 at the far...</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a4aa30e3d33731178a9162454a81be08d"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">mingfx::GraphicsApp::IsRightMouseDown</a></div><div class="ttdeci">virtual bool IsRightMouseDown()</div><div class="ttdoc">True if the right mouse button is currently held down.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a4e8ac965474de9046448b8811bf25dd1"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1">mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords</a></div><div class="ttdeci">virtual Vector2 PixelsToNormalizedDeviceCoords(const Vector2 &amp;vectorInPixels)</div><div class="ttdoc">Transforms a vector in viewport coordinates (pixels where top left = (0,0) and bottom right = (window...</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a536dbadf0b8a11ef59d7e855ca43f613"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">mingfx::GraphicsApp::OnLeftMouseUp</a></div><div class="ttdeci">virtual void OnLeftMouseUp(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was released since the last frame, then this function will be called to notify yo...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00196">graphics_app.h:196</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a56d350a8b030998709a51630753d509b"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">mingfx::GraphicsApp::OnLeftMouseDrag</a></div><div class="ttdeci">virtual void OnLeftMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse button is held down and the mouse has moved in the past frame then this function will be...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00187">graphics_app.h:187</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a588315d5c45490b440a764af2bc5bd48"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">mingfx::GraphicsApp::OnMiddleMouseDown</a></div><div class="ttdeci">virtual void OnMiddleMouseDown(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was pressed down since the last frame, then this function will be called to notif...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00200">graphics_app.h:200</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5a858fd10651f7617491f37b49dbf8ca"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">mingfx::GraphicsApp::DrawUsingOpenGL</a></div><div class="ttdeci">virtual void DrawUsingOpenGL()</div><div class="ttdoc">Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00317">graphics_app.h:317</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5b78d79192180a6ef5271d2a2b2d1cc7"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">mingfx::GraphicsApp::IsLeftMouseDown</a></div><div class="ttdeci">virtual bool IsLeftMouseDown()</div><div class="ttdoc">True if the left mouse button is currently held down.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5ee9ae3d14e76c949979a8008687d6c9"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">mingfx::GraphicsApp::Run</a></div><div class="ttdeci">virtual void Run()</div><div class="ttdoc">After creating a new GraphicsApp, call this to start the app's mainloop.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a60688614e5dfeaabf57f8825cdaa08ac"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">mingfx::GraphicsApp::IsKeyDown</a></div><div class="ttdeci">virtual bool IsKeyDown(int key)</div><div class="ttdoc">True if the specified is is currently held down. Uses the GLFW key codes found here: http://www....</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a6141ec6adc29572ee99ca26cf90e6248"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels</a></div><div class="ttdeci">virtual Point2 NormalizedDeviceCoordsToPixels(const Point2 &amp;pointInNDC)</div><div class="ttdoc">Transforms a point in normalized device coordinates (top left = (-1,1) bottom right (1,...</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a688f12675da58210e8ec2ffcda4923d0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">mingfx::GraphicsApp::DrawUsingNanoVG</a></div><div class="ttdeci">virtual void DrawUsingNanoVG(NVGcontext *ctx)</div><div class="ttdoc">Override this to draw graphics using the nanovg vector graphics library, which provides an easy way t...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00311">graphics_app.h:311</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a8362762489e287edfa59617a6602db22"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">mingfx::GraphicsApp::OnSpecialKeyRepeat</a></div><div class="ttdeci">virtual void OnSpecialKeyRepeat(int key, int scancode, int modifiers)</div><div class="ttdoc">The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00251">graphics_app.h:251</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a8376ef8eb0840b229a2301f995db3f6c"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">mingfx::GraphicsApp::OnKeyUp</a></div><div class="ttdeci">virtual void OnKeyUp(const char *c, int modifiers)</div><div class="ttdoc">Transforms a keyboard up event into the actual character typed.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00241">graphics_app.h:241</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a903f94b82cc10f32039ff3f2ba368a9c"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">mingfx::GraphicsApp::OnRightMouseDown</a></div><div class="ttdeci">virtual void OnRightMouseDown(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was pressed down since the last frame, then this function will be called to notif...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00210">graphics_app.h:210</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a941f7598400073bfa93aa194a3773434"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">mingfx::GraphicsApp::IsMiddleMouseDown</a></div><div class="ttdeci">virtual bool IsMiddleMouseDown()</div><div class="ttdoc">True if the middle mouse button is currently held down.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a94b19404e61411ef64c0ddde8ad6c07a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords</a></div><div class="ttdeci">virtual Point2 PixelsToNormalizedDeviceCoords(const Point2 &amp;pointInPixels)</div><div class="ttdoc">Transforms a point in viewport coordinates (pixels where top left = (0,0) and bottom right = (window_...</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a96196b37f8b488b64072ec74b5d2b0b3"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">mingfx::GraphicsApp::InitOpenGL</a></div><div class="ttdeci">virtual void InitOpenGL()</div><div class="ttdoc">Override this to initialize the OpenGL context with textures, vertex buffers, etc.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00297">graphics_app.h:297</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a9e2b4cd7eeabe1ace9d5e9220349fbaa"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">mingfx::GraphicsApp::UpdateSimulation</a></div><div class="ttdeci">virtual void UpdateSimulation(double dt)</div><div class="ttdoc">Called once per frame.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00306">graphics_app.h:306</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_aab7925c6b844e6bef428feacf4aa9afb"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">mingfx::GraphicsApp::~GraphicsApp</a></div><div class="ttdeci">virtual ~GraphicsApp()</div><div class="ttdoc">The destructor will shutdown the graphics system and window.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abcf1935e92550bcda311cac62f312952"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">mingfx::GraphicsApp::OnSpecialKeyDown</a></div><div class="ttdeci">virtual void OnSpecialKeyDown(int key, int scancode, int modifiers)</div><div class="ttdoc">The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00247">graphics_app.h:247</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abd0ee14f7e12146000cdb3532d54ba94"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">mingfx::GraphicsApp::window</a></div><div class="ttdeci">virtual GLFWwindow * window()</div><div class="ttdoc">Access to the underlying GLFWwindow object.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abf0b48c7d8e5325ab038fddbe1c38b5b"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">mingfx::GraphicsApp::GraphicsApp</a></div><div class="ttdeci">GraphicsApp(int width, int height, const std::string &amp;caption)</div><div class="ttdoc">Constructs a new app but does not yet run it.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ac682691ee96ea32037abafd74d144a23"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">mingfx::GraphicsApp::aspect_ratio</a></div><div class="ttdeci">virtual float aspect_ratio()</div><div class="ttdoc">Returns width/height for the current shape of the window.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ac7628fece754c0ac4875791e19712dc6"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">mingfx::GraphicsApp::OnMiddleMouseDrag</a></div><div class="ttdeci">virtual void OnMiddleMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse button is held down and the mouse has moved in the past frame then this function will be...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00203">graphics_app.h:203</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ad596e69d030e7689ad91eaaec6975696"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">mingfx::GraphicsApp::framebuffer_width</a></div><div class="ttdeci">virtual int framebuffer_width()</div><div class="ttdoc">Returns the current width of the framebuffer in pixels.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ad7a641f7ccf174cd0a059347b623e016"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">mingfx::GraphicsApp::window_height</a></div><div class="ttdeci">virtual int window_height()</div><div class="ttdoc">Returns the current height of the client area of the window in pixels.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ad7c33791c44afc87ce789874f3002ca3"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">mingfx::GraphicsApp::OnRightMouseUp</a></div><div class="ttdeci">virtual void OnRightMouseUp(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was released since the last frame, then this function will be called to notify yo...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00216">graphics_app.h:216</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adafdc4631db256fefce3c4ffdfd5086a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">mingfx::GraphicsApp::OnWindowResize</a></div><div class="ttdeci">virtual void OnWindowResize(int new_width, int new_height)</div><div class="ttdoc">Override this to respond when the graphics window and/or framebuffer are resized, either by the user ...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00261">graphics_app.h:261</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adc68196c3f03bd0608c41f6e4d7dad16"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">mingfx::GraphicsApp::screen</a></div><div class="ttdeci">virtual nanogui::Screen * screen()</div><div class="ttdoc">Access to the underlying NanoGUI Screen object.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adfe77d841f43961b299ea6159477968a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">mingfx::GraphicsApp::InitNanoGUI</a></div><div class="ttdeci">virtual void InitNanoGUI()</div><div class="ttdoc">Called at the beginning of the Run() method.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00284">graphics_app.h:284</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ae12d9b192a2167a71e0c103405addb17"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">mingfx::GraphicsApp::OnLeftMouseDown</a></div><div class="ttdeci">virtual void OnLeftMouseDown(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was pressed down since the last frame, then this function will be called to notif...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00174">graphics_app.h:174</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_af58153eb104f53216a3e67de2a472f32"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">mingfx::GraphicsApp::framebuffer_height</a></div><div class="ttdeci">virtual int framebuffer_height()</div><div class="ttdoc">Returns the current height of the framebuffer in pixels.</div></div>
-<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
-<div class="ttc" id="aclassmingfx_1_1_vector2_html"><div class="ttname"><a href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></div><div class="ttdoc">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00028">vector2.h:28</a></div></div>
-<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
-<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
-<div class="ttc" id="avector2_8h_html"><div class="ttname"><a href="vector2_8h.html">vector2.h</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- HTML footer for doxygen 1.8.9.1-->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.9.1
-</small></address>
-</body>
-</html>
+<!-- HTML header for doxygen 1.8.9.1-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.1"/>
+<title>MinGfx Toolkit: src/graphics_app.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script>
+<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">MinGfx Toolkit
+ &#160;<span id="projectnumber">1.0</span>
+ </div>
+ <div id="projectbrief">A minimal library for writing cross-platform (Windows, OSX, linux) graphics programs.</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.1 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">graphics_app.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="graphics__app_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> This file is part of the MinGfx Project.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Copyright (c) 2017,2018 Regents of the University of Minnesota.</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> All Rights Reserved.</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> Original Author(s) of this File:</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> Dan Keefe, 2017, University of Minnesota</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> </span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> Author(s) of Significant Updates/Modifications to the File:</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> ... </span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef SRC_GRAPHICS_APP_H_</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define SRC_GRAPHICS_APP_H_</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; </div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// disable warnings for this 3rd party code</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#pragma warning ( push, 0 )</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;nanogui/nanogui.h&gt;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#pragma warning ( pop )</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point2_8h.html">point2.h</a>&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="vector2_8h.html">vector2.h</a>&quot;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacemingfx.html">mingfx</a> {</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; </div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html"> 135</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmingfx_1_1_graphics_app.html">GraphicsApp</a> {</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b"> 144</a></span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">GraphicsApp</a>(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keyword">const</span> std::string &amp;caption);</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb"> 148</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">~GraphicsApp</a>();</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// Callback methods -- override these and fill in to respond to user</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="comment">// input events.</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
+<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f"> 165</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; </div>
+<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17"> 174</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">OnLeftMouseDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b"> 187</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">OnLeftMouseDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613"> 196</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">OnLeftMouseUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; </div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; </div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48"> 200</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">OnMiddleMouseDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; </div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6"> 203</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">OnMiddleMouseDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; </div>
+<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08"> 206</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">OnMiddleMouseUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
+<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c"> 210</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">OnRightMouseDown</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; </div>
+<div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7"> 213</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">OnRightMouseDrag</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {}</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
+<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3"> 216</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">OnRightMouseUp</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {}</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; </div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
+<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01"> 225</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">OnKeyDown</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; </div>
+<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0"> 233</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">OnKeyRepeat</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
+<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c"> 241</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">OnKeyUp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; </div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
+<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952"> 247</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">OnSpecialKeyDown</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
+<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22"> 251</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">OnSpecialKeyRepeat</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; </div>
+<div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14"> 255</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">OnSpecialKeyUp</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {}</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
+<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a"> 261</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">OnWindowResize</a>(<span class="keywordtype">int</span> new_width, <span class="keywordtype">int</span> new_height) {}</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9"> 271</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">Run</a>();</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; </div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
+<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a"> 284</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">InitNanoGUI</a>() {}</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; </div>
+<div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3"> 297</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">InitOpenGL</a>() {}</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
+<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa"> 306</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">UpdateSimulation</a>(<span class="keywordtype">double</span> dt) {}</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; </div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
+<div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0"> 311</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">DrawUsingNanoVG</a>(NVGcontext *ctx) {}</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; </div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; </div>
+<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca"> 317</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">DrawUsingOpenGL</a>() {}</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; </div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; </div>
+<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac"> 322</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">IsKeyDown</a>(<span class="keywordtype">int</span> key);</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
+<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7"> 325</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">IsLeftMouseDown</a>();</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
+<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434"> 328</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">IsMiddleMouseDown</a>();</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
+<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d"> 331</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">IsRightMouseDown</a>();</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; </div>
+<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0"> 334</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">window_width</a>();</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
+<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016"> 337</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">window_height</a>();</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; </div>
+<div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696"> 343</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">framebuffer_width</a>();</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; </div>
+<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32"> 349</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">framebuffer_height</a>();</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; </div>
+<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23"> 352</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">aspect_ratio</a>();</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; </div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; </div>
+<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a"> 359</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">PixelsToNormalizedDeviceCoords</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInPixels);</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; </div>
+<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248"> 365</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">NormalizedDeviceCoordsToPixels</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInNDC);</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; </div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; </div>
+<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1"> 372</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1">PixelsToNormalizedDeviceCoords</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;vectorInPixels);</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; </div>
+<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93"> 378</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> <a class="code" href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93">NormalizedDeviceCoordsToPixels</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;pointInNDC);</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; </div>
+<div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646"> 382</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">float</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">ReadZValueAtPixel</a>(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pointInPixels, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> whichBuffer = GL_BACK);</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; </div>
+<div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16"> 385</a></span>&#160; <span class="keyword">virtual</span> nanogui::Screen* <a class="code" href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">screen</a>();</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; </div>
+<div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94"> 388</a></span>&#160; <span class="keyword">virtual</span> GLFWwindow* <a class="code" href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">window</a>();</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; </div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; </div>
+<div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5"> 393</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">ResizeWindow</a>(<span class="keywordtype">int</span> new_width, <span class="keywordtype">int</span> new_height);</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; </div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; </div>
+<div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1"> 403</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">InitGraphicsContext</a>();</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; </div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; </div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordtype">bool</span> cursor_pos_glfw_cb(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordtype">bool</span> mouse_button_glfw_cb(<span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> modifiers);</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordtype">bool</span> key_glfw_cb(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods);</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordtype">bool</span> char_glfw_cb(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint);</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordtype">bool</span> drop_glfw_cb(<span class="keywordtype">int</span> count, <span class="keyword">const</span> <span class="keywordtype">char</span> **filenames);</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordtype">bool</span> scroll_glfw_cb(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y);</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordtype">bool</span> resize_glfw_cb(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; </div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mouse_move(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos, <span class="keyword">const</span> <a class="code" href="classmingfx_1_1_vector2.html">Vector2</a> &amp;delta) {</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">OnMouseMove</a>(pos, delta);</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> left_mouse_down(<span class="keyword">const</span> <a class="code" href="classmingfx_1_1_point2.html">Point2</a> &amp;pos) {</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">OnLeftMouseDown</a>(pos);</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> left_mouse_drag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">OnLeftMouseDrag</a>(pos, delta);</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> left_mouse_up(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">OnLeftMouseUp</a>(pos);</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> middle_mouse_down(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">OnMiddleMouseDown</a>(pos);</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> middle_mouse_drag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">OnMiddleMouseDrag</a>(pos, delta);</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> middle_mouse_up(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">OnMiddleMouseUp</a>(pos);</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> right_mouse_down(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">OnRightMouseDown</a>(pos);</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> right_mouse_drag(<span class="keyword">const</span> Point2 &amp;pos, <span class="keyword">const</span> Vector2 &amp;delta) {</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">OnRightMouseDrag</a>(pos, delta);</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> right_mouse_up(<span class="keyword">const</span> Point2 &amp;pos) {</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">OnRightMouseUp</a>(pos);</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> key_down(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">OnKeyDown</a>(c, modifiers);</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> key_repeat(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">OnKeyRepeat</a>(c, modifiers);</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> key_up(<span class="keyword">const</span> <span class="keywordtype">char</span> *c, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">OnKeyUp</a>(c, modifiers);</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }</div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> special_key_down(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">OnSpecialKeyDown</a>(key, scancode, modifiers);</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> special_key_repeat(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">OnSpecialKeyRepeat</a>(key, scancode, modifiers);</div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> special_key_up(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> modifiers) {</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">OnSpecialKeyUp</a>(key, scancode, modifiers);</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; </div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordtype">bool</span> graphicsInitialized_;</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordtype">int</span> width_;</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordtype">int</span> height_;</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">const</span> std::string caption_;</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; nanogui::Screen *screen_;</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; GLFWwindow* window_;</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordtype">double</span> lastDrawT_;</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; Point2 lastMouse_;</div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordtype">bool</span> leftDown_;</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordtype">bool</span> middleDown_;</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordtype">bool</span> rightDown_;</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;};</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; </div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; </div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;} <span class="comment">// end namespace</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; </div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; </div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html">mingfx::GraphicsApp</a></div><div class="ttdoc">This is the main application base class for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00135">graphics_app.h:135</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a002560456139e537877d079978db4b01"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a002560456139e537877d079978db4b01">mingfx::GraphicsApp::OnKeyDown</a></div><div class="ttdeci">virtual void OnKeyDown(const char *c, int modifiers)</div><div class="ttdoc">Transforms a keyboard down event into the actual character typed.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00225">graphics_app.h:225</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a00ad5039af2f428a08fe45751a9731c7"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a00ad5039af2f428a08fe45751a9731c7">mingfx::GraphicsApp::OnRightMouseDrag</a></div><div class="ttdeci">virtual void OnRightMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse button is held down and the mouse has moved in the past frame then this function will be...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00213">graphics_app.h:213</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a04beb462aa04371dc86d807838f999e1"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a04beb462aa04371dc86d807838f999e1">mingfx::GraphicsApp::InitGraphicsContext</a></div><div class="ttdeci">virtual void InitGraphicsContext()</div><div class="ttdoc">Users cannot make any graphics calls (e.g., setting the clear color, saving mesh data to the GPU) unt...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a0db71b2465e12a8aef4eefbe8b9fcee5"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a0db71b2465e12a8aef4eefbe8b9fcee5">mingfx::GraphicsApp::ResizeWindow</a></div><div class="ttdeci">virtual void ResizeWindow(int new_width, int new_height)</div><div class="ttdoc">Cause the graphics windows to resize programmatically rather than by dragging on the corner manually.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a0deb6da45fc0d3980e44556a861c7a14"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a0deb6da45fc0d3980e44556a861c7a14">mingfx::GraphicsApp::OnSpecialKeyUp</a></div><div class="ttdeci">virtual void OnSpecialKeyUp(int key, int scancode, int modifiers)</div><div class="ttdoc">The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00255">graphics_app.h:255</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a1c682fa2dd0bce855e1e32ffeac532b0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a1c682fa2dd0bce855e1e32ffeac532b0">mingfx::GraphicsApp::window_width</a></div><div class="ttdeci">virtual int window_width()</div><div class="ttdoc">Returns the current width of the client area of the window in pixels.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a1d5831953b37fae615fbd1bf527214b0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a1d5831953b37fae615fbd1bf527214b0">mingfx::GraphicsApp::OnKeyRepeat</a></div><div class="ttdeci">virtual void OnKeyRepeat(const char *c, int modifiers)</div><div class="ttdoc">Transforms a keyboard repeat event into the actual character typed.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00233">graphics_app.h:233</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a23a780feda9b52eea7319a53b204ce8f"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a23a780feda9b52eea7319a53b204ce8f">mingfx::GraphicsApp::OnMouseMove</a></div><div class="ttdeci">virtual void OnMouseMove(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse has moved in the past frame and no mouse buttons are currently pressed,...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00165">graphics_app.h:165</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a378b8a102775eeb01a6da9dd68482d08"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a378b8a102775eeb01a6da9dd68482d08">mingfx::GraphicsApp::OnMiddleMouseUp</a></div><div class="ttdeci">virtual void OnMiddleMouseUp(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was released since the last frame, then this function will be called to notify yo...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00206">graphics_app.h:206</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a45596da36aa3905e7c752826a7fd9f93"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a45596da36aa3905e7c752826a7fd9f93">mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels</a></div><div class="ttdeci">virtual Vector2 NormalizedDeviceCoordsToPixels(const Vector2 &amp;pointInNDC)</div><div class="ttdoc">Transforms a vector in normalized device coordinates (top left = (-1,1) bottom right (1,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a471951dbf45ffa88027cb92707443646"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a471951dbf45ffa88027cb92707443646">mingfx::GraphicsApp::ReadZValueAtPixel</a></div><div class="ttdeci">virtual float ReadZValueAtPixel(const Point2 &amp;pointInPixels, unsigned int whichBuffer=GL_BACK)</div><div class="ttdoc">Returns the z buffer value under the specified pixel. z will be 0 at the near plane and +1 at the far...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a4aa30e3d33731178a9162454a81be08d"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a4aa30e3d33731178a9162454a81be08d">mingfx::GraphicsApp::IsRightMouseDown</a></div><div class="ttdeci">virtual bool IsRightMouseDown()</div><div class="ttdoc">True if the right mouse button is currently held down.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a4e8ac965474de9046448b8811bf25dd1"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a4e8ac965474de9046448b8811bf25dd1">mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords</a></div><div class="ttdeci">virtual Vector2 PixelsToNormalizedDeviceCoords(const Vector2 &amp;vectorInPixels)</div><div class="ttdoc">Transforms a vector in viewport coordinates (pixels where top left = (0,0) and bottom right = (window...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a536dbadf0b8a11ef59d7e855ca43f613"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a536dbadf0b8a11ef59d7e855ca43f613">mingfx::GraphicsApp::OnLeftMouseUp</a></div><div class="ttdeci">virtual void OnLeftMouseUp(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was released since the last frame, then this function will be called to notify yo...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00196">graphics_app.h:196</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a56d350a8b030998709a51630753d509b"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a56d350a8b030998709a51630753d509b">mingfx::GraphicsApp::OnLeftMouseDrag</a></div><div class="ttdeci">virtual void OnLeftMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse button is held down and the mouse has moved in the past frame then this function will be...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00187">graphics_app.h:187</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a588315d5c45490b440a764af2bc5bd48"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a588315d5c45490b440a764af2bc5bd48">mingfx::GraphicsApp::OnMiddleMouseDown</a></div><div class="ttdeci">virtual void OnMiddleMouseDown(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was pressed down since the last frame, then this function will be called to notif...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00200">graphics_app.h:200</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5a858fd10651f7617491f37b49dbf8ca"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5a858fd10651f7617491f37b49dbf8ca">mingfx::GraphicsApp::DrawUsingOpenGL</a></div><div class="ttdeci">virtual void DrawUsingOpenGL()</div><div class="ttdoc">Override this to draw graphics using raw OpenGL 2D or 3D graphics calls.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00317">graphics_app.h:317</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5b78d79192180a6ef5271d2a2b2d1cc7"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5b78d79192180a6ef5271d2a2b2d1cc7">mingfx::GraphicsApp::IsLeftMouseDown</a></div><div class="ttdeci">virtual bool IsLeftMouseDown()</div><div class="ttdoc">True if the left mouse button is currently held down.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a5ee9ae3d14e76c949979a8008687d6c9"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a5ee9ae3d14e76c949979a8008687d6c9">mingfx::GraphicsApp::Run</a></div><div class="ttdeci">virtual void Run()</div><div class="ttdoc">After creating a new GraphicsApp, call this to start the app's mainloop.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a60688614e5dfeaabf57f8825cdaa08ac"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a60688614e5dfeaabf57f8825cdaa08ac">mingfx::GraphicsApp::IsKeyDown</a></div><div class="ttdeci">virtual bool IsKeyDown(int key)</div><div class="ttdoc">True if the specified is is currently held down. Uses the GLFW key codes found here: http://www....</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a6141ec6adc29572ee99ca26cf90e6248"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a6141ec6adc29572ee99ca26cf90e6248">mingfx::GraphicsApp::NormalizedDeviceCoordsToPixels</a></div><div class="ttdeci">virtual Point2 NormalizedDeviceCoordsToPixels(const Point2 &amp;pointInNDC)</div><div class="ttdoc">Transforms a point in normalized device coordinates (top left = (-1,1) bottom right (1,...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a688f12675da58210e8ec2ffcda4923d0"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a688f12675da58210e8ec2ffcda4923d0">mingfx::GraphicsApp::DrawUsingNanoVG</a></div><div class="ttdeci">virtual void DrawUsingNanoVG(NVGcontext *ctx)</div><div class="ttdoc">Override this to draw graphics using the nanovg vector graphics library, which provides an easy way t...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00311">graphics_app.h:311</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a8362762489e287edfa59617a6602db22"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a8362762489e287edfa59617a6602db22">mingfx::GraphicsApp::OnSpecialKeyRepeat</a></div><div class="ttdeci">virtual void OnSpecialKeyRepeat(int key, int scancode, int modifiers)</div><div class="ttdoc">The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00251">graphics_app.h:251</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a8376ef8eb0840b229a2301f995db3f6c"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a8376ef8eb0840b229a2301f995db3f6c">mingfx::GraphicsApp::OnKeyUp</a></div><div class="ttdeci">virtual void OnKeyUp(const char *c, int modifiers)</div><div class="ttdoc">Transforms a keyboard up event into the actual character typed.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00241">graphics_app.h:241</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a903f94b82cc10f32039ff3f2ba368a9c"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a903f94b82cc10f32039ff3f2ba368a9c">mingfx::GraphicsApp::OnRightMouseDown</a></div><div class="ttdeci">virtual void OnRightMouseDown(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was pressed down since the last frame, then this function will be called to notif...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00210">graphics_app.h:210</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a941f7598400073bfa93aa194a3773434"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a941f7598400073bfa93aa194a3773434">mingfx::GraphicsApp::IsMiddleMouseDown</a></div><div class="ttdeci">virtual bool IsMiddleMouseDown()</div><div class="ttdoc">True if the middle mouse button is currently held down.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a94b19404e61411ef64c0ddde8ad6c07a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a94b19404e61411ef64c0ddde8ad6c07a">mingfx::GraphicsApp::PixelsToNormalizedDeviceCoords</a></div><div class="ttdeci">virtual Point2 PixelsToNormalizedDeviceCoords(const Point2 &amp;pointInPixels)</div><div class="ttdoc">Transforms a point in viewport coordinates (pixels where top left = (0,0) and bottom right = (window_...</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a96196b37f8b488b64072ec74b5d2b0b3"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a96196b37f8b488b64072ec74b5d2b0b3">mingfx::GraphicsApp::InitOpenGL</a></div><div class="ttdeci">virtual void InitOpenGL()</div><div class="ttdoc">Override this to initialize the OpenGL context with textures, vertex buffers, etc.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00297">graphics_app.h:297</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_a9e2b4cd7eeabe1ace9d5e9220349fbaa"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#a9e2b4cd7eeabe1ace9d5e9220349fbaa">mingfx::GraphicsApp::UpdateSimulation</a></div><div class="ttdeci">virtual void UpdateSimulation(double dt)</div><div class="ttdoc">Called once per frame.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00306">graphics_app.h:306</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_aab7925c6b844e6bef428feacf4aa9afb"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#aab7925c6b844e6bef428feacf4aa9afb">mingfx::GraphicsApp::~GraphicsApp</a></div><div class="ttdeci">virtual ~GraphicsApp()</div><div class="ttdoc">The destructor will shutdown the graphics system and window.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abcf1935e92550bcda311cac62f312952"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abcf1935e92550bcda311cac62f312952">mingfx::GraphicsApp::OnSpecialKeyDown</a></div><div class="ttdeci">virtual void OnSpecialKeyDown(int key, int scancode, int modifiers)</div><div class="ttdoc">The values for key, scancode, and modifiers are documented here: http://www.glfw.org/docs/latest/grou...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00247">graphics_app.h:247</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abd0ee14f7e12146000cdb3532d54ba94"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abd0ee14f7e12146000cdb3532d54ba94">mingfx::GraphicsApp::window</a></div><div class="ttdeci">virtual GLFWwindow * window()</div><div class="ttdoc">Access to the underlying GLFWwindow object.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_abf0b48c7d8e5325ab038fddbe1c38b5b"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#abf0b48c7d8e5325ab038fddbe1c38b5b">mingfx::GraphicsApp::GraphicsApp</a></div><div class="ttdeci">GraphicsApp(int width, int height, const std::string &amp;caption)</div><div class="ttdoc">Constructs a new app but does not yet run it.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ac682691ee96ea32037abafd74d144a23"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ac682691ee96ea32037abafd74d144a23">mingfx::GraphicsApp::aspect_ratio</a></div><div class="ttdeci">virtual float aspect_ratio()</div><div class="ttdoc">Returns width/height for the current shape of the window.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ac7628fece754c0ac4875791e19712dc6"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ac7628fece754c0ac4875791e19712dc6">mingfx::GraphicsApp::OnMiddleMouseDrag</a></div><div class="ttdeci">virtual void OnMiddleMouseDrag(const Point2 &amp;pos, const Vector2 &amp;delta)</div><div class="ttdoc">If the mouse button is held down and the mouse has moved in the past frame then this function will be...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00203">graphics_app.h:203</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ad596e69d030e7689ad91eaaec6975696"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ad596e69d030e7689ad91eaaec6975696">mingfx::GraphicsApp::framebuffer_width</a></div><div class="ttdeci">virtual int framebuffer_width()</div><div class="ttdoc">Returns the current width of the framebuffer in pixels.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ad7a641f7ccf174cd0a059347b623e016"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ad7a641f7ccf174cd0a059347b623e016">mingfx::GraphicsApp::window_height</a></div><div class="ttdeci">virtual int window_height()</div><div class="ttdoc">Returns the current height of the client area of the window in pixels.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ad7c33791c44afc87ce789874f3002ca3"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ad7c33791c44afc87ce789874f3002ca3">mingfx::GraphicsApp::OnRightMouseUp</a></div><div class="ttdeci">virtual void OnRightMouseUp(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was released since the last frame, then this function will be called to notify yo...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00216">graphics_app.h:216</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adafdc4631db256fefce3c4ffdfd5086a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adafdc4631db256fefce3c4ffdfd5086a">mingfx::GraphicsApp::OnWindowResize</a></div><div class="ttdeci">virtual void OnWindowResize(int new_width, int new_height)</div><div class="ttdoc">Override this to respond when the graphics window and/or framebuffer are resized, either by the user ...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00261">graphics_app.h:261</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adc68196c3f03bd0608c41f6e4d7dad16"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adc68196c3f03bd0608c41f6e4d7dad16">mingfx::GraphicsApp::screen</a></div><div class="ttdeci">virtual nanogui::Screen * screen()</div><div class="ttdoc">Access to the underlying NanoGUI Screen object.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_adfe77d841f43961b299ea6159477968a"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#adfe77d841f43961b299ea6159477968a">mingfx::GraphicsApp::InitNanoGUI</a></div><div class="ttdeci">virtual void InitNanoGUI()</div><div class="ttdoc">Called at the beginning of the Run() method.</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00284">graphics_app.h:284</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_ae12d9b192a2167a71e0c103405addb17"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#ae12d9b192a2167a71e0c103405addb17">mingfx::GraphicsApp::OnLeftMouseDown</a></div><div class="ttdeci">virtual void OnLeftMouseDown(const Point2 &amp;pos)</div><div class="ttdoc">If the mouse button was pressed down since the last frame, then this function will be called to notif...</div><div class="ttdef"><b>Definition:</b> <a href="graphics__app_8h_source.html#l00174">graphics_app.h:174</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_graphics_app_html_af58153eb104f53216a3e67de2a472f32"><div class="ttname"><a href="classmingfx_1_1_graphics_app.html#af58153eb104f53216a3e67de2a472f32">mingfx::GraphicsApp::framebuffer_height</a></div><div class="ttdeci">virtual int framebuffer_height()</div><div class="ttdoc">Returns the current height of the framebuffer in pixels.</div></div>
+<div class="ttc" id="aclassmingfx_1_1_point2_html"><div class="ttname"><a href="classmingfx_1_1_point2.html">mingfx::Point2</a></div><div class="ttdoc">A 2D Point with floating point coordinates, used for storing 2D texture coordinates,...</div><div class="ttdef"><b>Definition:</b> <a href="point2_8h_source.html#l00028">point2.h:28</a></div></div>
+<div class="ttc" id="aclassmingfx_1_1_vector2_html"><div class="ttname"><a href="classmingfx_1_1_vector2.html">mingfx::Vector2</a></div><div class="ttdoc">A 2D Vector with floating point coordinates, used for storing 2D translations, mouse movements,...</div><div class="ttdef"><b>Definition:</b> <a href="vector2_8h_source.html#l00028">vector2.h:28</a></div></div>
+<div class="ttc" id="anamespacemingfx_html"><div class="ttname"><a href="namespacemingfx.html">mingfx</a></div><div class="ttdoc">Namespace for the MinGfx Toolkit.</div><div class="ttdef"><b>Definition:</b> <a href="aabb_8h_source.html#l00021">aabb.h:21</a></div></div>
+<div class="ttc" id="apoint2_8h_html"><div class="ttname"><a href="point2_8h.html">point2.h</a></div></div>
+<div class="ttc" id="avector2_8h_html"><div class="ttname"><a href="vector2_8h.html">vector2.h</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- HTML footer for doxygen 1.8.9.1-->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.9.1
+</small></address>
+</body>
+</html>