Testing out the PPD42 Air Quality Sensor, with an MSP430 Launchpad and graphing the data with GNUplot.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4131 lines
101 KiB

5 years ago
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <link rel="icon" type="image/vnd.microsoft.icon" href="http://www.gstatic.com/codesite/ph/images/phosting.ico">
  5. <script type="text/javascript">
  6. (function(){function a(e){this.t={};this.tick=function(f,c,d){c=d!=undefined?d:(new Date).getTime();this.t[f]=c};this.tick("start",null,e)}var b=new a;window.jstiming={Timer:a,load:b};try{var g=null;if(window.chrome&&window.chrome.csi)g=Math.floor(window.chrome.csi().pageT);if(g==null)if(window.gtbExternal)g=window.gtbExternal.pageT();if(g==null)if(window.external)g=window.external.pageT;if(g)window.jstiming.pt=g}catch(h){};})();
  7. var codesite_token = "c6974bcd72eb95455827185f7306e1fa";
  8. var logged_in_user_email = "Dung.Dang@gmail.com";
  9. var relative_base_url = "";
  10. </script>
  11. <title>PMatrix2D.java -
  12. processing -
  13. Project Hosting on Google Code</title>
  14. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
  15. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" >
  16. <meta name="ROBOTS" content="NOARCHIVE">
  17. <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/10276742928614796628/css/ph_core.css">
  18. <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/10276742928614796628/css/ph_detail.css" >
  19. <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/10276742928614796628/css/d_sb_20080522.css" >
  20. <!--[if IE]>
  21. <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/10276742928614796628/css/d_ie.css" >
  22. <![endif]-->
  23. <style type="text/css">
  24. .menuIcon.off { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -42px }
  25. .menuIcon.on { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -28px }
  26. .menuIcon.down { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 0; }
  27. tr.inline_comment {
  28. background: #fff;
  29. vertical-align: top;
  30. }
  31. div.draft, div.published {
  32. padding: .3em;
  33. border: 1px solid #999;
  34. margin-bottom: .1em;
  35. font-family: arial, sans-serif;
  36. max-width: 60em;
  37. }
  38. div.draft {
  39. background: #ffa;
  40. }
  41. div.published {
  42. background: #e5ecf9;
  43. }
  44. div.published .body, div.draft .body {
  45. padding: .5em .1em .1em .1em;
  46. max-width: 60em;
  47. white-space: pre-wrap;
  48. white-space: -moz-pre-wrap;
  49. white-space: -pre-wrap;
  50. white-space: -o-pre-wrap;
  51. word-wrap: break-word;
  52. font-size: 1em;
  53. }
  54. div.draft .actions {
  55. margin-left: 1em;
  56. font-size: 90%;
  57. }
  58. div.draft form {
  59. padding: .5em .5em .5em 0;
  60. }
  61. div.draft textarea, div.published textarea {
  62. width: 95%;
  63. height: 10em;
  64. font-family: arial, sans-serif;
  65. margin-bottom: .5em;
  66. }
  67. .nocursor, .nocursor td, .cursor_hidden, .cursor_hidden td {
  68. background-color: white;
  69. height: 2px;
  70. }
  71. .cursor, .cursor td {
  72. background-color: darkblue;
  73. height: 2px;
  74. display: '';
  75. }
  76. .list {
  77. border: 1px solid white;
  78. margin-bottom:0;
  79. }
  80. </style>
  81. </head>
  82. <body class="t4">
  83. <script type="text/javascript">
  84. var _gaq = _gaq || [];
  85. _gaq.push(
  86. ['siteTracker._setAccount', 'UA-18071-1'],
  87. ['siteTracker._trackPageview']);
  88. (function() {
  89. var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  90. ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  91. (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
  92. })();
  93. </script>
  94. <div class="headbg">
  95. <div id="gaia">
  96. <span>
  97. <b>Dung.Dang@gmail.com</b>
  98. | <a href="/u/@VhVRRVJYBRNNWwl6/" id="projects-dropdown" onclick="return false;"
  99. ><u>My favorites</u> <small>&#9660;</small></a>
  100. | <a href="/u/@VhVRRVJYBRNNWwl6/" onclick="_CS_click('/gb/ph/profile');"
  101. title="Profile, Updates, and Settings"
  102. ><u>Profile</u></a>
  103. | <a href="https://www.google.com/accounts/Logout?continue=http%3A%2F%2Fcode.google.com%2Fp%2Fprocessing%2Fsource%2Fbrowse%2Ftrunk%2Fprocessing%2Fcore%2Fsrc%2Fprocessing%2Fcore%2FPMatrix2D.java"
  104. onclick="_CS_click('/gb/ph/signout');"
  105. ><u>Sign out</u></a>
  106. </span>
  107. </div>
  108. <div class="gbh" style="left: 0pt;"></div>
  109. <div class="gbh" style="right: 0pt;"></div>
  110. <div style="height: 1px"></div>
  111. <!--[if lte IE 7]>
  112. <div style="text-align:center;">
  113. Your version of Internet Explorer is not supported. Try a browser that
  114. contributes to open source, such as <a href="http://www.firefox.com">Firefox</a>,
  115. <a href="http://www.google.com/chrome">Google Chrome</a>, or
  116. <a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame</a>.
  117. </div>
  118. <![endif]-->
  119. <table style="padding:0px; margin: 0px 0px 10px 0px; width:100%" cellpadding="0" cellspacing="0">
  120. <tr style="height: 58px;">
  121. <td id="plogo">
  122. <a href="/p/processing/">
  123. <img src="http://www.gstatic.com/codesite/ph/images/defaultlogo.png" alt="Logo">
  124. </a>
  125. </td>
  126. <td style="padding-left: 0.5em">
  127. <div id="pname">
  128. <a href="/p/processing/">processing</a>
  129. </div>
  130. <div id="psum">
  131. <a id="project_summary_link" href="/p/processing/" >An open source programming language and environment for images, animation, and interactions.</a>
  132. </div>
  133. </td>
  134. <td style="white-space:nowrap;text-align:right; vertical-align:bottom;">
  135. <form action="/hosting/search">
  136. <input size="30" name="q" value="" type="text">
  137. <input type="submit" name="projectsearch" value="Search projects" >
  138. </form>
  139. </tr>
  140. </table>
  141. </div>
  142. <div id="mt" class="gtb">
  143. <a href="/p/processing/" class="tab ">Project&nbsp;Home</a>
  144. <a href="/p/processing/downloads/list" class="tab ">Downloads</a>
  145. <a href="/p/processing/w/list" class="tab ">Wiki</a>
  146. <a href="/p/processing/issues/list"
  147. class="tab ">Issues</a>
  148. <a href="/p/processing/source/checkout"
  149. class="tab active">Source</a>
  150. <div class=gtbc></div>
  151. </div>
  152. <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0" class="st">
  153. <tr>
  154. <td class="subt">
  155. <div class="st2">
  156. <div class="isf">
  157. <span class="inst1"><a href="/p/processing/source/checkout">Checkout</a></span> &nbsp;
  158. <span class="inst2"><a href="/p/processing/source/browse/trunk/processing">Browse</a></span> &nbsp;
  159. <span class="inst3"><a href="/p/processing/source/list">Changes</a></span> &nbsp;
  160. <form action="http://www.google.com/codesearch" method="get" style="display:inline"
  161. onsubmit="document.getElementById('codesearchq').value = document.getElementById('origq').value + ' package:http://processing\\.googlecode\\.com'">
  162. <input type="hidden" name="q" id="codesearchq" value="">
  163. <input type="text" maxlength="2048" size="38" id="origq" name="origq" value="" title="Google Code Search" style="font-size:92%">&nbsp;<input type="submit" value="Search Trunk" name="btnG" style="font-size:92%">
  164. </form>
  165. </div>
  166. </div>
  167. </td>
  168. <td align="right" valign="top" class="bevel-right"></td>
  169. </tr>
  170. </table>
  171. <script type="text/javascript">
  172. var cancelBubble = false;
  173. function _go(url) { document.location = url; }
  174. </script>
  175. <div id="maincol"
  176. >
  177. <!-- IE -->
  178. <div class="expand">
  179. <div id="colcontrol">
  180. <style type="text/css">
  181. #file_flipper { white-space: nowrap; padding-right: 2em; }
  182. #file_flipper.hidden { display: none; }
  183. #file_flipper .pagelink { color: #0000CC; text-decoration: underline; }
  184. #file_flipper #visiblefiles { padding-left: 0.5em; padding-right: 0.5em; }
  185. </style>
  186. <table id="nav_and_rev" class="list"
  187. cellpadding="0" cellspacing="0" width="100%">
  188. <tr>
  189. <td nowrap="nowrap" class="src_crumbs src_nav" width="33%">
  190. <strong class="src_nav">Source path:&nbsp;</strong>
  191. <span id="crumb_root">
  192. <a href="/p/processing/source/browse/">svn</a>/&nbsp;</span>
  193. <span id="crumb_links" class="ifClosed"><a href="/p/processing/source/browse/trunk/">trunk</a><span class="sp">/&nbsp;</span><a href="/p/processing/source/browse/trunk/processing/">processing</a><span class="sp">/&nbsp;</span><a href="/p/processing/source/browse/trunk/processing/core/">core</a><span class="sp">/&nbsp;</span><a href="/p/processing/source/browse/trunk/processing/core/src/">src</a><span class="sp">/&nbsp;</span><a href="/p/processing/source/browse/trunk/processing/core/src/processing/">processing</a><span class="sp">/&nbsp;</span><a href="/p/processing/source/browse/trunk/processing/core/src/processing/core/">core</a><span class="sp">/&nbsp;</span>PMatrix2D.java</span>
  194. </td>
  195. <td nowrap="nowrap" width="33%" align="center">
  196. <a href="/p/processing/source/browse/trunk/processing/core/src/processing/core/PMatrix2D.java?edit=1"
  197. ><img src="http://www.gstatic.com/codesite/ph/images/pencil-y14.png"
  198. class="edit_icon">Edit file</a>
  199. </td>
  200. <td nowrap="nowrap" width="33%" align="right">
  201. <table cellpadding="0" cellspacing="0" style="font-size: 100%"><tr>
  202. <td class="flipper">
  203. <ul class="leftside">
  204. <li><a href="/p/processing/source/browse/trunk/processing/core/src/processing/core/PMatrix2D.java?r=6524" title="Previous">&lsaquo;r6524</a></li>
  205. </ul>
  206. </td>
  207. <td class="flipper"><b>r7768</b></td>
  208. </tr></table>
  209. </td>
  210. </tr>
  211. </table>
  212. <div class="fc">
  213. <style type="text/css">
  214. .undermouse span {
  215. background-image: url(http://www.gstatic.com/codesite/ph/images/comments.gif); }
  216. </style>
  217. <table class="opened" id="review_comment_area"
  218. ><tr>
  219. <td id="nums">
  220. <pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
  221. <pre><table width="100%" id="nums_table_0"><tr id="gr_svn7768_1"
  222. ><td id="1"><a href="#1">1</a></td></tr
  223. ><tr id="gr_svn7768_2"
  224. ><td id="2"><a href="#2">2</a></td></tr
  225. ><tr id="gr_svn7768_3"
  226. ><td id="3"><a href="#3">3</a></td></tr
  227. ><tr id="gr_svn7768_4"
  228. ><td id="4"><a href="#4">4</a></td></tr
  229. ><tr id="gr_svn7768_5"
  230. ><td id="5"><a href="#5">5</a></td></tr
  231. ><tr id="gr_svn7768_6"
  232. ><td id="6"><a href="#6">6</a></td></tr
  233. ><tr id="gr_svn7768_7"
  234. ><td id="7"><a href="#7">7</a></td></tr
  235. ><tr id="gr_svn7768_8"
  236. ><td id="8"><a href="#8">8</a></td></tr
  237. ><tr id="gr_svn7768_9"
  238. ><td id="9"><a href="#9">9</a></td></tr
  239. ><tr id="gr_svn7768_10"
  240. ><td id="10"><a href="#10">10</a></td></tr
  241. ><tr id="gr_svn7768_11"
  242. ><td id="11"><a href="#11">11</a></td></tr
  243. ><tr id="gr_svn7768_12"
  244. ><td id="12"><a href="#12">12</a></td></tr
  245. ><tr id="gr_svn7768_13"
  246. ><td id="13"><a href="#13">13</a></td></tr
  247. ><tr id="gr_svn7768_14"
  248. ><td id="14"><a href="#14">14</a></td></tr
  249. ><tr id="gr_svn7768_15"
  250. ><td id="15"><a href="#15">15</a></td></tr
  251. ><tr id="gr_svn7768_16"
  252. ><td id="16"><a href="#16">16</a></td></tr
  253. ><tr id="gr_svn7768_17"
  254. ><td id="17"><a href="#17">17</a></td></tr
  255. ><tr id="gr_svn7768_18"
  256. ><td id="18"><a href="#18">18</a></td></tr
  257. ><tr id="gr_svn7768_19"
  258. ><td id="19"><a href="#19">19</a></td></tr
  259. ><tr id="gr_svn7768_20"
  260. ><td id="20"><a href="#20">20</a></td></tr
  261. ><tr id="gr_svn7768_21"
  262. ><td id="21"><a href="#21">21</a></td></tr
  263. ><tr id="gr_svn7768_22"
  264. ><td id="22"><a href="#22">22</a></td></tr
  265. ><tr id="gr_svn7768_23"
  266. ><td id="23"><a href="#23">23</a></td></tr
  267. ><tr id="gr_svn7768_24"
  268. ><td id="24"><a href="#24">24</a></td></tr
  269. ><tr id="gr_svn7768_25"
  270. ><td id="25"><a href="#25">25</a></td></tr
  271. ><tr id="gr_svn7768_26"
  272. ><td id="26"><a href="#26">26</a></td></tr
  273. ><tr id="gr_svn7768_27"
  274. ><td id="27"><a href="#27">27</a></td></tr
  275. ><tr id="gr_svn7768_28"
  276. ><td id="28"><a href="#28">28</a></td></tr
  277. ><tr id="gr_svn7768_29"
  278. ><td id="29"><a href="#29">29</a></td></tr
  279. ><tr id="gr_svn7768_30"
  280. ><td id="30"><a href="#30">30</a></td></tr
  281. ><tr id="gr_svn7768_31"
  282. ><td id="31"><a href="#31">31</a></td></tr
  283. ><tr id="gr_svn7768_32"
  284. ><td id="32"><a href="#32">32</a></td></tr
  285. ><tr id="gr_svn7768_33"
  286. ><td id="33"><a href="#33">33</a></td></tr
  287. ><tr id="gr_svn7768_34"
  288. ><td id="34"><a href="#34">34</a></td></tr
  289. ><tr id="gr_svn7768_35"
  290. ><td id="35"><a href="#35">35</a></td></tr
  291. ><tr id="gr_svn7768_36"
  292. ><td id="36"><a href="#36">36</a></td></tr
  293. ><tr id="gr_svn7768_37"
  294. ><td id="37"><a href="#37">37</a></td></tr
  295. ><tr id="gr_svn7768_38"
  296. ><td id="38"><a href="#38">38</a></td></tr
  297. ><tr id="gr_svn7768_39"
  298. ><td id="39"><a href="#39">39</a></td></tr
  299. ><tr id="gr_svn7768_40"
  300. ><td id="40"><a href="#40">40</a></td></tr
  301. ><tr id="gr_svn7768_41"
  302. ><td id="41"><a href="#41">41</a></td></tr
  303. ><tr id="gr_svn7768_42"
  304. ><td id="42"><a href="#42">42</a></td></tr
  305. ><tr id="gr_svn7768_43"
  306. ><td id="43"><a href="#43">43</a></td></tr
  307. ><tr id="gr_svn7768_44"
  308. ><td id="44"><a href="#44">44</a></td></tr
  309. ><tr id="gr_svn7768_45"
  310. ><td id="45"><a href="#45">45</a></td></tr
  311. ><tr id="gr_svn7768_46"
  312. ><td id="46"><a href="#46">46</a></td></tr
  313. ><tr id="gr_svn7768_47"
  314. ><td id="47"><a href="#47">47</a></td></tr
  315. ><tr id="gr_svn7768_48"
  316. ><td id="48"><a href="#48">48</a></td></tr
  317. ><tr id="gr_svn7768_49"
  318. ><td id="49"><a href="#49">49</a></td></tr
  319. ><tr id="gr_svn7768_50"
  320. ><td id="50"><a href="#50">50</a></td></tr
  321. ><tr id="gr_svn7768_51"
  322. ><td id="51"><a href="#51">51</a></td></tr
  323. ><tr id="gr_svn7768_52"
  324. ><td id="52"><a href="#52">52</a></td></tr
  325. ><tr id="gr_svn7768_53"
  326. ><td id="53"><a href="#53">53</a></td></tr
  327. ><tr id="gr_svn7768_54"
  328. ><td id="54"><a href="#54">54</a></td></tr
  329. ><tr id="gr_svn7768_55"
  330. ><td id="55"><a href="#55">55</a></td></tr
  331. ><tr id="gr_svn7768_56"
  332. ><td id="56"><a href="#56">56</a></td></tr
  333. ><tr id="gr_svn7768_57"
  334. ><td id="57"><a href="#57">57</a></td></tr
  335. ><tr id="gr_svn7768_58"
  336. ><td id="58"><a href="#58">58</a></td></tr
  337. ><tr id="gr_svn7768_59"
  338. ><td id="59"><a href="#59">59</a></td></tr
  339. ><tr id="gr_svn7768_60"
  340. ><td id="60"><a href="#60">60</a></td></tr
  341. ><tr id="gr_svn7768_61"
  342. ><td id="61"><a href="#61">61</a></td></tr
  343. ><tr id="gr_svn7768_62"
  344. ><td id="62"><a href="#62">62</a></td></tr
  345. ><tr id="gr_svn7768_63"
  346. ><td id="63"><a href="#63">63</a></td></tr
  347. ><tr id="gr_svn7768_64"
  348. ><td id="64"><a href="#64">64</a></td></tr
  349. ><tr id="gr_svn7768_65"
  350. ><td id="65"><a href="#65">65</a></td></tr
  351. ><tr id="gr_svn7768_66"
  352. ><td id="66"><a href="#66">66</a></td></tr
  353. ><tr id="gr_svn7768_67"
  354. ><td id="67"><a href="#67">67</a></td></tr
  355. ><tr id="gr_svn7768_68"
  356. ><td id="68"><a href="#68">68</a></td></tr
  357. ><tr id="gr_svn7768_69"
  358. ><td id="69"><a href="#69">69</a></td></tr
  359. ><tr id="gr_svn7768_70"
  360. ><td id="70"><a href="#70">70</a></td></tr
  361. ><tr id="gr_svn7768_71"
  362. ><td id="71"><a href="#71">71</a></td></tr
  363. ><tr id="gr_svn7768_72"
  364. ><td id="72"><a href="#72">72</a></td></tr
  365. ><tr id="gr_svn7768_73"
  366. ><td id="73"><a href="#73">73</a></td></tr
  367. ><tr id="gr_svn7768_74"
  368. ><td id="74"><a href="#74">74</a></td></tr
  369. ><tr id="gr_svn7768_75"
  370. ><td id="75"><a href="#75">75</a></td></tr
  371. ><tr id="gr_svn7768_76"
  372. ><td id="76"><a href="#76">76</a></td></tr
  373. ><tr id="gr_svn7768_77"
  374. ><td id="77"><a href="#77">77</a></td></tr
  375. ><tr id="gr_svn7768_78"
  376. ><td id="78"><a href="#78">78</a></td></tr
  377. ><tr id="gr_svn7768_79"
  378. ><td id="79"><a href="#79">79</a></td></tr
  379. ><tr id="gr_svn7768_80"
  380. ><td id="80"><a href="#80">80</a></td></tr
  381. ><tr id="gr_svn7768_81"
  382. ><td id="81"><a href="#81">81</a></td></tr
  383. ><tr id="gr_svn7768_82"
  384. ><td id="82"><a href="#82">82</a></td></tr
  385. ><tr id="gr_svn7768_83"
  386. ><td id="83"><a href="#83">83</a></td></tr
  387. ><tr id="gr_svn7768_84"
  388. ><td id="84"><a href="#84">84</a></td></tr
  389. ><tr id="gr_svn7768_85"
  390. ><td id="85"><a href="#85">85</a></td></tr
  391. ><tr id="gr_svn7768_86"
  392. ><td id="86"><a href="#86">86</a></td></tr
  393. ><tr id="gr_svn7768_87"
  394. ><td id="87"><a href="#87">87</a></td></tr
  395. ><tr id="gr_svn7768_88"
  396. ><td id="88"><a href="#88">88</a></td></tr
  397. ><tr id="gr_svn7768_89"
  398. ><td id="89"><a href="#89">89</a></td></tr
  399. ><tr id="gr_svn7768_90"
  400. ><td id="90"><a href="#90">90</a></td></tr
  401. ><tr id="gr_svn7768_91"
  402. ><td id="91"><a href="#91">91</a></td></tr
  403. ><tr id="gr_svn7768_92"
  404. ><td id="92"><a href="#92">92</a></td></tr
  405. ><tr id="gr_svn7768_93"
  406. ><td id="93"><a href="#93">93</a></td></tr
  407. ><tr id="gr_svn7768_94"
  408. ><td id="94"><a href="#94">94</a></td></tr
  409. ><tr id="gr_svn7768_95"
  410. ><td id="95"><a href="#95">95</a></td></tr
  411. ><tr id="gr_svn7768_96"
  412. ><td id="96"><a href="#96">96</a></td></tr
  413. ><tr id="gr_svn7768_97"
  414. ><td id="97"><a href="#97">97</a></td></tr
  415. ><tr id="gr_svn7768_98"
  416. ><td id="98"><a href="#98">98</a></td></tr
  417. ><tr id="gr_svn7768_99"
  418. ><td id="99"><a href="#99">99</a></td></tr
  419. ><tr id="gr_svn7768_100"
  420. ><td id="100"><a href="#100">100</a></td></tr
  421. ><tr id="gr_svn7768_101"
  422. ><td id="101"><a href="#101">101</a></td></tr
  423. ><tr id="gr_svn7768_102"
  424. ><td id="102"><a href="#102">102</a></td></tr
  425. ><tr id="gr_svn7768_103"
  426. ><td id="103"><a href="#103">103</a></td></tr
  427. ><tr id="gr_svn7768_104"
  428. ><td id="104"><a href="#104">104</a></td></tr
  429. ><tr id="gr_svn7768_105"
  430. ><td id="105"><a href="#105">105</a></td></tr
  431. ><tr id="gr_svn7768_106"
  432. ><td id="106"><a href="#106">106</a></td></tr
  433. ><tr id="gr_svn7768_107"
  434. ><td id="107"><a href="#107">107</a></td></tr
  435. ><tr id="gr_svn7768_108"
  436. ><td id="108"><a href="#108">108</a></td></tr
  437. ><tr id="gr_svn7768_109"
  438. ><td id="109"><a href="#109">109</a></td></tr
  439. ><tr id="gr_svn7768_110"
  440. ><td id="110"><a href="#110">110</a></td></tr
  441. ><tr id="gr_svn7768_111"
  442. ><td id="111"><a href="#111">111</a></td></tr
  443. ><tr id="gr_svn7768_112"
  444. ><td id="112"><a href="#112">112</a></td></tr
  445. ><tr id="gr_svn7768_113"
  446. ><td id="113"><a href="#113">113</a></td></tr
  447. ><tr id="gr_svn7768_114"
  448. ><td id="114"><a href="#114">114</a></td></tr
  449. ><tr id="gr_svn7768_115"
  450. ><td id="115"><a href="#115">115</a></td></tr
  451. ><tr id="gr_svn7768_116"
  452. ><td id="116"><a href="#116">116</a></td></tr
  453. ><tr id="gr_svn7768_117"
  454. ><td id="117"><a href="#117">117</a></td></tr
  455. ><tr id="gr_svn7768_118"
  456. ><td id="118"><a href="#118">118</a></td></tr
  457. ><tr id="gr_svn7768_119"
  458. ><td id="119"><a href="#119">119</a></td></tr
  459. ><tr id="gr_svn7768_120"
  460. ><td id="120"><a href="#120">120</a></td></tr
  461. ><tr id="gr_svn7768_121"
  462. ><td id="121"><a href="#121">121</a></td></tr
  463. ><tr id="gr_svn7768_122"
  464. ><td id="122"><a href="#122">122</a></td></tr
  465. ><tr id="gr_svn7768_123"
  466. ><td id="123"><a href="#123">123</a></td></tr
  467. ><tr id="gr_svn7768_124"
  468. ><td id="124"><a href="#124">124</a></td></tr
  469. ><tr id="gr_svn7768_125"
  470. ><td id="125"><a href="#125">125</a></td></tr
  471. ><tr id="gr_svn7768_126"
  472. ><td id="126"><a href="#126">126</a></td></tr
  473. ><tr id="gr_svn7768_127"
  474. ><td id="127"><a href="#127">127</a></td></tr
  475. ><tr id="gr_svn7768_128"
  476. ><td id="128"><a href="#128">128</a></td></tr
  477. ><tr id="gr_svn7768_129"
  478. ><td id="129"><a href="#129">129</a></td></tr
  479. ><tr id="gr_svn7768_130"
  480. ><td id="130"><a href="#130">130</a></td></tr
  481. ><tr id="gr_svn7768_131"
  482. ><td id="131"><a href="#131">131</a></td></tr
  483. ><tr id="gr_svn7768_132"
  484. ><td id="132"><a href="#132">132</a></td></tr
  485. ><tr id="gr_svn7768_133"
  486. ><td id="133"><a href="#133">133</a></td></tr
  487. ><tr id="gr_svn7768_134"
  488. ><td id="134"><a href="#134">134</a></td></tr
  489. ><tr id="gr_svn7768_135"
  490. ><td id="135"><a href="#135">135</a></td></tr
  491. ><tr id="gr_svn7768_136"
  492. ><td id="136"><a href="#136">136</a></td></tr
  493. ><tr id="gr_svn7768_137"
  494. ><td id="137"><a href="#137">137</a></td></tr
  495. ><tr id="gr_svn7768_138"
  496. ><td id="138"><a href="#138">138</a></td></tr
  497. ><tr id="gr_svn7768_139"
  498. ><td id="139"><a href="#139">139</a></td></tr
  499. ><tr id="gr_svn7768_140"
  500. ><td id="140"><a href="#140">140</a></td></tr
  501. ><tr id="gr_svn7768_141"
  502. ><td id="141"><a href="#141">141</a></td></tr
  503. ><tr id="gr_svn7768_142"
  504. ><td id="142"><a href="#142">142</a></td></tr
  505. ><tr id="gr_svn7768_143"
  506. ><td id="143"><a href="#143">143</a></td></tr
  507. ><tr id="gr_svn7768_144"
  508. ><td id="144"><a href="#144">144</a></td></tr
  509. ><tr id="gr_svn7768_145"
  510. ><td id="145"><a href="#145">145</a></td></tr
  511. ><tr id="gr_svn7768_146"
  512. ><td id="146"><a href="#146">146</a></td></tr
  513. ><tr id="gr_svn7768_147"
  514. ><td id="147"><a href="#147">147</a></td></tr
  515. ><tr id="gr_svn7768_148"
  516. ><td id="148"><a href="#148">148</a></td></tr
  517. ><tr id="gr_svn7768_149"
  518. ><td id="149"><a href="#149">149</a></td></tr
  519. ><tr id="gr_svn7768_150"
  520. ><td id="150"><a href="#150">150</a></td></tr
  521. ><tr id="gr_svn7768_151"
  522. ><td id="151"><a href="#151">151</a></td></tr
  523. ><tr id="gr_svn7768_152"
  524. ><td id="152"><a href="#152">152</a></td></tr
  525. ><tr id="gr_svn7768_153"
  526. ><td id="153"><a href="#153">153</a></td></tr
  527. ><tr id="gr_svn7768_154"
  528. ><td id="154"><a href="#154">154</a></td></tr
  529. ><tr id="gr_svn7768_155"
  530. ><td id="155"><a href="#155">155</a></td></tr
  531. ><tr id="gr_svn7768_156"
  532. ><td id="156"><a href="#156">156</a></td></tr
  533. ><tr id="gr_svn7768_157"
  534. ><td id="157"><a href="#157">157</a></td></tr
  535. ><tr id="gr_svn7768_158"
  536. ><td id="158"><a href="#158">158</a></td></tr
  537. ><tr id="gr_svn7768_159"
  538. ><td id="159"><a href="#159">159</a></td></tr
  539. ><tr id="gr_svn7768_160"
  540. ><td id="160"><a href="#160">160</a></td></tr
  541. ><tr id="gr_svn7768_161"
  542. ><td id="161"><a href="#161">161</a></td></tr
  543. ><tr id="gr_svn7768_162"
  544. ><td id="162"><a href="#162">162</a></td></tr
  545. ><tr id="gr_svn7768_163"
  546. ><td id="163"><a href="#163">163</a></td></tr
  547. ><tr id="gr_svn7768_164"
  548. ><td id="164"><a href="#164">164</a></td></tr
  549. ><tr id="gr_svn7768_165"
  550. ><td id="165"><a href="#165">165</a></td></tr
  551. ><tr id="gr_svn7768_166"
  552. ><td id="166"><a href="#166">166</a></td></tr
  553. ><tr id="gr_svn7768_167"
  554. ><td id="167"><a href="#167">167</a></td></tr
  555. ><tr id="gr_svn7768_168"
  556. ><td id="168"><a href="#168">168</a></td></tr
  557. ><tr id="gr_svn7768_169"
  558. ><td id="169"><a href="#169">169</a></td></tr
  559. ><tr id="gr_svn7768_170"
  560. ><td id="170"><a href="#170">170</a></td></tr
  561. ><tr id="gr_svn7768_171"
  562. ><td id="171"><a href="#171">171</a></td></tr
  563. ><tr id="gr_svn7768_172"
  564. ><td id="172"><a href="#172">172</a></td></tr
  565. ><tr id="gr_svn7768_173"
  566. ><td id="173"><a href="#173">173</a></td></tr
  567. ><tr id="gr_svn7768_174"
  568. ><td id="174"><a href="#174">174</a></td></tr
  569. ><tr id="gr_svn7768_175"
  570. ><td id="175"><a href="#175">175</a></td></tr
  571. ><tr id="gr_svn7768_176"
  572. ><td id="176"><a href="#176">176</a></td></tr
  573. ><tr id="gr_svn7768_177"
  574. ><td id="177"><a href="#177">177</a></td></tr
  575. ><tr id="gr_svn7768_178"
  576. ><td id="178"><a href="#178">178</a></td></tr
  577. ><tr id="gr_svn7768_179"
  578. ><td id="179"><a href="#179">179</a></td></tr
  579. ><tr id="gr_svn7768_180"
  580. ><td id="180"><a href="#180">180</a></td></tr
  581. ><tr id="gr_svn7768_181"
  582. ><td id="181"><a href="#181">181</a></td></tr
  583. ><tr id="gr_svn7768_182"
  584. ><td id="182"><a href="#182">182</a></td></tr
  585. ><tr id="gr_svn7768_183"
  586. ><td id="183"><a href="#183">183</a></td></tr
  587. ><tr id="gr_svn7768_184"
  588. ><td id="184"><a href="#184">184</a></td></tr
  589. ><tr id="gr_svn7768_185"
  590. ><td id="185"><a href="#185">185</a></td></tr
  591. ><tr id="gr_svn7768_186"
  592. ><td id="186"><a href="#186">186</a></td></tr
  593. ><tr id="gr_svn7768_187"
  594. ><td id="187"><a href="#187">187</a></td></tr
  595. ><tr id="gr_svn7768_188"
  596. ><td id="188"><a href="#188">188</a></td></tr
  597. ><tr id="gr_svn7768_189"
  598. ><td id="189"><a href="#189">189</a></td></tr
  599. ><tr id="gr_svn7768_190"
  600. ><td id="190"><a href="#190">190</a></td></tr
  601. ><tr id="gr_svn7768_191"
  602. ><td id="191"><a href="#191">191</a></td></tr
  603. ><tr id="gr_svn7768_192"
  604. ><td id="192"><a href="#192">192</a></td></tr
  605. ><tr id="gr_svn7768_193"
  606. ><td id="193"><a href="#193">193</a></td></tr
  607. ><tr id="gr_svn7768_194"
  608. ><td id="194"><a href="#194">194</a></td></tr
  609. ><tr id="gr_svn7768_195"
  610. ><td id="195"><a href="#195">195</a></td></tr
  611. ><tr id="gr_svn7768_196"
  612. ><td id="196"><a href="#196">196</a></td></tr
  613. ><tr id="gr_svn7768_197"
  614. ><td id="197"><a href="#197">197</a></td></tr
  615. ><tr id="gr_svn7768_198"
  616. ><td id="198"><a href="#198">198</a></td></tr
  617. ><tr id="gr_svn7768_199"
  618. ><td id="199"><a href="#199">199</a></td></tr
  619. ><tr id="gr_svn7768_200"
  620. ><td id="200"><a href="#200">200</a></td></tr
  621. ><tr id="gr_svn7768_201"
  622. ><td id="201"><a href="#201">201</a></td></tr
  623. ><tr id="gr_svn7768_202"
  624. ><td id="202"><a href="#202">202</a></td></tr
  625. ><tr id="gr_svn7768_203"
  626. ><td id="203"><a href="#203">203</a></td></tr
  627. ><tr id="gr_svn7768_204"
  628. ><td id="204"><a href="#204">204</a></td></tr
  629. ><tr id="gr_svn7768_205"
  630. ><td id="205"><a href="#205">205</a></td></tr
  631. ><tr id="gr_svn7768_206"
  632. ><td id="206"><a href="#206">206</a></td></tr
  633. ><tr id="gr_svn7768_207"
  634. ><td id="207"><a href="#207">207</a></td></tr
  635. ><tr id="gr_svn7768_208"
  636. ><td id="208"><a href="#208">208</a></td></tr
  637. ><tr id="gr_svn7768_209"
  638. ><td id="209"><a href="#209">209</a></td></tr
  639. ><tr id="gr_svn7768_210"
  640. ><td id="210"><a href="#210">210</a></td></tr
  641. ><tr id="gr_svn7768_211"
  642. ><td id="211"><a href="#211">211</a></td></tr
  643. ><tr id="gr_svn7768_212"
  644. ><td id="212"><a href="#212">212</a></td></tr
  645. ><tr id="gr_svn7768_213"
  646. ><td id="213"><a href="#213">213</a></td></tr
  647. ><tr id="gr_svn7768_214"
  648. ><td id="214"><a href="#214">214</a></td></tr
  649. ><tr id="gr_svn7768_215"
  650. ><td id="215"><a href="#215">215</a></td></tr
  651. ><tr id="gr_svn7768_216"
  652. ><td id="216"><a href="#216">216</a></td></tr
  653. ><tr id="gr_svn7768_217"
  654. ><td id="217"><a href="#217">217</a></td></tr
  655. ><tr id="gr_svn7768_218"
  656. ><td id="218"><a href="#218">218</a></td></tr
  657. ><tr id="gr_svn7768_219"
  658. ><td id="219"><a href="#219">219</a></td></tr
  659. ><tr id="gr_svn7768_220"
  660. ><td id="220"><a href="#220">220</a></td></tr
  661. ><tr id="gr_svn7768_221"
  662. ><td id="221"><a href="#221">221</a></td></tr
  663. ><tr id="gr_svn7768_222"
  664. ><td id="222"><a href="#222">222</a></td></tr
  665. ><tr id="gr_svn7768_223"
  666. ><td id="223"><a href="#223">223</a></td></tr
  667. ><tr id="gr_svn7768_224"
  668. ><td id="224"><a href="#224">224</a></td></tr
  669. ><tr id="gr_svn7768_225"
  670. ><td id="225"><a href="#225">225</a></td></tr
  671. ><tr id="gr_svn7768_226"
  672. ><td id="226"><a href="#226">226</a></td></tr
  673. ><tr id="gr_svn7768_227"
  674. ><td id="227"><a href="#227">227</a></td></tr
  675. ><tr id="gr_svn7768_228"
  676. ><td id="228"><a href="#228">228</a></td></tr
  677. ><tr id="gr_svn7768_229"
  678. ><td id="229"><a href="#229">229</a></td></tr
  679. ><tr id="gr_svn7768_230"
  680. ><td id="230"><a href="#230">230</a></td></tr
  681. ><tr id="gr_svn7768_231"
  682. ><td id="231"><a href="#231">231</a></td></tr
  683. ><tr id="gr_svn7768_232"
  684. ><td id="232"><a href="#232">232</a></td></tr
  685. ><tr id="gr_svn7768_233"
  686. ><td id="233"><a href="#233">233</a></td></tr
  687. ><tr id="gr_svn7768_234"
  688. ><td id="234"><a href="#234">234</a></td></tr
  689. ><tr id="gr_svn7768_235"
  690. ><td id="235"><a href="#235">235</a></td></tr
  691. ><tr id="gr_svn7768_236"
  692. ><td id="236"><a href="#236">236</a></td></tr
  693. ><tr id="gr_svn7768_237"
  694. ><td id="237"><a href="#237">237</a></td></tr
  695. ><tr id="gr_svn7768_238"
  696. ><td id="238"><a href="#238">238</a></td></tr
  697. ><tr id="gr_svn7768_239"
  698. ><td id="239"><a href="#239">239</a></td></tr
  699. ><tr id="gr_svn7768_240"
  700. ><td id="240"><a href="#240">240</a></td></tr
  701. ><tr id="gr_svn7768_241"
  702. ><td id="241"><a href="#241">241</a></td></tr
  703. ><tr id="gr_svn7768_242"
  704. ><td id="242"><a href="#242">242</a></td></tr
  705. ><tr id="gr_svn7768_243"
  706. ><td id="243"><a href="#243">243</a></td></tr
  707. ><tr id="gr_svn7768_244"
  708. ><td id="244"><a href="#244">244</a></td></tr
  709. ><tr id="gr_svn7768_245"
  710. ><td id="245"><a href="#245">245</a></td></tr
  711. ><tr id="gr_svn7768_246"
  712. ><td id="246"><a href="#246">246</a></td></tr
  713. ><tr id="gr_svn7768_247"
  714. ><td id="247"><a href="#247">247</a></td></tr
  715. ><tr id="gr_svn7768_248"
  716. ><td id="248"><a href="#248">248</a></td></tr
  717. ><tr id="gr_svn7768_249"
  718. ><td id="249"><a href="#249">249</a></td></tr
  719. ><tr id="gr_svn7768_250"
  720. ><td id="250"><a href="#250">250</a></td></tr
  721. ><tr id="gr_svn7768_251"
  722. ><td id="251"><a href="#251">251</a></td></tr
  723. ><tr id="gr_svn7768_252"
  724. ><td id="252"><a href="#252">252</a></td></tr
  725. ><tr id="gr_svn7768_253"
  726. ><td id="253"><a href="#253">253</a></td></tr
  727. ><tr id="gr_svn7768_254"
  728. ><td id="254"><a href="#254">254</a></td></tr
  729. ><tr id="gr_svn7768_255"
  730. ><td id="255"><a href="#255">255</a></td></tr
  731. ><tr id="gr_svn7768_256"
  732. ><td id="256"><a href="#256">256</a></td></tr
  733. ><tr id="gr_svn7768_257"
  734. ><td id="257"><a href="#257">257</a></td></tr
  735. ><tr id="gr_svn7768_258"
  736. ><td id="258"><a href="#258">258</a></td></tr
  737. ><tr id="gr_svn7768_259"
  738. ><td id="259"><a href="#259">259</a></td></tr
  739. ><tr id="gr_svn7768_260"
  740. ><td id="260"><a href="#260">260</a></td></tr
  741. ><tr id="gr_svn7768_261"
  742. ><td id="261"><a href="#261">261</a></td></tr
  743. ><tr id="gr_svn7768_262"
  744. ><td id="262"><a href="#262">262</a></td></tr
  745. ><tr id="gr_svn7768_263"
  746. ><td id="263"><a href="#263">263</a></td></tr
  747. ><tr id="gr_svn7768_264"
  748. ><td id="264"><a href="#264">264</a></td></tr
  749. ><tr id="gr_svn7768_265"
  750. ><td id="265"><a href="#265">265</a></td></tr
  751. ><tr id="gr_svn7768_266"
  752. ><td id="266"><a href="#266">266</a></td></tr
  753. ><tr id="gr_svn7768_267"
  754. ><td id="267"><a href="#267">267</a></td></tr
  755. ><tr id="gr_svn7768_268"
  756. ><td id="268"><a href="#268">268</a></td></tr
  757. ><tr id="gr_svn7768_269"
  758. ><td id="269"><a href="#269">269</a></td></tr
  759. ><tr id="gr_svn7768_270"
  760. ><td id="270"><a href="#270">270</a></td></tr
  761. ><tr id="gr_svn7768_271"
  762. ><td id="271"><a href="#271">271</a></td></tr
  763. ><tr id="gr_svn7768_272"
  764. ><td id="272"><a href="#272">272</a></td></tr
  765. ><tr id="gr_svn7768_273"
  766. ><td id="273"><a href="#273">273</a></td></tr
  767. ><tr id="gr_svn7768_274"
  768. ><td id="274"><a href="#274">274</a></td></tr
  769. ><tr id="gr_svn7768_275"
  770. ><td id="275"><a href="#275">275</a></td></tr
  771. ><tr id="gr_svn7768_276"
  772. ><td id="276"><a href="#276">276</a></td></tr
  773. ><tr id="gr_svn7768_277"
  774. ><td id="277"><a href="#277">277</a></td></tr
  775. ><tr id="gr_svn7768_278"
  776. ><td id="278"><a href="#278">278</a></td></tr
  777. ><tr id="gr_svn7768_279"
  778. ><td id="279"><a href="#279">279</a></td></tr
  779. ><tr id="gr_svn7768_280"
  780. ><td id="280"><a href="#280">280</a></td></tr
  781. ><tr id="gr_svn7768_281"
  782. ><td id="281"><a href="#281">281</a></td></tr
  783. ><tr id="gr_svn7768_282"
  784. ><td id="282"><a href="#282">282</a></td></tr
  785. ><tr id="gr_svn7768_283"
  786. ><td id="283"><a href="#283">283</a></td></tr
  787. ><tr id="gr_svn7768_284"
  788. ><td id="284"><a href="#284">284</a></td></tr
  789. ><tr id="gr_svn7768_285"
  790. ><td id="285"><a href="#285">285</a></td></tr
  791. ><tr id="gr_svn7768_286"
  792. ><td id="286"><a href="#286">286</a></td></tr
  793. ><tr id="gr_svn7768_287"
  794. ><td id="287"><a href="#287">287</a></td></tr
  795. ><tr id="gr_svn7768_288"
  796. ><td id="288"><a href="#288">288</a></td></tr
  797. ><tr id="gr_svn7768_289"
  798. ><td id="289"><a href="#289">289</a></td></tr
  799. ><tr id="gr_svn7768_290"
  800. ><td id="290"><a href="#290">290</a></td></tr
  801. ><tr id="gr_svn7768_291"
  802. ><td id="291"><a href="#291">291</a></td></tr
  803. ><tr id="gr_svn7768_292"
  804. ><td id="292"><a href="#292">292</a></td></tr
  805. ><tr id="gr_svn7768_293"
  806. ><td id="293"><a href="#293">293</a></td></tr
  807. ><tr id="gr_svn7768_294"
  808. ><td id="294"><a href="#294">294</a></td></tr
  809. ><tr id="gr_svn7768_295"
  810. ><td id="295"><a href="#295">295</a></td></tr
  811. ><tr id="gr_svn7768_296"
  812. ><td id="296"><a href="#296">296</a></td></tr
  813. ><tr id="gr_svn7768_297"
  814. ><td id="297"><a href="#297">297</a></td></tr
  815. ><tr id="gr_svn7768_298"
  816. ><td id="298"><a href="#298">298</a></td></tr
  817. ><tr id="gr_svn7768_299"
  818. ><td id="299"><a href="#299">299</a></td></tr
  819. ><tr id="gr_svn7768_300"
  820. ><td id="300"><a href="#300">300</a></td></tr
  821. ><tr id="gr_svn7768_301"
  822. ><td id="301"><a href="#301">301</a></td></tr
  823. ><tr id="gr_svn7768_302"
  824. ><td id="302"><a href="#302">302</a></td></tr
  825. ><tr id="gr_svn7768_303"
  826. ><td id="303"><a href="#303">303</a></td></tr
  827. ><tr id="gr_svn7768_304"
  828. ><td id="304"><a href="#304">304</a></td></tr
  829. ><tr id="gr_svn7768_305"
  830. ><td id="305"><a href="#305">305</a></td></tr
  831. ><tr id="gr_svn7768_306"
  832. ><td id="306"><a href="#306">306</a></td></tr
  833. ><tr id="gr_svn7768_307"
  834. ><td id="307"><a href="#307">307</a></td></tr
  835. ><tr id="gr_svn7768_308"
  836. ><td id="308"><a href="#308">308</a></td></tr
  837. ><tr id="gr_svn7768_309"
  838. ><td id="309"><a href="#309">309</a></td></tr
  839. ><tr id="gr_svn7768_310"
  840. ><td id="310"><a href="#310">310</a></td></tr
  841. ><tr id="gr_svn7768_311"
  842. ><td id="311"><a href="#311">311</a></td></tr
  843. ><tr id="gr_svn7768_312"
  844. ><td id="312"><a href="#312">312</a></td></tr
  845. ><tr id="gr_svn7768_313"
  846. ><td id="313"><a href="#313">313</a></td></tr
  847. ><tr id="gr_svn7768_314"
  848. ><td id="314"><a href="#314">314</a></td></tr
  849. ><tr id="gr_svn7768_315"
  850. ><td id="315"><a href="#315">315</a></td></tr
  851. ><tr id="gr_svn7768_316"
  852. ><td id="316"><a href="#316">316</a></td></tr
  853. ><tr id="gr_svn7768_317"
  854. ><td id="317"><a href="#317">317</a></td></tr
  855. ><tr id="gr_svn7768_318"
  856. ><td id="318"><a href="#318">318</a></td></tr
  857. ><tr id="gr_svn7768_319"
  858. ><td id="319"><a href="#319">319</a></td></tr
  859. ><tr id="gr_svn7768_320"
  860. ><td id="320"><a href="#320">320</a></td></tr
  861. ><tr id="gr_svn7768_321"
  862. ><td id="321"><a href="#321">321</a></td></tr
  863. ><tr id="gr_svn7768_322"
  864. ><td id="322"><a href="#322">322</a></td></tr
  865. ><tr id="gr_svn7768_323"
  866. ><td id="323"><a href="#323">323</a></td></tr
  867. ><tr id="gr_svn7768_324"
  868. ><td id="324"><a href="#324">324</a></td></tr
  869. ><tr id="gr_svn7768_325"
  870. ><td id="325"><a href="#325">325</a></td></tr
  871. ><tr id="gr_svn7768_326"
  872. ><td id="326"><a href="#326">326</a></td></tr
  873. ><tr id="gr_svn7768_327"
  874. ><td id="327"><a href="#327">327</a></td></tr
  875. ><tr id="gr_svn7768_328"
  876. ><td id="328"><a href="#328">328</a></td></tr
  877. ><tr id="gr_svn7768_329"
  878. ><td id="329"><a href="#329">329</a></td></tr
  879. ><tr id="gr_svn7768_330"
  880. ><td id="330"><a href="#330">330</a></td></tr
  881. ><tr id="gr_svn7768_331"
  882. ><td id="331"><a href="#331">331</a></td></tr
  883. ><tr id="gr_svn7768_332"
  884. ><td id="332"><a href="#332">332</a></td></tr
  885. ><tr id="gr_svn7768_333"
  886. ><td id="333"><a href="#333">333</a></td></tr
  887. ><tr id="gr_svn7768_334"
  888. ><td id="334"><a href="#334">334</a></td></tr
  889. ><tr id="gr_svn7768_335"
  890. ><td id="335"><a href="#335">335</a></td></tr
  891. ><tr id="gr_svn7768_336"
  892. ><td id="336"><a href="#336">336</a></td></tr
  893. ><tr id="gr_svn7768_337"
  894. ><td id="337"><a href="#337">337</a></td></tr
  895. ><tr id="gr_svn7768_338"
  896. ><td id="338"><a href="#338">338</a></td></tr
  897. ><tr id="gr_svn7768_339"
  898. ><td id="339"><a href="#339">339</a></td></tr
  899. ><tr id="gr_svn7768_340"
  900. ><td id="340"><a href="#340">340</a></td></tr
  901. ><tr id="gr_svn7768_341"
  902. ><td id="341"><a href="#341">341</a></td></tr
  903. ><tr id="gr_svn7768_342"
  904. ><td id="342"><a href="#342">342</a></td></tr
  905. ><tr id="gr_svn7768_343"
  906. ><td id="343"><a href="#343">343</a></td></tr
  907. ><tr id="gr_svn7768_344"
  908. ><td id="344"><a href="#344">344</a></td></tr
  909. ><tr id="gr_svn7768_345"
  910. ><td id="345"><a href="#345">345</a></td></tr
  911. ><tr id="gr_svn7768_346"
  912. ><td id="346"><a href="#346">346</a></td></tr
  913. ><tr id="gr_svn7768_347"
  914. ><td id="347"><a href="#347">347</a></td></tr
  915. ><tr id="gr_svn7768_348"
  916. ><td id="348"><a href="#348">348</a></td></tr
  917. ><tr id="gr_svn7768_349"
  918. ><td id="349"><a href="#349">349</a></td></tr
  919. ><tr id="gr_svn7768_350"
  920. ><td id="350"><a href="#350">350</a></td></tr
  921. ><tr id="gr_svn7768_351"
  922. ><td id="351"><a href="#351">351</a></td></tr
  923. ><tr id="gr_svn7768_352"
  924. ><td id="352"><a href="#352">352</a></td></tr
  925. ><tr id="gr_svn7768_353"
  926. ><td id="353"><a href="#353">353</a></td></tr
  927. ><tr id="gr_svn7768_354"
  928. ><td id="354"><a href="#354">354</a></td></tr
  929. ><tr id="gr_svn7768_355"
  930. ><td id="355"><a href="#355">355</a></td></tr
  931. ><tr id="gr_svn7768_356"
  932. ><td id="356"><a href="#356">356</a></td></tr
  933. ><tr id="gr_svn7768_357"
  934. ><td id="357"><a href="#357">357</a></td></tr
  935. ><tr id="gr_svn7768_358"
  936. ><td id="358"><a href="#358">358</a></td></tr
  937. ><tr id="gr_svn7768_359"
  938. ><td id="359"><a href="#359">359</a></td></tr
  939. ><tr id="gr_svn7768_360"
  940. ><td id="360"><a href="#360">360</a></td></tr
  941. ><tr id="gr_svn7768_361"
  942. ><td id="361"><a href="#361">361</a></td></tr
  943. ><tr id="gr_svn7768_362"
  944. ><td id="362"><a href="#362">362</a></td></tr
  945. ><tr id="gr_svn7768_363"
  946. ><td id="363"><a href="#363">363</a></td></tr
  947. ><tr id="gr_svn7768_364"
  948. ><td id="364"><a href="#364">364</a></td></tr
  949. ><tr id="gr_svn7768_365"
  950. ><td id="365"><a href="#365">365</a></td></tr
  951. ><tr id="gr_svn7768_366"
  952. ><td id="366"><a href="#366">366</a></td></tr
  953. ><tr id="gr_svn7768_367"
  954. ><td id="367"><a href="#367">367</a></td></tr
  955. ><tr id="gr_svn7768_368"
  956. ><td id="368"><a href="#368">368</a></td></tr
  957. ><tr id="gr_svn7768_369"
  958. ><td id="369"><a href="#369">369</a></td></tr
  959. ><tr id="gr_svn7768_370"
  960. ><td id="370"><a href="#370">370</a></td></tr
  961. ><tr id="gr_svn7768_371"
  962. ><td id="371"><a href="#371">371</a></td></tr
  963. ><tr id="gr_svn7768_372"
  964. ><td id="372"><a href="#372">372</a></td></tr
  965. ><tr id="gr_svn7768_373"
  966. ><td id="373"><a href="#373">373</a></td></tr
  967. ><tr id="gr_svn7768_374"
  968. ><td id="374"><a href="#374">374</a></td></tr
  969. ><tr id="gr_svn7768_375"
  970. ><td id="375"><a href="#375">375</a></td></tr
  971. ><tr id="gr_svn7768_376"
  972. ><td id="376"><a href="#376">376</a></td></tr
  973. ><tr id="gr_svn7768_377"
  974. ><td id="377"><a href="#377">377</a></td></tr
  975. ><tr id="gr_svn7768_378"
  976. ><td id="378"><a href="#378">378</a></td></tr
  977. ><tr id="gr_svn7768_379"
  978. ><td id="379"><a href="#379">379</a></td></tr
  979. ><tr id="gr_svn7768_380"
  980. ><td id="380"><a href="#380">380</a></td></tr
  981. ><tr id="gr_svn7768_381"
  982. ><td id="381"><a href="#381">381</a></td></tr
  983. ><tr id="gr_svn7768_382"
  984. ><td id="382"><a href="#382">382</a></td></tr
  985. ><tr id="gr_svn7768_383"
  986. ><td id="383"><a href="#383">383</a></td></tr
  987. ><tr id="gr_svn7768_384"
  988. ><td id="384"><a href="#384">384</a></td></tr
  989. ><tr id="gr_svn7768_385"
  990. ><td id="385"><a href="#385">385</a></td></tr
  991. ><tr id="gr_svn7768_386"
  992. ><td id="386"><a href="#386">386</a></td></tr
  993. ><tr id="gr_svn7768_387"
  994. ><td id="387"><a href="#387">387</a></td></tr
  995. ><tr id="gr_svn7768_388"
  996. ><td id="388"><a href="#388">388</a></td></tr
  997. ><tr id="gr_svn7768_389"
  998. ><td id="389"><a href="#389">389</a></td></tr
  999. ><tr id="gr_svn7768_390"
  1000. ><td id="390"><a href="#390">390</a></td></tr
  1001. ><tr id="gr_svn7768_391"
  1002. ><td id="391"><a href="#391">391</a></td></tr
  1003. ><tr id="gr_svn7768_392"
  1004. ><td id="392"><a href="#392">392</a></td></tr
  1005. ><tr id="gr_svn7768_393"
  1006. ><td id="393"><a href="#393">393</a></td></tr
  1007. ><tr id="gr_svn7768_394"
  1008. ><td id="394"><a href="#394">394</a></td></tr
  1009. ><tr id="gr_svn7768_395"
  1010. ><td id="395"><a href="#395">395</a></td></tr
  1011. ><tr id="gr_svn7768_396"
  1012. ><td id="396"><a href="#396">396</a></td></tr
  1013. ><tr id="gr_svn7768_397"
  1014. ><td id="397"><a href="#397">397</a></td></tr
  1015. ><tr id="gr_svn7768_398"
  1016. ><td id="398"><a href="#398">398</a></td></tr
  1017. ><tr id="gr_svn7768_399"
  1018. ><td id="399"><a href="#399">399</a></td></tr
  1019. ><tr id="gr_svn7768_400"
  1020. ><td id="400"><a href="#400">400</a></td></tr
  1021. ><tr id="gr_svn7768_401"
  1022. ><td id="401"><a href="#401">401</a></td></tr
  1023. ><tr id="gr_svn7768_402"
  1024. ><td id="402"><a href="#402">402</a></td></tr
  1025. ><tr id="gr_svn7768_403"
  1026. ><td id="403"><a href="#403">403</a></td></tr
  1027. ><tr id="gr_svn7768_404"
  1028. ><td id="404"><a href="#404">404</a></td></tr
  1029. ><tr id="gr_svn7768_405"
  1030. ><td id="405"><a href="#405">405</a></td></tr
  1031. ><tr id="gr_svn7768_406"
  1032. ><td id="406"><a href="#406">406</a></td></tr
  1033. ><tr id="gr_svn7768_407"
  1034. ><td id="407"><a href="#407">407</a></td></tr
  1035. ><tr id="gr_svn7768_408"
  1036. ><td id="408"><a href="#408">408</a></td></tr
  1037. ><tr id="gr_svn7768_409"
  1038. ><td id="409"><a href="#409">409</a></td></tr
  1039. ><tr id="gr_svn7768_410"
  1040. ><td id="410"><a href="#410">410</a></td></tr
  1041. ><tr id="gr_svn7768_411"
  1042. ><td id="411"><a href="#411">411</a></td></tr
  1043. ><tr id="gr_svn7768_412"
  1044. ><td id="412"><a href="#412">412</a></td></tr
  1045. ><tr id="gr_svn7768_413"
  1046. ><td id="413"><a href="#413">413</a></td></tr
  1047. ><tr id="gr_svn7768_414"
  1048. ><td id="414"><a href="#414">414</a></td></tr
  1049. ><tr id="gr_svn7768_415"
  1050. ><td id="415"><a href="#415">415</a></td></tr
  1051. ><tr id="gr_svn7768_416"
  1052. ><td id="416"><a href="#416">416</a></td></tr
  1053. ><tr id="gr_svn7768_417"
  1054. ><td id="417"><a href="#417">417</a></td></tr
  1055. ><tr id="gr_svn7768_418"
  1056. ><td id="418"><a href="#418">418</a></td></tr
  1057. ><tr id="gr_svn7768_419"
  1058. ><td id="419"><a href="#419">419</a></td></tr
  1059. ><tr id="gr_svn7768_420"
  1060. ><td id="420"><a href="#420">420</a></td></tr
  1061. ><tr id="gr_svn7768_421"
  1062. ><td id="421"><a href="#421">421</a></td></tr
  1063. ><tr id="gr_svn7768_422"
  1064. ><td id="422"><a href="#422">422</a></td></tr
  1065. ><tr id="gr_svn7768_423"
  1066. ><td id="423"><a href="#423">423</a></td></tr
  1067. ><tr id="gr_svn7768_424"
  1068. ><td id="424"><a href="#424">424</a></td></tr
  1069. ><tr id="gr_svn7768_425"
  1070. ><td id="425"><a href="#425">425</a></td></tr
  1071. ><tr id="gr_svn7768_426"
  1072. ><td id="426"><a href="#426">426</a></td></tr
  1073. ><tr id="gr_svn7768_427"
  1074. ><td id="427"><a href="#427">427</a></td></tr
  1075. ><tr id="gr_svn7768_428"
  1076. ><td id="428"><a href="#428">428</a></td></tr
  1077. ><tr id="gr_svn7768_429"
  1078. ><td id="429"><a href="#429">429</a></td></tr
  1079. ><tr id="gr_svn7768_430"
  1080. ><td id="430"><a href="#430">430</a></td></tr
  1081. ><tr id="gr_svn7768_431"
  1082. ><td id="431"><a href="#431">431</a></td></tr
  1083. ><tr id="gr_svn7768_432"
  1084. ><td id="432"><a href="#432">432</a></td></tr
  1085. ><tr id="gr_svn7768_433"
  1086. ><td id="433"><a href="#433">433</a></td></tr
  1087. ><tr id="gr_svn7768_434"
  1088. ><td id="434"><a href="#434">434</a></td></tr
  1089. ><tr id="gr_svn7768_435"
  1090. ><td id="435"><a href="#435">435</a></td></tr
  1091. ><tr id="gr_svn7768_436"
  1092. ><td id="436"><a href="#436">436</a></td></tr
  1093. ><tr id="gr_svn7768_437"
  1094. ><td id="437"><a href="#437">437</a></td></tr
  1095. ><tr id="gr_svn7768_438"
  1096. ><td id="438"><a href="#438">438</a></td></tr
  1097. ><tr id="gr_svn7768_439"
  1098. ><td id="439"><a href="#439">439</a></td></tr
  1099. ><tr id="gr_svn7768_440"
  1100. ><td id="440"><a href="#440">440</a></td></tr
  1101. ><tr id="gr_svn7768_441"
  1102. ><td id="441"><a href="#441">441</a></td></tr
  1103. ><tr id="gr_svn7768_442"
  1104. ><td id="442"><a href="#442">442</a></td></tr
  1105. ><tr id="gr_svn7768_443"
  1106. ><td id="443"><a href="#443">443</a></td></tr
  1107. ><tr id="gr_svn7768_444"
  1108. ><td id="444"><a href="#444">444</a></td></tr
  1109. ><tr id="gr_svn7768_445"
  1110. ><td id="445"><a href="#445">445</a></td></tr
  1111. ><tr id="gr_svn7768_446"
  1112. ><td id="446"><a href="#446">446</a></td></tr
  1113. ><tr id="gr_svn7768_447"
  1114. ><td id="447"><a href="#447">447</a></td></tr
  1115. ><tr id="gr_svn7768_448"
  1116. ><td id="448"><a href="#448">448</a></td></tr
  1117. ><tr id="gr_svn7768_449"
  1118. ><td id="449"><a href="#449">449</a></td></tr
  1119. ><tr id="gr_svn7768_450"
  1120. ><td id="450"><a href="#450">450</a></td></tr
  1121. ><tr id="gr_svn7768_451"
  1122. ><td id="451"><a href="#451">451</a></td></tr
  1123. ><tr id="gr_svn7768_452"
  1124. ><td id="452"><a href="#452">452</a></td></tr
  1125. ><tr id="gr_svn7768_453"
  1126. ><td id="453"><a href="#453">453</a></td></tr
  1127. ><tr id="gr_svn7768_454"
  1128. ><td id="454"><a href="#454">454</a></td></tr
  1129. ></table></pre>
  1130. <pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
  1131. </td>
  1132. <td id="lines">
  1133. <pre class="prettyprint"><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
  1134. <pre class="prettyprint lang-java"><table id="src_table_0"><tr
  1135. id=sl_svn7768_1
  1136. ><td class="source">/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */<br></td></tr
  1137. ><tr
  1138. id=sl_svn7768_2
  1139. ><td class="source"><br></td></tr
  1140. ><tr
  1141. id=sl_svn7768_3
  1142. ><td class="source">/*<br></td></tr
  1143. ><tr
  1144. id=sl_svn7768_4
  1145. ><td class="source"> Part of the Processing project - http://processing.org<br></td></tr
  1146. ><tr
  1147. id=sl_svn7768_5
  1148. ><td class="source"><br></td></tr
  1149. ><tr
  1150. id=sl_svn7768_6
  1151. ><td class="source"> Copyright (c) 2005-08 Ben Fry and Casey Reas<br></td></tr
  1152. ><tr
  1153. id=sl_svn7768_7
  1154. ><td class="source"><br></td></tr
  1155. ><tr
  1156. id=sl_svn7768_8
  1157. ><td class="source"> This library is free software; you can redistribute it and/or<br></td></tr
  1158. ><tr
  1159. id=sl_svn7768_9
  1160. ><td class="source"> modify it under the terms of the GNU Lesser General Public<br></td></tr
  1161. ><tr
  1162. id=sl_svn7768_10
  1163. ><td class="source"> License as published by the Free Software Foundation; either<br></td></tr
  1164. ><tr
  1165. id=sl_svn7768_11
  1166. ><td class="source"> version 2.1 of the License, or (at your option) any later version.<br></td></tr
  1167. ><tr
  1168. id=sl_svn7768_12
  1169. ><td class="source"><br></td></tr
  1170. ><tr
  1171. id=sl_svn7768_13
  1172. ><td class="source"> This library is distributed in the hope that it will be useful,<br></td></tr
  1173. ><tr
  1174. id=sl_svn7768_14
  1175. ><td class="source"> but WITHOUT ANY WARRANTY; without even the implied warranty of<br></td></tr
  1176. ><tr
  1177. id=sl_svn7768_15
  1178. ><td class="source"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br></td></tr
  1179. ><tr
  1180. id=sl_svn7768_16
  1181. ><td class="source"> Lesser General Public License for more details.<br></td></tr
  1182. ><tr
  1183. id=sl_svn7768_17
  1184. ><td class="source"><br></td></tr
  1185. ><tr
  1186. id=sl_svn7768_18
  1187. ><td class="source"> You should have received a copy of the GNU Lesser General<br></td></tr
  1188. ><tr
  1189. id=sl_svn7768_19
  1190. ><td class="source"> Public License along with this library; if not, write to the<br></td></tr
  1191. ><tr
  1192. id=sl_svn7768_20
  1193. ><td class="source"> Free Software Foundation, Inc., 59 Temple Place, Suite 330,<br></td></tr
  1194. ><tr
  1195. id=sl_svn7768_21
  1196. ><td class="source"> Boston, MA 02111-1307 USA<br></td></tr
  1197. ><tr
  1198. id=sl_svn7768_22
  1199. ><td class="source">*/<br></td></tr
  1200. ><tr
  1201. id=sl_svn7768_23
  1202. ><td class="source"><br></td></tr
  1203. ><tr
  1204. id=sl_svn7768_24
  1205. ><td class="source">package processing.core;<br></td></tr
  1206. ><tr
  1207. id=sl_svn7768_25
  1208. ><td class="source"><br></td></tr
  1209. ><tr
  1210. id=sl_svn7768_26
  1211. ><td class="source"><br></td></tr
  1212. ><tr
  1213. id=sl_svn7768_27
  1214. ><td class="source">/**<br></td></tr
  1215. ><tr
  1216. id=sl_svn7768_28
  1217. ><td class="source"> * 3x2 affine matrix implementation.<br></td></tr
  1218. ><tr
  1219. id=sl_svn7768_29
  1220. ><td class="source"> */<br></td></tr
  1221. ><tr
  1222. id=sl_svn7768_30
  1223. ><td class="source">public class PMatrix2D implements PMatrix {<br></td></tr
  1224. ><tr
  1225. id=sl_svn7768_31
  1226. ><td class="source"><br></td></tr
  1227. ><tr
  1228. id=sl_svn7768_32
  1229. ><td class="source"> public float m00, m01, m02;<br></td></tr
  1230. ><tr
  1231. id=sl_svn7768_33
  1232. ><td class="source"> public float m10, m11, m12;<br></td></tr
  1233. ><tr
  1234. id=sl_svn7768_34
  1235. ><td class="source"><br></td></tr
  1236. ><tr
  1237. id=sl_svn7768_35
  1238. ><td class="source"><br></td></tr
  1239. ><tr
  1240. id=sl_svn7768_36
  1241. ><td class="source"> public PMatrix2D() {<br></td></tr
  1242. ><tr
  1243. id=sl_svn7768_37
  1244. ><td class="source"> reset();<br></td></tr
  1245. ><tr
  1246. id=sl_svn7768_38
  1247. ><td class="source"> }<br></td></tr
  1248. ><tr
  1249. id=sl_svn7768_39
  1250. ><td class="source"><br></td></tr
  1251. ><tr
  1252. id=sl_svn7768_40
  1253. ><td class="source"><br></td></tr
  1254. ><tr
  1255. id=sl_svn7768_41
  1256. ><td class="source"> public PMatrix2D(float m00, float m01, float m02,<br></td></tr
  1257. ><tr
  1258. id=sl_svn7768_42
  1259. ><td class="source"> float m10, float m11, float m12) {<br></td></tr
  1260. ><tr
  1261. id=sl_svn7768_43
  1262. ><td class="source"> set(m00, m01, m02,<br></td></tr
  1263. ><tr
  1264. id=sl_svn7768_44
  1265. ><td class="source"> m10, m11, m12);<br></td></tr
  1266. ><tr
  1267. id=sl_svn7768_45
  1268. ><td class="source"> }<br></td></tr
  1269. ><tr
  1270. id=sl_svn7768_46
  1271. ><td class="source"><br></td></tr
  1272. ><tr
  1273. id=sl_svn7768_47
  1274. ><td class="source"><br></td></tr
  1275. ><tr
  1276. id=sl_svn7768_48
  1277. ><td class="source"> public PMatrix2D(PMatrix matrix) {<br></td></tr
  1278. ><tr
  1279. id=sl_svn7768_49
  1280. ><td class="source"> set(matrix);<br></td></tr
  1281. ><tr
  1282. id=sl_svn7768_50
  1283. ><td class="source"> }<br></td></tr
  1284. ><tr
  1285. id=sl_svn7768_51
  1286. ><td class="source"><br></td></tr
  1287. ><tr
  1288. id=sl_svn7768_52
  1289. ><td class="source"><br></td></tr
  1290. ><tr
  1291. id=sl_svn7768_53
  1292. ><td class="source"> public void reset() {<br></td></tr
  1293. ><tr
  1294. id=sl_svn7768_54
  1295. ><td class="source"> set(1, 0, 0,<br></td></tr
  1296. ><tr
  1297. id=sl_svn7768_55
  1298. ><td class="source"> 0, 1, 0);<br></td></tr
  1299. ><tr
  1300. id=sl_svn7768_56
  1301. ><td class="source"> }<br></td></tr
  1302. ><tr
  1303. id=sl_svn7768_57
  1304. ><td class="source"><br></td></tr
  1305. ><tr
  1306. id=sl_svn7768_58
  1307. ><td class="source"><br></td></tr
  1308. ><tr
  1309. id=sl_svn7768_59
  1310. ><td class="source"> /**<br></td></tr
  1311. ><tr
  1312. id=sl_svn7768_60
  1313. ><td class="source"> * Returns a copy of this PMatrix.<br></td></tr
  1314. ><tr
  1315. id=sl_svn7768_61
  1316. ><td class="source"> */<br></td></tr
  1317. ><tr
  1318. id=sl_svn7768_62
  1319. ><td class="source"> public PMatrix2D get() {<br></td></tr
  1320. ><tr
  1321. id=sl_svn7768_63
  1322. ><td class="source"> PMatrix2D outgoing = new PMatrix2D();<br></td></tr
  1323. ><tr
  1324. id=sl_svn7768_64
  1325. ><td class="source"> outgoing.set(this);<br></td></tr
  1326. ><tr
  1327. id=sl_svn7768_65
  1328. ><td class="source"> return outgoing;<br></td></tr
  1329. ><tr
  1330. id=sl_svn7768_66
  1331. ><td class="source"> }<br></td></tr
  1332. ><tr
  1333. id=sl_svn7768_67
  1334. ><td class="source"><br></td></tr
  1335. ><tr
  1336. id=sl_svn7768_68
  1337. ><td class="source"><br></td></tr
  1338. ><tr
  1339. id=sl_svn7768_69
  1340. ><td class="source"> /**<br></td></tr
  1341. ><tr
  1342. id=sl_svn7768_70
  1343. ><td class="source"> * Copies the matrix contents into a 6 entry float array.<br></td></tr
  1344. ><tr
  1345. id=sl_svn7768_71
  1346. ><td class="source"> * If target is null (or not the correct size), a new array will be created.<br></td></tr
  1347. ><tr
  1348. id=sl_svn7768_72
  1349. ><td class="source"> */<br></td></tr
  1350. ><tr
  1351. id=sl_svn7768_73
  1352. ><td class="source"> public float[] get(float[] target) {<br></td></tr
  1353. ><tr
  1354. id=sl_svn7768_74
  1355. ><td class="source"> if ((target == null) || (target.length != 6)) {<br></td></tr
  1356. ><tr
  1357. id=sl_svn7768_75
  1358. ><td class="source"> target = new float[6];<br></td></tr
  1359. ><tr
  1360. id=sl_svn7768_76
  1361. ><td class="source"> }<br></td></tr
  1362. ><tr
  1363. id=sl_svn7768_77
  1364. ><td class="source"> target[0] = m00;<br></td></tr
  1365. ><tr
  1366. id=sl_svn7768_78
  1367. ><td class="source"> target[1] = m01;<br></td></tr
  1368. ><tr
  1369. id=sl_svn7768_79
  1370. ><td class="source"> target[2] = m02;<br></td></tr
  1371. ><tr
  1372. id=sl_svn7768_80
  1373. ><td class="source"><br></td></tr
  1374. ><tr
  1375. id=sl_svn7768_81
  1376. ><td class="source"> target[3] = m10;<br></td></tr
  1377. ><tr
  1378. id=sl_svn7768_82
  1379. ><td class="source"> target[4] = m11;<br></td></tr
  1380. ><tr
  1381. id=sl_svn7768_83
  1382. ><td class="source"> target[5] = m12;<br></td></tr
  1383. ><tr
  1384. id=sl_svn7768_84
  1385. ><td class="source"><br></td></tr
  1386. ><tr
  1387. id=sl_svn7768_85
  1388. ><td class="source"> return target;<br></td></tr
  1389. ><tr
  1390. id=sl_svn7768_86
  1391. ><td class="source"> }<br></td></tr
  1392. ><tr
  1393. id=sl_svn7768_87
  1394. ><td class="source"><br></td></tr
  1395. ><tr
  1396. id=sl_svn7768_88
  1397. ><td class="source"><br></td></tr
  1398. ><tr
  1399. id=sl_svn7768_89
  1400. ><td class="source"> public void set(PMatrix matrix) {<br></td></tr
  1401. ><tr
  1402. id=sl_svn7768_90
  1403. ><td class="source"> if (matrix instanceof PMatrix2D) {<br></td></tr
  1404. ><tr
  1405. id=sl_svn7768_91
  1406. ><td class="source"> PMatrix2D src = (PMatrix2D) matrix;<br></td></tr
  1407. ><tr
  1408. id=sl_svn7768_92
  1409. ><td class="source"> set(src.m00, src.m01, src.m02,<br></td></tr
  1410. ><tr
  1411. id=sl_svn7768_93
  1412. ><td class="source"> src.m10, src.m11, src.m12);<br></td></tr
  1413. ><tr
  1414. id=sl_svn7768_94
  1415. ><td class="source"> } else {<br></td></tr
  1416. ><tr
  1417. id=sl_svn7768_95
  1418. ><td class="source"> throw new IllegalArgumentException(&quot;PMatrix2D.set() only accepts PMatrix2D objects.&quot;);<br></td></tr
  1419. ><tr
  1420. id=sl_svn7768_96
  1421. ><td class="source"> }<br></td></tr
  1422. ><tr
  1423. id=sl_svn7768_97
  1424. ><td class="source"> }<br></td></tr
  1425. ><tr
  1426. id=sl_svn7768_98
  1427. ><td class="source"><br></td></tr
  1428. ><tr
  1429. id=sl_svn7768_99
  1430. ><td class="source"><br></td></tr
  1431. ><tr
  1432. id=sl_svn7768_100
  1433. ><td class="source"> public void set(PMatrix3D src) {<br></td></tr
  1434. ><tr
  1435. id=sl_svn7768_101
  1436. ><td class="source"> }<br></td></tr
  1437. ><tr
  1438. id=sl_svn7768_102
  1439. ><td class="source"><br></td></tr
  1440. ><tr
  1441. id=sl_svn7768_103
  1442. ><td class="source"><br></td></tr
  1443. ><tr
  1444. id=sl_svn7768_104
  1445. ><td class="source"> public void set(float[] source) {<br></td></tr
  1446. ><tr
  1447. id=sl_svn7768_105
  1448. ><td class="source"> m00 = source[0];<br></td></tr
  1449. ><tr
  1450. id=sl_svn7768_106
  1451. ><td class="source"> m01 = source[1];<br></td></tr
  1452. ><tr
  1453. id=sl_svn7768_107
  1454. ><td class="source"> m02 = source[2];<br></td></tr
  1455. ><tr
  1456. id=sl_svn7768_108
  1457. ><td class="source"><br></td></tr
  1458. ><tr
  1459. id=sl_svn7768_109
  1460. ><td class="source"> m10 = source[3];<br></td></tr
  1461. ><tr
  1462. id=sl_svn7768_110
  1463. ><td class="source"> m11 = source[4];<br></td></tr
  1464. ><tr
  1465. id=sl_svn7768_111
  1466. ><td class="source"> m12 = source[5];<br></td></tr
  1467. ><tr
  1468. id=sl_svn7768_112
  1469. ><td class="source"> }<br></td></tr
  1470. ><tr
  1471. id=sl_svn7768_113
  1472. ><td class="source"><br></td></tr
  1473. ><tr
  1474. id=sl_svn7768_114
  1475. ><td class="source"><br></td></tr
  1476. ><tr
  1477. id=sl_svn7768_115
  1478. ><td class="source"> public void set(float m00, float m01, float m02,<br></td></tr
  1479. ><tr
  1480. id=sl_svn7768_116
  1481. ><td class="source"> float m10, float m11, float m12) {<br></td></tr
  1482. ><tr
  1483. id=sl_svn7768_117
  1484. ><td class="source"> this.m00 = m00; this.m01 = m01; this.m02 = m02;<br></td></tr
  1485. ><tr
  1486. id=sl_svn7768_118
  1487. ><td class="source"> this.m10 = m10; this.m11 = m11; this.m12 = m12;<br></td></tr
  1488. ><tr
  1489. id=sl_svn7768_119
  1490. ><td class="source"> }<br></td></tr
  1491. ><tr
  1492. id=sl_svn7768_120
  1493. ><td class="source"><br></td></tr
  1494. ><tr
  1495. id=sl_svn7768_121
  1496. ><td class="source"><br></td></tr
  1497. ><tr
  1498. id=sl_svn7768_122
  1499. ><td class="source"> public void set(float m00, float m01, float m02, float m03,<br></td></tr
  1500. ><tr
  1501. id=sl_svn7768_123
  1502. ><td class="source"> float m10, float m11, float m12, float m13,<br></td></tr
  1503. ><tr
  1504. id=sl_svn7768_124
  1505. ><td class="source"> float m20, float m21, float m22, float m23,<br></td></tr
  1506. ><tr
  1507. id=sl_svn7768_125
  1508. ><td class="source"> float m30, float m31, float m32, float m33) {<br></td></tr
  1509. ><tr
  1510. id=sl_svn7768_126
  1511. ><td class="source"><br></td></tr
  1512. ><tr
  1513. id=sl_svn7768_127
  1514. ><td class="source"> }<br></td></tr
  1515. ><tr
  1516. id=sl_svn7768_128
  1517. ><td class="source"><br></td></tr
  1518. ><tr
  1519. id=sl_svn7768_129
  1520. ><td class="source"><br></td></tr
  1521. ><tr
  1522. id=sl_svn7768_130
  1523. ><td class="source"> public void translate(float tx, float ty) {<br></td></tr
  1524. ><tr
  1525. id=sl_svn7768_131
  1526. ><td class="source"> m02 = tx*m00 + ty*m01 + m02;<br></td></tr
  1527. ><tr
  1528. id=sl_svn7768_132
  1529. ><td class="source"> m12 = tx*m10 + ty*m11 + m12;<br></td></tr
  1530. ><tr
  1531. id=sl_svn7768_133
  1532. ><td class="source"> }<br></td></tr
  1533. ><tr
  1534. id=sl_svn7768_134
  1535. ><td class="source"><br></td></tr
  1536. ><tr
  1537. id=sl_svn7768_135
  1538. ><td class="source"><br></td></tr
  1539. ><tr
  1540. id=sl_svn7768_136
  1541. ><td class="source"> public void translate(float x, float y, float z) {<br></td></tr
  1542. ><tr
  1543. id=sl_svn7768_137
  1544. ><td class="source"> throw new IllegalArgumentException(&quot;Cannot use translate(x, y, z) on a PMatrix2D.&quot;);<br></td></tr
  1545. ><tr
  1546. id=sl_svn7768_138
  1547. ><td class="source"> }<br></td></tr
  1548. ><tr
  1549. id=sl_svn7768_139
  1550. ><td class="source"><br></td></tr
  1551. ><tr
  1552. id=sl_svn7768_140
  1553. ><td class="source"><br></td></tr
  1554. ><tr
  1555. id=sl_svn7768_141
  1556. ><td class="source"> // Implementation roughly based on AffineTransform.<br></td></tr
  1557. ><tr
  1558. id=sl_svn7768_142
  1559. ><td class="source"> public void rotate(float angle) {<br></td></tr
  1560. ><tr
  1561. id=sl_svn7768_143
  1562. ><td class="source"> float s = sin(angle);<br></td></tr
  1563. ><tr
  1564. id=sl_svn7768_144
  1565. ><td class="source"> float c = cos(angle);<br></td></tr
  1566. ><tr
  1567. id=sl_svn7768_145
  1568. ><td class="source"><br></td></tr
  1569. ><tr
  1570. id=sl_svn7768_146
  1571. ><td class="source"> float temp1 = m00;<br></td></tr
  1572. ><tr
  1573. id=sl_svn7768_147
  1574. ><td class="source"> float temp2 = m01;<br></td></tr
  1575. ><tr
  1576. id=sl_svn7768_148
  1577. ><td class="source"> m00 = c * temp1 + s * temp2;<br></td></tr
  1578. ><tr
  1579. id=sl_svn7768_149
  1580. ><td class="source"> m01 = -s * temp1 + c * temp2;<br></td></tr
  1581. ><tr
  1582. id=sl_svn7768_150
  1583. ><td class="source"> temp1 = m10;<br></td></tr
  1584. ><tr
  1585. id=sl_svn7768_151
  1586. ><td class="source"> temp2 = m11;<br></td></tr
  1587. ><tr
  1588. id=sl_svn7768_152
  1589. ><td class="source"> m10 = c * temp1 + s * temp2;<br></td></tr
  1590. ><tr
  1591. id=sl_svn7768_153
  1592. ><td class="source"> m11 = -s * temp1 + c * temp2;<br></td></tr
  1593. ><tr
  1594. id=sl_svn7768_154
  1595. ><td class="source"> }<br></td></tr
  1596. ><tr
  1597. id=sl_svn7768_155
  1598. ><td class="source"><br></td></tr
  1599. ><tr
  1600. id=sl_svn7768_156
  1601. ><td class="source"><br></td></tr
  1602. ><tr
  1603. id=sl_svn7768_157
  1604. ><td class="source"> public void rotateX(float angle) {<br></td></tr
  1605. ><tr
  1606. id=sl_svn7768_158
  1607. ><td class="source"> throw new IllegalArgumentException(&quot;Cannot use rotateX() on a PMatrix2D.&quot;);<br></td></tr
  1608. ><tr
  1609. id=sl_svn7768_159
  1610. ><td class="source"> }<br></td></tr
  1611. ><tr
  1612. id=sl_svn7768_160
  1613. ><td class="source"><br></td></tr
  1614. ><tr
  1615. id=sl_svn7768_161
  1616. ><td class="source"><br></td></tr
  1617. ><tr
  1618. id=sl_svn7768_162
  1619. ><td class="source"> public void rotateY(float angle) {<br></td></tr
  1620. ><tr
  1621. id=sl_svn7768_163
  1622. ><td class="source"> throw new IllegalArgumentException(&quot;Cannot use rotateY() on a PMatrix2D.&quot;);<br></td></tr
  1623. ><tr
  1624. id=sl_svn7768_164
  1625. ><td class="source"> }<br></td></tr
  1626. ><tr
  1627. id=sl_svn7768_165
  1628. ><td class="source"><br></td></tr
  1629. ><tr
  1630. id=sl_svn7768_166
  1631. ><td class="source"><br></td></tr
  1632. ><tr
  1633. id=sl_svn7768_167
  1634. ><td class="source"> public void rotateZ(float angle) {<br></td></tr
  1635. ><tr
  1636. id=sl_svn7768_168
  1637. ><td class="source"> rotate(angle);<br></td></tr
  1638. ><tr
  1639. id=sl_svn7768_169
  1640. ><td class="source"> }<br></td></tr
  1641. ><tr
  1642. id=sl_svn7768_170
  1643. ><td class="source"><br></td></tr
  1644. ><tr
  1645. id=sl_svn7768_171
  1646. ><td class="source"><br></td></tr
  1647. ><tr
  1648. id=sl_svn7768_172
  1649. ><td class="source"> public void rotate(float angle, float v0, float v1, float v2) {<br></td></tr
  1650. ><tr
  1651. id=sl_svn7768_173
  1652. ><td class="source"> throw new IllegalArgumentException(&quot;Cannot use this version of rotate() on a PMatrix2D.&quot;);<br></td></tr
  1653. ><tr
  1654. id=sl_svn7768_174
  1655. ><td class="source"> }<br></td></tr
  1656. ><tr
  1657. id=sl_svn7768_175
  1658. ><td class="source"><br></td></tr
  1659. ><tr
  1660. id=sl_svn7768_176
  1661. ><td class="source"><br></td></tr
  1662. ><tr
  1663. id=sl_svn7768_177
  1664. ><td class="source"> public void scale(float s) {<br></td></tr
  1665. ><tr
  1666. id=sl_svn7768_178
  1667. ><td class="source"> scale(s, s);<br></td></tr
  1668. ><tr
  1669. id=sl_svn7768_179
  1670. ><td class="source"> }<br></td></tr
  1671. ><tr
  1672. id=sl_svn7768_180
  1673. ><td class="source"><br></td></tr
  1674. ><tr
  1675. id=sl_svn7768_181
  1676. ><td class="source"><br></td></tr
  1677. ><tr
  1678. id=sl_svn7768_182
  1679. ><td class="source"> public void scale(float sx, float sy) {<br></td></tr
  1680. ><tr
  1681. id=sl_svn7768_183
  1682. ><td class="source"> m00 *= sx; m01 *= sy;<br></td></tr
  1683. ><tr
  1684. id=sl_svn7768_184
  1685. ><td class="source"> m10 *= sx; m11 *= sy;<br></td></tr
  1686. ><tr
  1687. id=sl_svn7768_185
  1688. ><td class="source"> }<br></td></tr
  1689. ><tr
  1690. id=sl_svn7768_186
  1691. ><td class="source"><br></td></tr
  1692. ><tr
  1693. id=sl_svn7768_187
  1694. ><td class="source"><br></td></tr
  1695. ><tr
  1696. id=sl_svn7768_188
  1697. ><td class="source"> public void scale(float x, float y, float z) {<br></td></tr
  1698. ><tr
  1699. id=sl_svn7768_189
  1700. ><td class="source"> throw new IllegalArgumentException(&quot;Cannot use this version of scale() on a PMatrix2D.&quot;);<br></td></tr
  1701. ><tr
  1702. id=sl_svn7768_190
  1703. ><td class="source"> }<br></td></tr
  1704. ><tr
  1705. id=sl_svn7768_191
  1706. ><td class="source"><br></td></tr
  1707. ><tr
  1708. id=sl_svn7768_192
  1709. ><td class="source"><br></td></tr
  1710. ><tr
  1711. id=sl_svn7768_193
  1712. ><td class="source"> public void shearX(float angle) {<br></td></tr
  1713. ><tr
  1714. id=sl_svn7768_194
  1715. ><td class="source"> apply(1, 0, 1, tan(angle), 0, 0);<br></td></tr
  1716. ><tr
  1717. id=sl_svn7768_195
  1718. ><td class="source"> }<br></td></tr
  1719. ><tr
  1720. id=sl_svn7768_196
  1721. ><td class="source"><br></td></tr
  1722. ><tr
  1723. id=sl_svn7768_197
  1724. ><td class="source"><br></td></tr
  1725. ><tr
  1726. id=sl_svn7768_198
  1727. ><td class="source"> public void shearY(float angle) {<br></td></tr
  1728. ><tr
  1729. id=sl_svn7768_199
  1730. ><td class="source"> apply(1, 0, 1, 0, tan(angle), 0);<br></td></tr
  1731. ><tr
  1732. id=sl_svn7768_200
  1733. ><td class="source"> }<br></td></tr
  1734. ><tr
  1735. id=sl_svn7768_201
  1736. ><td class="source"><br></td></tr
  1737. ><tr
  1738. id=sl_svn7768_202
  1739. ><td class="source"><br></td></tr
  1740. ><tr
  1741. id=sl_svn7768_203
  1742. ><td class="source"> public void apply(PMatrix source) {<br></td></tr
  1743. ><tr
  1744. id=sl_svn7768_204
  1745. ><td class="source"> if (source instanceof PMatrix2D) {<br></td></tr
  1746. ><tr
  1747. id=sl_svn7768_205
  1748. ><td class="source"> apply((PMatrix2D) source);<br></td></tr
  1749. ><tr
  1750. id=sl_svn7768_206
  1751. ><td class="source"> } else if (source instanceof PMatrix3D) {<br></td></tr
  1752. ><tr
  1753. id=sl_svn7768_207
  1754. ><td class="source"> apply((PMatrix3D) source);<br></td></tr
  1755. ><tr
  1756. id=sl_svn7768_208
  1757. ><td class="source"> }<br></td></tr
  1758. ><tr
  1759. id=sl_svn7768_209
  1760. ><td class="source"> }<br></td></tr
  1761. ><tr
  1762. id=sl_svn7768_210
  1763. ><td class="source"><br></td></tr
  1764. ><tr
  1765. id=sl_svn7768_211
  1766. ><td class="source"><br></td></tr
  1767. ><tr
  1768. id=sl_svn7768_212
  1769. ><td class="source"> public void apply(PMatrix2D source) {<br></td></tr
  1770. ><tr
  1771. id=sl_svn7768_213
  1772. ><td class="source"> apply(source.m00, source.m01, source.m02,<br></td></tr
  1773. ><tr
  1774. id=sl_svn7768_214
  1775. ><td class="source"> source.m10, source.m11, source.m12);<br></td></tr
  1776. ><tr
  1777. id=sl_svn7768_215
  1778. ><td class="source"> }<br></td></tr
  1779. ><tr
  1780. id=sl_svn7768_216
  1781. ><td class="source"><br></td></tr
  1782. ><tr
  1783. id=sl_svn7768_217
  1784. ><td class="source"><br></td></tr
  1785. ><tr
  1786. id=sl_svn7768_218
  1787. ><td class="source"> public void apply(PMatrix3D source) {<br></td></tr
  1788. ><tr
  1789. id=sl_svn7768_219
  1790. ><td class="source"> throw new IllegalArgumentException(&quot;Cannot use apply(PMatrix3D) on a PMatrix2D.&quot;);<br></td></tr
  1791. ><tr
  1792. id=sl_svn7768_220
  1793. ><td class="source"> }<br></td></tr
  1794. ><tr
  1795. id=sl_svn7768_221
  1796. ><td class="source"><br></td></tr
  1797. ><tr
  1798. id=sl_svn7768_222
  1799. ><td class="source"><br></td></tr
  1800. ><tr
  1801. id=sl_svn7768_223
  1802. ><td class="source"> public void apply(float n00, float n01, float n02,<br></td></tr
  1803. ><tr
  1804. id=sl_svn7768_224
  1805. ><td class="source"> float n10, float n11, float n12) {<br></td></tr
  1806. ><tr
  1807. id=sl_svn7768_225
  1808. ><td class="source"> float t0 = m00;<br></td></tr
  1809. ><tr
  1810. id=sl_svn7768_226
  1811. ><td class="source"> float t1 = m01;<br></td></tr
  1812. ><tr
  1813. id=sl_svn7768_227
  1814. ><td class="source"> m00 = n00 * t0 + n10 * t1;<br></td></tr
  1815. ><tr
  1816. id=sl_svn7768_228
  1817. ><td class="source"> m01 = n01 * t0 + n11 * t1;<br></td></tr
  1818. ><tr
  1819. id=sl_svn7768_229
  1820. ><td class="source"> m02 += n02 * t0 + n12 * t1;<br></td></tr
  1821. ><tr
  1822. id=sl_svn7768_230
  1823. ><td class="source"><br></td></tr
  1824. ><tr
  1825. id=sl_svn7768_231
  1826. ><td class="source"> t0 = m10;<br></td></tr
  1827. ><tr
  1828. id=sl_svn7768_232
  1829. ><td class="source"> t1 = m11;<br></td></tr
  1830. ><tr
  1831. id=sl_svn7768_233
  1832. ><td class="source"> m10 = n00 * t0 + n10 * t1;<br></td></tr
  1833. ><tr
  1834. id=sl_svn7768_234
  1835. ><td class="source"> m11 = n01 * t0 + n11 * t1;<br></td></tr
  1836. ><tr
  1837. id=sl_svn7768_235
  1838. ><td class="source"> m12 += n02 * t0 + n12 * t1;<br></td></tr
  1839. ><tr
  1840. id=sl_svn7768_236
  1841. ><td class="source"> }<br></td></tr
  1842. ><tr
  1843. id=sl_svn7768_237
  1844. ><td class="source"><br></td></tr
  1845. ><tr
  1846. id=sl_svn7768_238
  1847. ><td class="source"><br></td></tr
  1848. ><tr
  1849. id=sl_svn7768_239
  1850. ><td class="source"> public void apply(float n00, float n01, float n02, float n03,<br></td></tr
  1851. ><tr
  1852. id=sl_svn7768_240
  1853. ><td class="source"> float n10, float n11, float n12, float n13,<br></td></tr
  1854. ><tr
  1855. id=sl_svn7768_241
  1856. ><td class="source"> float n20, float n21, float n22, float n23,<br></td></tr
  1857. ><tr
  1858. id=sl_svn7768_242
  1859. ><td class="source"> float n30, float n31, float n32, float n33) {<br></td></tr
  1860. ><tr
  1861. id=sl_svn7768_243
  1862. ><td class="source"> throw new IllegalArgumentException(&quot;Cannot use this version of apply() on a PMatrix2D.&quot;);<br></td></tr
  1863. ><tr
  1864. id=sl_svn7768_244
  1865. ><td class="source"> }<br></td></tr
  1866. ><tr
  1867. id=sl_svn7768_245
  1868. ><td class="source"><br></td></tr
  1869. ><tr
  1870. id=sl_svn7768_246
  1871. ><td class="source"><br></td></tr
  1872. ><tr
  1873. id=sl_svn7768_247
  1874. ><td class="source"> /**<br></td></tr
  1875. ><tr
  1876. id=sl_svn7768_248
  1877. ><td class="source"> * Apply another matrix to the left of this one.<br></td></tr
  1878. ><tr
  1879. id=sl_svn7768_249
  1880. ><td class="source"> */<br></td></tr
  1881. ><tr
  1882. id=sl_svn7768_250
  1883. ><td class="source"> public void preApply(PMatrix2D left) {<br></td></tr
  1884. ><tr
  1885. id=sl_svn7768_251
  1886. ><td class="source"> preApply(left.m00, left.m01, left.m02,<br></td></tr
  1887. ><tr
  1888. id=sl_svn7768_252
  1889. ><td class="source"> left.m10, left.m11, left.m12);<br></td></tr
  1890. ><tr
  1891. id=sl_svn7768_253
  1892. ><td class="source"> }<br></td></tr
  1893. ><tr
  1894. id=sl_svn7768_254
  1895. ><td class="source"><br></td></tr
  1896. ><tr
  1897. id=sl_svn7768_255
  1898. ><td class="source"><br></td></tr
  1899. ><tr
  1900. id=sl_svn7768_256
  1901. ><td class="source"> public void preApply(PMatrix3D left) {<br></td></tr
  1902. ><tr
  1903. id=sl_svn7768_257
  1904. ><td class="source"> throw new IllegalArgumentException(&quot;Cannot use preApply(PMatrix3D) on a PMatrix2D.&quot;);<br></td></tr
  1905. ><tr
  1906. id=sl_svn7768_258
  1907. ><td class="source"> }<br></td></tr
  1908. ><tr
  1909. id=sl_svn7768_259
  1910. ><td class="source"><br></td></tr
  1911. ><tr
  1912. id=sl_svn7768_260
  1913. ><td class="source"><br></td></tr
  1914. ><tr
  1915. id=sl_svn7768_261
  1916. ><td class="source"> public void preApply(float n00, float n01, float n02,<br></td></tr
  1917. ><tr
  1918. id=sl_svn7768_262
  1919. ><td class="source"> float n10, float n11, float n12) {<br></td></tr
  1920. ><tr
  1921. id=sl_svn7768_263
  1922. ><td class="source"> float t0 = m02;<br></td></tr
  1923. ><tr
  1924. id=sl_svn7768_264
  1925. ><td class="source"> float t1 = m12;<br></td></tr
  1926. ><tr
  1927. id=sl_svn7768_265
  1928. ><td class="source"> n02 += t0 * n00 + t1 * n01;<br></td></tr
  1929. ><tr
  1930. id=sl_svn7768_266
  1931. ><td class="source"> n12 += t0 * n10 + t1 * n11;<br></td></tr
  1932. ><tr
  1933. id=sl_svn7768_267
  1934. ><td class="source"><br></td></tr
  1935. ><tr
  1936. id=sl_svn7768_268
  1937. ><td class="source"> m02 = n02;<br></td></tr
  1938. ><tr
  1939. id=sl_svn7768_269
  1940. ><td class="source"> m12 = n12;<br></td></tr
  1941. ><tr
  1942. id=sl_svn7768_270
  1943. ><td class="source"><br></td></tr
  1944. ><tr
  1945. id=sl_svn7768_271
  1946. ><td class="source"> t0 = m00;<br></td></tr
  1947. ><tr
  1948. id=sl_svn7768_272
  1949. ><td class="source"> t1 = m10;<br></td></tr
  1950. ><tr
  1951. id=sl_svn7768_273
  1952. ><td class="source"> m00 = t0 * n00 + t1 * n01;<br></td></tr
  1953. ><tr
  1954. id=sl_svn7768_274
  1955. ><td class="source"> m10 = t0 * n10 + t1 * n11;<br></td></tr
  1956. ><tr
  1957. id=sl_svn7768_275
  1958. ><td class="source"><br></td></tr
  1959. ><tr
  1960. id=sl_svn7768_276
  1961. ><td class="source"> t0 = m01;<br></td></tr
  1962. ><tr
  1963. id=sl_svn7768_277
  1964. ><td class="source"> t1 = m11;<br></td></tr
  1965. ><tr
  1966. id=sl_svn7768_278
  1967. ><td class="source"> m01 = t0 * n00 + t1 * n01;<br></td></tr
  1968. ><tr
  1969. id=sl_svn7768_279
  1970. ><td class="source"> m11 = t0 * n10 + t1 * n11;<br></td></tr
  1971. ><tr
  1972. id=sl_svn7768_280
  1973. ><td class="source"> }<br></td></tr
  1974. ><tr
  1975. id=sl_svn7768_281
  1976. ><td class="source"><br></td></tr
  1977. ><tr
  1978. id=sl_svn7768_282
  1979. ><td class="source"><br></td></tr
  1980. ><tr
  1981. id=sl_svn7768_283
  1982. ><td class="source"> public void preApply(float n00, float n01, float n02, float n03,<br></td></tr
  1983. ><tr
  1984. id=sl_svn7768_284
  1985. ><td class="source"> float n10, float n11, float n12, float n13,<br></td></tr
  1986. ><tr
  1987. id=sl_svn7768_285
  1988. ><td class="source"> float n20, float n21, float n22, float n23,<br></td></tr
  1989. ><tr
  1990. id=sl_svn7768_286
  1991. ><td class="source"> float n30, float n31, float n32, float n33) {<br></td></tr
  1992. ><tr
  1993. id=sl_svn7768_287
  1994. ><td class="source"> throw new IllegalArgumentException(&quot;Cannot use this version of preApply() on a PMatrix2D.&quot;);<br></td></tr
  1995. ><tr
  1996. id=sl_svn7768_288
  1997. ><td class="source"> }<br></td></tr
  1998. ><tr
  1999. id=sl_svn7768_289
  2000. ><td class="source"><br></td></tr
  2001. ><tr
  2002. id=sl_svn7768_290
  2003. ><td class="source"><br></td></tr
  2004. ><tr
  2005. id=sl_svn7768_291
  2006. ><td class="source"> //////////////////////////////////////////////////////////////<br></td></tr
  2007. ><tr
  2008. id=sl_svn7768_292
  2009. ><td class="source"><br></td></tr
  2010. ><tr
  2011. id=sl_svn7768_293
  2012. ><td class="source"><br></td></tr
  2013. ><tr
  2014. id=sl_svn7768_294
  2015. ><td class="source"> /**<br></td></tr
  2016. ><tr
  2017. id=sl_svn7768_295
  2018. ><td class="source"> * Multiply the x and y coordinates of a PVector against this matrix.<br></td></tr
  2019. ><tr
  2020. id=sl_svn7768_296
  2021. ><td class="source"> */<br></td></tr
  2022. ><tr
  2023. id=sl_svn7768_297
  2024. ><td class="source"> public PVector mult(PVector source, PVector target) {<br></td></tr
  2025. ><tr
  2026. id=sl_svn7768_298
  2027. ><td class="source"> if (target == null) {<br></td></tr
  2028. ><tr
  2029. id=sl_svn7768_299
  2030. ><td class="source"> target = new PVector();<br></td></tr
  2031. ><tr
  2032. id=sl_svn7768_300
  2033. ><td class="source"> }<br></td></tr
  2034. ><tr
  2035. id=sl_svn7768_301
  2036. ><td class="source"> target.x = m00*source.x + m01*source.y + m02;<br></td></tr
  2037. ><tr
  2038. id=sl_svn7768_302
  2039. ><td class="source"> target.y = m10*source.x + m11*source.y + m12;<br></td></tr
  2040. ><tr
  2041. id=sl_svn7768_303
  2042. ><td class="source"> return target;<br></td></tr
  2043. ><tr
  2044. id=sl_svn7768_304
  2045. ><td class="source"> }<br></td></tr
  2046. ><tr
  2047. id=sl_svn7768_305
  2048. ><td class="source"><br></td></tr
  2049. ><tr
  2050. id=sl_svn7768_306
  2051. ><td class="source"><br></td></tr
  2052. ><tr
  2053. id=sl_svn7768_307
  2054. ><td class="source"> /**<br></td></tr
  2055. ><tr
  2056. id=sl_svn7768_308
  2057. ><td class="source"> * Multiply a two element vector against this matrix.<br></td></tr
  2058. ><tr
  2059. id=sl_svn7768_309
  2060. ><td class="source"> * If out is null or not length four, a new float array will be returned.<br></td></tr
  2061. ><tr
  2062. id=sl_svn7768_310
  2063. ><td class="source"> * The values for vec and out can be the same (though that&#39;s less efficient).<br></td></tr
  2064. ><tr
  2065. id=sl_svn7768_311
  2066. ><td class="source"> */<br></td></tr
  2067. ><tr
  2068. id=sl_svn7768_312
  2069. ><td class="source"> public float[] mult(float vec[], float out[]) {<br></td></tr
  2070. ><tr
  2071. id=sl_svn7768_313
  2072. ><td class="source"> if (out == null || out.length != 2) {<br></td></tr
  2073. ><tr
  2074. id=sl_svn7768_314
  2075. ><td class="source"> out = new float[2];<br></td></tr
  2076. ><tr
  2077. id=sl_svn7768_315
  2078. ><td class="source"> }<br></td></tr
  2079. ><tr
  2080. id=sl_svn7768_316
  2081. ><td class="source"><br></td></tr
  2082. ><tr
  2083. id=sl_svn7768_317
  2084. ><td class="source"> if (vec == out) {<br></td></tr
  2085. ><tr
  2086. id=sl_svn7768_318
  2087. ><td class="source"> float tx = m00*vec[0] + m01*vec[1] + m02;<br></td></tr
  2088. ><tr
  2089. id=sl_svn7768_319
  2090. ><td class="source"> float ty = m10*vec[0] + m11*vec[1] + m12;<br></td></tr
  2091. ><tr
  2092. id=sl_svn7768_320
  2093. ><td class="source"><br></td></tr
  2094. ><tr
  2095. id=sl_svn7768_321
  2096. ><td class="source"> out[0] = tx;<br></td></tr
  2097. ><tr
  2098. id=sl_svn7768_322
  2099. ><td class="source"> out[1] = ty;<br></td></tr
  2100. ><tr
  2101. id=sl_svn7768_323
  2102. ><td class="source"><br></td></tr
  2103. ><tr
  2104. id=sl_svn7768_324
  2105. ><td class="source"> } else {<br></td></tr
  2106. ><tr
  2107. id=sl_svn7768_325
  2108. ><td class="source"> out[0] = m00*vec[0] + m01*vec[1] + m02;<br></td></tr
  2109. ><tr
  2110. id=sl_svn7768_326
  2111. ><td class="source"> out[1] = m10*vec[0] + m11*vec[1] + m12;<br></td></tr
  2112. ><tr
  2113. id=sl_svn7768_327
  2114. ><td class="source"> }<br></td></tr
  2115. ><tr
  2116. id=sl_svn7768_328
  2117. ><td class="source"><br></td></tr
  2118. ><tr
  2119. id=sl_svn7768_329
  2120. ><td class="source"> return out;<br></td></tr
  2121. ><tr
  2122. id=sl_svn7768_330
  2123. ><td class="source"> }<br></td></tr
  2124. ><tr
  2125. id=sl_svn7768_331
  2126. ><td class="source"><br></td></tr
  2127. ><tr
  2128. id=sl_svn7768_332
  2129. ><td class="source"><br></td></tr
  2130. ><tr
  2131. id=sl_svn7768_333
  2132. ><td class="source"> public float multX(float x, float y) {<br></td></tr
  2133. ><tr
  2134. id=sl_svn7768_334
  2135. ><td class="source"> return m00*x + m01*y + m02;<br></td></tr
  2136. ><tr
  2137. id=sl_svn7768_335
  2138. ><td class="source"> }<br></td></tr
  2139. ><tr
  2140. id=sl_svn7768_336
  2141. ><td class="source"><br></td></tr
  2142. ><tr
  2143. id=sl_svn7768_337
  2144. ><td class="source"><br></td></tr
  2145. ><tr
  2146. id=sl_svn7768_338
  2147. ><td class="source"> public float multY(float x, float y) {<br></td></tr
  2148. ><tr
  2149. id=sl_svn7768_339
  2150. ><td class="source"> return m10*x + m11*y + m12;<br></td></tr
  2151. ><tr
  2152. id=sl_svn7768_340
  2153. ><td class="source"> }<br></td></tr
  2154. ><tr
  2155. id=sl_svn7768_341
  2156. ><td class="source"><br></td></tr
  2157. ><tr
  2158. id=sl_svn7768_342
  2159. ><td class="source"><br></td></tr
  2160. ><tr
  2161. id=sl_svn7768_343
  2162. ><td class="source"> /**<br></td></tr
  2163. ><tr
  2164. id=sl_svn7768_344
  2165. ><td class="source"> * Transpose this matrix.<br></td></tr
  2166. ><tr
  2167. id=sl_svn7768_345
  2168. ><td class="source"> */<br></td></tr
  2169. ><tr
  2170. id=sl_svn7768_346
  2171. ><td class="source"> public void transpose() {<br></td></tr
  2172. ><tr
  2173. id=sl_svn7768_347
  2174. ><td class="source"> }<br></td></tr
  2175. ><tr
  2176. id=sl_svn7768_348
  2177. ><td class="source"><br></td></tr
  2178. ><tr
  2179. id=sl_svn7768_349
  2180. ><td class="source"><br></td></tr
  2181. ><tr
  2182. id=sl_svn7768_350
  2183. ><td class="source"> /**<br></td></tr
  2184. ><tr
  2185. id=sl_svn7768_351
  2186. ><td class="source"> * Invert this matrix. Implementation stolen from OpenJDK.<br></td></tr
  2187. ><tr
  2188. id=sl_svn7768_352
  2189. ><td class="source"> * @return true if successful<br></td></tr
  2190. ><tr
  2191. id=sl_svn7768_353
  2192. ><td class="source"> */<br></td></tr
  2193. ><tr
  2194. id=sl_svn7768_354
  2195. ><td class="source"> public boolean invert() {<br></td></tr
  2196. ><tr
  2197. id=sl_svn7768_355
  2198. ><td class="source"> float determinant = determinant();<br></td></tr
  2199. ><tr
  2200. id=sl_svn7768_356
  2201. ><td class="source"> if (Math.abs(determinant) &lt;= Float.MIN_VALUE) {<br></td></tr
  2202. ><tr
  2203. id=sl_svn7768_357
  2204. ><td class="source"> return false;<br></td></tr
  2205. ><tr
  2206. id=sl_svn7768_358
  2207. ><td class="source"> }<br></td></tr
  2208. ><tr
  2209. id=sl_svn7768_359
  2210. ><td class="source"><br></td></tr
  2211. ><tr
  2212. id=sl_svn7768_360
  2213. ><td class="source"> float t00 = m00;<br></td></tr
  2214. ><tr
  2215. id=sl_svn7768_361
  2216. ><td class="source"> float t01 = m01;<br></td></tr
  2217. ><tr
  2218. id=sl_svn7768_362
  2219. ><td class="source"> float t02 = m02;<br></td></tr
  2220. ><tr
  2221. id=sl_svn7768_363
  2222. ><td class="source"> float t10 = m10;<br></td></tr
  2223. ><tr
  2224. id=sl_svn7768_364
  2225. ><td class="source"> float t11 = m11;<br></td></tr
  2226. ><tr
  2227. id=sl_svn7768_365
  2228. ><td class="source"> float t12 = m12;<br></td></tr
  2229. ><tr
  2230. id=sl_svn7768_366
  2231. ><td class="source"><br></td></tr
  2232. ><tr
  2233. id=sl_svn7768_367
  2234. ><td class="source"> m00 = t11 / determinant;<br></td></tr
  2235. ><tr
  2236. id=sl_svn7768_368
  2237. ><td class="source"> m10 = -t10 / determinant;<br></td></tr
  2238. ><tr
  2239. id=sl_svn7768_369
  2240. ><td class="source"> m01 = -t01 / determinant;<br></td></tr
  2241. ><tr
  2242. id=sl_svn7768_370
  2243. ><td class="source"> m11 = t00 / determinant;<br></td></tr
  2244. ><tr
  2245. id=sl_svn7768_371
  2246. ><td class="source"> m02 = (t01 * t12 - t11 * t02) / determinant;<br></td></tr
  2247. ><tr
  2248. id=sl_svn7768_372
  2249. ><td class="source"> m12 = (t10 * t02 - t00 * t12) / determinant;<br></td></tr
  2250. ><tr
  2251. id=sl_svn7768_373
  2252. ><td class="source"><br></td></tr
  2253. ><tr
  2254. id=sl_svn7768_374
  2255. ><td class="source"> return true;<br></td></tr
  2256. ><tr
  2257. id=sl_svn7768_375
  2258. ><td class="source"> }<br></td></tr
  2259. ><tr
  2260. id=sl_svn7768_376
  2261. ><td class="source"><br></td></tr
  2262. ><tr
  2263. id=sl_svn7768_377
  2264. ><td class="source"><br></td></tr
  2265. ><tr
  2266. id=sl_svn7768_378
  2267. ><td class="source"> /**<br></td></tr
  2268. ><tr
  2269. id=sl_svn7768_379
  2270. ><td class="source"> * @return the determinant of the matrix<br></td></tr
  2271. ><tr
  2272. id=sl_svn7768_380
  2273. ><td class="source"> */<br></td></tr
  2274. ><tr
  2275. id=sl_svn7768_381
  2276. ><td class="source"> public float determinant() {<br></td></tr
  2277. ><tr
  2278. id=sl_svn7768_382
  2279. ><td class="source"> return m00 * m11 - m01 * m10;<br></td></tr
  2280. ><tr
  2281. id=sl_svn7768_383
  2282. ><td class="source"> }<br></td></tr
  2283. ><tr
  2284. id=sl_svn7768_384
  2285. ><td class="source"><br></td></tr
  2286. ><tr
  2287. id=sl_svn7768_385
  2288. ><td class="source"><br></td></tr
  2289. ><tr
  2290. id=sl_svn7768_386
  2291. ><td class="source"> //////////////////////////////////////////////////////////////<br></td></tr
  2292. ><tr
  2293. id=sl_svn7768_387
  2294. ><td class="source"><br></td></tr
  2295. ><tr
  2296. id=sl_svn7768_388
  2297. ><td class="source"><br></td></tr
  2298. ><tr
  2299. id=sl_svn7768_389
  2300. ><td class="source"> public void print() {<br></td></tr
  2301. ><tr
  2302. id=sl_svn7768_390
  2303. ><td class="source"> int big = (int) abs(max(PApplet.max(abs(m00), abs(m01), abs(m02)),<br></td></tr
  2304. ><tr
  2305. id=sl_svn7768_391
  2306. ><td class="source"> PApplet.max(abs(m10), abs(m11), abs(m12))));<br></td></tr
  2307. ><tr
  2308. id=sl_svn7768_392
  2309. ><td class="source"><br></td></tr
  2310. ><tr
  2311. id=sl_svn7768_393
  2312. ><td class="source"> int digits = 1;<br></td></tr
  2313. ><tr
  2314. id=sl_svn7768_394
  2315. ><td class="source"> if (Float.isNaN(big) || Float.isInfinite(big)) { // avoid infinite loop<br></td></tr
  2316. ><tr
  2317. id=sl_svn7768_395
  2318. ><td class="source"> digits = 5;<br></td></tr
  2319. ><tr
  2320. id=sl_svn7768_396
  2321. ><td class="source"> } else {<br></td></tr
  2322. ><tr
  2323. id=sl_svn7768_397
  2324. ><td class="source"> while ((big /= 10) != 0) digits++; // cheap log()<br></td></tr
  2325. ><tr
  2326. id=sl_svn7768_398
  2327. ><td class="source"> }<br></td></tr
  2328. ><tr
  2329. id=sl_svn7768_399
  2330. ><td class="source"><br></td></tr
  2331. ><tr
  2332. id=sl_svn7768_400
  2333. ><td class="source"> System.out.println(PApplet.nfs(m00, digits, 4) + &quot; &quot; +<br></td></tr
  2334. ><tr
  2335. id=sl_svn7768_401
  2336. ><td class="source"> PApplet.nfs(m01, digits, 4) + &quot; &quot; +<br></td></tr
  2337. ><tr
  2338. id=sl_svn7768_402
  2339. ><td class="source"> PApplet.nfs(m02, digits, 4));<br></td></tr
  2340. ><tr
  2341. id=sl_svn7768_403
  2342. ><td class="source"><br></td></tr
  2343. ><tr
  2344. id=sl_svn7768_404
  2345. ><td class="source"> System.out.println(PApplet.nfs(m10, digits, 4) + &quot; &quot; +<br></td></tr
  2346. ><tr
  2347. id=sl_svn7768_405
  2348. ><td class="source"> PApplet.nfs(m11, digits, 4) + &quot; &quot; +<br></td></tr
  2349. ><tr
  2350. id=sl_svn7768_406
  2351. ><td class="source"> PApplet.nfs(m12, digits, 4));<br></td></tr
  2352. ><tr
  2353. id=sl_svn7768_407
  2354. ><td class="source"><br></td></tr
  2355. ><tr
  2356. id=sl_svn7768_408
  2357. ><td class="source"> System.out.println();<br></td></tr
  2358. ><tr
  2359. id=sl_svn7768_409
  2360. ><td class="source"> }<br></td></tr
  2361. ><tr
  2362. id=sl_svn7768_410
  2363. ><td class="source"><br></td></tr
  2364. ><tr
  2365. id=sl_svn7768_411
  2366. ><td class="source"><br></td></tr
  2367. ><tr
  2368. id=sl_svn7768_412
  2369. ><td class="source"> //////////////////////////////////////////////////////////////<br></td></tr
  2370. ><tr
  2371. id=sl_svn7768_413
  2372. ><td class="source"><br></td></tr
  2373. ><tr
  2374. id=sl_svn7768_414
  2375. ><td class="source"> // TODO these need to be added as regular API, but the naming and <br></td></tr
  2376. ><tr
  2377. id=sl_svn7768_415
  2378. ><td class="source"> // implementation needs to be improved first. (e.g. actually keeping track<br></td></tr
  2379. ><tr
  2380. id=sl_svn7768_416
  2381. ><td class="source"> // of whether the matrix is in fact identity internally.)<br></td></tr
  2382. ><tr
  2383. id=sl_svn7768_417
  2384. ><td class="source"><br></td></tr
  2385. ><tr
  2386. id=sl_svn7768_418
  2387. ><td class="source"> <br></td></tr
  2388. ><tr
  2389. id=sl_svn7768_419
  2390. ><td class="source"> protected boolean isIdentity() {<br></td></tr
  2391. ><tr
  2392. id=sl_svn7768_420
  2393. ><td class="source"> return ((m00 == 1) &amp;&amp; (m01 == 0) &amp;&amp; (m02 == 0) &amp;&amp;<br></td></tr
  2394. ><tr
  2395. id=sl_svn7768_421
  2396. ><td class="source"> (m10 == 0) &amp;&amp; (m11 == 1) &amp;&amp; (m12 == 0));<br></td></tr
  2397. ><tr
  2398. id=sl_svn7768_422
  2399. ><td class="source"> }<br></td></tr
  2400. ><tr
  2401. id=sl_svn7768_423
  2402. ><td class="source"><br></td></tr
  2403. ><tr
  2404. id=sl_svn7768_424
  2405. ><td class="source"><br></td></tr
  2406. ><tr
  2407. id=sl_svn7768_425
  2408. ><td class="source"> // TODO make this more efficient, or move into PMatrix2D<br></td></tr
  2409. ><tr
  2410. id=sl_svn7768_426
  2411. ><td class="source"> protected boolean isWarped() {<br></td></tr
  2412. ><tr
  2413. id=sl_svn7768_427
  2414. ><td class="source"> return ((m00 != 1) || (m01 != 0) &amp;&amp; <br></td></tr
  2415. ><tr
  2416. id=sl_svn7768_428
  2417. ><td class="source"> (m10 != 0) || (m11 != 1));<br></td></tr
  2418. ><tr
  2419. id=sl_svn7768_429
  2420. ><td class="source"> }<br></td></tr
  2421. ><tr
  2422. id=sl_svn7768_430
  2423. ><td class="source"><br></td></tr
  2424. ><tr
  2425. id=sl_svn7768_431
  2426. ><td class="source"><br></td></tr
  2427. ><tr
  2428. id=sl_svn7768_432
  2429. ><td class="source"> //////////////////////////////////////////////////////////////<br></td></tr
  2430. ><tr
  2431. id=sl_svn7768_433
  2432. ><td class="source"><br></td></tr
  2433. ><tr
  2434. id=sl_svn7768_434
  2435. ><td class="source"> <br></td></tr
  2436. ><tr
  2437. id=sl_svn7768_435
  2438. ><td class="source"> private final float max(float a, float b) {<br></td></tr
  2439. ><tr
  2440. id=sl_svn7768_436
  2441. ><td class="source"> return (a &gt; b) ? a : b;<br></td></tr
  2442. ><tr
  2443. id=sl_svn7768_437
  2444. ><td class="source"> }<br></td></tr
  2445. ><tr
  2446. id=sl_svn7768_438
  2447. ><td class="source"><br></td></tr
  2448. ><tr
  2449. id=sl_svn7768_439
  2450. ><td class="source"> private final float abs(float a) {<br></td></tr
  2451. ><tr
  2452. id=sl_svn7768_440
  2453. ><td class="source"> return (a &lt; 0) ? -a : a;<br></td></tr
  2454. ><tr
  2455. id=sl_svn7768_441
  2456. ><td class="source"> }<br></td></tr
  2457. ><tr
  2458. id=sl_svn7768_442
  2459. ><td class="source"><br></td></tr
  2460. ><tr
  2461. id=sl_svn7768_443
  2462. ><td class="source"> private final float sin(float angle) {<br></td></tr
  2463. ><tr
  2464. id=sl_svn7768_444
  2465. ><td class="source"> return (float)Math.sin(angle);<br></td></tr
  2466. ><tr
  2467. id=sl_svn7768_445
  2468. ><td class="source"> }<br></td></tr
  2469. ><tr
  2470. id=sl_svn7768_446
  2471. ><td class="source"><br></td></tr
  2472. ><tr
  2473. id=sl_svn7768_447
  2474. ><td class="source"> private final float cos(float angle) {<br></td></tr
  2475. ><tr
  2476. id=sl_svn7768_448
  2477. ><td class="source"> return (float)Math.cos(angle);<br></td></tr
  2478. ><tr
  2479. id=sl_svn7768_449
  2480. ><td class="source"> }<br></td></tr
  2481. ><tr
  2482. id=sl_svn7768_450
  2483. ><td class="source"><br></td></tr
  2484. ><tr
  2485. id=sl_svn7768_451
  2486. ><td class="source"> private final float tan(float angle) {<br></td></tr
  2487. ><tr
  2488. id=sl_svn7768_452
  2489. ><td class="source"> return (float)Math.tan(angle);<br></td></tr
  2490. ><tr
  2491. id=sl_svn7768_453
  2492. ><td class="source"> }<br></td></tr
  2493. ><tr
  2494. id=sl_svn7768_454
  2495. ><td class="source">}<br></td></tr
  2496. ></table></pre>
  2497. <pre class="prettyprint"><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
  2498. </td>
  2499. </tr></table>
  2500. <script type="text/javascript">
  2501. var lineNumUnderMouse = -1;
  2502. function gutterOver(num) {
  2503. gutterOut();
  2504. var newTR = document.getElementById('gr_svn7768_' + num);
  2505. if (newTR) {
  2506. newTR.className = 'undermouse';
  2507. }
  2508. lineNumUnderMouse = num;
  2509. }
  2510. function gutterOut() {
  2511. if (lineNumUnderMouse != -1) {
  2512. var oldTR = document.getElementById(
  2513. 'gr_svn7768_' + lineNumUnderMouse);
  2514. if (oldTR) {
  2515. oldTR.className = '';
  2516. }
  2517. lineNumUnderMouse = -1;
  2518. }
  2519. }
  2520. var numsGenState = {table_base_id: 'nums_table_'};
  2521. var srcGenState = {table_base_id: 'src_table_'};
  2522. var alignerRunning = false;
  2523. var startOver = false;
  2524. function setLineNumberHeights() {
  2525. if (alignerRunning) {
  2526. startOver = true;
  2527. return;
  2528. }
  2529. numsGenState.chunk_id = 0;
  2530. numsGenState.table = document.getElementById('nums_table_0');
  2531. numsGenState.row_num = 0;
  2532. srcGenState.chunk_id = 0;
  2533. srcGenState.table = document.getElementById('src_table_0');
  2534. srcGenState.row_num = 0;
  2535. alignerRunning = true;
  2536. continueToSetLineNumberHeights();
  2537. }
  2538. function rowGenerator(genState) {
  2539. if (genState.row_num < genState.table.rows.length) {
  2540. var currentRow = genState.table.rows[genState.row_num];
  2541. genState.row_num++;
  2542. return currentRow;
  2543. }
  2544. var newTable = document.getElementById(
  2545. genState.table_base_id + (genState.chunk_id + 1));
  2546. if (newTable) {
  2547. genState.chunk_id++;
  2548. genState.row_num = 0;
  2549. genState.table = newTable;
  2550. return genState.table.rows[0];
  2551. }
  2552. return null;
  2553. }
  2554. var MAX_ROWS_PER_PASS = 1000;
  2555. function continueToSetLineNumberHeights() {
  2556. var rowsInThisPass = 0;
  2557. var numRow = 1;
  2558. var srcRow = 1;
  2559. while (numRow && srcRow && rowsInThisPass < MAX_ROWS_PER_PASS) {
  2560. numRow = rowGenerator(numsGenState);
  2561. srcRow = rowGenerator(srcGenState);
  2562. rowsInThisPass++;
  2563. if (numRow && srcRow) {
  2564. if (numRow.offsetHeight != srcRow.offsetHeight) {
  2565. numRow.firstChild.style.height = srcRow.offsetHeight + 'px';
  2566. }
  2567. }
  2568. }
  2569. if (rowsInThisPass >= MAX_ROWS_PER_PASS) {
  2570. setTimeout(continueToSetLineNumberHeights, 10);
  2571. } else {
  2572. alignerRunning = false;
  2573. if (startOver) {
  2574. startOver = false;
  2575. setTimeout(setLineNumberHeights, 500);
  2576. }
  2577. }
  2578. }
  2579. // Do 2 complete passes, because there can be races
  2580. // between this code and prettify.
  2581. startOver = true;
  2582. setTimeout(setLineNumberHeights, 250);
  2583. window.onresize = setLineNumberHeights;
  2584. </script>
  2585. <div id="log">
  2586. <div style="text-align:right">
  2587. <a class="ifCollapse" href="#" onclick="_toggleMeta('', 'p', 'processing', this)">Show details</a>
  2588. <a class="ifExpand" href="#" onclick="_toggleMeta('', 'p', 'processing', this)">Hide details</a>
  2589. </div>
  2590. <div class="ifExpand">
  2591. <div class="pmeta_bubble_bg" style="border:1px solid white">
  2592. <div class="round4"></div>
  2593. <div class="round2"></div>
  2594. <div class="round1"></div>
  2595. <div class="box-inner">
  2596. <div id="changelog">
  2597. <p>Change log</p>
  2598. <div>
  2599. <a href="/p/processing/source/detail?spec=svn7768&r=7133">r7133</a>
  2600. by f...@processing.org
  2601. on Jul 18, 2010
  2602. &nbsp; <a href="/p/processing/source/diff?spec=svn7768&r=7133&amp;format=side&amp;path=/trunk/processing/core/src/processing/core/PMatrix2D.java&amp;old_path=/trunk/processing/core/src/processing/core/PMatrix2D.java&amp;old=6524">Diff</a>
  2603. </div>
  2604. <pre>change skewX/Y to shearX/Y</pre>
  2605. </div>
  2606. <script type="text/javascript">
  2607. var detail_url = '/p/processing/source/detail?r=7133&spec=svn7768';
  2608. var publish_url = '/p/processing/source/detail?r=7133&spec=svn7768#publish';
  2609. // describe the paths of this revision in javascript.
  2610. var changed_paths = [];
  2611. var changed_urls = [];
  2612. changed_paths.push('/trunk/processing/android/core/src/processing/core/PApplet.java');
  2613. changed_urls.push('/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PApplet.java?r\x3d7133\x26spec\x3dsvn7768');
  2614. changed_paths.push('/trunk/processing/android/core/src/processing/core/PGraphics.java');
  2615. changed_urls.push('/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PGraphics.java?r\x3d7133\x26spec\x3dsvn7768');
  2616. changed_paths.push('/trunk/processing/android/core/src/processing/core/PGraphicsAndroid2D.java');
  2617. changed_urls.push('/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PGraphicsAndroid2D.java?r\x3d7133\x26spec\x3dsvn7768');
  2618. changed_paths.push('/trunk/processing/android/core/src/processing/core/PGraphicsAndroid3D.java');
  2619. changed_urls.push('/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PGraphicsAndroid3D.java?r\x3d7133\x26spec\x3dsvn7768');
  2620. changed_paths.push('/trunk/processing/android/core/src/processing/core/PMatrix.java');
  2621. changed_urls.push('/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PMatrix.java?r\x3d7133\x26spec\x3dsvn7768');
  2622. changed_paths.push('/trunk/processing/android/core/src/processing/core/PMatrix2D.java');
  2623. changed_urls.push('/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PMatrix2D.java?r\x3d7133\x26spec\x3dsvn7768');
  2624. changed_paths.push('/trunk/processing/android/core/src/processing/core/PMatrix3D.java');
  2625. changed_urls.push('/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PMatrix3D.java?r\x3d7133\x26spec\x3dsvn7768');
  2626. changed_paths.push('/trunk/processing/android/todo.txt');
  2627. changed_urls.push('/p/processing/source/browse/trunk/processing/android/todo.txt?r\x3d7133\x26spec\x3dsvn7768');
  2628. changed_paths.push('/trunk/processing/core/src/processing/core/PApplet.java');
  2629. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PApplet.java?r\x3d7133\x26spec\x3dsvn7768');
  2630. changed_paths.push('/trunk/processing/core/src/processing/core/PGraphics.java');
  2631. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PGraphics.java?r\x3d7133\x26spec\x3dsvn7768');
  2632. changed_paths.push('/trunk/processing/core/src/processing/core/PGraphics3D.java');
  2633. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PGraphics3D.java?r\x3d7133\x26spec\x3dsvn7768');
  2634. changed_paths.push('/trunk/processing/core/src/processing/core/PMatrix.java');
  2635. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PMatrix.java?r\x3d7133\x26spec\x3dsvn7768');
  2636. changed_paths.push('/trunk/processing/core/src/processing/core/PMatrix2D.java');
  2637. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PMatrix2D.java?r\x3d7133\x26spec\x3dsvn7768');
  2638. var selected_path = '/trunk/processing/core/src/processing/core/PMatrix2D.java';
  2639. changed_paths.push('/trunk/processing/core/src/processing/core/PMatrix3D.java');
  2640. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PMatrix3D.java?r\x3d7133\x26spec\x3dsvn7768');
  2641. changed_paths.push('/trunk/processing/core/todo.txt');
  2642. changed_urls.push('/p/processing/source/browse/trunk/processing/core/todo.txt?r\x3d7133\x26spec\x3dsvn7768');
  2643. function getCurrentPageIndex() {
  2644. for (var i = 0; i < changed_paths.length; i++) {
  2645. if (selected_path == changed_paths[i]) {
  2646. return i;
  2647. }
  2648. }
  2649. }
  2650. function getNextPage() {
  2651. var i = getCurrentPageIndex();
  2652. if (i < changed_paths.length - 1) {
  2653. return changed_urls[i + 1];
  2654. }
  2655. return null;
  2656. }
  2657. function getPreviousPage() {
  2658. var i = getCurrentPageIndex();
  2659. if (i > 0) {
  2660. return changed_urls[i - 1];
  2661. }
  2662. return null;
  2663. }
  2664. function gotoNextPage() {
  2665. var page = getNextPage();
  2666. if (!page) {
  2667. page = detail_url;
  2668. }
  2669. window.location = page;
  2670. }
  2671. function gotoPreviousPage() {
  2672. var page = getPreviousPage();
  2673. if (!page) {
  2674. page = detail_url;
  2675. }
  2676. window.location = page;
  2677. }
  2678. function gotoDetailPage() {
  2679. window.location = detail_url;
  2680. }
  2681. function gotoPublishPage() {
  2682. window.location = publish_url;
  2683. }
  2684. </script>
  2685. <style type="text/css">
  2686. #review_nav {
  2687. border-top: 3px solid white;
  2688. padding-top: 6px;
  2689. margin-top: 1em;
  2690. }
  2691. #review_nav td {
  2692. vertical-align: middle;
  2693. }
  2694. #review_nav select {
  2695. margin: .5em 0;
  2696. }
  2697. </style>
  2698. <div id="review_nav">
  2699. <table><tr><td>Go to:&nbsp;</td><td>
  2700. <select name="files_in_rev" onchange="window.location=this.value">
  2701. <option value="/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PApplet.java?r=7133&amp;spec=svn7768"
  2702. >...src/processing/core/PApplet.java</option>
  2703. <option value="/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PGraphics.java?r=7133&amp;spec=svn7768"
  2704. >...c/processing/core/PGraphics.java</option>
  2705. <option value="/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PGraphicsAndroid2D.java?r=7133&amp;spec=svn7768"
  2706. >...ing/core/PGraphicsAndroid2D.java</option>
  2707. <option value="/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PGraphicsAndroid3D.java?r=7133&amp;spec=svn7768"
  2708. >...ing/core/PGraphicsAndroid3D.java</option>
  2709. <option value="/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PMatrix.java?r=7133&amp;spec=svn7768"
  2710. >...src/processing/core/PMatrix.java</option>
  2711. <option value="/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PMatrix2D.java?r=7133&amp;spec=svn7768"
  2712. >...c/processing/core/PMatrix2D.java</option>
  2713. <option value="/p/processing/source/browse/trunk/processing/android/core/src/processing/core/PMatrix3D.java?r=7133&amp;spec=svn7768"
  2714. >...c/processing/core/PMatrix3D.java</option>
  2715. <option value="/p/processing/source/browse/trunk/processing/android/todo.txt?r=7133&amp;spec=svn7768"
  2716. >/trunk/processing/android/todo.txt</option>
  2717. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PApplet.java?r=7133&amp;spec=svn7768"
  2718. >...src/processing/core/PApplet.java</option>
  2719. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PGraphics.java?r=7133&amp;spec=svn7768"
  2720. >...c/processing/core/PGraphics.java</option>
  2721. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PGraphics3D.java?r=7133&amp;spec=svn7768"
  2722. >...processing/core/PGraphics3D.java</option>
  2723. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PMatrix.java?r=7133&amp;spec=svn7768"
  2724. >...src/processing/core/PMatrix.java</option>
  2725. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PMatrix2D.java?r=7133&amp;spec=svn7768"
  2726. selected="selected"
  2727. >...c/processing/core/PMatrix2D.java</option>
  2728. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PMatrix3D.java?r=7133&amp;spec=svn7768"
  2729. >...c/processing/core/PMatrix3D.java</option>
  2730. <option value="/p/processing/source/browse/trunk/processing/core/todo.txt?r=7133&amp;spec=svn7768"
  2731. >/trunk/processing/core/todo.txt</option>
  2732. </select>
  2733. </td></tr></table>
  2734. </div>
  2735. </div>
  2736. <div class="round1"></div>
  2737. <div class="round2"></div>
  2738. <div class="round4"></div>
  2739. </div>
  2740. <div class="pmeta_bubble_bg" style="border:1px solid white">
  2741. <div class="round4"></div>
  2742. <div class="round2"></div>
  2743. <div class="round1"></div>
  2744. <div class="box-inner">
  2745. <div id="older_bubble">
  2746. <p>Older revisions</p>
  2747. <div class="closed" style="margin-bottom:3px;" >
  2748. <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
  2749. <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
  2750. <a href="/p/processing/source/detail?spec=svn7768&r=6524">r6524</a>
  2751. by fry
  2752. on Mar 23, 2010
  2753. &nbsp; <a href="/p/processing/source/diff?spec=svn7768&r=6524&amp;format=side&amp;path=/trunk/processing/core/src/processing/core/PMatrix2D.java&amp;old_path=/trunk/processing/core/src/processing/core/PMatrix2D.java&amp;old=5141">Diff</a>
  2754. <br>
  2755. <pre class="ifOpened">added skewX/Y (bug #1448) and fixed
  2756. bugs in its implementation
  2757. </pre>
  2758. </div>
  2759. <div class="closed" style="margin-bottom:3px;" >
  2760. <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
  2761. <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
  2762. <a href="/p/processing/source/detail?spec=svn7768&r=5141">r5141</a>
  2763. by fry
  2764. on Nov 18, 2008
  2765. &nbsp; <a href="/p/processing/source/diff?spec=svn7768&r=5141&amp;format=side&amp;path=/trunk/processing/core/src/processing/core/PMatrix2D.java&amp;old_path=/trunk/processing/core/src/processing/core/PMatrix2D.java&amp;old=4997">Diff</a>
  2766. <br>
  2767. <pre class="ifOpened">major work to bring back P2D... so far
  2768. rect() set up properly, now dealing
  2769. with begin/endShape issues
  2770. </pre>
  2771. </div>
  2772. <div class="closed" style="margin-bottom:3px;" >
  2773. <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
  2774. <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
  2775. <a href="/p/processing/source/detail?spec=svn7768&r=4997">r4997</a>
  2776. by fry
  2777. on Oct 21, 2008
  2778. &nbsp; <a href="/p/processing/source/diff?spec=svn7768&r=4997&amp;format=side&amp;path=/trunk/processing/core/src/processing/core/PMatrix2D.java&amp;old_path=/trunk/processing/core/src/processing/core/PMatrix2D.java&amp;old=4731">Diff</a>
  2779. <br>
  2780. <pre class="ifOpened">adding style attributes for svg, also
  2781. fix the spacing in the file
  2782. </pre>
  2783. </div>
  2784. <a href="/p/processing/source/list?path=/trunk/processing/core/src/processing/core/PMatrix2D.java&start=7133">All revisions of this file</a>
  2785. </div>
  2786. </div>
  2787. <div class="round1"></div>
  2788. <div class="round2"></div>
  2789. <div class="round4"></div>
  2790. </div>
  2791. <div class="pmeta_bubble_bg" style="border:1px solid white">
  2792. <div class="round4"></div>
  2793. <div class="round2"></div>
  2794. <div class="round1"></div>
  2795. <div class="box-inner">
  2796. <div id="fileinfo_bubble">
  2797. <p>File info</p>
  2798. <div>Size: 10804 bytes,
  2799. 454 lines</div>
  2800. <div><a href="http://processing.googlecode.com/svn/trunk/processing/core/src/processing/core/PMatrix2D.java">View raw file</a></div>
  2801. </div>
  2802. </div>
  2803. <div class="round1"></div>
  2804. <div class="round2"></div>
  2805. <div class="round4"></div>
  2806. </div>
  2807. </div>
  2808. </div>
  2809. </div>
  2810. </div>
  2811. </div>
  2812. <script src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/prettify/prettify.js"></script>
  2813. <script type="text/javascript">prettyPrint();</script>
  2814. <script src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/source_file_scripts.js"></script>
  2815. <script type="text/javascript" src="https://kibbles.googlecode.com/files/kibbles-1.3.3.comp.js"></script>
  2816. <script type="text/javascript">
  2817. var lastStop = null;
  2818. var initilized = false;
  2819. function updateCursor(next, prev) {
  2820. if (prev && prev.element) {
  2821. prev.element.className = 'cursor_stop cursor_hidden';
  2822. }
  2823. if (next && next.element) {
  2824. next.element.className = 'cursor_stop cursor';
  2825. lastStop = next.index;
  2826. }
  2827. }
  2828. function pubRevealed(data) {
  2829. updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
  2830. if (initilized) {
  2831. reloadCursors();
  2832. }
  2833. }
  2834. function draftRevealed(data) {
  2835. updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
  2836. if (initilized) {
  2837. reloadCursors();
  2838. }
  2839. }
  2840. function draftDestroyed(data) {
  2841. updateCursorForCell(data.cellId, 'nocursor');
  2842. if (initilized) {
  2843. reloadCursors();
  2844. }
  2845. }
  2846. function reloadCursors() {
  2847. kibbles.skipper.reset();
  2848. loadCursors();
  2849. if (lastStop != null) {
  2850. kibbles.skipper.setCurrentStop(lastStop);
  2851. }
  2852. }
  2853. // possibly the simplest way to insert any newly added comments
  2854. // is to update the class of the corresponding cursor row,
  2855. // then refresh the entire list of rows.
  2856. function updateCursorForCell(cellId, className) {
  2857. var cell = document.getElementById(cellId);
  2858. // we have to go two rows back to find the cursor location
  2859. var row = getPreviousElement(cell.parentNode);
  2860. row.className = className;
  2861. }
  2862. // returns the previous element, ignores text nodes.
  2863. function getPreviousElement(e) {
  2864. var element = e.previousSibling;
  2865. if (element.nodeType == 3) {
  2866. element = element.previousSibling;
  2867. }
  2868. if (element && element.tagName) {
  2869. return element;
  2870. }
  2871. }
  2872. function loadCursors() {
  2873. // register our elements with skipper
  2874. var elements = CR_getElements('*', 'cursor_stop');
  2875. var len = elements.length;
  2876. for (var i = 0; i < len; i++) {
  2877. var element = elements[i];
  2878. element.className = 'cursor_stop cursor_hidden';
  2879. kibbles.skipper.append(element);
  2880. }
  2881. }
  2882. function toggleComments() {
  2883. CR_toggleCommentDisplay();
  2884. reloadCursors();
  2885. }
  2886. function keysOnLoadHandler() {
  2887. // setup skipper
  2888. kibbles.skipper.addStopListener(
  2889. kibbles.skipper.LISTENER_TYPE.PRE, updateCursor);
  2890. // Set the 'offset' option to return the middle of the client area
  2891. // an option can be a static value, or a callback
  2892. kibbles.skipper.setOption('padding_top', 50);
  2893. // Set the 'offset' option to return the middle of the client area
  2894. // an option can be a static value, or a callback
  2895. kibbles.skipper.setOption('padding_bottom', 100);
  2896. // Register our keys
  2897. kibbles.skipper.addFwdKey("n");
  2898. kibbles.skipper.addRevKey("p");
  2899. kibbles.keys.addKeyPressListener(
  2900. 'u', function() { window.location = detail_url; });
  2901. kibbles.keys.addKeyPressListener(
  2902. 'r', function() { window.location = detail_url + '#publish'; });
  2903. kibbles.keys.addKeyPressListener('j', gotoNextPage);
  2904. kibbles.keys.addKeyPressListener('k', gotoPreviousPage);
  2905. }
  2906. </script>
  2907. <script src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/code_review_scripts.js"></script>
  2908. <script type="text/javascript">
  2909. // the comment form template
  2910. var form = '<div class="draft"><div class="header"><span class="title">Draft comment:</span></div>' +
  2911. '<div class="body"><form onsubmit="return false;"><textarea id="$ID">$BODY</textarea><br>$ACTIONS</form></div>' +
  2912. '</div>';
  2913. // the comment "plate" template used for both draft and published comment "plates".
  2914. var draft_comment = '<div class="draft" ondblclick="$ONDBLCLICK">' +
  2915. '<div class="header"><span class="title">Draft comment:</span><span class="actions">$ACTIONS</span></div>' +
  2916. '<pre id="$ID" class="body">$BODY</pre>' +
  2917. '</div>';
  2918. var published_comment = '<div class="published">' +
  2919. '<div class="header"><span class="title"><a href="$PROFILE_URL">$AUTHOR:</a></span><div>' +
  2920. '<pre id="$ID" class="body">$BODY</pre>' +
  2921. '</div>';
  2922. function showPublishInstructions() {
  2923. var element = document.getElementById('review_instr');
  2924. if (element) {
  2925. element.className = 'opened';
  2926. }
  2927. }
  2928. function revsOnLoadHandler() {
  2929. // register our source container with the commenting code
  2930. var paths = {'svn7768': '/trunk/processing/core/src/processing/core/PMatrix2D.java'}
  2931. CR_setup('', 'p', 'processing', '', 'svn7768', paths,
  2932. 'c6974bcd72eb95455827185f7306e1fa', CR_BrowseIntegrationFactory);
  2933. // register our hidden ui elements with the code commenting code ui builder.
  2934. CR_registerLayoutElement('form', form);
  2935. CR_registerLayoutElement('draft_comment', draft_comment);
  2936. CR_registerLayoutElement('published_comment', published_comment);
  2937. CR_registerActivityListener(CR_ACTIVITY_TYPE.REVEAL_DRAFT_PLATE, showPublishInstructions);
  2938. CR_registerActivityListener(CR_ACTIVITY_TYPE.REVEAL_PUB_PLATE, pubRevealed);
  2939. CR_registerActivityListener(CR_ACTIVITY_TYPE.REVEAL_DRAFT_PLATE, draftRevealed);
  2940. CR_registerActivityListener(CR_ACTIVITY_TYPE.DISCARD_DRAFT_COMMENT, draftDestroyed);
  2941. var initilized = true;
  2942. reloadCursors();
  2943. }
  2944. window.onload = function() {keysOnLoadHandler(); revsOnLoadHandler();};
  2945. </script>
  2946. <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/dit_scripts.js"></script>
  2947. <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/core_scripts_20081103.js"></script>
  2948. <script type="text/javascript" src="/js/codesite_product_dictionary_ph.pack.04102009.js"></script>
  2949. </div>
  2950. <div id="footer" dir="ltr">
  2951. <div class="text">
  2952. &copy;2010 Google -
  2953. <a href="/projecthosting/terms.html">Terms</a> -
  2954. <a href="http://www.google.com/privacy.html">Privacy</a> -
  2955. <a href="/p/support/">Project Hosting Help</a>
  2956. </div>
  2957. </div>
  2958. <div class="hostedBy" style="margin-top: -20px;">
  2959. <span style="vertical-align: top;">Powered by <a href="http://code.google.com/projecthosting/">Google Project Hosting</a></span>
  2960. </div>
  2961. <script type="text/javascript">_CS_reportToCsi();</script>
  2962. </body>
  2963. </html>