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.

7929 lines
190 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. var codesite_token = "c6974bcd72eb95455827185f7306e1fa";
  7. var logged_in_user_email = "Dung.Dang@gmail.com";
  8. var relative_base_url = "";
  9. </script>
  10. <title>PFont.java -
  11. processing -
  12. Project Hosting on Google Code</title>
  13. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
  14. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" >
  15. <meta name="ROBOTS" content="NOARCHIVE">
  16. <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/10276742928614796628/css/ph_core.css">
  17. <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/10276742928614796628/css/ph_detail.css" >
  18. <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/10276742928614796628/css/d_sb_20080522.css" >
  19. <!--[if IE]>
  20. <link type="text/css" rel="stylesheet" href="http://www.gstatic.com/codesite/ph/10276742928614796628/css/d_ie.css" >
  21. <![endif]-->
  22. <style type="text/css">
  23. .menuIcon.off { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -42px }
  24. .menuIcon.on { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 -28px }
  25. .menuIcon.down { background: no-repeat url(http://www.gstatic.com/codesite/ph/images/dropdown_sprite.gif) 0 0; }
  26. tr.inline_comment {
  27. background: #fff;
  28. vertical-align: top;
  29. }
  30. div.draft, div.published {
  31. padding: .3em;
  32. border: 1px solid #999;
  33. margin-bottom: .1em;
  34. font-family: arial, sans-serif;
  35. max-width: 60em;
  36. }
  37. div.draft {
  38. background: #ffa;
  39. }
  40. div.published {
  41. background: #e5ecf9;
  42. }
  43. div.published .body, div.draft .body {
  44. padding: .5em .1em .1em .1em;
  45. max-width: 60em;
  46. white-space: pre-wrap;
  47. white-space: -moz-pre-wrap;
  48. white-space: -pre-wrap;
  49. white-space: -o-pre-wrap;
  50. word-wrap: break-word;
  51. font-size: 1em;
  52. }
  53. div.draft .actions {
  54. margin-left: 1em;
  55. font-size: 90%;
  56. }
  57. div.draft form {
  58. padding: .5em .5em .5em 0;
  59. }
  60. div.draft textarea, div.published textarea {
  61. width: 95%;
  62. height: 10em;
  63. font-family: arial, sans-serif;
  64. margin-bottom: .5em;
  65. }
  66. .nocursor, .nocursor td, .cursor_hidden, .cursor_hidden td {
  67. background-color: white;
  68. height: 2px;
  69. }
  70. .cursor, .cursor td {
  71. background-color: darkblue;
  72. height: 2px;
  73. display: '';
  74. }
  75. .list {
  76. border: 1px solid white;
  77. margin-bottom:0;
  78. }
  79. </style>
  80. </head>
  81. <body class="t4">
  82. <script type="text/javascript">
  83. var _gaq = _gaq || [];
  84. _gaq.push(
  85. ['siteTracker._setAccount', 'UA-18071-1'],
  86. ['siteTracker._trackPageview']);
  87. (function() {
  88. var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  89. ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  90. (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
  91. })();
  92. </script>
  93. <div class="headbg">
  94. <div id="gaia">
  95. <span>
  96. <b>Dung.Dang@gmail.com</b>
  97. | <a href="/u/@VhVRRVJYBRNNWwl6/" id="projects-dropdown" onclick="return false;"
  98. ><u>My favorites</u> <small>&#9660;</small></a>
  99. | <a href="/u/@VhVRRVJYBRNNWwl6/" onclick="_CS_click('/gb/ph/profile');"
  100. title="Profile, Updates, and Settings"
  101. ><u>Profile</u></a>
  102. | <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%2FPFont.java"
  103. onclick="_CS_click('/gb/ph/signout');"
  104. ><u>Sign out</u></a>
  105. </span>
  106. </div>
  107. <div class="gbh" style="left: 0pt;"></div>
  108. <div class="gbh" style="right: 0pt;"></div>
  109. <div style="height: 1px"></div>
  110. <!--[if lte IE 7]>
  111. <div style="text-align:center;">
  112. Your version of Internet Explorer is not supported. Try a browser that
  113. contributes to open source, such as <a href="http://www.firefox.com">Firefox</a>,
  114. <a href="http://www.google.com/chrome">Google Chrome</a>, or
  115. <a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame</a>.
  116. </div>
  117. <![endif]-->
  118. <table style="padding:0px; margin: 0px 0px 10px 0px; width:100%" cellpadding="0" cellspacing="0">
  119. <tr style="height: 58px;">
  120. <td id="plogo">
  121. <a href="/p/processing/">
  122. <img src="http://www.gstatic.com/codesite/ph/images/defaultlogo.png" alt="Logo">
  123. </a>
  124. </td>
  125. <td style="padding-left: 0.5em">
  126. <div id="pname">
  127. <a href="/p/processing/">processing</a>
  128. </div>
  129. <div id="psum">
  130. <a id="project_summary_link" href="/p/processing/" >An open source programming language and environment for images, animation, and interactions.</a>
  131. </div>
  132. </td>
  133. <td style="white-space:nowrap;text-align:right; vertical-align:bottom;">
  134. <form action="/hosting/search">
  135. <input size="30" name="q" value="" type="text">
  136. <input type="submit" name="projectsearch" value="Search projects" >
  137. </form>
  138. </tr>
  139. </table>
  140. </div>
  141. <div id="mt" class="gtb">
  142. <a href="/p/processing/" class="tab ">Project&nbsp;Home</a>
  143. <a href="/p/processing/downloads/list" class="tab ">Downloads</a>
  144. <a href="/p/processing/w/list" class="tab ">Wiki</a>
  145. <a href="/p/processing/issues/list"
  146. class="tab ">Issues</a>
  147. <a href="/p/processing/source/checkout"
  148. class="tab active">Source</a>
  149. <div class=gtbc></div>
  150. </div>
  151. <table cellspacing="0" cellpadding="0" width="100%" align="center" border="0" class="st">
  152. <tr>
  153. <td class="subt">
  154. <div class="st2">
  155. <div class="isf">
  156. <span class="inst1"><a href="/p/processing/source/checkout">Checkout</a></span> &nbsp;
  157. <span class="inst2"><a href="/p/processing/source/browse/trunk/processing">Browse</a></span> &nbsp;
  158. <span class="inst3"><a href="/p/processing/source/list">Changes</a></span> &nbsp;
  159. <form action="http://www.google.com/codesearch" method="get" style="display:inline"
  160. onsubmit="document.getElementById('codesearchq').value = document.getElementById('origq').value + ' package:http://processing\\.googlecode\\.com'">
  161. <input type="hidden" name="q" id="codesearchq" value="">
  162. <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%">
  163. </form>
  164. </div>
  165. </div>
  166. </td>
  167. <td align="right" valign="top" class="bevel-right"></td>
  168. </tr>
  169. </table>
  170. <script type="text/javascript">
  171. var cancelBubble = false;
  172. function _go(url) { document.location = url; }
  173. </script>
  174. <div id="maincol"
  175. >
  176. <!-- IE -->
  177. <div class="expand">
  178. <div id="colcontrol">
  179. <style type="text/css">
  180. #file_flipper { white-space: nowrap; padding-right: 2em; }
  181. #file_flipper.hidden { display: none; }
  182. #file_flipper .pagelink { color: #0000CC; text-decoration: underline; }
  183. #file_flipper #visiblefiles { padding-left: 0.5em; padding-right: 0.5em; }
  184. </style>
  185. <table id="nav_and_rev" class="list"
  186. cellpadding="0" cellspacing="0" width="100%">
  187. <tr>
  188. <td nowrap="nowrap" class="src_crumbs src_nav" width="33%">
  189. <strong class="src_nav">Source path:&nbsp;</strong>
  190. <span id="crumb_root">
  191. <a href="/p/processing/source/browse/">svn</a>/&nbsp;</span>
  192. <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>PFont.java</span>
  193. </td>
  194. <td nowrap="nowrap" width="33%" align="center">
  195. <a href="/p/processing/source/browse/trunk/processing/core/src/processing/core/PFont.java?edit=1"
  196. ><img src="http://www.gstatic.com/codesite/ph/images/pencil-y14.png"
  197. class="edit_icon">Edit file</a>
  198. </td>
  199. <td nowrap="nowrap" width="33%" align="right">
  200. <table cellpadding="0" cellspacing="0" style="font-size: 100%"><tr>
  201. <td class="flipper">
  202. <ul class="leftside">
  203. <li><a href="/p/processing/source/browse/trunk/processing/core/src/processing/core/PFont.java?r=7647" title="Previous">&lsaquo;r7647</a></li>
  204. </ul>
  205. </td>
  206. <td class="flipper"><b>r7768</b></td>
  207. </tr></table>
  208. </td>
  209. </tr>
  210. </table>
  211. <div class="fc">
  212. <style type="text/css">
  213. .undermouse span {
  214. background-image: url(http://www.gstatic.com/codesite/ph/images/comments.gif); }
  215. </style>
  216. <table class="opened" id="review_comment_area"
  217. ><tr>
  218. <td id="nums">
  219. <pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
  220. <pre><table width="100%" id="nums_table_0"><tr id="gr_svn7768_1"
  221. ><td id="1"><a href="#1">1</a></td></tr
  222. ><tr id="gr_svn7768_2"
  223. ><td id="2"><a href="#2">2</a></td></tr
  224. ><tr id="gr_svn7768_3"
  225. ><td id="3"><a href="#3">3</a></td></tr
  226. ><tr id="gr_svn7768_4"
  227. ><td id="4"><a href="#4">4</a></td></tr
  228. ><tr id="gr_svn7768_5"
  229. ><td id="5"><a href="#5">5</a></td></tr
  230. ><tr id="gr_svn7768_6"
  231. ><td id="6"><a href="#6">6</a></td></tr
  232. ><tr id="gr_svn7768_7"
  233. ><td id="7"><a href="#7">7</a></td></tr
  234. ><tr id="gr_svn7768_8"
  235. ><td id="8"><a href="#8">8</a></td></tr
  236. ><tr id="gr_svn7768_9"
  237. ><td id="9"><a href="#9">9</a></td></tr
  238. ><tr id="gr_svn7768_10"
  239. ><td id="10"><a href="#10">10</a></td></tr
  240. ><tr id="gr_svn7768_11"
  241. ><td id="11"><a href="#11">11</a></td></tr
  242. ><tr id="gr_svn7768_12"
  243. ><td id="12"><a href="#12">12</a></td></tr
  244. ><tr id="gr_svn7768_13"
  245. ><td id="13"><a href="#13">13</a></td></tr
  246. ><tr id="gr_svn7768_14"
  247. ><td id="14"><a href="#14">14</a></td></tr
  248. ><tr id="gr_svn7768_15"
  249. ><td id="15"><a href="#15">15</a></td></tr
  250. ><tr id="gr_svn7768_16"
  251. ><td id="16"><a href="#16">16</a></td></tr
  252. ><tr id="gr_svn7768_17"
  253. ><td id="17"><a href="#17">17</a></td></tr
  254. ><tr id="gr_svn7768_18"
  255. ><td id="18"><a href="#18">18</a></td></tr
  256. ><tr id="gr_svn7768_19"
  257. ><td id="19"><a href="#19">19</a></td></tr
  258. ><tr id="gr_svn7768_20"
  259. ><td id="20"><a href="#20">20</a></td></tr
  260. ><tr id="gr_svn7768_21"
  261. ><td id="21"><a href="#21">21</a></td></tr
  262. ><tr id="gr_svn7768_22"
  263. ><td id="22"><a href="#22">22</a></td></tr
  264. ><tr id="gr_svn7768_23"
  265. ><td id="23"><a href="#23">23</a></td></tr
  266. ><tr id="gr_svn7768_24"
  267. ><td id="24"><a href="#24">24</a></td></tr
  268. ><tr id="gr_svn7768_25"
  269. ><td id="25"><a href="#25">25</a></td></tr
  270. ><tr id="gr_svn7768_26"
  271. ><td id="26"><a href="#26">26</a></td></tr
  272. ><tr id="gr_svn7768_27"
  273. ><td id="27"><a href="#27">27</a></td></tr
  274. ><tr id="gr_svn7768_28"
  275. ><td id="28"><a href="#28">28</a></td></tr
  276. ><tr id="gr_svn7768_29"
  277. ><td id="29"><a href="#29">29</a></td></tr
  278. ><tr id="gr_svn7768_30"
  279. ><td id="30"><a href="#30">30</a></td></tr
  280. ><tr id="gr_svn7768_31"
  281. ><td id="31"><a href="#31">31</a></td></tr
  282. ><tr id="gr_svn7768_32"
  283. ><td id="32"><a href="#32">32</a></td></tr
  284. ><tr id="gr_svn7768_33"
  285. ><td id="33"><a href="#33">33</a></td></tr
  286. ><tr id="gr_svn7768_34"
  287. ><td id="34"><a href="#34">34</a></td></tr
  288. ><tr id="gr_svn7768_35"
  289. ><td id="35"><a href="#35">35</a></td></tr
  290. ><tr id="gr_svn7768_36"
  291. ><td id="36"><a href="#36">36</a></td></tr
  292. ><tr id="gr_svn7768_37"
  293. ><td id="37"><a href="#37">37</a></td></tr
  294. ><tr id="gr_svn7768_38"
  295. ><td id="38"><a href="#38">38</a></td></tr
  296. ><tr id="gr_svn7768_39"
  297. ><td id="39"><a href="#39">39</a></td></tr
  298. ><tr id="gr_svn7768_40"
  299. ><td id="40"><a href="#40">40</a></td></tr
  300. ><tr id="gr_svn7768_41"
  301. ><td id="41"><a href="#41">41</a></td></tr
  302. ><tr id="gr_svn7768_42"
  303. ><td id="42"><a href="#42">42</a></td></tr
  304. ><tr id="gr_svn7768_43"
  305. ><td id="43"><a href="#43">43</a></td></tr
  306. ><tr id="gr_svn7768_44"
  307. ><td id="44"><a href="#44">44</a></td></tr
  308. ><tr id="gr_svn7768_45"
  309. ><td id="45"><a href="#45">45</a></td></tr
  310. ><tr id="gr_svn7768_46"
  311. ><td id="46"><a href="#46">46</a></td></tr
  312. ><tr id="gr_svn7768_47"
  313. ><td id="47"><a href="#47">47</a></td></tr
  314. ><tr id="gr_svn7768_48"
  315. ><td id="48"><a href="#48">48</a></td></tr
  316. ><tr id="gr_svn7768_49"
  317. ><td id="49"><a href="#49">49</a></td></tr
  318. ><tr id="gr_svn7768_50"
  319. ><td id="50"><a href="#50">50</a></td></tr
  320. ><tr id="gr_svn7768_51"
  321. ><td id="51"><a href="#51">51</a></td></tr
  322. ><tr id="gr_svn7768_52"
  323. ><td id="52"><a href="#52">52</a></td></tr
  324. ><tr id="gr_svn7768_53"
  325. ><td id="53"><a href="#53">53</a></td></tr
  326. ><tr id="gr_svn7768_54"
  327. ><td id="54"><a href="#54">54</a></td></tr
  328. ><tr id="gr_svn7768_55"
  329. ><td id="55"><a href="#55">55</a></td></tr
  330. ><tr id="gr_svn7768_56"
  331. ><td id="56"><a href="#56">56</a></td></tr
  332. ><tr id="gr_svn7768_57"
  333. ><td id="57"><a href="#57">57</a></td></tr
  334. ><tr id="gr_svn7768_58"
  335. ><td id="58"><a href="#58">58</a></td></tr
  336. ><tr id="gr_svn7768_59"
  337. ><td id="59"><a href="#59">59</a></td></tr
  338. ><tr id="gr_svn7768_60"
  339. ><td id="60"><a href="#60">60</a></td></tr
  340. ><tr id="gr_svn7768_61"
  341. ><td id="61"><a href="#61">61</a></td></tr
  342. ><tr id="gr_svn7768_62"
  343. ><td id="62"><a href="#62">62</a></td></tr
  344. ><tr id="gr_svn7768_63"
  345. ><td id="63"><a href="#63">63</a></td></tr
  346. ><tr id="gr_svn7768_64"
  347. ><td id="64"><a href="#64">64</a></td></tr
  348. ><tr id="gr_svn7768_65"
  349. ><td id="65"><a href="#65">65</a></td></tr
  350. ><tr id="gr_svn7768_66"
  351. ><td id="66"><a href="#66">66</a></td></tr
  352. ><tr id="gr_svn7768_67"
  353. ><td id="67"><a href="#67">67</a></td></tr
  354. ><tr id="gr_svn7768_68"
  355. ><td id="68"><a href="#68">68</a></td></tr
  356. ><tr id="gr_svn7768_69"
  357. ><td id="69"><a href="#69">69</a></td></tr
  358. ><tr id="gr_svn7768_70"
  359. ><td id="70"><a href="#70">70</a></td></tr
  360. ><tr id="gr_svn7768_71"
  361. ><td id="71"><a href="#71">71</a></td></tr
  362. ><tr id="gr_svn7768_72"
  363. ><td id="72"><a href="#72">72</a></td></tr
  364. ><tr id="gr_svn7768_73"
  365. ><td id="73"><a href="#73">73</a></td></tr
  366. ><tr id="gr_svn7768_74"
  367. ><td id="74"><a href="#74">74</a></td></tr
  368. ><tr id="gr_svn7768_75"
  369. ><td id="75"><a href="#75">75</a></td></tr
  370. ><tr id="gr_svn7768_76"
  371. ><td id="76"><a href="#76">76</a></td></tr
  372. ><tr id="gr_svn7768_77"
  373. ><td id="77"><a href="#77">77</a></td></tr
  374. ><tr id="gr_svn7768_78"
  375. ><td id="78"><a href="#78">78</a></td></tr
  376. ><tr id="gr_svn7768_79"
  377. ><td id="79"><a href="#79">79</a></td></tr
  378. ><tr id="gr_svn7768_80"
  379. ><td id="80"><a href="#80">80</a></td></tr
  380. ><tr id="gr_svn7768_81"
  381. ><td id="81"><a href="#81">81</a></td></tr
  382. ><tr id="gr_svn7768_82"
  383. ><td id="82"><a href="#82">82</a></td></tr
  384. ><tr id="gr_svn7768_83"
  385. ><td id="83"><a href="#83">83</a></td></tr
  386. ><tr id="gr_svn7768_84"
  387. ><td id="84"><a href="#84">84</a></td></tr
  388. ><tr id="gr_svn7768_85"
  389. ><td id="85"><a href="#85">85</a></td></tr
  390. ><tr id="gr_svn7768_86"
  391. ><td id="86"><a href="#86">86</a></td></tr
  392. ><tr id="gr_svn7768_87"
  393. ><td id="87"><a href="#87">87</a></td></tr
  394. ><tr id="gr_svn7768_88"
  395. ><td id="88"><a href="#88">88</a></td></tr
  396. ><tr id="gr_svn7768_89"
  397. ><td id="89"><a href="#89">89</a></td></tr
  398. ><tr id="gr_svn7768_90"
  399. ><td id="90"><a href="#90">90</a></td></tr
  400. ><tr id="gr_svn7768_91"
  401. ><td id="91"><a href="#91">91</a></td></tr
  402. ><tr id="gr_svn7768_92"
  403. ><td id="92"><a href="#92">92</a></td></tr
  404. ><tr id="gr_svn7768_93"
  405. ><td id="93"><a href="#93">93</a></td></tr
  406. ><tr id="gr_svn7768_94"
  407. ><td id="94"><a href="#94">94</a></td></tr
  408. ><tr id="gr_svn7768_95"
  409. ><td id="95"><a href="#95">95</a></td></tr
  410. ><tr id="gr_svn7768_96"
  411. ><td id="96"><a href="#96">96</a></td></tr
  412. ><tr id="gr_svn7768_97"
  413. ><td id="97"><a href="#97">97</a></td></tr
  414. ><tr id="gr_svn7768_98"
  415. ><td id="98"><a href="#98">98</a></td></tr
  416. ><tr id="gr_svn7768_99"
  417. ><td id="99"><a href="#99">99</a></td></tr
  418. ><tr id="gr_svn7768_100"
  419. ><td id="100"><a href="#100">100</a></td></tr
  420. ><tr id="gr_svn7768_101"
  421. ><td id="101"><a href="#101">101</a></td></tr
  422. ><tr id="gr_svn7768_102"
  423. ><td id="102"><a href="#102">102</a></td></tr
  424. ><tr id="gr_svn7768_103"
  425. ><td id="103"><a href="#103">103</a></td></tr
  426. ><tr id="gr_svn7768_104"
  427. ><td id="104"><a href="#104">104</a></td></tr
  428. ><tr id="gr_svn7768_105"
  429. ><td id="105"><a href="#105">105</a></td></tr
  430. ><tr id="gr_svn7768_106"
  431. ><td id="106"><a href="#106">106</a></td></tr
  432. ><tr id="gr_svn7768_107"
  433. ><td id="107"><a href="#107">107</a></td></tr
  434. ><tr id="gr_svn7768_108"
  435. ><td id="108"><a href="#108">108</a></td></tr
  436. ><tr id="gr_svn7768_109"
  437. ><td id="109"><a href="#109">109</a></td></tr
  438. ><tr id="gr_svn7768_110"
  439. ><td id="110"><a href="#110">110</a></td></tr
  440. ><tr id="gr_svn7768_111"
  441. ><td id="111"><a href="#111">111</a></td></tr
  442. ><tr id="gr_svn7768_112"
  443. ><td id="112"><a href="#112">112</a></td></tr
  444. ><tr id="gr_svn7768_113"
  445. ><td id="113"><a href="#113">113</a></td></tr
  446. ><tr id="gr_svn7768_114"
  447. ><td id="114"><a href="#114">114</a></td></tr
  448. ><tr id="gr_svn7768_115"
  449. ><td id="115"><a href="#115">115</a></td></tr
  450. ><tr id="gr_svn7768_116"
  451. ><td id="116"><a href="#116">116</a></td></tr
  452. ><tr id="gr_svn7768_117"
  453. ><td id="117"><a href="#117">117</a></td></tr
  454. ><tr id="gr_svn7768_118"
  455. ><td id="118"><a href="#118">118</a></td></tr
  456. ><tr id="gr_svn7768_119"
  457. ><td id="119"><a href="#119">119</a></td></tr
  458. ><tr id="gr_svn7768_120"
  459. ><td id="120"><a href="#120">120</a></td></tr
  460. ><tr id="gr_svn7768_121"
  461. ><td id="121"><a href="#121">121</a></td></tr
  462. ><tr id="gr_svn7768_122"
  463. ><td id="122"><a href="#122">122</a></td></tr
  464. ><tr id="gr_svn7768_123"
  465. ><td id="123"><a href="#123">123</a></td></tr
  466. ><tr id="gr_svn7768_124"
  467. ><td id="124"><a href="#124">124</a></td></tr
  468. ><tr id="gr_svn7768_125"
  469. ><td id="125"><a href="#125">125</a></td></tr
  470. ><tr id="gr_svn7768_126"
  471. ><td id="126"><a href="#126">126</a></td></tr
  472. ><tr id="gr_svn7768_127"
  473. ><td id="127"><a href="#127">127</a></td></tr
  474. ><tr id="gr_svn7768_128"
  475. ><td id="128"><a href="#128">128</a></td></tr
  476. ><tr id="gr_svn7768_129"
  477. ><td id="129"><a href="#129">129</a></td></tr
  478. ><tr id="gr_svn7768_130"
  479. ><td id="130"><a href="#130">130</a></td></tr
  480. ><tr id="gr_svn7768_131"
  481. ><td id="131"><a href="#131">131</a></td></tr
  482. ><tr id="gr_svn7768_132"
  483. ><td id="132"><a href="#132">132</a></td></tr
  484. ><tr id="gr_svn7768_133"
  485. ><td id="133"><a href="#133">133</a></td></tr
  486. ><tr id="gr_svn7768_134"
  487. ><td id="134"><a href="#134">134</a></td></tr
  488. ><tr id="gr_svn7768_135"
  489. ><td id="135"><a href="#135">135</a></td></tr
  490. ><tr id="gr_svn7768_136"
  491. ><td id="136"><a href="#136">136</a></td></tr
  492. ><tr id="gr_svn7768_137"
  493. ><td id="137"><a href="#137">137</a></td></tr
  494. ><tr id="gr_svn7768_138"
  495. ><td id="138"><a href="#138">138</a></td></tr
  496. ><tr id="gr_svn7768_139"
  497. ><td id="139"><a href="#139">139</a></td></tr
  498. ><tr id="gr_svn7768_140"
  499. ><td id="140"><a href="#140">140</a></td></tr
  500. ><tr id="gr_svn7768_141"
  501. ><td id="141"><a href="#141">141</a></td></tr
  502. ><tr id="gr_svn7768_142"
  503. ><td id="142"><a href="#142">142</a></td></tr
  504. ><tr id="gr_svn7768_143"
  505. ><td id="143"><a href="#143">143</a></td></tr
  506. ><tr id="gr_svn7768_144"
  507. ><td id="144"><a href="#144">144</a></td></tr
  508. ><tr id="gr_svn7768_145"
  509. ><td id="145"><a href="#145">145</a></td></tr
  510. ><tr id="gr_svn7768_146"
  511. ><td id="146"><a href="#146">146</a></td></tr
  512. ><tr id="gr_svn7768_147"
  513. ><td id="147"><a href="#147">147</a></td></tr
  514. ><tr id="gr_svn7768_148"
  515. ><td id="148"><a href="#148">148</a></td></tr
  516. ><tr id="gr_svn7768_149"
  517. ><td id="149"><a href="#149">149</a></td></tr
  518. ><tr id="gr_svn7768_150"
  519. ><td id="150"><a href="#150">150</a></td></tr
  520. ><tr id="gr_svn7768_151"
  521. ><td id="151"><a href="#151">151</a></td></tr
  522. ><tr id="gr_svn7768_152"
  523. ><td id="152"><a href="#152">152</a></td></tr
  524. ><tr id="gr_svn7768_153"
  525. ><td id="153"><a href="#153">153</a></td></tr
  526. ><tr id="gr_svn7768_154"
  527. ><td id="154"><a href="#154">154</a></td></tr
  528. ><tr id="gr_svn7768_155"
  529. ><td id="155"><a href="#155">155</a></td></tr
  530. ><tr id="gr_svn7768_156"
  531. ><td id="156"><a href="#156">156</a></td></tr
  532. ><tr id="gr_svn7768_157"
  533. ><td id="157"><a href="#157">157</a></td></tr
  534. ><tr id="gr_svn7768_158"
  535. ><td id="158"><a href="#158">158</a></td></tr
  536. ><tr id="gr_svn7768_159"
  537. ><td id="159"><a href="#159">159</a></td></tr
  538. ><tr id="gr_svn7768_160"
  539. ><td id="160"><a href="#160">160</a></td></tr
  540. ><tr id="gr_svn7768_161"
  541. ><td id="161"><a href="#161">161</a></td></tr
  542. ><tr id="gr_svn7768_162"
  543. ><td id="162"><a href="#162">162</a></td></tr
  544. ><tr id="gr_svn7768_163"
  545. ><td id="163"><a href="#163">163</a></td></tr
  546. ><tr id="gr_svn7768_164"
  547. ><td id="164"><a href="#164">164</a></td></tr
  548. ><tr id="gr_svn7768_165"
  549. ><td id="165"><a href="#165">165</a></td></tr
  550. ><tr id="gr_svn7768_166"
  551. ><td id="166"><a href="#166">166</a></td></tr
  552. ><tr id="gr_svn7768_167"
  553. ><td id="167"><a href="#167">167</a></td></tr
  554. ><tr id="gr_svn7768_168"
  555. ><td id="168"><a href="#168">168</a></td></tr
  556. ><tr id="gr_svn7768_169"
  557. ><td id="169"><a href="#169">169</a></td></tr
  558. ><tr id="gr_svn7768_170"
  559. ><td id="170"><a href="#170">170</a></td></tr
  560. ><tr id="gr_svn7768_171"
  561. ><td id="171"><a href="#171">171</a></td></tr
  562. ><tr id="gr_svn7768_172"
  563. ><td id="172"><a href="#172">172</a></td></tr
  564. ><tr id="gr_svn7768_173"
  565. ><td id="173"><a href="#173">173</a></td></tr
  566. ><tr id="gr_svn7768_174"
  567. ><td id="174"><a href="#174">174</a></td></tr
  568. ><tr id="gr_svn7768_175"
  569. ><td id="175"><a href="#175">175</a></td></tr
  570. ><tr id="gr_svn7768_176"
  571. ><td id="176"><a href="#176">176</a></td></tr
  572. ><tr id="gr_svn7768_177"
  573. ><td id="177"><a href="#177">177</a></td></tr
  574. ><tr id="gr_svn7768_178"
  575. ><td id="178"><a href="#178">178</a></td></tr
  576. ><tr id="gr_svn7768_179"
  577. ><td id="179"><a href="#179">179</a></td></tr
  578. ><tr id="gr_svn7768_180"
  579. ><td id="180"><a href="#180">180</a></td></tr
  580. ><tr id="gr_svn7768_181"
  581. ><td id="181"><a href="#181">181</a></td></tr
  582. ><tr id="gr_svn7768_182"
  583. ><td id="182"><a href="#182">182</a></td></tr
  584. ><tr id="gr_svn7768_183"
  585. ><td id="183"><a href="#183">183</a></td></tr
  586. ><tr id="gr_svn7768_184"
  587. ><td id="184"><a href="#184">184</a></td></tr
  588. ><tr id="gr_svn7768_185"
  589. ><td id="185"><a href="#185">185</a></td></tr
  590. ><tr id="gr_svn7768_186"
  591. ><td id="186"><a href="#186">186</a></td></tr
  592. ><tr id="gr_svn7768_187"
  593. ><td id="187"><a href="#187">187</a></td></tr
  594. ><tr id="gr_svn7768_188"
  595. ><td id="188"><a href="#188">188</a></td></tr
  596. ><tr id="gr_svn7768_189"
  597. ><td id="189"><a href="#189">189</a></td></tr
  598. ><tr id="gr_svn7768_190"
  599. ><td id="190"><a href="#190">190</a></td></tr
  600. ><tr id="gr_svn7768_191"
  601. ><td id="191"><a href="#191">191</a></td></tr
  602. ><tr id="gr_svn7768_192"
  603. ><td id="192"><a href="#192">192</a></td></tr
  604. ><tr id="gr_svn7768_193"
  605. ><td id="193"><a href="#193">193</a></td></tr
  606. ><tr id="gr_svn7768_194"
  607. ><td id="194"><a href="#194">194</a></td></tr
  608. ><tr id="gr_svn7768_195"
  609. ><td id="195"><a href="#195">195</a></td></tr
  610. ><tr id="gr_svn7768_196"
  611. ><td id="196"><a href="#196">196</a></td></tr
  612. ><tr id="gr_svn7768_197"
  613. ><td id="197"><a href="#197">197</a></td></tr
  614. ><tr id="gr_svn7768_198"
  615. ><td id="198"><a href="#198">198</a></td></tr
  616. ><tr id="gr_svn7768_199"
  617. ><td id="199"><a href="#199">199</a></td></tr
  618. ><tr id="gr_svn7768_200"
  619. ><td id="200"><a href="#200">200</a></td></tr
  620. ><tr id="gr_svn7768_201"
  621. ><td id="201"><a href="#201">201</a></td></tr
  622. ><tr id="gr_svn7768_202"
  623. ><td id="202"><a href="#202">202</a></td></tr
  624. ><tr id="gr_svn7768_203"
  625. ><td id="203"><a href="#203">203</a></td></tr
  626. ><tr id="gr_svn7768_204"
  627. ><td id="204"><a href="#204">204</a></td></tr
  628. ><tr id="gr_svn7768_205"
  629. ><td id="205"><a href="#205">205</a></td></tr
  630. ><tr id="gr_svn7768_206"
  631. ><td id="206"><a href="#206">206</a></td></tr
  632. ><tr id="gr_svn7768_207"
  633. ><td id="207"><a href="#207">207</a></td></tr
  634. ><tr id="gr_svn7768_208"
  635. ><td id="208"><a href="#208">208</a></td></tr
  636. ><tr id="gr_svn7768_209"
  637. ><td id="209"><a href="#209">209</a></td></tr
  638. ><tr id="gr_svn7768_210"
  639. ><td id="210"><a href="#210">210</a></td></tr
  640. ><tr id="gr_svn7768_211"
  641. ><td id="211"><a href="#211">211</a></td></tr
  642. ><tr id="gr_svn7768_212"
  643. ><td id="212"><a href="#212">212</a></td></tr
  644. ><tr id="gr_svn7768_213"
  645. ><td id="213"><a href="#213">213</a></td></tr
  646. ><tr id="gr_svn7768_214"
  647. ><td id="214"><a href="#214">214</a></td></tr
  648. ><tr id="gr_svn7768_215"
  649. ><td id="215"><a href="#215">215</a></td></tr
  650. ><tr id="gr_svn7768_216"
  651. ><td id="216"><a href="#216">216</a></td></tr
  652. ><tr id="gr_svn7768_217"
  653. ><td id="217"><a href="#217">217</a></td></tr
  654. ><tr id="gr_svn7768_218"
  655. ><td id="218"><a href="#218">218</a></td></tr
  656. ><tr id="gr_svn7768_219"
  657. ><td id="219"><a href="#219">219</a></td></tr
  658. ><tr id="gr_svn7768_220"
  659. ><td id="220"><a href="#220">220</a></td></tr
  660. ><tr id="gr_svn7768_221"
  661. ><td id="221"><a href="#221">221</a></td></tr
  662. ><tr id="gr_svn7768_222"
  663. ><td id="222"><a href="#222">222</a></td></tr
  664. ><tr id="gr_svn7768_223"
  665. ><td id="223"><a href="#223">223</a></td></tr
  666. ><tr id="gr_svn7768_224"
  667. ><td id="224"><a href="#224">224</a></td></tr
  668. ><tr id="gr_svn7768_225"
  669. ><td id="225"><a href="#225">225</a></td></tr
  670. ><tr id="gr_svn7768_226"
  671. ><td id="226"><a href="#226">226</a></td></tr
  672. ><tr id="gr_svn7768_227"
  673. ><td id="227"><a href="#227">227</a></td></tr
  674. ><tr id="gr_svn7768_228"
  675. ><td id="228"><a href="#228">228</a></td></tr
  676. ><tr id="gr_svn7768_229"
  677. ><td id="229"><a href="#229">229</a></td></tr
  678. ><tr id="gr_svn7768_230"
  679. ><td id="230"><a href="#230">230</a></td></tr
  680. ><tr id="gr_svn7768_231"
  681. ><td id="231"><a href="#231">231</a></td></tr
  682. ><tr id="gr_svn7768_232"
  683. ><td id="232"><a href="#232">232</a></td></tr
  684. ><tr id="gr_svn7768_233"
  685. ><td id="233"><a href="#233">233</a></td></tr
  686. ><tr id="gr_svn7768_234"
  687. ><td id="234"><a href="#234">234</a></td></tr
  688. ><tr id="gr_svn7768_235"
  689. ><td id="235"><a href="#235">235</a></td></tr
  690. ><tr id="gr_svn7768_236"
  691. ><td id="236"><a href="#236">236</a></td></tr
  692. ><tr id="gr_svn7768_237"
  693. ><td id="237"><a href="#237">237</a></td></tr
  694. ><tr id="gr_svn7768_238"
  695. ><td id="238"><a href="#238">238</a></td></tr
  696. ><tr id="gr_svn7768_239"
  697. ><td id="239"><a href="#239">239</a></td></tr
  698. ><tr id="gr_svn7768_240"
  699. ><td id="240"><a href="#240">240</a></td></tr
  700. ><tr id="gr_svn7768_241"
  701. ><td id="241"><a href="#241">241</a></td></tr
  702. ><tr id="gr_svn7768_242"
  703. ><td id="242"><a href="#242">242</a></td></tr
  704. ><tr id="gr_svn7768_243"
  705. ><td id="243"><a href="#243">243</a></td></tr
  706. ><tr id="gr_svn7768_244"
  707. ><td id="244"><a href="#244">244</a></td></tr
  708. ><tr id="gr_svn7768_245"
  709. ><td id="245"><a href="#245">245</a></td></tr
  710. ><tr id="gr_svn7768_246"
  711. ><td id="246"><a href="#246">246</a></td></tr
  712. ><tr id="gr_svn7768_247"
  713. ><td id="247"><a href="#247">247</a></td></tr
  714. ><tr id="gr_svn7768_248"
  715. ><td id="248"><a href="#248">248</a></td></tr
  716. ><tr id="gr_svn7768_249"
  717. ><td id="249"><a href="#249">249</a></td></tr
  718. ><tr id="gr_svn7768_250"
  719. ><td id="250"><a href="#250">250</a></td></tr
  720. ><tr id="gr_svn7768_251"
  721. ><td id="251"><a href="#251">251</a></td></tr
  722. ><tr id="gr_svn7768_252"
  723. ><td id="252"><a href="#252">252</a></td></tr
  724. ><tr id="gr_svn7768_253"
  725. ><td id="253"><a href="#253">253</a></td></tr
  726. ><tr id="gr_svn7768_254"
  727. ><td id="254"><a href="#254">254</a></td></tr
  728. ><tr id="gr_svn7768_255"
  729. ><td id="255"><a href="#255">255</a></td></tr
  730. ><tr id="gr_svn7768_256"
  731. ><td id="256"><a href="#256">256</a></td></tr
  732. ><tr id="gr_svn7768_257"
  733. ><td id="257"><a href="#257">257</a></td></tr
  734. ><tr id="gr_svn7768_258"
  735. ><td id="258"><a href="#258">258</a></td></tr
  736. ><tr id="gr_svn7768_259"
  737. ><td id="259"><a href="#259">259</a></td></tr
  738. ><tr id="gr_svn7768_260"
  739. ><td id="260"><a href="#260">260</a></td></tr
  740. ><tr id="gr_svn7768_261"
  741. ><td id="261"><a href="#261">261</a></td></tr
  742. ><tr id="gr_svn7768_262"
  743. ><td id="262"><a href="#262">262</a></td></tr
  744. ><tr id="gr_svn7768_263"
  745. ><td id="263"><a href="#263">263</a></td></tr
  746. ><tr id="gr_svn7768_264"
  747. ><td id="264"><a href="#264">264</a></td></tr
  748. ><tr id="gr_svn7768_265"
  749. ><td id="265"><a href="#265">265</a></td></tr
  750. ><tr id="gr_svn7768_266"
  751. ><td id="266"><a href="#266">266</a></td></tr
  752. ><tr id="gr_svn7768_267"
  753. ><td id="267"><a href="#267">267</a></td></tr
  754. ><tr id="gr_svn7768_268"
  755. ><td id="268"><a href="#268">268</a></td></tr
  756. ><tr id="gr_svn7768_269"
  757. ><td id="269"><a href="#269">269</a></td></tr
  758. ><tr id="gr_svn7768_270"
  759. ><td id="270"><a href="#270">270</a></td></tr
  760. ><tr id="gr_svn7768_271"
  761. ><td id="271"><a href="#271">271</a></td></tr
  762. ><tr id="gr_svn7768_272"
  763. ><td id="272"><a href="#272">272</a></td></tr
  764. ><tr id="gr_svn7768_273"
  765. ><td id="273"><a href="#273">273</a></td></tr
  766. ><tr id="gr_svn7768_274"
  767. ><td id="274"><a href="#274">274</a></td></tr
  768. ><tr id="gr_svn7768_275"
  769. ><td id="275"><a href="#275">275</a></td></tr
  770. ><tr id="gr_svn7768_276"
  771. ><td id="276"><a href="#276">276</a></td></tr
  772. ><tr id="gr_svn7768_277"
  773. ><td id="277"><a href="#277">277</a></td></tr
  774. ><tr id="gr_svn7768_278"
  775. ><td id="278"><a href="#278">278</a></td></tr
  776. ><tr id="gr_svn7768_279"
  777. ><td id="279"><a href="#279">279</a></td></tr
  778. ><tr id="gr_svn7768_280"
  779. ><td id="280"><a href="#280">280</a></td></tr
  780. ><tr id="gr_svn7768_281"
  781. ><td id="281"><a href="#281">281</a></td></tr
  782. ><tr id="gr_svn7768_282"
  783. ><td id="282"><a href="#282">282</a></td></tr
  784. ><tr id="gr_svn7768_283"
  785. ><td id="283"><a href="#283">283</a></td></tr
  786. ><tr id="gr_svn7768_284"
  787. ><td id="284"><a href="#284">284</a></td></tr
  788. ><tr id="gr_svn7768_285"
  789. ><td id="285"><a href="#285">285</a></td></tr
  790. ><tr id="gr_svn7768_286"
  791. ><td id="286"><a href="#286">286</a></td></tr
  792. ><tr id="gr_svn7768_287"
  793. ><td id="287"><a href="#287">287</a></td></tr
  794. ><tr id="gr_svn7768_288"
  795. ><td id="288"><a href="#288">288</a></td></tr
  796. ><tr id="gr_svn7768_289"
  797. ><td id="289"><a href="#289">289</a></td></tr
  798. ><tr id="gr_svn7768_290"
  799. ><td id="290"><a href="#290">290</a></td></tr
  800. ><tr id="gr_svn7768_291"
  801. ><td id="291"><a href="#291">291</a></td></tr
  802. ><tr id="gr_svn7768_292"
  803. ><td id="292"><a href="#292">292</a></td></tr
  804. ><tr id="gr_svn7768_293"
  805. ><td id="293"><a href="#293">293</a></td></tr
  806. ><tr id="gr_svn7768_294"
  807. ><td id="294"><a href="#294">294</a></td></tr
  808. ><tr id="gr_svn7768_295"
  809. ><td id="295"><a href="#295">295</a></td></tr
  810. ><tr id="gr_svn7768_296"
  811. ><td id="296"><a href="#296">296</a></td></tr
  812. ><tr id="gr_svn7768_297"
  813. ><td id="297"><a href="#297">297</a></td></tr
  814. ><tr id="gr_svn7768_298"
  815. ><td id="298"><a href="#298">298</a></td></tr
  816. ><tr id="gr_svn7768_299"
  817. ><td id="299"><a href="#299">299</a></td></tr
  818. ><tr id="gr_svn7768_300"
  819. ><td id="300"><a href="#300">300</a></td></tr
  820. ><tr id="gr_svn7768_301"
  821. ><td id="301"><a href="#301">301</a></td></tr
  822. ><tr id="gr_svn7768_302"
  823. ><td id="302"><a href="#302">302</a></td></tr
  824. ><tr id="gr_svn7768_303"
  825. ><td id="303"><a href="#303">303</a></td></tr
  826. ><tr id="gr_svn7768_304"
  827. ><td id="304"><a href="#304">304</a></td></tr
  828. ><tr id="gr_svn7768_305"
  829. ><td id="305"><a href="#305">305</a></td></tr
  830. ><tr id="gr_svn7768_306"
  831. ><td id="306"><a href="#306">306</a></td></tr
  832. ><tr id="gr_svn7768_307"
  833. ><td id="307"><a href="#307">307</a></td></tr
  834. ><tr id="gr_svn7768_308"
  835. ><td id="308"><a href="#308">308</a></td></tr
  836. ><tr id="gr_svn7768_309"
  837. ><td id="309"><a href="#309">309</a></td></tr
  838. ><tr id="gr_svn7768_310"
  839. ><td id="310"><a href="#310">310</a></td></tr
  840. ><tr id="gr_svn7768_311"
  841. ><td id="311"><a href="#311">311</a></td></tr
  842. ><tr id="gr_svn7768_312"
  843. ><td id="312"><a href="#312">312</a></td></tr
  844. ><tr id="gr_svn7768_313"
  845. ><td id="313"><a href="#313">313</a></td></tr
  846. ><tr id="gr_svn7768_314"
  847. ><td id="314"><a href="#314">314</a></td></tr
  848. ><tr id="gr_svn7768_315"
  849. ><td id="315"><a href="#315">315</a></td></tr
  850. ><tr id="gr_svn7768_316"
  851. ><td id="316"><a href="#316">316</a></td></tr
  852. ><tr id="gr_svn7768_317"
  853. ><td id="317"><a href="#317">317</a></td></tr
  854. ><tr id="gr_svn7768_318"
  855. ><td id="318"><a href="#318">318</a></td></tr
  856. ><tr id="gr_svn7768_319"
  857. ><td id="319"><a href="#319">319</a></td></tr
  858. ><tr id="gr_svn7768_320"
  859. ><td id="320"><a href="#320">320</a></td></tr
  860. ><tr id="gr_svn7768_321"
  861. ><td id="321"><a href="#321">321</a></td></tr
  862. ><tr id="gr_svn7768_322"
  863. ><td id="322"><a href="#322">322</a></td></tr
  864. ><tr id="gr_svn7768_323"
  865. ><td id="323"><a href="#323">323</a></td></tr
  866. ><tr id="gr_svn7768_324"
  867. ><td id="324"><a href="#324">324</a></td></tr
  868. ><tr id="gr_svn7768_325"
  869. ><td id="325"><a href="#325">325</a></td></tr
  870. ><tr id="gr_svn7768_326"
  871. ><td id="326"><a href="#326">326</a></td></tr
  872. ><tr id="gr_svn7768_327"
  873. ><td id="327"><a href="#327">327</a></td></tr
  874. ><tr id="gr_svn7768_328"
  875. ><td id="328"><a href="#328">328</a></td></tr
  876. ><tr id="gr_svn7768_329"
  877. ><td id="329"><a href="#329">329</a></td></tr
  878. ><tr id="gr_svn7768_330"
  879. ><td id="330"><a href="#330">330</a></td></tr
  880. ><tr id="gr_svn7768_331"
  881. ><td id="331"><a href="#331">331</a></td></tr
  882. ><tr id="gr_svn7768_332"
  883. ><td id="332"><a href="#332">332</a></td></tr
  884. ><tr id="gr_svn7768_333"
  885. ><td id="333"><a href="#333">333</a></td></tr
  886. ><tr id="gr_svn7768_334"
  887. ><td id="334"><a href="#334">334</a></td></tr
  888. ><tr id="gr_svn7768_335"
  889. ><td id="335"><a href="#335">335</a></td></tr
  890. ><tr id="gr_svn7768_336"
  891. ><td id="336"><a href="#336">336</a></td></tr
  892. ><tr id="gr_svn7768_337"
  893. ><td id="337"><a href="#337">337</a></td></tr
  894. ><tr id="gr_svn7768_338"
  895. ><td id="338"><a href="#338">338</a></td></tr
  896. ><tr id="gr_svn7768_339"
  897. ><td id="339"><a href="#339">339</a></td></tr
  898. ><tr id="gr_svn7768_340"
  899. ><td id="340"><a href="#340">340</a></td></tr
  900. ><tr id="gr_svn7768_341"
  901. ><td id="341"><a href="#341">341</a></td></tr
  902. ><tr id="gr_svn7768_342"
  903. ><td id="342"><a href="#342">342</a></td></tr
  904. ><tr id="gr_svn7768_343"
  905. ><td id="343"><a href="#343">343</a></td></tr
  906. ><tr id="gr_svn7768_344"
  907. ><td id="344"><a href="#344">344</a></td></tr
  908. ><tr id="gr_svn7768_345"
  909. ><td id="345"><a href="#345">345</a></td></tr
  910. ><tr id="gr_svn7768_346"
  911. ><td id="346"><a href="#346">346</a></td></tr
  912. ><tr id="gr_svn7768_347"
  913. ><td id="347"><a href="#347">347</a></td></tr
  914. ><tr id="gr_svn7768_348"
  915. ><td id="348"><a href="#348">348</a></td></tr
  916. ><tr id="gr_svn7768_349"
  917. ><td id="349"><a href="#349">349</a></td></tr
  918. ><tr id="gr_svn7768_350"
  919. ><td id="350"><a href="#350">350</a></td></tr
  920. ><tr id="gr_svn7768_351"
  921. ><td id="351"><a href="#351">351</a></td></tr
  922. ><tr id="gr_svn7768_352"
  923. ><td id="352"><a href="#352">352</a></td></tr
  924. ><tr id="gr_svn7768_353"
  925. ><td id="353"><a href="#353">353</a></td></tr
  926. ><tr id="gr_svn7768_354"
  927. ><td id="354"><a href="#354">354</a></td></tr
  928. ><tr id="gr_svn7768_355"
  929. ><td id="355"><a href="#355">355</a></td></tr
  930. ><tr id="gr_svn7768_356"
  931. ><td id="356"><a href="#356">356</a></td></tr
  932. ><tr id="gr_svn7768_357"
  933. ><td id="357"><a href="#357">357</a></td></tr
  934. ><tr id="gr_svn7768_358"
  935. ><td id="358"><a href="#358">358</a></td></tr
  936. ><tr id="gr_svn7768_359"
  937. ><td id="359"><a href="#359">359</a></td></tr
  938. ><tr id="gr_svn7768_360"
  939. ><td id="360"><a href="#360">360</a></td></tr
  940. ><tr id="gr_svn7768_361"
  941. ><td id="361"><a href="#361">361</a></td></tr
  942. ><tr id="gr_svn7768_362"
  943. ><td id="362"><a href="#362">362</a></td></tr
  944. ><tr id="gr_svn7768_363"
  945. ><td id="363"><a href="#363">363</a></td></tr
  946. ><tr id="gr_svn7768_364"
  947. ><td id="364"><a href="#364">364</a></td></tr
  948. ><tr id="gr_svn7768_365"
  949. ><td id="365"><a href="#365">365</a></td></tr
  950. ><tr id="gr_svn7768_366"
  951. ><td id="366"><a href="#366">366</a></td></tr
  952. ><tr id="gr_svn7768_367"
  953. ><td id="367"><a href="#367">367</a></td></tr
  954. ><tr id="gr_svn7768_368"
  955. ><td id="368"><a href="#368">368</a></td></tr
  956. ><tr id="gr_svn7768_369"
  957. ><td id="369"><a href="#369">369</a></td></tr
  958. ><tr id="gr_svn7768_370"
  959. ><td id="370"><a href="#370">370</a></td></tr
  960. ><tr id="gr_svn7768_371"
  961. ><td id="371"><a href="#371">371</a></td></tr
  962. ><tr id="gr_svn7768_372"
  963. ><td id="372"><a href="#372">372</a></td></tr
  964. ><tr id="gr_svn7768_373"
  965. ><td id="373"><a href="#373">373</a></td></tr
  966. ><tr id="gr_svn7768_374"
  967. ><td id="374"><a href="#374">374</a></td></tr
  968. ><tr id="gr_svn7768_375"
  969. ><td id="375"><a href="#375">375</a></td></tr
  970. ><tr id="gr_svn7768_376"
  971. ><td id="376"><a href="#376">376</a></td></tr
  972. ><tr id="gr_svn7768_377"
  973. ><td id="377"><a href="#377">377</a></td></tr
  974. ><tr id="gr_svn7768_378"
  975. ><td id="378"><a href="#378">378</a></td></tr
  976. ><tr id="gr_svn7768_379"
  977. ><td id="379"><a href="#379">379</a></td></tr
  978. ><tr id="gr_svn7768_380"
  979. ><td id="380"><a href="#380">380</a></td></tr
  980. ><tr id="gr_svn7768_381"
  981. ><td id="381"><a href="#381">381</a></td></tr
  982. ><tr id="gr_svn7768_382"
  983. ><td id="382"><a href="#382">382</a></td></tr
  984. ><tr id="gr_svn7768_383"
  985. ><td id="383"><a href="#383">383</a></td></tr
  986. ><tr id="gr_svn7768_384"
  987. ><td id="384"><a href="#384">384</a></td></tr
  988. ><tr id="gr_svn7768_385"
  989. ><td id="385"><a href="#385">385</a></td></tr
  990. ><tr id="gr_svn7768_386"
  991. ><td id="386"><a href="#386">386</a></td></tr
  992. ><tr id="gr_svn7768_387"
  993. ><td id="387"><a href="#387">387</a></td></tr
  994. ><tr id="gr_svn7768_388"
  995. ><td id="388"><a href="#388">388</a></td></tr
  996. ><tr id="gr_svn7768_389"
  997. ><td id="389"><a href="#389">389</a></td></tr
  998. ><tr id="gr_svn7768_390"
  999. ><td id="390"><a href="#390">390</a></td></tr
  1000. ><tr id="gr_svn7768_391"
  1001. ><td id="391"><a href="#391">391</a></td></tr
  1002. ><tr id="gr_svn7768_392"
  1003. ><td id="392"><a href="#392">392</a></td></tr
  1004. ><tr id="gr_svn7768_393"
  1005. ><td id="393"><a href="#393">393</a></td></tr
  1006. ><tr id="gr_svn7768_394"
  1007. ><td id="394"><a href="#394">394</a></td></tr
  1008. ><tr id="gr_svn7768_395"
  1009. ><td id="395"><a href="#395">395</a></td></tr
  1010. ><tr id="gr_svn7768_396"
  1011. ><td id="396"><a href="#396">396</a></td></tr
  1012. ><tr id="gr_svn7768_397"
  1013. ><td id="397"><a href="#397">397</a></td></tr
  1014. ><tr id="gr_svn7768_398"
  1015. ><td id="398"><a href="#398">398</a></td></tr
  1016. ><tr id="gr_svn7768_399"
  1017. ><td id="399"><a href="#399">399</a></td></tr
  1018. ><tr id="gr_svn7768_400"
  1019. ><td id="400"><a href="#400">400</a></td></tr
  1020. ><tr id="gr_svn7768_401"
  1021. ><td id="401"><a href="#401">401</a></td></tr
  1022. ><tr id="gr_svn7768_402"
  1023. ><td id="402"><a href="#402">402</a></td></tr
  1024. ><tr id="gr_svn7768_403"
  1025. ><td id="403"><a href="#403">403</a></td></tr
  1026. ><tr id="gr_svn7768_404"
  1027. ><td id="404"><a href="#404">404</a></td></tr
  1028. ><tr id="gr_svn7768_405"
  1029. ><td id="405"><a href="#405">405</a></td></tr
  1030. ><tr id="gr_svn7768_406"
  1031. ><td id="406"><a href="#406">406</a></td></tr
  1032. ><tr id="gr_svn7768_407"
  1033. ><td id="407"><a href="#407">407</a></td></tr
  1034. ><tr id="gr_svn7768_408"
  1035. ><td id="408"><a href="#408">408</a></td></tr
  1036. ><tr id="gr_svn7768_409"
  1037. ><td id="409"><a href="#409">409</a></td></tr
  1038. ><tr id="gr_svn7768_410"
  1039. ><td id="410"><a href="#410">410</a></td></tr
  1040. ><tr id="gr_svn7768_411"
  1041. ><td id="411"><a href="#411">411</a></td></tr
  1042. ><tr id="gr_svn7768_412"
  1043. ><td id="412"><a href="#412">412</a></td></tr
  1044. ><tr id="gr_svn7768_413"
  1045. ><td id="413"><a href="#413">413</a></td></tr
  1046. ><tr id="gr_svn7768_414"
  1047. ><td id="414"><a href="#414">414</a></td></tr
  1048. ><tr id="gr_svn7768_415"
  1049. ><td id="415"><a href="#415">415</a></td></tr
  1050. ><tr id="gr_svn7768_416"
  1051. ><td id="416"><a href="#416">416</a></td></tr
  1052. ><tr id="gr_svn7768_417"
  1053. ><td id="417"><a href="#417">417</a></td></tr
  1054. ><tr id="gr_svn7768_418"
  1055. ><td id="418"><a href="#418">418</a></td></tr
  1056. ><tr id="gr_svn7768_419"
  1057. ><td id="419"><a href="#419">419</a></td></tr
  1058. ><tr id="gr_svn7768_420"
  1059. ><td id="420"><a href="#420">420</a></td></tr
  1060. ><tr id="gr_svn7768_421"
  1061. ><td id="421"><a href="#421">421</a></td></tr
  1062. ><tr id="gr_svn7768_422"
  1063. ><td id="422"><a href="#422">422</a></td></tr
  1064. ><tr id="gr_svn7768_423"
  1065. ><td id="423"><a href="#423">423</a></td></tr
  1066. ><tr id="gr_svn7768_424"
  1067. ><td id="424"><a href="#424">424</a></td></tr
  1068. ><tr id="gr_svn7768_425"
  1069. ><td id="425"><a href="#425">425</a></td></tr
  1070. ><tr id="gr_svn7768_426"
  1071. ><td id="426"><a href="#426">426</a></td></tr
  1072. ><tr id="gr_svn7768_427"
  1073. ><td id="427"><a href="#427">427</a></td></tr
  1074. ><tr id="gr_svn7768_428"
  1075. ><td id="428"><a href="#428">428</a></td></tr
  1076. ><tr id="gr_svn7768_429"
  1077. ><td id="429"><a href="#429">429</a></td></tr
  1078. ><tr id="gr_svn7768_430"
  1079. ><td id="430"><a href="#430">430</a></td></tr
  1080. ><tr id="gr_svn7768_431"
  1081. ><td id="431"><a href="#431">431</a></td></tr
  1082. ><tr id="gr_svn7768_432"
  1083. ><td id="432"><a href="#432">432</a></td></tr
  1084. ><tr id="gr_svn7768_433"
  1085. ><td id="433"><a href="#433">433</a></td></tr
  1086. ><tr id="gr_svn7768_434"
  1087. ><td id="434"><a href="#434">434</a></td></tr
  1088. ><tr id="gr_svn7768_435"
  1089. ><td id="435"><a href="#435">435</a></td></tr
  1090. ><tr id="gr_svn7768_436"
  1091. ><td id="436"><a href="#436">436</a></td></tr
  1092. ><tr id="gr_svn7768_437"
  1093. ><td id="437"><a href="#437">437</a></td></tr
  1094. ><tr id="gr_svn7768_438"
  1095. ><td id="438"><a href="#438">438</a></td></tr
  1096. ><tr id="gr_svn7768_439"
  1097. ><td id="439"><a href="#439">439</a></td></tr
  1098. ><tr id="gr_svn7768_440"
  1099. ><td id="440"><a href="#440">440</a></td></tr
  1100. ><tr id="gr_svn7768_441"
  1101. ><td id="441"><a href="#441">441</a></td></tr
  1102. ><tr id="gr_svn7768_442"
  1103. ><td id="442"><a href="#442">442</a></td></tr
  1104. ><tr id="gr_svn7768_443"
  1105. ><td id="443"><a href="#443">443</a></td></tr
  1106. ><tr id="gr_svn7768_444"
  1107. ><td id="444"><a href="#444">444</a></td></tr
  1108. ><tr id="gr_svn7768_445"
  1109. ><td id="445"><a href="#445">445</a></td></tr
  1110. ><tr id="gr_svn7768_446"
  1111. ><td id="446"><a href="#446">446</a></td></tr
  1112. ><tr id="gr_svn7768_447"
  1113. ><td id="447"><a href="#447">447</a></td></tr
  1114. ><tr id="gr_svn7768_448"
  1115. ><td id="448"><a href="#448">448</a></td></tr
  1116. ><tr id="gr_svn7768_449"
  1117. ><td id="449"><a href="#449">449</a></td></tr
  1118. ><tr id="gr_svn7768_450"
  1119. ><td id="450"><a href="#450">450</a></td></tr
  1120. ><tr id="gr_svn7768_451"
  1121. ><td id="451"><a href="#451">451</a></td></tr
  1122. ><tr id="gr_svn7768_452"
  1123. ><td id="452"><a href="#452">452</a></td></tr
  1124. ><tr id="gr_svn7768_453"
  1125. ><td id="453"><a href="#453">453</a></td></tr
  1126. ><tr id="gr_svn7768_454"
  1127. ><td id="454"><a href="#454">454</a></td></tr
  1128. ><tr id="gr_svn7768_455"
  1129. ><td id="455"><a href="#455">455</a></td></tr
  1130. ><tr id="gr_svn7768_456"
  1131. ><td id="456"><a href="#456">456</a></td></tr
  1132. ><tr id="gr_svn7768_457"
  1133. ><td id="457"><a href="#457">457</a></td></tr
  1134. ><tr id="gr_svn7768_458"
  1135. ><td id="458"><a href="#458">458</a></td></tr
  1136. ><tr id="gr_svn7768_459"
  1137. ><td id="459"><a href="#459">459</a></td></tr
  1138. ><tr id="gr_svn7768_460"
  1139. ><td id="460"><a href="#460">460</a></td></tr
  1140. ><tr id="gr_svn7768_461"
  1141. ><td id="461"><a href="#461">461</a></td></tr
  1142. ><tr id="gr_svn7768_462"
  1143. ><td id="462"><a href="#462">462</a></td></tr
  1144. ><tr id="gr_svn7768_463"
  1145. ><td id="463"><a href="#463">463</a></td></tr
  1146. ><tr id="gr_svn7768_464"
  1147. ><td id="464"><a href="#464">464</a></td></tr
  1148. ><tr id="gr_svn7768_465"
  1149. ><td id="465"><a href="#465">465</a></td></tr
  1150. ><tr id="gr_svn7768_466"
  1151. ><td id="466"><a href="#466">466</a></td></tr
  1152. ><tr id="gr_svn7768_467"
  1153. ><td id="467"><a href="#467">467</a></td></tr
  1154. ><tr id="gr_svn7768_468"
  1155. ><td id="468"><a href="#468">468</a></td></tr
  1156. ><tr id="gr_svn7768_469"
  1157. ><td id="469"><a href="#469">469</a></td></tr
  1158. ><tr id="gr_svn7768_470"
  1159. ><td id="470"><a href="#470">470</a></td></tr
  1160. ><tr id="gr_svn7768_471"
  1161. ><td id="471"><a href="#471">471</a></td></tr
  1162. ><tr id="gr_svn7768_472"
  1163. ><td id="472"><a href="#472">472</a></td></tr
  1164. ><tr id="gr_svn7768_473"
  1165. ><td id="473"><a href="#473">473</a></td></tr
  1166. ><tr id="gr_svn7768_474"
  1167. ><td id="474"><a href="#474">474</a></td></tr
  1168. ><tr id="gr_svn7768_475"
  1169. ><td id="475"><a href="#475">475</a></td></tr
  1170. ><tr id="gr_svn7768_476"
  1171. ><td id="476"><a href="#476">476</a></td></tr
  1172. ><tr id="gr_svn7768_477"
  1173. ><td id="477"><a href="#477">477</a></td></tr
  1174. ><tr id="gr_svn7768_478"
  1175. ><td id="478"><a href="#478">478</a></td></tr
  1176. ><tr id="gr_svn7768_479"
  1177. ><td id="479"><a href="#479">479</a></td></tr
  1178. ><tr id="gr_svn7768_480"
  1179. ><td id="480"><a href="#480">480</a></td></tr
  1180. ><tr id="gr_svn7768_481"
  1181. ><td id="481"><a href="#481">481</a></td></tr
  1182. ><tr id="gr_svn7768_482"
  1183. ><td id="482"><a href="#482">482</a></td></tr
  1184. ><tr id="gr_svn7768_483"
  1185. ><td id="483"><a href="#483">483</a></td></tr
  1186. ><tr id="gr_svn7768_484"
  1187. ><td id="484"><a href="#484">484</a></td></tr
  1188. ><tr id="gr_svn7768_485"
  1189. ><td id="485"><a href="#485">485</a></td></tr
  1190. ><tr id="gr_svn7768_486"
  1191. ><td id="486"><a href="#486">486</a></td></tr
  1192. ><tr id="gr_svn7768_487"
  1193. ><td id="487"><a href="#487">487</a></td></tr
  1194. ><tr id="gr_svn7768_488"
  1195. ><td id="488"><a href="#488">488</a></td></tr
  1196. ><tr id="gr_svn7768_489"
  1197. ><td id="489"><a href="#489">489</a></td></tr
  1198. ><tr id="gr_svn7768_490"
  1199. ><td id="490"><a href="#490">490</a></td></tr
  1200. ><tr id="gr_svn7768_491"
  1201. ><td id="491"><a href="#491">491</a></td></tr
  1202. ><tr id="gr_svn7768_492"
  1203. ><td id="492"><a href="#492">492</a></td></tr
  1204. ><tr id="gr_svn7768_493"
  1205. ><td id="493"><a href="#493">493</a></td></tr
  1206. ><tr id="gr_svn7768_494"
  1207. ><td id="494"><a href="#494">494</a></td></tr
  1208. ><tr id="gr_svn7768_495"
  1209. ><td id="495"><a href="#495">495</a></td></tr
  1210. ><tr id="gr_svn7768_496"
  1211. ><td id="496"><a href="#496">496</a></td></tr
  1212. ><tr id="gr_svn7768_497"
  1213. ><td id="497"><a href="#497">497</a></td></tr
  1214. ><tr id="gr_svn7768_498"
  1215. ><td id="498"><a href="#498">498</a></td></tr
  1216. ><tr id="gr_svn7768_499"
  1217. ><td id="499"><a href="#499">499</a></td></tr
  1218. ><tr id="gr_svn7768_500"
  1219. ><td id="500"><a href="#500">500</a></td></tr
  1220. ><tr id="gr_svn7768_501"
  1221. ><td id="501"><a href="#501">501</a></td></tr
  1222. ><tr id="gr_svn7768_502"
  1223. ><td id="502"><a href="#502">502</a></td></tr
  1224. ><tr id="gr_svn7768_503"
  1225. ><td id="503"><a href="#503">503</a></td></tr
  1226. ><tr id="gr_svn7768_504"
  1227. ><td id="504"><a href="#504">504</a></td></tr
  1228. ><tr id="gr_svn7768_505"
  1229. ><td id="505"><a href="#505">505</a></td></tr
  1230. ><tr id="gr_svn7768_506"
  1231. ><td id="506"><a href="#506">506</a></td></tr
  1232. ><tr id="gr_svn7768_507"
  1233. ><td id="507"><a href="#507">507</a></td></tr
  1234. ><tr id="gr_svn7768_508"
  1235. ><td id="508"><a href="#508">508</a></td></tr
  1236. ><tr id="gr_svn7768_509"
  1237. ><td id="509"><a href="#509">509</a></td></tr
  1238. ><tr id="gr_svn7768_510"
  1239. ><td id="510"><a href="#510">510</a></td></tr
  1240. ><tr id="gr_svn7768_511"
  1241. ><td id="511"><a href="#511">511</a></td></tr
  1242. ><tr id="gr_svn7768_512"
  1243. ><td id="512"><a href="#512">512</a></td></tr
  1244. ><tr id="gr_svn7768_513"
  1245. ><td id="513"><a href="#513">513</a></td></tr
  1246. ><tr id="gr_svn7768_514"
  1247. ><td id="514"><a href="#514">514</a></td></tr
  1248. ><tr id="gr_svn7768_515"
  1249. ><td id="515"><a href="#515">515</a></td></tr
  1250. ><tr id="gr_svn7768_516"
  1251. ><td id="516"><a href="#516">516</a></td></tr
  1252. ><tr id="gr_svn7768_517"
  1253. ><td id="517"><a href="#517">517</a></td></tr
  1254. ><tr id="gr_svn7768_518"
  1255. ><td id="518"><a href="#518">518</a></td></tr
  1256. ><tr id="gr_svn7768_519"
  1257. ><td id="519"><a href="#519">519</a></td></tr
  1258. ><tr id="gr_svn7768_520"
  1259. ><td id="520"><a href="#520">520</a></td></tr
  1260. ><tr id="gr_svn7768_521"
  1261. ><td id="521"><a href="#521">521</a></td></tr
  1262. ><tr id="gr_svn7768_522"
  1263. ><td id="522"><a href="#522">522</a></td></tr
  1264. ><tr id="gr_svn7768_523"
  1265. ><td id="523"><a href="#523">523</a></td></tr
  1266. ><tr id="gr_svn7768_524"
  1267. ><td id="524"><a href="#524">524</a></td></tr
  1268. ><tr id="gr_svn7768_525"
  1269. ><td id="525"><a href="#525">525</a></td></tr
  1270. ><tr id="gr_svn7768_526"
  1271. ><td id="526"><a href="#526">526</a></td></tr
  1272. ><tr id="gr_svn7768_527"
  1273. ><td id="527"><a href="#527">527</a></td></tr
  1274. ><tr id="gr_svn7768_528"
  1275. ><td id="528"><a href="#528">528</a></td></tr
  1276. ><tr id="gr_svn7768_529"
  1277. ><td id="529"><a href="#529">529</a></td></tr
  1278. ><tr id="gr_svn7768_530"
  1279. ><td id="530"><a href="#530">530</a></td></tr
  1280. ><tr id="gr_svn7768_531"
  1281. ><td id="531"><a href="#531">531</a></td></tr
  1282. ><tr id="gr_svn7768_532"
  1283. ><td id="532"><a href="#532">532</a></td></tr
  1284. ><tr id="gr_svn7768_533"
  1285. ><td id="533"><a href="#533">533</a></td></tr
  1286. ><tr id="gr_svn7768_534"
  1287. ><td id="534"><a href="#534">534</a></td></tr
  1288. ><tr id="gr_svn7768_535"
  1289. ><td id="535"><a href="#535">535</a></td></tr
  1290. ><tr id="gr_svn7768_536"
  1291. ><td id="536"><a href="#536">536</a></td></tr
  1292. ><tr id="gr_svn7768_537"
  1293. ><td id="537"><a href="#537">537</a></td></tr
  1294. ><tr id="gr_svn7768_538"
  1295. ><td id="538"><a href="#538">538</a></td></tr
  1296. ><tr id="gr_svn7768_539"
  1297. ><td id="539"><a href="#539">539</a></td></tr
  1298. ><tr id="gr_svn7768_540"
  1299. ><td id="540"><a href="#540">540</a></td></tr
  1300. ><tr id="gr_svn7768_541"
  1301. ><td id="541"><a href="#541">541</a></td></tr
  1302. ><tr id="gr_svn7768_542"
  1303. ><td id="542"><a href="#542">542</a></td></tr
  1304. ><tr id="gr_svn7768_543"
  1305. ><td id="543"><a href="#543">543</a></td></tr
  1306. ><tr id="gr_svn7768_544"
  1307. ><td id="544"><a href="#544">544</a></td></tr
  1308. ><tr id="gr_svn7768_545"
  1309. ><td id="545"><a href="#545">545</a></td></tr
  1310. ><tr id="gr_svn7768_546"
  1311. ><td id="546"><a href="#546">546</a></td></tr
  1312. ><tr id="gr_svn7768_547"
  1313. ><td id="547"><a href="#547">547</a></td></tr
  1314. ><tr id="gr_svn7768_548"
  1315. ><td id="548"><a href="#548">548</a></td></tr
  1316. ><tr id="gr_svn7768_549"
  1317. ><td id="549"><a href="#549">549</a></td></tr
  1318. ><tr id="gr_svn7768_550"
  1319. ><td id="550"><a href="#550">550</a></td></tr
  1320. ><tr id="gr_svn7768_551"
  1321. ><td id="551"><a href="#551">551</a></td></tr
  1322. ><tr id="gr_svn7768_552"
  1323. ><td id="552"><a href="#552">552</a></td></tr
  1324. ><tr id="gr_svn7768_553"
  1325. ><td id="553"><a href="#553">553</a></td></tr
  1326. ><tr id="gr_svn7768_554"
  1327. ><td id="554"><a href="#554">554</a></td></tr
  1328. ><tr id="gr_svn7768_555"
  1329. ><td id="555"><a href="#555">555</a></td></tr
  1330. ><tr id="gr_svn7768_556"
  1331. ><td id="556"><a href="#556">556</a></td></tr
  1332. ><tr id="gr_svn7768_557"
  1333. ><td id="557"><a href="#557">557</a></td></tr
  1334. ><tr id="gr_svn7768_558"
  1335. ><td id="558"><a href="#558">558</a></td></tr
  1336. ><tr id="gr_svn7768_559"
  1337. ><td id="559"><a href="#559">559</a></td></tr
  1338. ><tr id="gr_svn7768_560"
  1339. ><td id="560"><a href="#560">560</a></td></tr
  1340. ><tr id="gr_svn7768_561"
  1341. ><td id="561"><a href="#561">561</a></td></tr
  1342. ><tr id="gr_svn7768_562"
  1343. ><td id="562"><a href="#562">562</a></td></tr
  1344. ><tr id="gr_svn7768_563"
  1345. ><td id="563"><a href="#563">563</a></td></tr
  1346. ><tr id="gr_svn7768_564"
  1347. ><td id="564"><a href="#564">564</a></td></tr
  1348. ><tr id="gr_svn7768_565"
  1349. ><td id="565"><a href="#565">565</a></td></tr
  1350. ><tr id="gr_svn7768_566"
  1351. ><td id="566"><a href="#566">566</a></td></tr
  1352. ><tr id="gr_svn7768_567"
  1353. ><td id="567"><a href="#567">567</a></td></tr
  1354. ><tr id="gr_svn7768_568"
  1355. ><td id="568"><a href="#568">568</a></td></tr
  1356. ><tr id="gr_svn7768_569"
  1357. ><td id="569"><a href="#569">569</a></td></tr
  1358. ><tr id="gr_svn7768_570"
  1359. ><td id="570"><a href="#570">570</a></td></tr
  1360. ><tr id="gr_svn7768_571"
  1361. ><td id="571"><a href="#571">571</a></td></tr
  1362. ><tr id="gr_svn7768_572"
  1363. ><td id="572"><a href="#572">572</a></td></tr
  1364. ><tr id="gr_svn7768_573"
  1365. ><td id="573"><a href="#573">573</a></td></tr
  1366. ><tr id="gr_svn7768_574"
  1367. ><td id="574"><a href="#574">574</a></td></tr
  1368. ><tr id="gr_svn7768_575"
  1369. ><td id="575"><a href="#575">575</a></td></tr
  1370. ><tr id="gr_svn7768_576"
  1371. ><td id="576"><a href="#576">576</a></td></tr
  1372. ><tr id="gr_svn7768_577"
  1373. ><td id="577"><a href="#577">577</a></td></tr
  1374. ><tr id="gr_svn7768_578"
  1375. ><td id="578"><a href="#578">578</a></td></tr
  1376. ><tr id="gr_svn7768_579"
  1377. ><td id="579"><a href="#579">579</a></td></tr
  1378. ><tr id="gr_svn7768_580"
  1379. ><td id="580"><a href="#580">580</a></td></tr
  1380. ><tr id="gr_svn7768_581"
  1381. ><td id="581"><a href="#581">581</a></td></tr
  1382. ><tr id="gr_svn7768_582"
  1383. ><td id="582"><a href="#582">582</a></td></tr
  1384. ><tr id="gr_svn7768_583"
  1385. ><td id="583"><a href="#583">583</a></td></tr
  1386. ><tr id="gr_svn7768_584"
  1387. ><td id="584"><a href="#584">584</a></td></tr
  1388. ><tr id="gr_svn7768_585"
  1389. ><td id="585"><a href="#585">585</a></td></tr
  1390. ><tr id="gr_svn7768_586"
  1391. ><td id="586"><a href="#586">586</a></td></tr
  1392. ><tr id="gr_svn7768_587"
  1393. ><td id="587"><a href="#587">587</a></td></tr
  1394. ><tr id="gr_svn7768_588"
  1395. ><td id="588"><a href="#588">588</a></td></tr
  1396. ><tr id="gr_svn7768_589"
  1397. ><td id="589"><a href="#589">589</a></td></tr
  1398. ><tr id="gr_svn7768_590"
  1399. ><td id="590"><a href="#590">590</a></td></tr
  1400. ><tr id="gr_svn7768_591"
  1401. ><td id="591"><a href="#591">591</a></td></tr
  1402. ><tr id="gr_svn7768_592"
  1403. ><td id="592"><a href="#592">592</a></td></tr
  1404. ><tr id="gr_svn7768_593"
  1405. ><td id="593"><a href="#593">593</a></td></tr
  1406. ><tr id="gr_svn7768_594"
  1407. ><td id="594"><a href="#594">594</a></td></tr
  1408. ><tr id="gr_svn7768_595"
  1409. ><td id="595"><a href="#595">595</a></td></tr
  1410. ><tr id="gr_svn7768_596"
  1411. ><td id="596"><a href="#596">596</a></td></tr
  1412. ><tr id="gr_svn7768_597"
  1413. ><td id="597"><a href="#597">597</a></td></tr
  1414. ><tr id="gr_svn7768_598"
  1415. ><td id="598"><a href="#598">598</a></td></tr
  1416. ><tr id="gr_svn7768_599"
  1417. ><td id="599"><a href="#599">599</a></td></tr
  1418. ><tr id="gr_svn7768_600"
  1419. ><td id="600"><a href="#600">600</a></td></tr
  1420. ><tr id="gr_svn7768_601"
  1421. ><td id="601"><a href="#601">601</a></td></tr
  1422. ><tr id="gr_svn7768_602"
  1423. ><td id="602"><a href="#602">602</a></td></tr
  1424. ><tr id="gr_svn7768_603"
  1425. ><td id="603"><a href="#603">603</a></td></tr
  1426. ><tr id="gr_svn7768_604"
  1427. ><td id="604"><a href="#604">604</a></td></tr
  1428. ><tr id="gr_svn7768_605"
  1429. ><td id="605"><a href="#605">605</a></td></tr
  1430. ><tr id="gr_svn7768_606"
  1431. ><td id="606"><a href="#606">606</a></td></tr
  1432. ><tr id="gr_svn7768_607"
  1433. ><td id="607"><a href="#607">607</a></td></tr
  1434. ><tr id="gr_svn7768_608"
  1435. ><td id="608"><a href="#608">608</a></td></tr
  1436. ><tr id="gr_svn7768_609"
  1437. ><td id="609"><a href="#609">609</a></td></tr
  1438. ><tr id="gr_svn7768_610"
  1439. ><td id="610"><a href="#610">610</a></td></tr
  1440. ><tr id="gr_svn7768_611"
  1441. ><td id="611"><a href="#611">611</a></td></tr
  1442. ><tr id="gr_svn7768_612"
  1443. ><td id="612"><a href="#612">612</a></td></tr
  1444. ><tr id="gr_svn7768_613"
  1445. ><td id="613"><a href="#613">613</a></td></tr
  1446. ><tr id="gr_svn7768_614"
  1447. ><td id="614"><a href="#614">614</a></td></tr
  1448. ><tr id="gr_svn7768_615"
  1449. ><td id="615"><a href="#615">615</a></td></tr
  1450. ><tr id="gr_svn7768_616"
  1451. ><td id="616"><a href="#616">616</a></td></tr
  1452. ><tr id="gr_svn7768_617"
  1453. ><td id="617"><a href="#617">617</a></td></tr
  1454. ><tr id="gr_svn7768_618"
  1455. ><td id="618"><a href="#618">618</a></td></tr
  1456. ><tr id="gr_svn7768_619"
  1457. ><td id="619"><a href="#619">619</a></td></tr
  1458. ><tr id="gr_svn7768_620"
  1459. ><td id="620"><a href="#620">620</a></td></tr
  1460. ><tr id="gr_svn7768_621"
  1461. ><td id="621"><a href="#621">621</a></td></tr
  1462. ><tr id="gr_svn7768_622"
  1463. ><td id="622"><a href="#622">622</a></td></tr
  1464. ><tr id="gr_svn7768_623"
  1465. ><td id="623"><a href="#623">623</a></td></tr
  1466. ><tr id="gr_svn7768_624"
  1467. ><td id="624"><a href="#624">624</a></td></tr
  1468. ><tr id="gr_svn7768_625"
  1469. ><td id="625"><a href="#625">625</a></td></tr
  1470. ><tr id="gr_svn7768_626"
  1471. ><td id="626"><a href="#626">626</a></td></tr
  1472. ><tr id="gr_svn7768_627"
  1473. ><td id="627"><a href="#627">627</a></td></tr
  1474. ><tr id="gr_svn7768_628"
  1475. ><td id="628"><a href="#628">628</a></td></tr
  1476. ><tr id="gr_svn7768_629"
  1477. ><td id="629"><a href="#629">629</a></td></tr
  1478. ><tr id="gr_svn7768_630"
  1479. ><td id="630"><a href="#630">630</a></td></tr
  1480. ><tr id="gr_svn7768_631"
  1481. ><td id="631"><a href="#631">631</a></td></tr
  1482. ><tr id="gr_svn7768_632"
  1483. ><td id="632"><a href="#632">632</a></td></tr
  1484. ><tr id="gr_svn7768_633"
  1485. ><td id="633"><a href="#633">633</a></td></tr
  1486. ><tr id="gr_svn7768_634"
  1487. ><td id="634"><a href="#634">634</a></td></tr
  1488. ><tr id="gr_svn7768_635"
  1489. ><td id="635"><a href="#635">635</a></td></tr
  1490. ><tr id="gr_svn7768_636"
  1491. ><td id="636"><a href="#636">636</a></td></tr
  1492. ><tr id="gr_svn7768_637"
  1493. ><td id="637"><a href="#637">637</a></td></tr
  1494. ><tr id="gr_svn7768_638"
  1495. ><td id="638"><a href="#638">638</a></td></tr
  1496. ><tr id="gr_svn7768_639"
  1497. ><td id="639"><a href="#639">639</a></td></tr
  1498. ><tr id="gr_svn7768_640"
  1499. ><td id="640"><a href="#640">640</a></td></tr
  1500. ><tr id="gr_svn7768_641"
  1501. ><td id="641"><a href="#641">641</a></td></tr
  1502. ><tr id="gr_svn7768_642"
  1503. ><td id="642"><a href="#642">642</a></td></tr
  1504. ><tr id="gr_svn7768_643"
  1505. ><td id="643"><a href="#643">643</a></td></tr
  1506. ><tr id="gr_svn7768_644"
  1507. ><td id="644"><a href="#644">644</a></td></tr
  1508. ><tr id="gr_svn7768_645"
  1509. ><td id="645"><a href="#645">645</a></td></tr
  1510. ><tr id="gr_svn7768_646"
  1511. ><td id="646"><a href="#646">646</a></td></tr
  1512. ><tr id="gr_svn7768_647"
  1513. ><td id="647"><a href="#647">647</a></td></tr
  1514. ><tr id="gr_svn7768_648"
  1515. ><td id="648"><a href="#648">648</a></td></tr
  1516. ><tr id="gr_svn7768_649"
  1517. ><td id="649"><a href="#649">649</a></td></tr
  1518. ><tr id="gr_svn7768_650"
  1519. ><td id="650"><a href="#650">650</a></td></tr
  1520. ><tr id="gr_svn7768_651"
  1521. ><td id="651"><a href="#651">651</a></td></tr
  1522. ><tr id="gr_svn7768_652"
  1523. ><td id="652"><a href="#652">652</a></td></tr
  1524. ><tr id="gr_svn7768_653"
  1525. ><td id="653"><a href="#653">653</a></td></tr
  1526. ><tr id="gr_svn7768_654"
  1527. ><td id="654"><a href="#654">654</a></td></tr
  1528. ><tr id="gr_svn7768_655"
  1529. ><td id="655"><a href="#655">655</a></td></tr
  1530. ><tr id="gr_svn7768_656"
  1531. ><td id="656"><a href="#656">656</a></td></tr
  1532. ><tr id="gr_svn7768_657"
  1533. ><td id="657"><a href="#657">657</a></td></tr
  1534. ><tr id="gr_svn7768_658"
  1535. ><td id="658"><a href="#658">658</a></td></tr
  1536. ><tr id="gr_svn7768_659"
  1537. ><td id="659"><a href="#659">659</a></td></tr
  1538. ><tr id="gr_svn7768_660"
  1539. ><td id="660"><a href="#660">660</a></td></tr
  1540. ><tr id="gr_svn7768_661"
  1541. ><td id="661"><a href="#661">661</a></td></tr
  1542. ><tr id="gr_svn7768_662"
  1543. ><td id="662"><a href="#662">662</a></td></tr
  1544. ><tr id="gr_svn7768_663"
  1545. ><td id="663"><a href="#663">663</a></td></tr
  1546. ><tr id="gr_svn7768_664"
  1547. ><td id="664"><a href="#664">664</a></td></tr
  1548. ><tr id="gr_svn7768_665"
  1549. ><td id="665"><a href="#665">665</a></td></tr
  1550. ><tr id="gr_svn7768_666"
  1551. ><td id="666"><a href="#666">666</a></td></tr
  1552. ><tr id="gr_svn7768_667"
  1553. ><td id="667"><a href="#667">667</a></td></tr
  1554. ><tr id="gr_svn7768_668"
  1555. ><td id="668"><a href="#668">668</a></td></tr
  1556. ><tr id="gr_svn7768_669"
  1557. ><td id="669"><a href="#669">669</a></td></tr
  1558. ><tr id="gr_svn7768_670"
  1559. ><td id="670"><a href="#670">670</a></td></tr
  1560. ><tr id="gr_svn7768_671"
  1561. ><td id="671"><a href="#671">671</a></td></tr
  1562. ><tr id="gr_svn7768_672"
  1563. ><td id="672"><a href="#672">672</a></td></tr
  1564. ><tr id="gr_svn7768_673"
  1565. ><td id="673"><a href="#673">673</a></td></tr
  1566. ><tr id="gr_svn7768_674"
  1567. ><td id="674"><a href="#674">674</a></td></tr
  1568. ><tr id="gr_svn7768_675"
  1569. ><td id="675"><a href="#675">675</a></td></tr
  1570. ><tr id="gr_svn7768_676"
  1571. ><td id="676"><a href="#676">676</a></td></tr
  1572. ><tr id="gr_svn7768_677"
  1573. ><td id="677"><a href="#677">677</a></td></tr
  1574. ><tr id="gr_svn7768_678"
  1575. ><td id="678"><a href="#678">678</a></td></tr
  1576. ><tr id="gr_svn7768_679"
  1577. ><td id="679"><a href="#679">679</a></td></tr
  1578. ><tr id="gr_svn7768_680"
  1579. ><td id="680"><a href="#680">680</a></td></tr
  1580. ><tr id="gr_svn7768_681"
  1581. ><td id="681"><a href="#681">681</a></td></tr
  1582. ><tr id="gr_svn7768_682"
  1583. ><td id="682"><a href="#682">682</a></td></tr
  1584. ><tr id="gr_svn7768_683"
  1585. ><td id="683"><a href="#683">683</a></td></tr
  1586. ><tr id="gr_svn7768_684"
  1587. ><td id="684"><a href="#684">684</a></td></tr
  1588. ><tr id="gr_svn7768_685"
  1589. ><td id="685"><a href="#685">685</a></td></tr
  1590. ><tr id="gr_svn7768_686"
  1591. ><td id="686"><a href="#686">686</a></td></tr
  1592. ><tr id="gr_svn7768_687"
  1593. ><td id="687"><a href="#687">687</a></td></tr
  1594. ><tr id="gr_svn7768_688"
  1595. ><td id="688"><a href="#688">688</a></td></tr
  1596. ><tr id="gr_svn7768_689"
  1597. ><td id="689"><a href="#689">689</a></td></tr
  1598. ><tr id="gr_svn7768_690"
  1599. ><td id="690"><a href="#690">690</a></td></tr
  1600. ><tr id="gr_svn7768_691"
  1601. ><td id="691"><a href="#691">691</a></td></tr
  1602. ><tr id="gr_svn7768_692"
  1603. ><td id="692"><a href="#692">692</a></td></tr
  1604. ><tr id="gr_svn7768_693"
  1605. ><td id="693"><a href="#693">693</a></td></tr
  1606. ><tr id="gr_svn7768_694"
  1607. ><td id="694"><a href="#694">694</a></td></tr
  1608. ><tr id="gr_svn7768_695"
  1609. ><td id="695"><a href="#695">695</a></td></tr
  1610. ><tr id="gr_svn7768_696"
  1611. ><td id="696"><a href="#696">696</a></td></tr
  1612. ><tr id="gr_svn7768_697"
  1613. ><td id="697"><a href="#697">697</a></td></tr
  1614. ><tr id="gr_svn7768_698"
  1615. ><td id="698"><a href="#698">698</a></td></tr
  1616. ><tr id="gr_svn7768_699"
  1617. ><td id="699"><a href="#699">699</a></td></tr
  1618. ><tr id="gr_svn7768_700"
  1619. ><td id="700"><a href="#700">700</a></td></tr
  1620. ><tr id="gr_svn7768_701"
  1621. ><td id="701"><a href="#701">701</a></td></tr
  1622. ><tr id="gr_svn7768_702"
  1623. ><td id="702"><a href="#702">702</a></td></tr
  1624. ><tr id="gr_svn7768_703"
  1625. ><td id="703"><a href="#703">703</a></td></tr
  1626. ><tr id="gr_svn7768_704"
  1627. ><td id="704"><a href="#704">704</a></td></tr
  1628. ><tr id="gr_svn7768_705"
  1629. ><td id="705"><a href="#705">705</a></td></tr
  1630. ><tr id="gr_svn7768_706"
  1631. ><td id="706"><a href="#706">706</a></td></tr
  1632. ><tr id="gr_svn7768_707"
  1633. ><td id="707"><a href="#707">707</a></td></tr
  1634. ><tr id="gr_svn7768_708"
  1635. ><td id="708"><a href="#708">708</a></td></tr
  1636. ><tr id="gr_svn7768_709"
  1637. ><td id="709"><a href="#709">709</a></td></tr
  1638. ><tr id="gr_svn7768_710"
  1639. ><td id="710"><a href="#710">710</a></td></tr
  1640. ><tr id="gr_svn7768_711"
  1641. ><td id="711"><a href="#711">711</a></td></tr
  1642. ><tr id="gr_svn7768_712"
  1643. ><td id="712"><a href="#712">712</a></td></tr
  1644. ><tr id="gr_svn7768_713"
  1645. ><td id="713"><a href="#713">713</a></td></tr
  1646. ><tr id="gr_svn7768_714"
  1647. ><td id="714"><a href="#714">714</a></td></tr
  1648. ><tr id="gr_svn7768_715"
  1649. ><td id="715"><a href="#715">715</a></td></tr
  1650. ><tr id="gr_svn7768_716"
  1651. ><td id="716"><a href="#716">716</a></td></tr
  1652. ><tr id="gr_svn7768_717"
  1653. ><td id="717"><a href="#717">717</a></td></tr
  1654. ><tr id="gr_svn7768_718"
  1655. ><td id="718"><a href="#718">718</a></td></tr
  1656. ><tr id="gr_svn7768_719"
  1657. ><td id="719"><a href="#719">719</a></td></tr
  1658. ><tr id="gr_svn7768_720"
  1659. ><td id="720"><a href="#720">720</a></td></tr
  1660. ><tr id="gr_svn7768_721"
  1661. ><td id="721"><a href="#721">721</a></td></tr
  1662. ><tr id="gr_svn7768_722"
  1663. ><td id="722"><a href="#722">722</a></td></tr
  1664. ><tr id="gr_svn7768_723"
  1665. ><td id="723"><a href="#723">723</a></td></tr
  1666. ><tr id="gr_svn7768_724"
  1667. ><td id="724"><a href="#724">724</a></td></tr
  1668. ><tr id="gr_svn7768_725"
  1669. ><td id="725"><a href="#725">725</a></td></tr
  1670. ><tr id="gr_svn7768_726"
  1671. ><td id="726"><a href="#726">726</a></td></tr
  1672. ><tr id="gr_svn7768_727"
  1673. ><td id="727"><a href="#727">727</a></td></tr
  1674. ><tr id="gr_svn7768_728"
  1675. ><td id="728"><a href="#728">728</a></td></tr
  1676. ><tr id="gr_svn7768_729"
  1677. ><td id="729"><a href="#729">729</a></td></tr
  1678. ><tr id="gr_svn7768_730"
  1679. ><td id="730"><a href="#730">730</a></td></tr
  1680. ><tr id="gr_svn7768_731"
  1681. ><td id="731"><a href="#731">731</a></td></tr
  1682. ><tr id="gr_svn7768_732"
  1683. ><td id="732"><a href="#732">732</a></td></tr
  1684. ><tr id="gr_svn7768_733"
  1685. ><td id="733"><a href="#733">733</a></td></tr
  1686. ><tr id="gr_svn7768_734"
  1687. ><td id="734"><a href="#734">734</a></td></tr
  1688. ><tr id="gr_svn7768_735"
  1689. ><td id="735"><a href="#735">735</a></td></tr
  1690. ><tr id="gr_svn7768_736"
  1691. ><td id="736"><a href="#736">736</a></td></tr
  1692. ><tr id="gr_svn7768_737"
  1693. ><td id="737"><a href="#737">737</a></td></tr
  1694. ><tr id="gr_svn7768_738"
  1695. ><td id="738"><a href="#738">738</a></td></tr
  1696. ><tr id="gr_svn7768_739"
  1697. ><td id="739"><a href="#739">739</a></td></tr
  1698. ><tr id="gr_svn7768_740"
  1699. ><td id="740"><a href="#740">740</a></td></tr
  1700. ><tr id="gr_svn7768_741"
  1701. ><td id="741"><a href="#741">741</a></td></tr
  1702. ><tr id="gr_svn7768_742"
  1703. ><td id="742"><a href="#742">742</a></td></tr
  1704. ><tr id="gr_svn7768_743"
  1705. ><td id="743"><a href="#743">743</a></td></tr
  1706. ><tr id="gr_svn7768_744"
  1707. ><td id="744"><a href="#744">744</a></td></tr
  1708. ><tr id="gr_svn7768_745"
  1709. ><td id="745"><a href="#745">745</a></td></tr
  1710. ><tr id="gr_svn7768_746"
  1711. ><td id="746"><a href="#746">746</a></td></tr
  1712. ><tr id="gr_svn7768_747"
  1713. ><td id="747"><a href="#747">747</a></td></tr
  1714. ><tr id="gr_svn7768_748"
  1715. ><td id="748"><a href="#748">748</a></td></tr
  1716. ><tr id="gr_svn7768_749"
  1717. ><td id="749"><a href="#749">749</a></td></tr
  1718. ><tr id="gr_svn7768_750"
  1719. ><td id="750"><a href="#750">750</a></td></tr
  1720. ><tr id="gr_svn7768_751"
  1721. ><td id="751"><a href="#751">751</a></td></tr
  1722. ><tr id="gr_svn7768_752"
  1723. ><td id="752"><a href="#752">752</a></td></tr
  1724. ><tr id="gr_svn7768_753"
  1725. ><td id="753"><a href="#753">753</a></td></tr
  1726. ><tr id="gr_svn7768_754"
  1727. ><td id="754"><a href="#754">754</a></td></tr
  1728. ><tr id="gr_svn7768_755"
  1729. ><td id="755"><a href="#755">755</a></td></tr
  1730. ><tr id="gr_svn7768_756"
  1731. ><td id="756"><a href="#756">756</a></td></tr
  1732. ><tr id="gr_svn7768_757"
  1733. ><td id="757"><a href="#757">757</a></td></tr
  1734. ><tr id="gr_svn7768_758"
  1735. ><td id="758"><a href="#758">758</a></td></tr
  1736. ><tr id="gr_svn7768_759"
  1737. ><td id="759"><a href="#759">759</a></td></tr
  1738. ><tr id="gr_svn7768_760"
  1739. ><td id="760"><a href="#760">760</a></td></tr
  1740. ><tr id="gr_svn7768_761"
  1741. ><td id="761"><a href="#761">761</a></td></tr
  1742. ><tr id="gr_svn7768_762"
  1743. ><td id="762"><a href="#762">762</a></td></tr
  1744. ><tr id="gr_svn7768_763"
  1745. ><td id="763"><a href="#763">763</a></td></tr
  1746. ><tr id="gr_svn7768_764"
  1747. ><td id="764"><a href="#764">764</a></td></tr
  1748. ><tr id="gr_svn7768_765"
  1749. ><td id="765"><a href="#765">765</a></td></tr
  1750. ><tr id="gr_svn7768_766"
  1751. ><td id="766"><a href="#766">766</a></td></tr
  1752. ><tr id="gr_svn7768_767"
  1753. ><td id="767"><a href="#767">767</a></td></tr
  1754. ><tr id="gr_svn7768_768"
  1755. ><td id="768"><a href="#768">768</a></td></tr
  1756. ><tr id="gr_svn7768_769"
  1757. ><td id="769"><a href="#769">769</a></td></tr
  1758. ><tr id="gr_svn7768_770"
  1759. ><td id="770"><a href="#770">770</a></td></tr
  1760. ><tr id="gr_svn7768_771"
  1761. ><td id="771"><a href="#771">771</a></td></tr
  1762. ><tr id="gr_svn7768_772"
  1763. ><td id="772"><a href="#772">772</a></td></tr
  1764. ><tr id="gr_svn7768_773"
  1765. ><td id="773"><a href="#773">773</a></td></tr
  1766. ><tr id="gr_svn7768_774"
  1767. ><td id="774"><a href="#774">774</a></td></tr
  1768. ><tr id="gr_svn7768_775"
  1769. ><td id="775"><a href="#775">775</a></td></tr
  1770. ><tr id="gr_svn7768_776"
  1771. ><td id="776"><a href="#776">776</a></td></tr
  1772. ><tr id="gr_svn7768_777"
  1773. ><td id="777"><a href="#777">777</a></td></tr
  1774. ><tr id="gr_svn7768_778"
  1775. ><td id="778"><a href="#778">778</a></td></tr
  1776. ><tr id="gr_svn7768_779"
  1777. ><td id="779"><a href="#779">779</a></td></tr
  1778. ><tr id="gr_svn7768_780"
  1779. ><td id="780"><a href="#780">780</a></td></tr
  1780. ><tr id="gr_svn7768_781"
  1781. ><td id="781"><a href="#781">781</a></td></tr
  1782. ><tr id="gr_svn7768_782"
  1783. ><td id="782"><a href="#782">782</a></td></tr
  1784. ><tr id="gr_svn7768_783"
  1785. ><td id="783"><a href="#783">783</a></td></tr
  1786. ><tr id="gr_svn7768_784"
  1787. ><td id="784"><a href="#784">784</a></td></tr
  1788. ><tr id="gr_svn7768_785"
  1789. ><td id="785"><a href="#785">785</a></td></tr
  1790. ><tr id="gr_svn7768_786"
  1791. ><td id="786"><a href="#786">786</a></td></tr
  1792. ><tr id="gr_svn7768_787"
  1793. ><td id="787"><a href="#787">787</a></td></tr
  1794. ><tr id="gr_svn7768_788"
  1795. ><td id="788"><a href="#788">788</a></td></tr
  1796. ><tr id="gr_svn7768_789"
  1797. ><td id="789"><a href="#789">789</a></td></tr
  1798. ><tr id="gr_svn7768_790"
  1799. ><td id="790"><a href="#790">790</a></td></tr
  1800. ><tr id="gr_svn7768_791"
  1801. ><td id="791"><a href="#791">791</a></td></tr
  1802. ><tr id="gr_svn7768_792"
  1803. ><td id="792"><a href="#792">792</a></td></tr
  1804. ><tr id="gr_svn7768_793"
  1805. ><td id="793"><a href="#793">793</a></td></tr
  1806. ><tr id="gr_svn7768_794"
  1807. ><td id="794"><a href="#794">794</a></td></tr
  1808. ><tr id="gr_svn7768_795"
  1809. ><td id="795"><a href="#795">795</a></td></tr
  1810. ><tr id="gr_svn7768_796"
  1811. ><td id="796"><a href="#796">796</a></td></tr
  1812. ><tr id="gr_svn7768_797"
  1813. ><td id="797"><a href="#797">797</a></td></tr
  1814. ><tr id="gr_svn7768_798"
  1815. ><td id="798"><a href="#798">798</a></td></tr
  1816. ><tr id="gr_svn7768_799"
  1817. ><td id="799"><a href="#799">799</a></td></tr
  1818. ><tr id="gr_svn7768_800"
  1819. ><td id="800"><a href="#800">800</a></td></tr
  1820. ><tr id="gr_svn7768_801"
  1821. ><td id="801"><a href="#801">801</a></td></tr
  1822. ><tr id="gr_svn7768_802"
  1823. ><td id="802"><a href="#802">802</a></td></tr
  1824. ><tr id="gr_svn7768_803"
  1825. ><td id="803"><a href="#803">803</a></td></tr
  1826. ><tr id="gr_svn7768_804"
  1827. ><td id="804"><a href="#804">804</a></td></tr
  1828. ><tr id="gr_svn7768_805"
  1829. ><td id="805"><a href="#805">805</a></td></tr
  1830. ><tr id="gr_svn7768_806"
  1831. ><td id="806"><a href="#806">806</a></td></tr
  1832. ><tr id="gr_svn7768_807"
  1833. ><td id="807"><a href="#807">807</a></td></tr
  1834. ><tr id="gr_svn7768_808"
  1835. ><td id="808"><a href="#808">808</a></td></tr
  1836. ><tr id="gr_svn7768_809"
  1837. ><td id="809"><a href="#809">809</a></td></tr
  1838. ><tr id="gr_svn7768_810"
  1839. ><td id="810"><a href="#810">810</a></td></tr
  1840. ><tr id="gr_svn7768_811"
  1841. ><td id="811"><a href="#811">811</a></td></tr
  1842. ><tr id="gr_svn7768_812"
  1843. ><td id="812"><a href="#812">812</a></td></tr
  1844. ><tr id="gr_svn7768_813"
  1845. ><td id="813"><a href="#813">813</a></td></tr
  1846. ><tr id="gr_svn7768_814"
  1847. ><td id="814"><a href="#814">814</a></td></tr
  1848. ><tr id="gr_svn7768_815"
  1849. ><td id="815"><a href="#815">815</a></td></tr
  1850. ><tr id="gr_svn7768_816"
  1851. ><td id="816"><a href="#816">816</a></td></tr
  1852. ><tr id="gr_svn7768_817"
  1853. ><td id="817"><a href="#817">817</a></td></tr
  1854. ><tr id="gr_svn7768_818"
  1855. ><td id="818"><a href="#818">818</a></td></tr
  1856. ><tr id="gr_svn7768_819"
  1857. ><td id="819"><a href="#819">819</a></td></tr
  1858. ><tr id="gr_svn7768_820"
  1859. ><td id="820"><a href="#820">820</a></td></tr
  1860. ><tr id="gr_svn7768_821"
  1861. ><td id="821"><a href="#821">821</a></td></tr
  1862. ><tr id="gr_svn7768_822"
  1863. ><td id="822"><a href="#822">822</a></td></tr
  1864. ><tr id="gr_svn7768_823"
  1865. ><td id="823"><a href="#823">823</a></td></tr
  1866. ><tr id="gr_svn7768_824"
  1867. ><td id="824"><a href="#824">824</a></td></tr
  1868. ><tr id="gr_svn7768_825"
  1869. ><td id="825"><a href="#825">825</a></td></tr
  1870. ><tr id="gr_svn7768_826"
  1871. ><td id="826"><a href="#826">826</a></td></tr
  1872. ><tr id="gr_svn7768_827"
  1873. ><td id="827"><a href="#827">827</a></td></tr
  1874. ><tr id="gr_svn7768_828"
  1875. ><td id="828"><a href="#828">828</a></td></tr
  1876. ><tr id="gr_svn7768_829"
  1877. ><td id="829"><a href="#829">829</a></td></tr
  1878. ><tr id="gr_svn7768_830"
  1879. ><td id="830"><a href="#830">830</a></td></tr
  1880. ><tr id="gr_svn7768_831"
  1881. ><td id="831"><a href="#831">831</a></td></tr
  1882. ><tr id="gr_svn7768_832"
  1883. ><td id="832"><a href="#832">832</a></td></tr
  1884. ><tr id="gr_svn7768_833"
  1885. ><td id="833"><a href="#833">833</a></td></tr
  1886. ><tr id="gr_svn7768_834"
  1887. ><td id="834"><a href="#834">834</a></td></tr
  1888. ><tr id="gr_svn7768_835"
  1889. ><td id="835"><a href="#835">835</a></td></tr
  1890. ><tr id="gr_svn7768_836"
  1891. ><td id="836"><a href="#836">836</a></td></tr
  1892. ><tr id="gr_svn7768_837"
  1893. ><td id="837"><a href="#837">837</a></td></tr
  1894. ><tr id="gr_svn7768_838"
  1895. ><td id="838"><a href="#838">838</a></td></tr
  1896. ><tr id="gr_svn7768_839"
  1897. ><td id="839"><a href="#839">839</a></td></tr
  1898. ><tr id="gr_svn7768_840"
  1899. ><td id="840"><a href="#840">840</a></td></tr
  1900. ><tr id="gr_svn7768_841"
  1901. ><td id="841"><a href="#841">841</a></td></tr
  1902. ><tr id="gr_svn7768_842"
  1903. ><td id="842"><a href="#842">842</a></td></tr
  1904. ><tr id="gr_svn7768_843"
  1905. ><td id="843"><a href="#843">843</a></td></tr
  1906. ><tr id="gr_svn7768_844"
  1907. ><td id="844"><a href="#844">844</a></td></tr
  1908. ><tr id="gr_svn7768_845"
  1909. ><td id="845"><a href="#845">845</a></td></tr
  1910. ><tr id="gr_svn7768_846"
  1911. ><td id="846"><a href="#846">846</a></td></tr
  1912. ><tr id="gr_svn7768_847"
  1913. ><td id="847"><a href="#847">847</a></td></tr
  1914. ><tr id="gr_svn7768_848"
  1915. ><td id="848"><a href="#848">848</a></td></tr
  1916. ><tr id="gr_svn7768_849"
  1917. ><td id="849"><a href="#849">849</a></td></tr
  1918. ><tr id="gr_svn7768_850"
  1919. ><td id="850"><a href="#850">850</a></td></tr
  1920. ><tr id="gr_svn7768_851"
  1921. ><td id="851"><a href="#851">851</a></td></tr
  1922. ><tr id="gr_svn7768_852"
  1923. ><td id="852"><a href="#852">852</a></td></tr
  1924. ><tr id="gr_svn7768_853"
  1925. ><td id="853"><a href="#853">853</a></td></tr
  1926. ><tr id="gr_svn7768_854"
  1927. ><td id="854"><a href="#854">854</a></td></tr
  1928. ><tr id="gr_svn7768_855"
  1929. ><td id="855"><a href="#855">855</a></td></tr
  1930. ><tr id="gr_svn7768_856"
  1931. ><td id="856"><a href="#856">856</a></td></tr
  1932. ><tr id="gr_svn7768_857"
  1933. ><td id="857"><a href="#857">857</a></td></tr
  1934. ><tr id="gr_svn7768_858"
  1935. ><td id="858"><a href="#858">858</a></td></tr
  1936. ><tr id="gr_svn7768_859"
  1937. ><td id="859"><a href="#859">859</a></td></tr
  1938. ><tr id="gr_svn7768_860"
  1939. ><td id="860"><a href="#860">860</a></td></tr
  1940. ><tr id="gr_svn7768_861"
  1941. ><td id="861"><a href="#861">861</a></td></tr
  1942. ><tr id="gr_svn7768_862"
  1943. ><td id="862"><a href="#862">862</a></td></tr
  1944. ><tr id="gr_svn7768_863"
  1945. ><td id="863"><a href="#863">863</a></td></tr
  1946. ><tr id="gr_svn7768_864"
  1947. ><td id="864"><a href="#864">864</a></td></tr
  1948. ><tr id="gr_svn7768_865"
  1949. ><td id="865"><a href="#865">865</a></td></tr
  1950. ><tr id="gr_svn7768_866"
  1951. ><td id="866"><a href="#866">866</a></td></tr
  1952. ><tr id="gr_svn7768_867"
  1953. ><td id="867"><a href="#867">867</a></td></tr
  1954. ><tr id="gr_svn7768_868"
  1955. ><td id="868"><a href="#868">868</a></td></tr
  1956. ><tr id="gr_svn7768_869"
  1957. ><td id="869"><a href="#869">869</a></td></tr
  1958. ><tr id="gr_svn7768_870"
  1959. ><td id="870"><a href="#870">870</a></td></tr
  1960. ><tr id="gr_svn7768_871"
  1961. ><td id="871"><a href="#871">871</a></td></tr
  1962. ><tr id="gr_svn7768_872"
  1963. ><td id="872"><a href="#872">872</a></td></tr
  1964. ><tr id="gr_svn7768_873"
  1965. ><td id="873"><a href="#873">873</a></td></tr
  1966. ><tr id="gr_svn7768_874"
  1967. ><td id="874"><a href="#874">874</a></td></tr
  1968. ><tr id="gr_svn7768_875"
  1969. ><td id="875"><a href="#875">875</a></td></tr
  1970. ><tr id="gr_svn7768_876"
  1971. ><td id="876"><a href="#876">876</a></td></tr
  1972. ><tr id="gr_svn7768_877"
  1973. ><td id="877"><a href="#877">877</a></td></tr
  1974. ><tr id="gr_svn7768_878"
  1975. ><td id="878"><a href="#878">878</a></td></tr
  1976. ><tr id="gr_svn7768_879"
  1977. ><td id="879"><a href="#879">879</a></td></tr
  1978. ><tr id="gr_svn7768_880"
  1979. ><td id="880"><a href="#880">880</a></td></tr
  1980. ><tr id="gr_svn7768_881"
  1981. ><td id="881"><a href="#881">881</a></td></tr
  1982. ><tr id="gr_svn7768_882"
  1983. ><td id="882"><a href="#882">882</a></td></tr
  1984. ><tr id="gr_svn7768_883"
  1985. ><td id="883"><a href="#883">883</a></td></tr
  1986. ><tr id="gr_svn7768_884"
  1987. ><td id="884"><a href="#884">884</a></td></tr
  1988. ><tr id="gr_svn7768_885"
  1989. ><td id="885"><a href="#885">885</a></td></tr
  1990. ><tr id="gr_svn7768_886"
  1991. ><td id="886"><a href="#886">886</a></td></tr
  1992. ><tr id="gr_svn7768_887"
  1993. ><td id="887"><a href="#887">887</a></td></tr
  1994. ><tr id="gr_svn7768_888"
  1995. ><td id="888"><a href="#888">888</a></td></tr
  1996. ><tr id="gr_svn7768_889"
  1997. ><td id="889"><a href="#889">889</a></td></tr
  1998. ><tr id="gr_svn7768_890"
  1999. ><td id="890"><a href="#890">890</a></td></tr
  2000. ><tr id="gr_svn7768_891"
  2001. ><td id="891"><a href="#891">891</a></td></tr
  2002. ><tr id="gr_svn7768_892"
  2003. ><td id="892"><a href="#892">892</a></td></tr
  2004. ><tr id="gr_svn7768_893"
  2005. ><td id="893"><a href="#893">893</a></td></tr
  2006. ><tr id="gr_svn7768_894"
  2007. ><td id="894"><a href="#894">894</a></td></tr
  2008. ><tr id="gr_svn7768_895"
  2009. ><td id="895"><a href="#895">895</a></td></tr
  2010. ><tr id="gr_svn7768_896"
  2011. ><td id="896"><a href="#896">896</a></td></tr
  2012. ><tr id="gr_svn7768_897"
  2013. ><td id="897"><a href="#897">897</a></td></tr
  2014. ><tr id="gr_svn7768_898"
  2015. ><td id="898"><a href="#898">898</a></td></tr
  2016. ><tr id="gr_svn7768_899"
  2017. ><td id="899"><a href="#899">899</a></td></tr
  2018. ><tr id="gr_svn7768_900"
  2019. ><td id="900"><a href="#900">900</a></td></tr
  2020. ><tr id="gr_svn7768_901"
  2021. ><td id="901"><a href="#901">901</a></td></tr
  2022. ><tr id="gr_svn7768_902"
  2023. ><td id="902"><a href="#902">902</a></td></tr
  2024. ><tr id="gr_svn7768_903"
  2025. ><td id="903"><a href="#903">903</a></td></tr
  2026. ><tr id="gr_svn7768_904"
  2027. ><td id="904"><a href="#904">904</a></td></tr
  2028. ><tr id="gr_svn7768_905"
  2029. ><td id="905"><a href="#905">905</a></td></tr
  2030. ><tr id="gr_svn7768_906"
  2031. ><td id="906"><a href="#906">906</a></td></tr
  2032. ><tr id="gr_svn7768_907"
  2033. ><td id="907"><a href="#907">907</a></td></tr
  2034. ><tr id="gr_svn7768_908"
  2035. ><td id="908"><a href="#908">908</a></td></tr
  2036. ><tr id="gr_svn7768_909"
  2037. ><td id="909"><a href="#909">909</a></td></tr
  2038. ><tr id="gr_svn7768_910"
  2039. ><td id="910"><a href="#910">910</a></td></tr
  2040. ><tr id="gr_svn7768_911"
  2041. ><td id="911"><a href="#911">911</a></td></tr
  2042. ><tr id="gr_svn7768_912"
  2043. ><td id="912"><a href="#912">912</a></td></tr
  2044. ><tr id="gr_svn7768_913"
  2045. ><td id="913"><a href="#913">913</a></td></tr
  2046. ><tr id="gr_svn7768_914"
  2047. ><td id="914"><a href="#914">914</a></td></tr
  2048. ><tr id="gr_svn7768_915"
  2049. ><td id="915"><a href="#915">915</a></td></tr
  2050. ><tr id="gr_svn7768_916"
  2051. ><td id="916"><a href="#916">916</a></td></tr
  2052. ><tr id="gr_svn7768_917"
  2053. ><td id="917"><a href="#917">917</a></td></tr
  2054. ><tr id="gr_svn7768_918"
  2055. ><td id="918"><a href="#918">918</a></td></tr
  2056. ><tr id="gr_svn7768_919"
  2057. ><td id="919"><a href="#919">919</a></td></tr
  2058. ><tr id="gr_svn7768_920"
  2059. ><td id="920"><a href="#920">920</a></td></tr
  2060. ><tr id="gr_svn7768_921"
  2061. ><td id="921"><a href="#921">921</a></td></tr
  2062. ><tr id="gr_svn7768_922"
  2063. ><td id="922"><a href="#922">922</a></td></tr
  2064. ><tr id="gr_svn7768_923"
  2065. ><td id="923"><a href="#923">923</a></td></tr
  2066. ><tr id="gr_svn7768_924"
  2067. ><td id="924"><a href="#924">924</a></td></tr
  2068. ><tr id="gr_svn7768_925"
  2069. ><td id="925"><a href="#925">925</a></td></tr
  2070. ><tr id="gr_svn7768_926"
  2071. ><td id="926"><a href="#926">926</a></td></tr
  2072. ><tr id="gr_svn7768_927"
  2073. ><td id="927"><a href="#927">927</a></td></tr
  2074. ><tr id="gr_svn7768_928"
  2075. ><td id="928"><a href="#928">928</a></td></tr
  2076. ><tr id="gr_svn7768_929"
  2077. ><td id="929"><a href="#929">929</a></td></tr
  2078. ><tr id="gr_svn7768_930"
  2079. ><td id="930"><a href="#930">930</a></td></tr
  2080. ><tr id="gr_svn7768_931"
  2081. ><td id="931"><a href="#931">931</a></td></tr
  2082. ><tr id="gr_svn7768_932"
  2083. ><td id="932"><a href="#932">932</a></td></tr
  2084. ><tr id="gr_svn7768_933"
  2085. ><td id="933"><a href="#933">933</a></td></tr
  2086. ><tr id="gr_svn7768_934"
  2087. ><td id="934"><a href="#934">934</a></td></tr
  2088. ><tr id="gr_svn7768_935"
  2089. ><td id="935"><a href="#935">935</a></td></tr
  2090. ><tr id="gr_svn7768_936"
  2091. ><td id="936"><a href="#936">936</a></td></tr
  2092. ><tr id="gr_svn7768_937"
  2093. ><td id="937"><a href="#937">937</a></td></tr
  2094. ><tr id="gr_svn7768_938"
  2095. ><td id="938"><a href="#938">938</a></td></tr
  2096. ><tr id="gr_svn7768_939"
  2097. ><td id="939"><a href="#939">939</a></td></tr
  2098. ><tr id="gr_svn7768_940"
  2099. ><td id="940"><a href="#940">940</a></td></tr
  2100. ><tr id="gr_svn7768_941"
  2101. ><td id="941"><a href="#941">941</a></td></tr
  2102. ><tr id="gr_svn7768_942"
  2103. ><td id="942"><a href="#942">942</a></td></tr
  2104. ><tr id="gr_svn7768_943"
  2105. ><td id="943"><a href="#943">943</a></td></tr
  2106. ><tr id="gr_svn7768_944"
  2107. ><td id="944"><a href="#944">944</a></td></tr
  2108. ><tr id="gr_svn7768_945"
  2109. ><td id="945"><a href="#945">945</a></td></tr
  2110. ><tr id="gr_svn7768_946"
  2111. ><td id="946"><a href="#946">946</a></td></tr
  2112. ><tr id="gr_svn7768_947"
  2113. ><td id="947"><a href="#947">947</a></td></tr
  2114. ><tr id="gr_svn7768_948"
  2115. ><td id="948"><a href="#948">948</a></td></tr
  2116. ><tr id="gr_svn7768_949"
  2117. ><td id="949"><a href="#949">949</a></td></tr
  2118. ><tr id="gr_svn7768_950"
  2119. ><td id="950"><a href="#950">950</a></td></tr
  2120. ><tr id="gr_svn7768_951"
  2121. ><td id="951"><a href="#951">951</a></td></tr
  2122. ><tr id="gr_svn7768_952"
  2123. ><td id="952"><a href="#952">952</a></td></tr
  2124. ><tr id="gr_svn7768_953"
  2125. ><td id="953"><a href="#953">953</a></td></tr
  2126. ><tr id="gr_svn7768_954"
  2127. ><td id="954"><a href="#954">954</a></td></tr
  2128. ><tr id="gr_svn7768_955"
  2129. ><td id="955"><a href="#955">955</a></td></tr
  2130. ><tr id="gr_svn7768_956"
  2131. ><td id="956"><a href="#956">956</a></td></tr
  2132. ><tr id="gr_svn7768_957"
  2133. ><td id="957"><a href="#957">957</a></td></tr
  2134. ><tr id="gr_svn7768_958"
  2135. ><td id="958"><a href="#958">958</a></td></tr
  2136. ><tr id="gr_svn7768_959"
  2137. ><td id="959"><a href="#959">959</a></td></tr
  2138. ><tr id="gr_svn7768_960"
  2139. ><td id="960"><a href="#960">960</a></td></tr
  2140. ><tr id="gr_svn7768_961"
  2141. ><td id="961"><a href="#961">961</a></td></tr
  2142. ><tr id="gr_svn7768_962"
  2143. ><td id="962"><a href="#962">962</a></td></tr
  2144. ><tr id="gr_svn7768_963"
  2145. ><td id="963"><a href="#963">963</a></td></tr
  2146. ><tr id="gr_svn7768_964"
  2147. ><td id="964"><a href="#964">964</a></td></tr
  2148. ><tr id="gr_svn7768_965"
  2149. ><td id="965"><a href="#965">965</a></td></tr
  2150. ><tr id="gr_svn7768_966"
  2151. ><td id="966"><a href="#966">966</a></td></tr
  2152. ><tr id="gr_svn7768_967"
  2153. ><td id="967"><a href="#967">967</a></td></tr
  2154. ><tr id="gr_svn7768_968"
  2155. ><td id="968"><a href="#968">968</a></td></tr
  2156. ><tr id="gr_svn7768_969"
  2157. ><td id="969"><a href="#969">969</a></td></tr
  2158. ><tr id="gr_svn7768_970"
  2159. ><td id="970"><a href="#970">970</a></td></tr
  2160. ><tr id="gr_svn7768_971"
  2161. ><td id="971"><a href="#971">971</a></td></tr
  2162. ><tr id="gr_svn7768_972"
  2163. ><td id="972"><a href="#972">972</a></td></tr
  2164. ><tr id="gr_svn7768_973"
  2165. ><td id="973"><a href="#973">973</a></td></tr
  2166. ><tr id="gr_svn7768_974"
  2167. ><td id="974"><a href="#974">974</a></td></tr
  2168. ><tr id="gr_svn7768_975"
  2169. ><td id="975"><a href="#975">975</a></td></tr
  2170. ><tr id="gr_svn7768_976"
  2171. ><td id="976"><a href="#976">976</a></td></tr
  2172. ><tr id="gr_svn7768_977"
  2173. ><td id="977"><a href="#977">977</a></td></tr
  2174. ><tr id="gr_svn7768_978"
  2175. ><td id="978"><a href="#978">978</a></td></tr
  2176. ><tr id="gr_svn7768_979"
  2177. ><td id="979"><a href="#979">979</a></td></tr
  2178. ><tr id="gr_svn7768_980"
  2179. ><td id="980"><a href="#980">980</a></td></tr
  2180. ><tr id="gr_svn7768_981"
  2181. ><td id="981"><a href="#981">981</a></td></tr
  2182. ><tr id="gr_svn7768_982"
  2183. ><td id="982"><a href="#982">982</a></td></tr
  2184. ><tr id="gr_svn7768_983"
  2185. ><td id="983"><a href="#983">983</a></td></tr
  2186. ><tr id="gr_svn7768_984"
  2187. ><td id="984"><a href="#984">984</a></td></tr
  2188. ><tr id="gr_svn7768_985"
  2189. ><td id="985"><a href="#985">985</a></td></tr
  2190. ><tr id="gr_svn7768_986"
  2191. ><td id="986"><a href="#986">986</a></td></tr
  2192. ><tr id="gr_svn7768_987"
  2193. ><td id="987"><a href="#987">987</a></td></tr
  2194. ><tr id="gr_svn7768_988"
  2195. ><td id="988"><a href="#988">988</a></td></tr
  2196. ><tr id="gr_svn7768_989"
  2197. ><td id="989"><a href="#989">989</a></td></tr
  2198. ><tr id="gr_svn7768_990"
  2199. ><td id="990"><a href="#990">990</a></td></tr
  2200. ><tr id="gr_svn7768_991"
  2201. ><td id="991"><a href="#991">991</a></td></tr
  2202. ><tr id="gr_svn7768_992"
  2203. ><td id="992"><a href="#992">992</a></td></tr
  2204. ><tr id="gr_svn7768_993"
  2205. ><td id="993"><a href="#993">993</a></td></tr
  2206. ><tr id="gr_svn7768_994"
  2207. ><td id="994"><a href="#994">994</a></td></tr
  2208. ><tr id="gr_svn7768_995"
  2209. ><td id="995"><a href="#995">995</a></td></tr
  2210. ><tr id="gr_svn7768_996"
  2211. ><td id="996"><a href="#996">996</a></td></tr
  2212. ><tr id="gr_svn7768_997"
  2213. ><td id="997"><a href="#997">997</a></td></tr
  2214. ><tr id="gr_svn7768_998"
  2215. ><td id="998"><a href="#998">998</a></td></tr
  2216. ><tr id="gr_svn7768_999"
  2217. ><td id="999"><a href="#999">999</a></td></tr
  2218. ><tr id="gr_svn7768_1000"
  2219. ><td id="1000"><a href="#1000">1000</a></td></tr
  2220. ><tr id="gr_svn7768_1001"
  2221. ><td id="1001"><a href="#1001">1001</a></td></tr
  2222. ><tr id="gr_svn7768_1002"
  2223. ><td id="1002"><a href="#1002">1002</a></td></tr
  2224. ><tr id="gr_svn7768_1003"
  2225. ><td id="1003"><a href="#1003">1003</a></td></tr
  2226. ><tr id="gr_svn7768_1004"
  2227. ><td id="1004"><a href="#1004">1004</a></td></tr
  2228. ><tr id="gr_svn7768_1005"
  2229. ><td id="1005"><a href="#1005">1005</a></td></tr
  2230. ><tr id="gr_svn7768_1006"
  2231. ><td id="1006"><a href="#1006">1006</a></td></tr
  2232. ><tr id="gr_svn7768_1007"
  2233. ><td id="1007"><a href="#1007">1007</a></td></tr
  2234. ><tr id="gr_svn7768_1008"
  2235. ><td id="1008"><a href="#1008">1008</a></td></tr
  2236. ><tr id="gr_svn7768_1009"
  2237. ><td id="1009"><a href="#1009">1009</a></td></tr
  2238. ></table></pre>
  2239. <pre><table width="100%"><tr class="nocursor"><td></td></tr></table></pre>
  2240. </td>
  2241. <td id="lines">
  2242. <pre class="prettyprint"><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
  2243. <pre class="prettyprint lang-java"><table id="src_table_0"><tr
  2244. id=sl_svn7768_1
  2245. ><td class="source">/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */<br></td></tr
  2246. ><tr
  2247. id=sl_svn7768_2
  2248. ><td class="source"><br></td></tr
  2249. ><tr
  2250. id=sl_svn7768_3
  2251. ><td class="source">/*<br></td></tr
  2252. ><tr
  2253. id=sl_svn7768_4
  2254. ><td class="source"> Part of the Processing project - http://processing.org<br></td></tr
  2255. ><tr
  2256. id=sl_svn7768_5
  2257. ><td class="source"><br></td></tr
  2258. ><tr
  2259. id=sl_svn7768_6
  2260. ><td class="source"> Copyright (c) 2004-10 Ben Fry &amp; Casey Reas<br></td></tr
  2261. ><tr
  2262. id=sl_svn7768_7
  2263. ><td class="source"> Copyright (c) 2001-04 Massachusetts Institute of Technology<br></td></tr
  2264. ><tr
  2265. id=sl_svn7768_8
  2266. ><td class="source"><br></td></tr
  2267. ><tr
  2268. id=sl_svn7768_9
  2269. ><td class="source"> This library is free software; you can redistribute it and/or<br></td></tr
  2270. ><tr
  2271. id=sl_svn7768_10
  2272. ><td class="source"> modify it under the terms of version 2.01 of the GNU Lesser General<br></td></tr
  2273. ><tr
  2274. id=sl_svn7768_11
  2275. ><td class="source"> Public License as published by the Free Software Foundation.<br></td></tr
  2276. ><tr
  2277. id=sl_svn7768_12
  2278. ><td class="source"><br></td></tr
  2279. ><tr
  2280. id=sl_svn7768_13
  2281. ><td class="source"> This library is distributed in the hope that it will be useful,<br></td></tr
  2282. ><tr
  2283. id=sl_svn7768_14
  2284. ><td class="source"> but WITHOUT ANY WARRANTY; without even the implied warranty of<br></td></tr
  2285. ><tr
  2286. id=sl_svn7768_15
  2287. ><td class="source"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br></td></tr
  2288. ><tr
  2289. id=sl_svn7768_16
  2290. ><td class="source"> Lesser General Public License for more details.<br></td></tr
  2291. ><tr
  2292. id=sl_svn7768_17
  2293. ><td class="source"><br></td></tr
  2294. ><tr
  2295. id=sl_svn7768_18
  2296. ><td class="source"> You should have received a copy of the GNU Lesser General<br></td></tr
  2297. ><tr
  2298. id=sl_svn7768_19
  2299. ><td class="source"> Public License along with this library; if not, write to the<br></td></tr
  2300. ><tr
  2301. id=sl_svn7768_20
  2302. ><td class="source"> Free Software Foundation, Inc., 59 Temple Place, Suite 330,<br></td></tr
  2303. ><tr
  2304. id=sl_svn7768_21
  2305. ><td class="source"> Boston, MA 02111-1307 USA<br></td></tr
  2306. ><tr
  2307. id=sl_svn7768_22
  2308. ><td class="source">*/<br></td></tr
  2309. ><tr
  2310. id=sl_svn7768_23
  2311. ><td class="source"><br></td></tr
  2312. ><tr
  2313. id=sl_svn7768_24
  2314. ><td class="source">package processing.core;<br></td></tr
  2315. ><tr
  2316. id=sl_svn7768_25
  2317. ><td class="source"><br></td></tr
  2318. ><tr
  2319. id=sl_svn7768_26
  2320. ><td class="source">import java.awt.*;<br></td></tr
  2321. ><tr
  2322. id=sl_svn7768_27
  2323. ><td class="source">import java.awt.image.*;<br></td></tr
  2324. ><tr
  2325. id=sl_svn7768_28
  2326. ><td class="source">import java.io.*;<br></td></tr
  2327. ><tr
  2328. id=sl_svn7768_29
  2329. ><td class="source">import java.lang.reflect.Method;<br></td></tr
  2330. ><tr
  2331. id=sl_svn7768_30
  2332. ><td class="source">import java.util.Arrays;<br></td></tr
  2333. ><tr
  2334. id=sl_svn7768_31
  2335. ><td class="source">import java.util.HashMap;<br></td></tr
  2336. ><tr
  2337. id=sl_svn7768_32
  2338. ><td class="source">import java.util.Set;<br></td></tr
  2339. ><tr
  2340. id=sl_svn7768_33
  2341. ><td class="source"><br></td></tr
  2342. ><tr
  2343. id=sl_svn7768_34
  2344. ><td class="source"><br></td></tr
  2345. ><tr
  2346. id=sl_svn7768_35
  2347. ><td class="source">/**<br></td></tr
  2348. ><tr
  2349. id=sl_svn7768_36
  2350. ><td class="source"> * Grayscale bitmap font class used by Processing.<br></td></tr
  2351. ><tr
  2352. id=sl_svn7768_37
  2353. ><td class="source"> * &lt;P&gt;<br></td></tr
  2354. ><tr
  2355. id=sl_svn7768_38
  2356. ><td class="source"> * Awful (and by that, I mean awesome) ASCII (non-)art for how this works:<br></td></tr
  2357. ><tr
  2358. id=sl_svn7768_39
  2359. ><td class="source"> * &lt;PRE&gt;<br></td></tr
  2360. ><tr
  2361. id=sl_svn7768_40
  2362. ><td class="source"> * |<br></td></tr
  2363. ><tr
  2364. id=sl_svn7768_41
  2365. ><td class="source"> * | height is the full used height of the image<br></td></tr
  2366. ><tr
  2367. id=sl_svn7768_42
  2368. ><td class="source"> * |<br></td></tr
  2369. ><tr
  2370. id=sl_svn7768_43
  2371. ><td class="source"> * | ..XX.. }<br></td></tr
  2372. ><tr
  2373. id=sl_svn7768_44
  2374. ><td class="source"> * | ..XX.. }<br></td></tr
  2375. ><tr
  2376. id=sl_svn7768_45
  2377. ><td class="source"> * | ...... }<br></td></tr
  2378. ><tr
  2379. id=sl_svn7768_46
  2380. ><td class="source"> * | XXXX.. } topExtent (top y is baseline - topExtent)<br></td></tr
  2381. ><tr
  2382. id=sl_svn7768_47
  2383. ><td class="source"> * | ..XX.. }<br></td></tr
  2384. ><tr
  2385. id=sl_svn7768_48
  2386. ><td class="source"> * | ..XX.. } dotted areas are where the image data<br></td></tr
  2387. ><tr
  2388. id=sl_svn7768_49
  2389. ><td class="source"> * | ..XX.. } is actually located for the character<br></td></tr
  2390. ><tr
  2391. id=sl_svn7768_50
  2392. ><td class="source"> * +---XXXXXX---- } (it extends to the right and down<br></td></tr
  2393. ><tr
  2394. id=sl_svn7768_51
  2395. ><td class="source"> * | for power of two texture sizes)<br></td></tr
  2396. ><tr
  2397. id=sl_svn7768_52
  2398. ><td class="source"> * ^^^^ leftExtent (amount to move over before drawing the image<br></td></tr
  2399. ><tr
  2400. id=sl_svn7768_53
  2401. ><td class="source"> *<br></td></tr
  2402. ><tr
  2403. id=sl_svn7768_54
  2404. ><td class="source"> * ^^^^^^^^^^^^^^ setWidth (width displaced by char)<br></td></tr
  2405. ><tr
  2406. id=sl_svn7768_55
  2407. ><td class="source"> * &lt;/PRE&gt;<br></td></tr
  2408. ><tr
  2409. id=sl_svn7768_56
  2410. ><td class="source"> */<br></td></tr
  2411. ><tr
  2412. id=sl_svn7768_57
  2413. ><td class="source">public class PFont implements PConstants {<br></td></tr
  2414. ><tr
  2415. id=sl_svn7768_58
  2416. ><td class="source"><br></td></tr
  2417. ><tr
  2418. id=sl_svn7768_59
  2419. ><td class="source"> /** Number of character glyphs in this font. */<br></td></tr
  2420. ><tr
  2421. id=sl_svn7768_60
  2422. ><td class="source"> protected int glyphCount;<br></td></tr
  2423. ><tr
  2424. id=sl_svn7768_61
  2425. ><td class="source"> <br></td></tr
  2426. ><tr
  2427. id=sl_svn7768_62
  2428. ><td class="source"> /** <br></td></tr
  2429. ><tr
  2430. id=sl_svn7768_63
  2431. ><td class="source"> * Actual glyph data. The length of this array won&#39;t necessarily be the <br></td></tr
  2432. ><tr
  2433. id=sl_svn7768_64
  2434. ><td class="source"> * same size as glyphCount, in cases where lazy font loading is in use.<br></td></tr
  2435. ><tr
  2436. id=sl_svn7768_65
  2437. ><td class="source"> */<br></td></tr
  2438. ><tr
  2439. id=sl_svn7768_66
  2440. ><td class="source"> protected Glyph[] glyphs;<br></td></tr
  2441. ><tr
  2442. id=sl_svn7768_67
  2443. ><td class="source"><br></td></tr
  2444. ><tr
  2445. id=sl_svn7768_68
  2446. ><td class="source"> /**<br></td></tr
  2447. ><tr
  2448. id=sl_svn7768_69
  2449. ><td class="source"> * Name of the font as seen by Java when it was created.<br></td></tr
  2450. ><tr
  2451. id=sl_svn7768_70
  2452. ><td class="source"> * If the font is available, the native version will be used.<br></td></tr
  2453. ><tr
  2454. id=sl_svn7768_71
  2455. ><td class="source"> */<br></td></tr
  2456. ><tr
  2457. id=sl_svn7768_72
  2458. ><td class="source"> protected String name;<br></td></tr
  2459. ><tr
  2460. id=sl_svn7768_73
  2461. ><td class="source"><br></td></tr
  2462. ><tr
  2463. id=sl_svn7768_74
  2464. ><td class="source"> /** <br></td></tr
  2465. ><tr
  2466. id=sl_svn7768_75
  2467. ><td class="source"> * Postscript name of the font that this bitmap was created from.<br></td></tr
  2468. ><tr
  2469. id=sl_svn7768_76
  2470. ><td class="source"> */<br></td></tr
  2471. ><tr
  2472. id=sl_svn7768_77
  2473. ><td class="source"> protected String psname;<br></td></tr
  2474. ><tr
  2475. id=sl_svn7768_78
  2476. ><td class="source"><br></td></tr
  2477. ><tr
  2478. id=sl_svn7768_79
  2479. ><td class="source"> /** <br></td></tr
  2480. ><tr
  2481. id=sl_svn7768_80
  2482. ><td class="source"> * The original size of the font when it was first created <br></td></tr
  2483. ><tr
  2484. id=sl_svn7768_81
  2485. ><td class="source"> */<br></td></tr
  2486. ><tr
  2487. id=sl_svn7768_82
  2488. ><td class="source"> protected int size;<br></td></tr
  2489. ><tr
  2490. id=sl_svn7768_83
  2491. ><td class="source"><br></td></tr
  2492. ><tr
  2493. id=sl_svn7768_84
  2494. ><td class="source"> /** true if smoothing was enabled for this font, used for native impl */<br></td></tr
  2495. ><tr
  2496. id=sl_svn7768_85
  2497. ><td class="source"> protected boolean smooth;<br></td></tr
  2498. ><tr
  2499. id=sl_svn7768_86
  2500. ><td class="source"><br></td></tr
  2501. ><tr
  2502. id=sl_svn7768_87
  2503. ><td class="source"> /** <br></td></tr
  2504. ><tr
  2505. id=sl_svn7768_88
  2506. ><td class="source"> * The ascent of the font. If the &#39;d&#39; character is present in this PFont, <br></td></tr
  2507. ><tr
  2508. id=sl_svn7768_89
  2509. ><td class="source"> * this value is replaced with its pixel height, because the values returned<br></td></tr
  2510. ><tr
  2511. id=sl_svn7768_90
  2512. ><td class="source"> * by FontMetrics.getAscent() seem to be terrible. <br></td></tr
  2513. ><tr
  2514. id=sl_svn7768_91
  2515. ><td class="source"> */<br></td></tr
  2516. ><tr
  2517. id=sl_svn7768_92
  2518. ><td class="source"> protected int ascent;<br></td></tr
  2519. ><tr
  2520. id=sl_svn7768_93
  2521. ><td class="source"> <br></td></tr
  2522. ><tr
  2523. id=sl_svn7768_94
  2524. ><td class="source"> /** <br></td></tr
  2525. ><tr
  2526. id=sl_svn7768_95
  2527. ><td class="source"> * The descent of the font. If the &#39;p&#39; character is present in this PFont, <br></td></tr
  2528. ><tr
  2529. id=sl_svn7768_96
  2530. ><td class="source"> * this value is replaced with its lowest pixel height, because the values <br></td></tr
  2531. ><tr
  2532. id=sl_svn7768_97
  2533. ><td class="source"> * returned by FontMetrics.getDescent() are gross. <br></td></tr
  2534. ><tr
  2535. id=sl_svn7768_98
  2536. ><td class="source"> */<br></td></tr
  2537. ><tr
  2538. id=sl_svn7768_99
  2539. ><td class="source"> protected int descent;<br></td></tr
  2540. ><tr
  2541. id=sl_svn7768_100
  2542. ><td class="source"><br></td></tr
  2543. ><tr
  2544. id=sl_svn7768_101
  2545. ><td class="source"> /**<br></td></tr
  2546. ><tr
  2547. id=sl_svn7768_102
  2548. ><td class="source"> * A more efficient array lookup for straight ASCII characters. For Unicode<br></td></tr
  2549. ><tr
  2550. id=sl_svn7768_103
  2551. ><td class="source"> * characters, a QuickSort-style search is used. <br></td></tr
  2552. ><tr
  2553. id=sl_svn7768_104
  2554. ><td class="source"> */<br></td></tr
  2555. ><tr
  2556. id=sl_svn7768_105
  2557. ><td class="source"> protected int[] ascii;<br></td></tr
  2558. ><tr
  2559. id=sl_svn7768_106
  2560. ><td class="source"><br></td></tr
  2561. ><tr
  2562. id=sl_svn7768_107
  2563. ><td class="source"> /**<br></td></tr
  2564. ><tr
  2565. id=sl_svn7768_108
  2566. ><td class="source"> * True if this font is set to load dynamically. This is the default when <br></td></tr
  2567. ><tr
  2568. id=sl_svn7768_109
  2569. ><td class="source"> * createFont() method is called without a character set. Bitmap versions of <br></td></tr
  2570. ><tr
  2571. id=sl_svn7768_110
  2572. ><td class="source"> * characters are only created when prompted by an index() call.<br></td></tr
  2573. ><tr
  2574. id=sl_svn7768_111
  2575. ><td class="source"> */<br></td></tr
  2576. ><tr
  2577. id=sl_svn7768_112
  2578. ><td class="source"> protected boolean lazy;<br></td></tr
  2579. ><tr
  2580. id=sl_svn7768_113
  2581. ><td class="source"><br></td></tr
  2582. ><tr
  2583. id=sl_svn7768_114
  2584. ><td class="source"> /**<br></td></tr
  2585. ><tr
  2586. id=sl_svn7768_115
  2587. ><td class="source"> * Native Java version of the font. If possible, this allows the<br></td></tr
  2588. ><tr
  2589. id=sl_svn7768_116
  2590. ><td class="source"> * PGraphics subclass to just use Java&#39;s font rendering stuff<br></td></tr
  2591. ><tr
  2592. id=sl_svn7768_117
  2593. ><td class="source"> * in situations where that&#39;s faster.<br></td></tr
  2594. ><tr
  2595. id=sl_svn7768_118
  2596. ><td class="source"> */<br></td></tr
  2597. ><tr
  2598. id=sl_svn7768_119
  2599. ><td class="source"> protected Font font;<br></td></tr
  2600. ><tr
  2601. id=sl_svn7768_120
  2602. ><td class="source"><br></td></tr
  2603. ><tr
  2604. id=sl_svn7768_121
  2605. ><td class="source"> /** <br></td></tr
  2606. ><tr
  2607. id=sl_svn7768_122
  2608. ><td class="source"> * True if this font was loaded from a stream, rather than from the OS.<br></td></tr
  2609. ><tr
  2610. id=sl_svn7768_123
  2611. ><td class="source"> * It&#39;s always safe to use the native version of a font loaded from a TTF<br></td></tr
  2612. ><tr
  2613. id=sl_svn7768_124
  2614. ><td class="source"> * file, since that&#39;s how it&#39;ll look when exported. Otherwise, you&#39;ll have<br></td></tr
  2615. ><tr
  2616. id=sl_svn7768_125
  2617. ><td class="source"> * to use hint(ENABLE_NATIVE_FONTS) to get the native version working with<br></td></tr
  2618. ><tr
  2619. id=sl_svn7768_126
  2620. ><td class="source"> * renderers that support it.<br></td></tr
  2621. ><tr
  2622. id=sl_svn7768_127
  2623. ><td class="source"> */<br></td></tr
  2624. ><tr
  2625. id=sl_svn7768_128
  2626. ><td class="source"> protected boolean stream;<br></td></tr
  2627. ><tr
  2628. id=sl_svn7768_129
  2629. ><td class="source"> <br></td></tr
  2630. ><tr
  2631. id=sl_svn7768_130
  2632. ><td class="source"> /**<br></td></tr
  2633. ><tr
  2634. id=sl_svn7768_131
  2635. ><td class="source"> * True if this font should return &#39;null&#39; for getFont(), so that the native<br></td></tr
  2636. ><tr
  2637. id=sl_svn7768_132
  2638. ><td class="source"> * font will be used to create a subset, but the native version of the font<br></td></tr
  2639. ><tr
  2640. id=sl_svn7768_133
  2641. ><td class="source"> * will not be used. <br></td></tr
  2642. ><tr
  2643. id=sl_svn7768_134
  2644. ><td class="source"> */<br></td></tr
  2645. ><tr
  2646. id=sl_svn7768_135
  2647. ><td class="source"> protected boolean subsetting; <br></td></tr
  2648. ><tr
  2649. id=sl_svn7768_136
  2650. ><td class="source"><br></td></tr
  2651. ><tr
  2652. id=sl_svn7768_137
  2653. ><td class="source"> /** True if already tried to find the native AWT version of this font. */<br></td></tr
  2654. ><tr
  2655. id=sl_svn7768_138
  2656. ><td class="source"> protected boolean fontSearched;<br></td></tr
  2657. ><tr
  2658. id=sl_svn7768_139
  2659. ><td class="source"><br></td></tr
  2660. ><tr
  2661. id=sl_svn7768_140
  2662. ><td class="source"> /**<br></td></tr
  2663. ><tr
  2664. id=sl_svn7768_141
  2665. ><td class="source"> * Array of the native system fonts. Used to lookup native fonts by their <br></td></tr
  2666. ><tr
  2667. id=sl_svn7768_142
  2668. ><td class="source"> * PostScript name. This is a workaround for a several year old Apple Java<br></td></tr
  2669. ><tr
  2670. id=sl_svn7768_143
  2671. ><td class="source"> * bug that they can&#39;t be bothered to fix. <br></td></tr
  2672. ><tr
  2673. id=sl_svn7768_144
  2674. ><td class="source"> */<br></td></tr
  2675. ><tr
  2676. id=sl_svn7768_145
  2677. ><td class="source"> static protected Font[] fonts;<br></td></tr
  2678. ><tr
  2679. id=sl_svn7768_146
  2680. ><td class="source"> static protected HashMap&lt;String,Font&gt; fontDifferent;<br></td></tr
  2681. ><tr
  2682. id=sl_svn7768_147
  2683. ><td class="source"><br></td></tr
  2684. ><tr
  2685. id=sl_svn7768_148
  2686. ><td class="source">// /**<br></td></tr
  2687. ><tr
  2688. id=sl_svn7768_149
  2689. ><td class="source">// * If not null, this font is set to load dynamically. This is the default <br></td></tr
  2690. ><tr
  2691. id=sl_svn7768_150
  2692. ><td class="source">// * when createFont() method is called without a character set. Bitmap <br></td></tr
  2693. ><tr
  2694. id=sl_svn7768_151
  2695. ><td class="source">// * versions of characters are only created when prompted by an index() call.<br></td></tr
  2696. ><tr
  2697. id=sl_svn7768_152
  2698. ><td class="source">// */<br></td></tr
  2699. ><tr
  2700. id=sl_svn7768_153
  2701. ><td class="source">// protected Font lazyFont; <br></td></tr
  2702. ><tr
  2703. id=sl_svn7768_154
  2704. ><td class="source"> protected BufferedImage lazyImage;<br></td></tr
  2705. ><tr
  2706. id=sl_svn7768_155
  2707. ><td class="source"> protected Graphics2D lazyGraphics;<br></td></tr
  2708. ><tr
  2709. id=sl_svn7768_156
  2710. ><td class="source"> protected FontMetrics lazyMetrics;<br></td></tr
  2711. ><tr
  2712. id=sl_svn7768_157
  2713. ><td class="source"> protected int[] lazySamples; <br></td></tr
  2714. ><tr
  2715. id=sl_svn7768_158
  2716. ><td class="source"><br></td></tr
  2717. ><tr
  2718. id=sl_svn7768_159
  2719. ><td class="source"> <br></td></tr
  2720. ><tr
  2721. id=sl_svn7768_160
  2722. ><td class="source"> /** for subclasses that need to store metadata about the font */<br></td></tr
  2723. ><tr
  2724. id=sl_svn7768_161
  2725. ><td class="source"> protected HashMap&lt;PGraphics, Object&gt; cacheMap; <br></td></tr
  2726. ><tr
  2727. id=sl_svn7768_162
  2728. ><td class="source"><br></td></tr
  2729. ><tr
  2730. id=sl_svn7768_163
  2731. ><td class="source"> <br></td></tr
  2732. ><tr
  2733. id=sl_svn7768_164
  2734. ><td class="source"> public PFont() { } // for subclasses<br></td></tr
  2735. ><tr
  2736. id=sl_svn7768_165
  2737. ><td class="source"><br></td></tr
  2738. ><tr
  2739. id=sl_svn7768_166
  2740. ><td class="source"><br></td></tr
  2741. ><tr
  2742. id=sl_svn7768_167
  2743. ><td class="source"> /**<br></td></tr
  2744. ><tr
  2745. id=sl_svn7768_168
  2746. ><td class="source"> * Create a new Processing font from a native font, but don&#39;t create all the<br></td></tr
  2747. ><tr
  2748. id=sl_svn7768_169
  2749. ><td class="source"> * characters at once, instead wait until they&#39;re used to include them.<br></td></tr
  2750. ><tr
  2751. id=sl_svn7768_170
  2752. ><td class="source"> * @param font<br></td></tr
  2753. ><tr
  2754. id=sl_svn7768_171
  2755. ><td class="source"> * @param smooth<br></td></tr
  2756. ><tr
  2757. id=sl_svn7768_172
  2758. ><td class="source"> */<br></td></tr
  2759. ><tr
  2760. id=sl_svn7768_173
  2761. ><td class="source"> public PFont(Font font, boolean smooth) {<br></td></tr
  2762. ><tr
  2763. id=sl_svn7768_174
  2764. ><td class="source"> this(font, smooth, null);<br></td></tr
  2765. ><tr
  2766. id=sl_svn7768_175
  2767. ><td class="source"> }<br></td></tr
  2768. ><tr
  2769. id=sl_svn7768_176
  2770. ><td class="source"> <br></td></tr
  2771. ><tr
  2772. id=sl_svn7768_177
  2773. ><td class="source"> <br></td></tr
  2774. ><tr
  2775. id=sl_svn7768_178
  2776. ><td class="source"> /**<br></td></tr
  2777. ><tr
  2778. id=sl_svn7768_179
  2779. ><td class="source"> * Create a new image-based font on the fly. If charset is set to null, <br></td></tr
  2780. ><tr
  2781. id=sl_svn7768_180
  2782. ><td class="source"> * the characters will only be created as bitmaps when they&#39;re drawn.<br></td></tr
  2783. ><tr
  2784. id=sl_svn7768_181
  2785. ><td class="source"> *<br></td></tr
  2786. ><tr
  2787. id=sl_svn7768_182
  2788. ><td class="source"> * @param font the font object to create from<br></td></tr
  2789. ><tr
  2790. id=sl_svn7768_183
  2791. ><td class="source"> * @param charset array of all unicode chars that should be included<br></td></tr
  2792. ><tr
  2793. id=sl_svn7768_184
  2794. ><td class="source"> * @param smooth true to enable smoothing/anti-aliasing<br></td></tr
  2795. ><tr
  2796. id=sl_svn7768_185
  2797. ><td class="source"> */<br></td></tr
  2798. ><tr
  2799. id=sl_svn7768_186
  2800. ><td class="source"> public PFont(Font font, boolean smooth, char charset[]) {<br></td></tr
  2801. ><tr
  2802. id=sl_svn7768_187
  2803. ><td class="source"> // save this so that we can use the native version<br></td></tr
  2804. ><tr
  2805. id=sl_svn7768_188
  2806. ><td class="source"> this.font = font;<br></td></tr
  2807. ><tr
  2808. id=sl_svn7768_189
  2809. ><td class="source"> this.smooth = smooth;<br></td></tr
  2810. ><tr
  2811. id=sl_svn7768_190
  2812. ><td class="source"><br></td></tr
  2813. ><tr
  2814. id=sl_svn7768_191
  2815. ><td class="source"> name = font.getName();<br></td></tr
  2816. ><tr
  2817. id=sl_svn7768_192
  2818. ><td class="source"> psname = font.getPSName();<br></td></tr
  2819. ><tr
  2820. id=sl_svn7768_193
  2821. ><td class="source"> size = font.getSize();<br></td></tr
  2822. ><tr
  2823. id=sl_svn7768_194
  2824. ><td class="source"><br></td></tr
  2825. ><tr
  2826. id=sl_svn7768_195
  2827. ><td class="source"> // no, i&#39;m not interested in getting off the couch<br></td></tr
  2828. ><tr
  2829. id=sl_svn7768_196
  2830. ><td class="source"> //lazy = true;<br></td></tr
  2831. ><tr
  2832. id=sl_svn7768_197
  2833. ><td class="source"> // not sure what else to do here<br></td></tr
  2834. ><tr
  2835. id=sl_svn7768_198
  2836. ><td class="source"> //mbox2 = 0; <br></td></tr
  2837. ><tr
  2838. id=sl_svn7768_199
  2839. ><td class="source"><br></td></tr
  2840. ><tr
  2841. id=sl_svn7768_200
  2842. ><td class="source"> int initialCount = 10;<br></td></tr
  2843. ><tr
  2844. id=sl_svn7768_201
  2845. ><td class="source"> glyphs = new Glyph[initialCount];<br></td></tr
  2846. ><tr
  2847. id=sl_svn7768_202
  2848. ><td class="source"><br></td></tr
  2849. ><tr
  2850. id=sl_svn7768_203
  2851. ><td class="source"> ascii = new int[128];<br></td></tr
  2852. ><tr
  2853. id=sl_svn7768_204
  2854. ><td class="source"> Arrays.fill(ascii, -1);<br></td></tr
  2855. ><tr
  2856. id=sl_svn7768_205
  2857. ><td class="source"><br></td></tr
  2858. ><tr
  2859. id=sl_svn7768_206
  2860. ><td class="source"> int mbox3 = size * 3;<br></td></tr
  2861. ><tr
  2862. id=sl_svn7768_207
  2863. ><td class="source"><br></td></tr
  2864. ><tr
  2865. id=sl_svn7768_208
  2866. ><td class="source"> lazyImage = new BufferedImage(mbox3, mbox3, BufferedImage.TYPE_INT_RGB);<br></td></tr
  2867. ><tr
  2868. id=sl_svn7768_209
  2869. ><td class="source"> lazyGraphics = (Graphics2D) lazyImage.getGraphics();<br></td></tr
  2870. ><tr
  2871. id=sl_svn7768_210
  2872. ><td class="source"> lazyGraphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,<br></td></tr
  2873. ><tr
  2874. id=sl_svn7768_211
  2875. ><td class="source"> smooth ?<br></td></tr
  2876. ><tr
  2877. id=sl_svn7768_212
  2878. ><td class="source"> RenderingHints.VALUE_ANTIALIAS_ON :<br></td></tr
  2879. ><tr
  2880. id=sl_svn7768_213
  2881. ><td class="source"> RenderingHints.VALUE_ANTIALIAS_OFF);<br></td></tr
  2882. ><tr
  2883. id=sl_svn7768_214
  2884. ><td class="source"> // adding this for post-1.0.9<br></td></tr
  2885. ><tr
  2886. id=sl_svn7768_215
  2887. ><td class="source"> lazyGraphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,<br></td></tr
  2888. ><tr
  2889. id=sl_svn7768_216
  2890. ><td class="source"> smooth ?<br></td></tr
  2891. ><tr
  2892. id=sl_svn7768_217
  2893. ><td class="source"> RenderingHints.VALUE_TEXT_ANTIALIAS_ON :<br></td></tr
  2894. ><tr
  2895. id=sl_svn7768_218
  2896. ><td class="source"> RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);<br></td></tr
  2897. ><tr
  2898. id=sl_svn7768_219
  2899. ><td class="source"><br></td></tr
  2900. ><tr
  2901. id=sl_svn7768_220
  2902. ><td class="source"> lazyGraphics.setFont(font);<br></td></tr
  2903. ><tr
  2904. id=sl_svn7768_221
  2905. ><td class="source"> lazyMetrics = lazyGraphics.getFontMetrics();<br></td></tr
  2906. ><tr
  2907. id=sl_svn7768_222
  2908. ><td class="source"> lazySamples = new int[mbox3 * mbox3];<br></td></tr
  2909. ><tr
  2910. id=sl_svn7768_223
  2911. ><td class="source"><br></td></tr
  2912. ><tr
  2913. id=sl_svn7768_224
  2914. ><td class="source"> // These values are terrible/unusable. Verified again for Processing 1.1.<br></td></tr
  2915. ><tr
  2916. id=sl_svn7768_225
  2917. ><td class="source"> // They vary widely per-platform and per-font, so instead we&#39;ll use the <br></td></tr
  2918. ><tr
  2919. id=sl_svn7768_226
  2920. ><td class="source"> // calculate-by-hand method of measuring pixels in characters.<br></td></tr
  2921. ><tr
  2922. id=sl_svn7768_227
  2923. ><td class="source"> //ascent = lazyMetrics.getAscent();<br></td></tr
  2924. ><tr
  2925. id=sl_svn7768_228
  2926. ><td class="source"> //descent = lazyMetrics.getDescent();<br></td></tr
  2927. ><tr
  2928. id=sl_svn7768_229
  2929. ><td class="source"><br></td></tr
  2930. ><tr
  2931. id=sl_svn7768_230
  2932. ><td class="source"> if (charset == null) {<br></td></tr
  2933. ><tr
  2934. id=sl_svn7768_231
  2935. ><td class="source"> lazy = true;<br></td></tr
  2936. ><tr
  2937. id=sl_svn7768_232
  2938. ><td class="source">// lazyFont = font;<br></td></tr
  2939. ><tr
  2940. id=sl_svn7768_233
  2941. ><td class="source"><br></td></tr
  2942. ><tr
  2943. id=sl_svn7768_234
  2944. ><td class="source"> } else {<br></td></tr
  2945. ><tr
  2946. id=sl_svn7768_235
  2947. ><td class="source"> // charset needs to be sorted to make index lookup run more quickly<br></td></tr
  2948. ><tr
  2949. id=sl_svn7768_236
  2950. ><td class="source"> // http://dev.processing.org/bugs/show_bug.cgi?id=494<br></td></tr
  2951. ><tr
  2952. id=sl_svn7768_237
  2953. ><td class="source"> Arrays.sort(charset);<br></td></tr
  2954. ><tr
  2955. id=sl_svn7768_238
  2956. ><td class="source"><br></td></tr
  2957. ><tr
  2958. id=sl_svn7768_239
  2959. ><td class="source"> glyphs = new Glyph[charset.length];<br></td></tr
  2960. ><tr
  2961. id=sl_svn7768_240
  2962. ><td class="source"><br></td></tr
  2963. ><tr
  2964. id=sl_svn7768_241
  2965. ><td class="source"> glyphCount = 0;<br></td></tr
  2966. ><tr
  2967. id=sl_svn7768_242
  2968. ><td class="source"> for (char c : charset) {<br></td></tr
  2969. ><tr
  2970. id=sl_svn7768_243
  2971. ><td class="source"> if (font.canDisplay(c)) {<br></td></tr
  2972. ><tr
  2973. id=sl_svn7768_244
  2974. ><td class="source"> Glyph glyf = new Glyph(c);<br></td></tr
  2975. ><tr
  2976. id=sl_svn7768_245
  2977. ><td class="source"> if (glyf.value &lt; 128) {<br></td></tr
  2978. ><tr
  2979. id=sl_svn7768_246
  2980. ><td class="source"> ascii[glyf.value] = glyphCount;<br></td></tr
  2981. ><tr
  2982. id=sl_svn7768_247
  2983. ><td class="source"> }<br></td></tr
  2984. ><tr
  2985. id=sl_svn7768_248
  2986. ><td class="source"> glyf.index = glyphCount;<br></td></tr
  2987. ><tr
  2988. id=sl_svn7768_249
  2989. ><td class="source"> glyphs[glyphCount++] = glyf; <br></td></tr
  2990. ><tr
  2991. id=sl_svn7768_250
  2992. ><td class="source"> }<br></td></tr
  2993. ><tr
  2994. id=sl_svn7768_251
  2995. ><td class="source"> }<br></td></tr
  2996. ><tr
  2997. id=sl_svn7768_252
  2998. ><td class="source"><br></td></tr
  2999. ><tr
  3000. id=sl_svn7768_253
  3001. ><td class="source"> // shorten the array if necessary<br></td></tr
  3002. ><tr
  3003. id=sl_svn7768_254
  3004. ><td class="source"> if (glyphCount != charset.length) {<br></td></tr
  3005. ><tr
  3006. id=sl_svn7768_255
  3007. ><td class="source"> glyphs = (Glyph[]) PApplet.subset(glyphs, 0, glyphCount);<br></td></tr
  3008. ><tr
  3009. id=sl_svn7768_256
  3010. ><td class="source"> }<br></td></tr
  3011. ><tr
  3012. id=sl_svn7768_257
  3013. ><td class="source"><br></td></tr
  3014. ><tr
  3015. id=sl_svn7768_258
  3016. ><td class="source"> // foreign font, so just make ascent the max topExtent<br></td></tr
  3017. ><tr
  3018. id=sl_svn7768_259
  3019. ><td class="source"> // for &gt; 1.0.9, not doing this anymore. <br></td></tr
  3020. ><tr
  3021. id=sl_svn7768_260
  3022. ><td class="source"> // instead using getAscent() and getDescent() values for these cases.<br></td></tr
  3023. ><tr
  3024. id=sl_svn7768_261
  3025. ><td class="source">// if ((ascent == 0) &amp;&amp; (descent == 0)) {<br></td></tr
  3026. ><tr
  3027. id=sl_svn7768_262
  3028. ><td class="source">// //for (int i = 0; i &lt; charCount; i++) {<br></td></tr
  3029. ><tr
  3030. id=sl_svn7768_263
  3031. ><td class="source">// for (Glyph glyph : glyphs) {<br></td></tr
  3032. ><tr
  3033. id=sl_svn7768_264
  3034. ><td class="source">// char cc = (char) glyph.value;<br></td></tr
  3035. ><tr
  3036. id=sl_svn7768_265
  3037. ><td class="source">// //char cc = (char) glyphs[i].value;<br></td></tr
  3038. ><tr
  3039. id=sl_svn7768_266
  3040. ><td class="source">// if (Character.isWhitespace(cc) ||<br></td></tr
  3041. ><tr
  3042. id=sl_svn7768_267
  3043. ><td class="source">// (cc == &#39;\u00A0&#39;) || (cc == &#39;\u2007&#39;) || (cc == &#39;\u202F&#39;)) {<br></td></tr
  3044. ><tr
  3045. id=sl_svn7768_268
  3046. ><td class="source">// continue;<br></td></tr
  3047. ><tr
  3048. id=sl_svn7768_269
  3049. ><td class="source">// }<br></td></tr
  3050. ><tr
  3051. id=sl_svn7768_270
  3052. ><td class="source">// if (glyph.topExtent &gt; ascent) {<br></td></tr
  3053. ><tr
  3054. id=sl_svn7768_271
  3055. ><td class="source">// ascent = glyph.topExtent;<br></td></tr
  3056. ><tr
  3057. id=sl_svn7768_272
  3058. ><td class="source">// }<br></td></tr
  3059. ><tr
  3060. id=sl_svn7768_273
  3061. ><td class="source">// int d = -glyph.topExtent + glyph.height;<br></td></tr
  3062. ><tr
  3063. id=sl_svn7768_274
  3064. ><td class="source">// if (d &gt; descent) {<br></td></tr
  3065. ><tr
  3066. id=sl_svn7768_275
  3067. ><td class="source">// descent = d;<br></td></tr
  3068. ><tr
  3069. id=sl_svn7768_276
  3070. ><td class="source">// }<br></td></tr
  3071. ><tr
  3072. id=sl_svn7768_277
  3073. ><td class="source">// }<br></td></tr
  3074. ><tr
  3075. id=sl_svn7768_278
  3076. ><td class="source">// }<br></td></tr
  3077. ><tr
  3078. id=sl_svn7768_279
  3079. ><td class="source"> }<br></td></tr
  3080. ><tr
  3081. id=sl_svn7768_280
  3082. ><td class="source"><br></td></tr
  3083. ><tr
  3084. id=sl_svn7768_281
  3085. ><td class="source"> // If not already created, just create these two characters to calculate <br></td></tr
  3086. ><tr
  3087. id=sl_svn7768_282
  3088. ><td class="source"> // the ascent and descent values for the font. This was tested to only <br></td></tr
  3089. ><tr
  3090. id=sl_svn7768_283
  3091. ><td class="source"> // require 5-10 ms on a 2.4 GHz MacBook Pro.<br></td></tr
  3092. ><tr
  3093. id=sl_svn7768_284
  3094. ><td class="source"> // In versions 1.0.9 and earlier, fonts that could not display d or p<br></td></tr
  3095. ><tr
  3096. id=sl_svn7768_285
  3097. ><td class="source"> // used the max up/down values as calculated by looking through the font.<br></td></tr
  3098. ><tr
  3099. id=sl_svn7768_286
  3100. ><td class="source"> // That&#39;s no longer valid with the auto-generating fonts, so we&#39;ll just<br></td></tr
  3101. ><tr
  3102. id=sl_svn7768_287
  3103. ><td class="source"> // use getAscent() and getDescent() in such (minor) cases.<br></td></tr
  3104. ><tr
  3105. id=sl_svn7768_288
  3106. ><td class="source"> if (ascent == 0) {<br></td></tr
  3107. ><tr
  3108. id=sl_svn7768_289
  3109. ><td class="source"> if (font.canDisplay(&#39;d&#39;)) {<br></td></tr
  3110. ><tr
  3111. id=sl_svn7768_290
  3112. ><td class="source"> new Glyph(&#39;d&#39;);<br></td></tr
  3113. ><tr
  3114. id=sl_svn7768_291
  3115. ><td class="source"> } else {<br></td></tr
  3116. ><tr
  3117. id=sl_svn7768_292
  3118. ><td class="source"> ascent = lazyMetrics.getAscent();<br></td></tr
  3119. ><tr
  3120. id=sl_svn7768_293
  3121. ><td class="source"> }<br></td></tr
  3122. ><tr
  3123. id=sl_svn7768_294
  3124. ><td class="source"> }<br></td></tr
  3125. ><tr
  3126. id=sl_svn7768_295
  3127. ><td class="source"> if (descent == 0) {<br></td></tr
  3128. ><tr
  3129. id=sl_svn7768_296
  3130. ><td class="source"> if (font.canDisplay(&#39;p&#39;)) {<br></td></tr
  3131. ><tr
  3132. id=sl_svn7768_297
  3133. ><td class="source"> new Glyph(&#39;p&#39;);<br></td></tr
  3134. ><tr
  3135. id=sl_svn7768_298
  3136. ><td class="source"> } else {<br></td></tr
  3137. ><tr
  3138. id=sl_svn7768_299
  3139. ><td class="source"> descent = lazyMetrics.getDescent();<br></td></tr
  3140. ><tr
  3141. id=sl_svn7768_300
  3142. ><td class="source"> }<br></td></tr
  3143. ><tr
  3144. id=sl_svn7768_301
  3145. ><td class="source"> }<br></td></tr
  3146. ><tr
  3147. id=sl_svn7768_302
  3148. ><td class="source"> }<br></td></tr
  3149. ><tr
  3150. id=sl_svn7768_303
  3151. ><td class="source"> <br></td></tr
  3152. ><tr
  3153. id=sl_svn7768_304
  3154. ><td class="source"><br></td></tr
  3155. ><tr
  3156. id=sl_svn7768_305
  3157. ><td class="source"> /**<br></td></tr
  3158. ><tr
  3159. id=sl_svn7768_306
  3160. ><td class="source"> * Adds an additional parameter that indicates the font came from a file, <br></td></tr
  3161. ><tr
  3162. id=sl_svn7768_307
  3163. ><td class="source"> * not a built-in OS font. <br></td></tr
  3164. ><tr
  3165. id=sl_svn7768_308
  3166. ><td class="source"> */<br></td></tr
  3167. ><tr
  3168. id=sl_svn7768_309
  3169. ><td class="source"> public PFont(Font font, boolean smooth, char charset[], boolean stream) {<br></td></tr
  3170. ><tr
  3171. id=sl_svn7768_310
  3172. ><td class="source"> this(font, smooth, charset);<br></td></tr
  3173. ><tr
  3174. id=sl_svn7768_311
  3175. ><td class="source"> this.stream = stream;<br></td></tr
  3176. ><tr
  3177. id=sl_svn7768_312
  3178. ><td class="source"> }<br></td></tr
  3179. ><tr
  3180. id=sl_svn7768_313
  3181. ><td class="source"> <br></td></tr
  3182. ><tr
  3183. id=sl_svn7768_314
  3184. ><td class="source"><br></td></tr
  3185. ><tr
  3186. id=sl_svn7768_315
  3187. ><td class="source"> public PFont(InputStream input) throws IOException {<br></td></tr
  3188. ><tr
  3189. id=sl_svn7768_316
  3190. ><td class="source"> DataInputStream is = new DataInputStream(input);<br></td></tr
  3191. ><tr
  3192. id=sl_svn7768_317
  3193. ><td class="source"><br></td></tr
  3194. ><tr
  3195. id=sl_svn7768_318
  3196. ><td class="source"> // number of character images stored in this font<br></td></tr
  3197. ><tr
  3198. id=sl_svn7768_319
  3199. ><td class="source"> glyphCount = is.readInt();<br></td></tr
  3200. ><tr
  3201. id=sl_svn7768_320
  3202. ><td class="source"><br></td></tr
  3203. ><tr
  3204. id=sl_svn7768_321
  3205. ><td class="source"> // used to be the bitCount, but now used for version number.<br></td></tr
  3206. ><tr
  3207. id=sl_svn7768_322
  3208. ><td class="source"> // version 8 is any font before 69, so 9 is anything from 83+<br></td></tr
  3209. ><tr
  3210. id=sl_svn7768_323
  3211. ><td class="source"> // 9 was buggy so gonna increment to 10.<br></td></tr
  3212. ><tr
  3213. id=sl_svn7768_324
  3214. ><td class="source"> int version = is.readInt();<br></td></tr
  3215. ><tr
  3216. id=sl_svn7768_325
  3217. ><td class="source"><br></td></tr
  3218. ><tr
  3219. id=sl_svn7768_326
  3220. ><td class="source"> // this was formerly ignored, now it&#39;s the actual font size<br></td></tr
  3221. ><tr
  3222. id=sl_svn7768_327
  3223. ><td class="source"> //mbox = is.readInt();<br></td></tr
  3224. ><tr
  3225. id=sl_svn7768_328
  3226. ><td class="source"> size = is.readInt();<br></td></tr
  3227. ><tr
  3228. id=sl_svn7768_329
  3229. ><td class="source"><br></td></tr
  3230. ><tr
  3231. id=sl_svn7768_330
  3232. ><td class="source"> // this was formerly mboxY, the one that was used<br></td></tr
  3233. ><tr
  3234. id=sl_svn7768_331
  3235. ><td class="source"> // this will make new fonts downward compatible<br></td></tr
  3236. ><tr
  3237. id=sl_svn7768_332
  3238. ><td class="source"> is.readInt(); // ignore the other mbox attribute<br></td></tr
  3239. ><tr
  3240. id=sl_svn7768_333
  3241. ><td class="source"><br></td></tr
  3242. ><tr
  3243. id=sl_svn7768_334
  3244. ><td class="source"> ascent = is.readInt(); // formerly baseHt (zero/ignored)<br></td></tr
  3245. ><tr
  3246. id=sl_svn7768_335
  3247. ><td class="source"> descent = is.readInt(); // formerly ignored struct padding<br></td></tr
  3248. ><tr
  3249. id=sl_svn7768_336
  3250. ><td class="source"><br></td></tr
  3251. ><tr
  3252. id=sl_svn7768_337
  3253. ><td class="source"> // allocate enough space for the character info<br></td></tr
  3254. ><tr
  3255. id=sl_svn7768_338
  3256. ><td class="source"> glyphs = new Glyph[glyphCount];<br></td></tr
  3257. ><tr
  3258. id=sl_svn7768_339
  3259. ><td class="source"><br></td></tr
  3260. ><tr
  3261. id=sl_svn7768_340
  3262. ><td class="source"> ascii = new int[128];<br></td></tr
  3263. ><tr
  3264. id=sl_svn7768_341
  3265. ><td class="source"> Arrays.fill(ascii, -1);<br></td></tr
  3266. ><tr
  3267. id=sl_svn7768_342
  3268. ><td class="source"><br></td></tr
  3269. ><tr
  3270. id=sl_svn7768_343
  3271. ><td class="source"> // read the information about the individual characters<br></td></tr
  3272. ><tr
  3273. id=sl_svn7768_344
  3274. ><td class="source"> for (int i = 0; i &lt; glyphCount; i++) {<br></td></tr
  3275. ><tr
  3276. id=sl_svn7768_345
  3277. ><td class="source"> Glyph glyph = new Glyph(is);<br></td></tr
  3278. ><tr
  3279. id=sl_svn7768_346
  3280. ><td class="source"> // cache locations of the ascii charset<br></td></tr
  3281. ><tr
  3282. id=sl_svn7768_347
  3283. ><td class="source"> if (glyph.value &lt; 128) {<br></td></tr
  3284. ><tr
  3285. id=sl_svn7768_348
  3286. ><td class="source"> ascii[glyph.value] = i;<br></td></tr
  3287. ><tr
  3288. id=sl_svn7768_349
  3289. ><td class="source"> }<br></td></tr
  3290. ><tr
  3291. id=sl_svn7768_350
  3292. ><td class="source"> glyph.index = i;<br></td></tr
  3293. ><tr
  3294. id=sl_svn7768_351
  3295. ><td class="source"> glyphs[i] = glyph;<br></td></tr
  3296. ><tr
  3297. id=sl_svn7768_352
  3298. ><td class="source"> }<br></td></tr
  3299. ><tr
  3300. id=sl_svn7768_353
  3301. ><td class="source"><br></td></tr
  3302. ><tr
  3303. id=sl_svn7768_354
  3304. ><td class="source"> // not a roman font, so throw an error and ask to re-build.<br></td></tr
  3305. ><tr
  3306. id=sl_svn7768_355
  3307. ><td class="source"> // that way can avoid a bunch of error checking hacks in here.<br></td></tr
  3308. ><tr
  3309. id=sl_svn7768_356
  3310. ><td class="source"> if ((ascent == 0) &amp;&amp; (descent == 0)) {<br></td></tr
  3311. ><tr
  3312. id=sl_svn7768_357
  3313. ><td class="source"> throw new RuntimeException(&quot;Please use \&quot;Create Font\&quot; to &quot; +<br></td></tr
  3314. ><tr
  3315. id=sl_svn7768_358
  3316. ><td class="source"> &quot;re-create this font.&quot;);<br></td></tr
  3317. ><tr
  3318. id=sl_svn7768_359
  3319. ><td class="source"> }<br></td></tr
  3320. ><tr
  3321. id=sl_svn7768_360
  3322. ><td class="source"><br></td></tr
  3323. ><tr
  3324. id=sl_svn7768_361
  3325. ><td class="source"> for (Glyph glyph : glyphs) {<br></td></tr
  3326. ><tr
  3327. id=sl_svn7768_362
  3328. ><td class="source"> glyph.readBitmap(is);<br></td></tr
  3329. ><tr
  3330. id=sl_svn7768_363
  3331. ><td class="source"> }<br></td></tr
  3332. ><tr
  3333. id=sl_svn7768_364
  3334. ><td class="source"><br></td></tr
  3335. ><tr
  3336. id=sl_svn7768_365
  3337. ><td class="source"> if (version &gt;= 10) { // includes the font name at the end of the file<br></td></tr
  3338. ><tr
  3339. id=sl_svn7768_366
  3340. ><td class="source"> name = is.readUTF();<br></td></tr
  3341. ><tr
  3342. id=sl_svn7768_367
  3343. ><td class="source"> psname = is.readUTF();<br></td></tr
  3344. ><tr
  3345. id=sl_svn7768_368
  3346. ><td class="source"> }<br></td></tr
  3347. ><tr
  3348. id=sl_svn7768_369
  3349. ><td class="source"> if (version == 11) {<br></td></tr
  3350. ><tr
  3351. id=sl_svn7768_370
  3352. ><td class="source"> smooth = is.readBoolean();<br></td></tr
  3353. ><tr
  3354. id=sl_svn7768_371
  3355. ><td class="source"> }<br></td></tr
  3356. ><tr
  3357. id=sl_svn7768_372
  3358. ><td class="source"> // See if there&#39;s a native version of this font that can be used, <br></td></tr
  3359. ><tr
  3360. id=sl_svn7768_373
  3361. ><td class="source"> // in case that&#39;s of interest later.<br></td></tr
  3362. ><tr
  3363. id=sl_svn7768_374
  3364. ><td class="source"> findFont();<br></td></tr
  3365. ><tr
  3366. id=sl_svn7768_375
  3367. ><td class="source"> }<br></td></tr
  3368. ><tr
  3369. id=sl_svn7768_376
  3370. ><td class="source"><br></td></tr
  3371. ><tr
  3372. id=sl_svn7768_377
  3373. ><td class="source"> <br></td></tr
  3374. ><tr
  3375. id=sl_svn7768_378
  3376. ><td class="source"> void delete() {<br></td></tr
  3377. ><tr
  3378. id=sl_svn7768_379
  3379. ><td class="source"> if (cacheMap != null) { <br></td></tr
  3380. ><tr
  3381. id=sl_svn7768_380
  3382. ><td class="source"> Set&lt;PGraphics&gt; keySet = cacheMap.keySet();<br></td></tr
  3383. ><tr
  3384. id=sl_svn7768_381
  3385. ><td class="source"> if (!keySet.isEmpty()) {<br></td></tr
  3386. ><tr
  3387. id=sl_svn7768_382
  3388. ><td class="source"> Object[] keys = keySet.toArray();<br></td></tr
  3389. ><tr
  3390. id=sl_svn7768_383
  3391. ><td class="source"> for (int i = 0; i &lt; keys.length; i++) {<br></td></tr
  3392. ><tr
  3393. id=sl_svn7768_384
  3394. ><td class="source"> Object data = getCache((PGraphics)keys[i]);<br></td></tr
  3395. ><tr
  3396. id=sl_svn7768_385
  3397. ><td class="source"> Method del = null;<br></td></tr
  3398. ><tr
  3399. id=sl_svn7768_386
  3400. ><td class="source"> <br></td></tr
  3401. ><tr
  3402. id=sl_svn7768_387
  3403. ><td class="source"> try {<br></td></tr
  3404. ><tr
  3405. id=sl_svn7768_388
  3406. ><td class="source"> Class&lt;?&gt; c = data.getClass();<br></td></tr
  3407. ><tr
  3408. id=sl_svn7768_389
  3409. ><td class="source"> del = c.getMethod(&quot;delete&quot;, new Class[] {});<br></td></tr
  3410. ><tr
  3411. id=sl_svn7768_390
  3412. ><td class="source"> } catch (Exception e) {}<br></td></tr
  3413. ><tr
  3414. id=sl_svn7768_391
  3415. ><td class="source"> <br></td></tr
  3416. ><tr
  3417. id=sl_svn7768_392
  3418. ><td class="source"> if (del != null) {<br></td></tr
  3419. ><tr
  3420. id=sl_svn7768_393
  3421. ><td class="source"> // The metadata have a delete method. We try running it.<br></td></tr
  3422. ><tr
  3423. id=sl_svn7768_394
  3424. ><td class="source"> try {<br></td></tr
  3425. ><tr
  3426. id=sl_svn7768_395
  3427. ><td class="source"> del.invoke(data, new Object[] {});<br></td></tr
  3428. ><tr
  3429. id=sl_svn7768_396
  3430. ><td class="source"> } catch (Exception e) {}<br></td></tr
  3431. ><tr
  3432. id=sl_svn7768_397
  3433. ><td class="source"> } <br></td></tr
  3434. ><tr
  3435. id=sl_svn7768_398
  3436. ><td class="source"> }<br></td></tr
  3437. ><tr
  3438. id=sl_svn7768_399
  3439. ><td class="source"> } <br></td></tr
  3440. ><tr
  3441. id=sl_svn7768_400
  3442. ><td class="source"> }<br></td></tr
  3443. ><tr
  3444. id=sl_svn7768_401
  3445. ><td class="source"> }<br></td></tr
  3446. ><tr
  3447. id=sl_svn7768_402
  3448. ><td class="source"><br></td></tr
  3449. ><tr
  3450. id=sl_svn7768_403
  3451. ><td class="source"> /**<br></td></tr
  3452. ><tr
  3453. id=sl_svn7768_404
  3454. ><td class="source"> * Write this PFont to an OutputStream.<br></td></tr
  3455. ><tr
  3456. id=sl_svn7768_405
  3457. ><td class="source"> * &lt;p&gt;<br></td></tr
  3458. ><tr
  3459. id=sl_svn7768_406
  3460. ><td class="source"> * This is used by the Create Font tool, or whatever anyone else dreams<br></td></tr
  3461. ><tr
  3462. id=sl_svn7768_407
  3463. ><td class="source"> * up for messing with fonts themselves.<br></td></tr
  3464. ><tr
  3465. id=sl_svn7768_408
  3466. ><td class="source"> * &lt;p&gt;<br></td></tr
  3467. ><tr
  3468. id=sl_svn7768_409
  3469. ><td class="source"> * It is assumed that the calling class will handle closing<br></td></tr
  3470. ><tr
  3471. id=sl_svn7768_410
  3472. ><td class="source"> * the stream when finished.<br></td></tr
  3473. ><tr
  3474. id=sl_svn7768_411
  3475. ><td class="source"> */<br></td></tr
  3476. ><tr
  3477. id=sl_svn7768_412
  3478. ><td class="source"> public void save(OutputStream output) throws IOException {<br></td></tr
  3479. ><tr
  3480. id=sl_svn7768_413
  3481. ><td class="source"> DataOutputStream os = new DataOutputStream(output);<br></td></tr
  3482. ><tr
  3483. id=sl_svn7768_414
  3484. ><td class="source"><br></td></tr
  3485. ><tr
  3486. id=sl_svn7768_415
  3487. ><td class="source"> os.writeInt(glyphCount);<br></td></tr
  3488. ><tr
  3489. id=sl_svn7768_416
  3490. ><td class="source"><br></td></tr
  3491. ><tr
  3492. id=sl_svn7768_417
  3493. ><td class="source"> if ((name == null) || (psname == null)) {<br></td></tr
  3494. ><tr
  3495. id=sl_svn7768_418
  3496. ><td class="source"> name = &quot;&quot;;<br></td></tr
  3497. ><tr
  3498. id=sl_svn7768_419
  3499. ><td class="source"> psname = &quot;&quot;;<br></td></tr
  3500. ><tr
  3501. id=sl_svn7768_420
  3502. ><td class="source"> }<br></td></tr
  3503. ><tr
  3504. id=sl_svn7768_421
  3505. ><td class="source"> <br></td></tr
  3506. ><tr
  3507. id=sl_svn7768_422
  3508. ><td class="source"> os.writeInt(11); // formerly numBits, now used for version number<br></td></tr
  3509. ><tr
  3510. id=sl_svn7768_423
  3511. ><td class="source"> os.writeInt(size); // formerly mboxX (was 64, now 48)<br></td></tr
  3512. ><tr
  3513. id=sl_svn7768_424
  3514. ><td class="source"> os.writeInt(0); // formerly mboxY, now ignored<br></td></tr
  3515. ><tr
  3516. id=sl_svn7768_425
  3517. ><td class="source"> os.writeInt(ascent); // formerly baseHt (was ignored)<br></td></tr
  3518. ><tr
  3519. id=sl_svn7768_426
  3520. ><td class="source"> os.writeInt(descent); // formerly struct padding for c version<br></td></tr
  3521. ><tr
  3522. id=sl_svn7768_427
  3523. ><td class="source"><br></td></tr
  3524. ><tr
  3525. id=sl_svn7768_428
  3526. ><td class="source"> for (int i = 0; i &lt; glyphCount; i++) {<br></td></tr
  3527. ><tr
  3528. id=sl_svn7768_429
  3529. ><td class="source"> glyphs[i].writeHeader(os);<br></td></tr
  3530. ><tr
  3531. id=sl_svn7768_430
  3532. ><td class="source"> }<br></td></tr
  3533. ><tr
  3534. id=sl_svn7768_431
  3535. ><td class="source"><br></td></tr
  3536. ><tr
  3537. id=sl_svn7768_432
  3538. ><td class="source"> for (int i = 0; i &lt; glyphCount; i++) {<br></td></tr
  3539. ><tr
  3540. id=sl_svn7768_433
  3541. ><td class="source"> glyphs[i].writeBitmap(os);<br></td></tr
  3542. ><tr
  3543. id=sl_svn7768_434
  3544. ><td class="source"> }<br></td></tr
  3545. ><tr
  3546. id=sl_svn7768_435
  3547. ><td class="source"><br></td></tr
  3548. ><tr
  3549. id=sl_svn7768_436
  3550. ><td class="source"> // version 11<br></td></tr
  3551. ><tr
  3552. id=sl_svn7768_437
  3553. ><td class="source"> os.writeUTF(name);<br></td></tr
  3554. ><tr
  3555. id=sl_svn7768_438
  3556. ><td class="source"> os.writeUTF(psname);<br></td></tr
  3557. ><tr
  3558. id=sl_svn7768_439
  3559. ><td class="source"> os.writeBoolean(smooth);<br></td></tr
  3560. ><tr
  3561. id=sl_svn7768_440
  3562. ><td class="source"><br></td></tr
  3563. ><tr
  3564. id=sl_svn7768_441
  3565. ><td class="source"> os.flush();<br></td></tr
  3566. ><tr
  3567. id=sl_svn7768_442
  3568. ><td class="source"> }<br></td></tr
  3569. ><tr
  3570. id=sl_svn7768_443
  3571. ><td class="source"><br></td></tr
  3572. ><tr
  3573. id=sl_svn7768_444
  3574. ><td class="source"><br></td></tr
  3575. ><tr
  3576. id=sl_svn7768_445
  3577. ><td class="source"> /**<br></td></tr
  3578. ><tr
  3579. id=sl_svn7768_446
  3580. ><td class="source"> * Create a new glyph, and add the character to the current font.<br></td></tr
  3581. ><tr
  3582. id=sl_svn7768_447
  3583. ><td class="source"> * @param c character to create an image for.<br></td></tr
  3584. ><tr
  3585. id=sl_svn7768_448
  3586. ><td class="source"> */<br></td></tr
  3587. ><tr
  3588. id=sl_svn7768_449
  3589. ><td class="source"> protected void addGlyph(char c) {<br></td></tr
  3590. ><tr
  3591. id=sl_svn7768_450
  3592. ><td class="source"> Glyph glyph = new Glyph(c);<br></td></tr
  3593. ><tr
  3594. id=sl_svn7768_451
  3595. ><td class="source"><br></td></tr
  3596. ><tr
  3597. id=sl_svn7768_452
  3598. ><td class="source"> if (glyphCount == glyphs.length) {<br></td></tr
  3599. ><tr
  3600. id=sl_svn7768_453
  3601. ><td class="source"> glyphs = (Glyph[]) PApplet.expand(glyphs);<br></td></tr
  3602. ><tr
  3603. id=sl_svn7768_454
  3604. ><td class="source"> }<br></td></tr
  3605. ><tr
  3606. id=sl_svn7768_455
  3607. ><td class="source"> if (glyphCount == 0) {<br></td></tr
  3608. ><tr
  3609. id=sl_svn7768_456
  3610. ><td class="source"> glyph.index = 0;<br></td></tr
  3611. ><tr
  3612. id=sl_svn7768_457
  3613. ><td class="source"> glyphs[glyphCount] = glyph;<br></td></tr
  3614. ><tr
  3615. id=sl_svn7768_458
  3616. ><td class="source"> if (glyph.value &lt; 128) {<br></td></tr
  3617. ><tr
  3618. id=sl_svn7768_459
  3619. ><td class="source"> ascii[glyph.value] = 0;<br></td></tr
  3620. ><tr
  3621. id=sl_svn7768_460
  3622. ><td class="source"> }<br></td></tr
  3623. ><tr
  3624. id=sl_svn7768_461
  3625. ><td class="source"> <br></td></tr
  3626. ><tr
  3627. id=sl_svn7768_462
  3628. ><td class="source"> } else if (glyphs[glyphCount-1].value &lt; glyph.value) {<br></td></tr
  3629. ><tr
  3630. id=sl_svn7768_463
  3631. ><td class="source"> glyphs[glyphCount] = glyph;<br></td></tr
  3632. ><tr
  3633. id=sl_svn7768_464
  3634. ><td class="source"> if (glyph.value &lt; 128) {<br></td></tr
  3635. ><tr
  3636. id=sl_svn7768_465
  3637. ><td class="source"> ascii[glyph.value] = glyphCount;<br></td></tr
  3638. ><tr
  3639. id=sl_svn7768_466
  3640. ><td class="source"> }<br></td></tr
  3641. ><tr
  3642. id=sl_svn7768_467
  3643. ><td class="source"> <br></td></tr
  3644. ><tr
  3645. id=sl_svn7768_468
  3646. ><td class="source"> } else {<br></td></tr
  3647. ><tr
  3648. id=sl_svn7768_469
  3649. ><td class="source"> for (int i = 0; i &lt; glyphCount; i++) {<br></td></tr
  3650. ><tr
  3651. id=sl_svn7768_470
  3652. ><td class="source"> if (glyphs[i].value &gt; c) {<br></td></tr
  3653. ><tr
  3654. id=sl_svn7768_471
  3655. ><td class="source"> for (int j = glyphCount; j &gt; i; --j) {<br></td></tr
  3656. ><tr
  3657. id=sl_svn7768_472
  3658. ><td class="source"> glyphs[j] = glyphs[j-1];<br></td></tr
  3659. ><tr
  3660. id=sl_svn7768_473
  3661. ><td class="source"> if (glyphs[j].value &lt; 128) {<br></td></tr
  3662. ><tr
  3663. id=sl_svn7768_474
  3664. ><td class="source"> ascii[glyphs[j].value] = j;<br></td></tr
  3665. ><tr
  3666. id=sl_svn7768_475
  3667. ><td class="source"> }<br></td></tr
  3668. ><tr
  3669. id=sl_svn7768_476
  3670. ><td class="source"> }<br></td></tr
  3671. ><tr
  3672. id=sl_svn7768_477
  3673. ><td class="source"> glyph.index = i;<br></td></tr
  3674. ><tr
  3675. id=sl_svn7768_478
  3676. ><td class="source"> glyphs[i] = glyph;<br></td></tr
  3677. ><tr
  3678. id=sl_svn7768_479
  3679. ><td class="source"> // cache locations of the ascii charset<br></td></tr
  3680. ><tr
  3681. id=sl_svn7768_480
  3682. ><td class="source"> if (c &lt; 128) ascii[c] = i;<br></td></tr
  3683. ><tr
  3684. id=sl_svn7768_481
  3685. ><td class="source"> break;<br></td></tr
  3686. ><tr
  3687. id=sl_svn7768_482
  3688. ><td class="source"> }<br></td></tr
  3689. ><tr
  3690. id=sl_svn7768_483
  3691. ><td class="source"> }<br></td></tr
  3692. ><tr
  3693. id=sl_svn7768_484
  3694. ><td class="source"> }<br></td></tr
  3695. ><tr
  3696. id=sl_svn7768_485
  3697. ><td class="source"> glyphCount++;<br></td></tr
  3698. ><tr
  3699. id=sl_svn7768_486
  3700. ><td class="source"> }<br></td></tr
  3701. ><tr
  3702. id=sl_svn7768_487
  3703. ><td class="source"><br></td></tr
  3704. ><tr
  3705. id=sl_svn7768_488
  3706. ><td class="source"><br></td></tr
  3707. ><tr
  3708. id=sl_svn7768_489
  3709. ><td class="source"> public String getName() {<br></td></tr
  3710. ><tr
  3711. id=sl_svn7768_490
  3712. ><td class="source"> return name;<br></td></tr
  3713. ><tr
  3714. id=sl_svn7768_491
  3715. ><td class="source"> }<br></td></tr
  3716. ><tr
  3717. id=sl_svn7768_492
  3718. ><td class="source"><br></td></tr
  3719. ><tr
  3720. id=sl_svn7768_493
  3721. ><td class="source"><br></td></tr
  3722. ><tr
  3723. id=sl_svn7768_494
  3724. ><td class="source"> public String getPostScriptName() {<br></td></tr
  3725. ><tr
  3726. id=sl_svn7768_495
  3727. ><td class="source"> return psname;<br></td></tr
  3728. ><tr
  3729. id=sl_svn7768_496
  3730. ><td class="source"> }<br></td></tr
  3731. ><tr
  3732. id=sl_svn7768_497
  3733. ><td class="source"><br></td></tr
  3734. ><tr
  3735. id=sl_svn7768_498
  3736. ><td class="source"> <br></td></tr
  3737. ><tr
  3738. id=sl_svn7768_499
  3739. ><td class="source"> /**<br></td></tr
  3740. ><tr
  3741. id=sl_svn7768_500
  3742. ><td class="source"> * Set the native complement of this font. Might be set internally via the<br></td></tr
  3743. ><tr
  3744. id=sl_svn7768_501
  3745. ><td class="source"> * findFont() function, or externally by a deriveFont() call if the font<br></td></tr
  3746. ><tr
  3747. id=sl_svn7768_502
  3748. ><td class="source"> * is resized by PGraphicsJava2D.<br></td></tr
  3749. ><tr
  3750. id=sl_svn7768_503
  3751. ><td class="source"> */<br></td></tr
  3752. ><tr
  3753. id=sl_svn7768_504
  3754. ><td class="source"> public void setFont(Font font) {<br></td></tr
  3755. ><tr
  3756. id=sl_svn7768_505
  3757. ><td class="source"> this.font = font;<br></td></tr
  3758. ><tr
  3759. id=sl_svn7768_506
  3760. ><td class="source"> }<br></td></tr
  3761. ><tr
  3762. id=sl_svn7768_507
  3763. ><td class="source"> <br></td></tr
  3764. ><tr
  3765. id=sl_svn7768_508
  3766. ><td class="source"> <br></td></tr
  3767. ><tr
  3768. id=sl_svn7768_509
  3769. ><td class="source"> /**<br></td></tr
  3770. ><tr
  3771. id=sl_svn7768_510
  3772. ><td class="source"> * Return the native java.awt.Font associated with this PFont (if any).<br></td></tr
  3773. ><tr
  3774. id=sl_svn7768_511
  3775. ><td class="source"> */<br></td></tr
  3776. ><tr
  3777. id=sl_svn7768_512
  3778. ><td class="source"> public Font getFont() {<br></td></tr
  3779. ><tr
  3780. id=sl_svn7768_513
  3781. ><td class="source"> if (subsetting) {<br></td></tr
  3782. ><tr
  3783. id=sl_svn7768_514
  3784. ><td class="source"> return null; // don&#39;t return the font for use<br></td></tr
  3785. ><tr
  3786. id=sl_svn7768_515
  3787. ><td class="source"> }<br></td></tr
  3788. ><tr
  3789. id=sl_svn7768_516
  3790. ><td class="source"> return font;<br></td></tr
  3791. ><tr
  3792. id=sl_svn7768_517
  3793. ><td class="source"> }<br></td></tr
  3794. ><tr
  3795. id=sl_svn7768_518
  3796. ><td class="source"><br></td></tr
  3797. ><tr
  3798. id=sl_svn7768_519
  3799. ><td class="source"> <br></td></tr
  3800. ><tr
  3801. id=sl_svn7768_520
  3802. ><td class="source"> /**<br></td></tr
  3803. ><tr
  3804. id=sl_svn7768_521
  3805. ><td class="source"> * Return size of this font.<br></td></tr
  3806. ><tr
  3807. id=sl_svn7768_522
  3808. ><td class="source"> */<br></td></tr
  3809. ><tr
  3810. id=sl_svn7768_523
  3811. ><td class="source"> public int getSize() {<br></td></tr
  3812. ><tr
  3813. id=sl_svn7768_524
  3814. ><td class="source"> return size;<br></td></tr
  3815. ><tr
  3816. id=sl_svn7768_525
  3817. ><td class="source"> }<br></td></tr
  3818. ><tr
  3819. id=sl_svn7768_526
  3820. ><td class="source"> <br></td></tr
  3821. ><tr
  3822. id=sl_svn7768_527
  3823. ><td class="source"><br></td></tr
  3824. ><tr
  3825. id=sl_svn7768_528
  3826. ><td class="source"> public boolean isStream() {<br></td></tr
  3827. ><tr
  3828. id=sl_svn7768_529
  3829. ><td class="source"> return stream;<br></td></tr
  3830. ><tr
  3831. id=sl_svn7768_530
  3832. ><td class="source"> }<br></td></tr
  3833. ><tr
  3834. id=sl_svn7768_531
  3835. ><td class="source"> <br></td></tr
  3836. ><tr
  3837. id=sl_svn7768_532
  3838. ><td class="source"> <br></td></tr
  3839. ><tr
  3840. id=sl_svn7768_533
  3841. ><td class="source"> public void setSubsetting() {<br></td></tr
  3842. ><tr
  3843. id=sl_svn7768_534
  3844. ><td class="source"> subsetting = true;<br></td></tr
  3845. ><tr
  3846. id=sl_svn7768_535
  3847. ><td class="source"> }<br></td></tr
  3848. ><tr
  3849. id=sl_svn7768_536
  3850. ><td class="source"><br></td></tr
  3851. ><tr
  3852. id=sl_svn7768_537
  3853. ><td class="source"><br></td></tr
  3854. ><tr
  3855. id=sl_svn7768_538
  3856. ><td class="source"> /**<br></td></tr
  3857. ><tr
  3858. id=sl_svn7768_539
  3859. ><td class="source"> * Attempt to find the native version of this font.<br></td></tr
  3860. ><tr
  3861. id=sl_svn7768_540
  3862. ><td class="source"> * (Public so that it can be used by OpenGL or other renderers.)<br></td></tr
  3863. ><tr
  3864. id=sl_svn7768_541
  3865. ><td class="source"> */<br></td></tr
  3866. ><tr
  3867. id=sl_svn7768_542
  3868. ><td class="source"> public Font findFont() {<br></td></tr
  3869. ><tr
  3870. id=sl_svn7768_543
  3871. ><td class="source"> if (font == null) {<br></td></tr
  3872. ><tr
  3873. id=sl_svn7768_544
  3874. ><td class="source"> if (!fontSearched) {<br></td></tr
  3875. ><tr
  3876. id=sl_svn7768_545
  3877. ><td class="source"> // this font may or may not be installed<br></td></tr
  3878. ><tr
  3879. id=sl_svn7768_546
  3880. ><td class="source"> font = new Font(name, Font.PLAIN, size);<br></td></tr
  3881. ><tr
  3882. id=sl_svn7768_547
  3883. ><td class="source"> // if the ps name matches, then we&#39;re in fine shape<br></td></tr
  3884. ><tr
  3885. id=sl_svn7768_548
  3886. ><td class="source"> if (!font.getPSName().equals(psname)) {<br></td></tr
  3887. ><tr
  3888. id=sl_svn7768_549
  3889. ><td class="source"> // on osx java 1.4 (not 1.3.. ugh), you can specify the ps name<br></td></tr
  3890. ><tr
  3891. id=sl_svn7768_550
  3892. ><td class="source"> // of the font, so try that in case this .vlw font was created on pc<br></td></tr
  3893. ><tr
  3894. id=sl_svn7768_551
  3895. ><td class="source"> // and the name is different, but the ps name is found on the<br></td></tr
  3896. ><tr
  3897. id=sl_svn7768_552
  3898. ><td class="source"> // java 1.4 mac that&#39;s currently running this sketch.<br></td></tr
  3899. ><tr
  3900. id=sl_svn7768_553
  3901. ><td class="source"> font = new Font(psname, Font.PLAIN, size);<br></td></tr
  3902. ><tr
  3903. id=sl_svn7768_554
  3904. ><td class="source"> }<br></td></tr
  3905. ><tr
  3906. id=sl_svn7768_555
  3907. ><td class="source"> // check again, and if still bad, screw em<br></td></tr
  3908. ><tr
  3909. id=sl_svn7768_556
  3910. ><td class="source"> if (!font.getPSName().equals(psname)) {<br></td></tr
  3911. ><tr
  3912. id=sl_svn7768_557
  3913. ><td class="source"> font = null;<br></td></tr
  3914. ><tr
  3915. id=sl_svn7768_558
  3916. ><td class="source"> }<br></td></tr
  3917. ><tr
  3918. id=sl_svn7768_559
  3919. ><td class="source"> fontSearched = true;<br></td></tr
  3920. ><tr
  3921. id=sl_svn7768_560
  3922. ><td class="source"> }<br></td></tr
  3923. ><tr
  3924. id=sl_svn7768_561
  3925. ><td class="source"> }<br></td></tr
  3926. ><tr
  3927. id=sl_svn7768_562
  3928. ><td class="source"> return font;<br></td></tr
  3929. ><tr
  3930. id=sl_svn7768_563
  3931. ><td class="source"> }<br></td></tr
  3932. ><tr
  3933. id=sl_svn7768_564
  3934. ><td class="source"><br></td></tr
  3935. ><tr
  3936. id=sl_svn7768_565
  3937. ><td class="source"><br></td></tr
  3938. ><tr
  3939. id=sl_svn7768_566
  3940. ><td class="source"> public Glyph getGlyph(char c) {<br></td></tr
  3941. ><tr
  3942. id=sl_svn7768_567
  3943. ><td class="source"> int index = index(c);<br></td></tr
  3944. ><tr
  3945. id=sl_svn7768_568
  3946. ><td class="source"> return (index == -1) ? null : glyphs[index];<br></td></tr
  3947. ><tr
  3948. id=sl_svn7768_569
  3949. ><td class="source"> }<br></td></tr
  3950. ><tr
  3951. id=sl_svn7768_570
  3952. ><td class="source"><br></td></tr
  3953. ><tr
  3954. id=sl_svn7768_571
  3955. ><td class="source"><br></td></tr
  3956. ><tr
  3957. id=sl_svn7768_572
  3958. ><td class="source"> /**<br></td></tr
  3959. ><tr
  3960. id=sl_svn7768_573
  3961. ><td class="source"> * Get index for the character.<br></td></tr
  3962. ><tr
  3963. id=sl_svn7768_574
  3964. ><td class="source"> * @return index into arrays or -1 if not found<br></td></tr
  3965. ><tr
  3966. id=sl_svn7768_575
  3967. ><td class="source"> */<br></td></tr
  3968. ><tr
  3969. id=sl_svn7768_576
  3970. ><td class="source"> protected int index(char c) {<br></td></tr
  3971. ><tr
  3972. id=sl_svn7768_577
  3973. ><td class="source"> if (lazy) {<br></td></tr
  3974. ><tr
  3975. id=sl_svn7768_578
  3976. ><td class="source"> int index = indexActual(c);<br></td></tr
  3977. ><tr
  3978. id=sl_svn7768_579
  3979. ><td class="source"> if (index != -1) {<br></td></tr
  3980. ><tr
  3981. id=sl_svn7768_580
  3982. ><td class="source"> return index;<br></td></tr
  3983. ><tr
  3984. id=sl_svn7768_581
  3985. ><td class="source"> }<br></td></tr
  3986. ><tr
  3987. id=sl_svn7768_582
  3988. ><td class="source"> if (font.canDisplay(c)) {<br></td></tr
  3989. ><tr
  3990. id=sl_svn7768_583
  3991. ><td class="source"> // create the glyph<br></td></tr
  3992. ><tr
  3993. id=sl_svn7768_584
  3994. ><td class="source"> addGlyph(c);<br></td></tr
  3995. ><tr
  3996. id=sl_svn7768_585
  3997. ><td class="source"> // now where did i put that?<br></td></tr
  3998. ><tr
  3999. id=sl_svn7768_586
  4000. ><td class="source"> return indexActual(c);<br></td></tr
  4001. ><tr
  4002. id=sl_svn7768_587
  4003. ><td class="source"> <br></td></tr
  4004. ><tr
  4005. id=sl_svn7768_588
  4006. ><td class="source"> } else {<br></td></tr
  4007. ><tr
  4008. id=sl_svn7768_589
  4009. ><td class="source"> return -1;<br></td></tr
  4010. ><tr
  4011. id=sl_svn7768_590
  4012. ><td class="source"> }<br></td></tr
  4013. ><tr
  4014. id=sl_svn7768_591
  4015. ><td class="source"><br></td></tr
  4016. ><tr
  4017. id=sl_svn7768_592
  4018. ><td class="source"> } else {<br></td></tr
  4019. ><tr
  4020. id=sl_svn7768_593
  4021. ><td class="source"> return indexActual(c);<br></td></tr
  4022. ><tr
  4023. id=sl_svn7768_594
  4024. ><td class="source"> }<br></td></tr
  4025. ><tr
  4026. id=sl_svn7768_595
  4027. ><td class="source"> }<br></td></tr
  4028. ><tr
  4029. id=sl_svn7768_596
  4030. ><td class="source"><br></td></tr
  4031. ><tr
  4032. id=sl_svn7768_597
  4033. ><td class="source"><br></td></tr
  4034. ><tr
  4035. id=sl_svn7768_598
  4036. ><td class="source"> protected int indexActual(char c) {<br></td></tr
  4037. ><tr
  4038. id=sl_svn7768_599
  4039. ><td class="source"> // degenerate case, but the find function will have trouble<br></td></tr
  4040. ><tr
  4041. id=sl_svn7768_600
  4042. ><td class="source"> // if there are somehow zero chars in the lookup<br></td></tr
  4043. ><tr
  4044. id=sl_svn7768_601
  4045. ><td class="source"> //if (value.length == 0) return -1;<br></td></tr
  4046. ><tr
  4047. id=sl_svn7768_602
  4048. ><td class="source"> if (glyphCount == 0) return -1;<br></td></tr
  4049. ><tr
  4050. id=sl_svn7768_603
  4051. ><td class="source"><br></td></tr
  4052. ><tr
  4053. id=sl_svn7768_604
  4054. ><td class="source"> // quicker lookup for the ascii fellers<br></td></tr
  4055. ><tr
  4056. id=sl_svn7768_605
  4057. ><td class="source"> if (c &lt; 128) return ascii[c];<br></td></tr
  4058. ><tr
  4059. id=sl_svn7768_606
  4060. ><td class="source"><br></td></tr
  4061. ><tr
  4062. id=sl_svn7768_607
  4063. ><td class="source"> // some other unicode char, hunt it out<br></td></tr
  4064. ><tr
  4065. id=sl_svn7768_608
  4066. ><td class="source"> //return index_hunt(c, 0, value.length-1);<br></td></tr
  4067. ><tr
  4068. id=sl_svn7768_609
  4069. ><td class="source"> return indexHunt(c, 0, glyphCount-1);<br></td></tr
  4070. ><tr
  4071. id=sl_svn7768_610
  4072. ><td class="source"> }<br></td></tr
  4073. ><tr
  4074. id=sl_svn7768_611
  4075. ><td class="source"><br></td></tr
  4076. ><tr
  4077. id=sl_svn7768_612
  4078. ><td class="source"><br></td></tr
  4079. ><tr
  4080. id=sl_svn7768_613
  4081. ><td class="source"> protected int indexHunt(int c, int start, int stop) {<br></td></tr
  4082. ><tr
  4083. id=sl_svn7768_614
  4084. ><td class="source"> int pivot = (start + stop) / 2;<br></td></tr
  4085. ><tr
  4086. id=sl_svn7768_615
  4087. ><td class="source"><br></td></tr
  4088. ><tr
  4089. id=sl_svn7768_616
  4090. ><td class="source"> // if this is the char, then return it<br></td></tr
  4091. ><tr
  4092. id=sl_svn7768_617
  4093. ><td class="source"> if (c == glyphs[pivot].value) return pivot;<br></td></tr
  4094. ><tr
  4095. id=sl_svn7768_618
  4096. ><td class="source"><br></td></tr
  4097. ><tr
  4098. id=sl_svn7768_619
  4099. ><td class="source"> // char doesn&#39;t exist, otherwise would have been the pivot<br></td></tr
  4100. ><tr
  4101. id=sl_svn7768_620
  4102. ><td class="source"> //if (start == stop) return -1;<br></td></tr
  4103. ><tr
  4104. id=sl_svn7768_621
  4105. ><td class="source"> if (start &gt;= stop) return -1;<br></td></tr
  4106. ><tr
  4107. id=sl_svn7768_622
  4108. ><td class="source"><br></td></tr
  4109. ><tr
  4110. id=sl_svn7768_623
  4111. ><td class="source"> // if it&#39;s in the lower half, continue searching that<br></td></tr
  4112. ><tr
  4113. id=sl_svn7768_624
  4114. ><td class="source"> if (c &lt; glyphs[pivot].value) return indexHunt(c, start, pivot-1);<br></td></tr
  4115. ><tr
  4116. id=sl_svn7768_625
  4117. ><td class="source"><br></td></tr
  4118. ><tr
  4119. id=sl_svn7768_626
  4120. ><td class="source"> // if it&#39;s in the upper half, continue there<br></td></tr
  4121. ><tr
  4122. id=sl_svn7768_627
  4123. ><td class="source"> return indexHunt(c, pivot+1, stop);<br></td></tr
  4124. ><tr
  4125. id=sl_svn7768_628
  4126. ><td class="source"> }<br></td></tr
  4127. ><tr
  4128. id=sl_svn7768_629
  4129. ><td class="source"><br></td></tr
  4130. ><tr
  4131. id=sl_svn7768_630
  4132. ><td class="source"><br></td></tr
  4133. ><tr
  4134. id=sl_svn7768_631
  4135. ><td class="source"> /**<br></td></tr
  4136. ><tr
  4137. id=sl_svn7768_632
  4138. ><td class="source"> * Currently un-implemented for .vlw fonts,<br></td></tr
  4139. ><tr
  4140. id=sl_svn7768_633
  4141. ><td class="source"> * but honored for layout in case subclasses use it.<br></td></tr
  4142. ><tr
  4143. id=sl_svn7768_634
  4144. ><td class="source"> */<br></td></tr
  4145. ><tr
  4146. id=sl_svn7768_635
  4147. ><td class="source"> public float kern(char a, char b) {<br></td></tr
  4148. ><tr
  4149. id=sl_svn7768_636
  4150. ><td class="source"> return 0;<br></td></tr
  4151. ><tr
  4152. id=sl_svn7768_637
  4153. ><td class="source"> }<br></td></tr
  4154. ><tr
  4155. id=sl_svn7768_638
  4156. ><td class="source"><br></td></tr
  4157. ><tr
  4158. id=sl_svn7768_639
  4159. ><td class="source"><br></td></tr
  4160. ><tr
  4161. id=sl_svn7768_640
  4162. ><td class="source"> /**<br></td></tr
  4163. ><tr
  4164. id=sl_svn7768_641
  4165. ><td class="source"> * Returns the ascent of this font from the baseline.<br></td></tr
  4166. ><tr
  4167. id=sl_svn7768_642
  4168. ><td class="source"> * The value is based on a font of size 1.<br></td></tr
  4169. ><tr
  4170. id=sl_svn7768_643
  4171. ><td class="source"> */<br></td></tr
  4172. ><tr
  4173. id=sl_svn7768_644
  4174. ><td class="source"> public float ascent() {<br></td></tr
  4175. ><tr
  4176. id=sl_svn7768_645
  4177. ><td class="source"> return ((float) ascent / (float) size);<br></td></tr
  4178. ><tr
  4179. id=sl_svn7768_646
  4180. ><td class="source"> }<br></td></tr
  4181. ><tr
  4182. id=sl_svn7768_647
  4183. ><td class="source"><br></td></tr
  4184. ><tr
  4185. id=sl_svn7768_648
  4186. ><td class="source"><br></td></tr
  4187. ><tr
  4188. id=sl_svn7768_649
  4189. ><td class="source"> /**<br></td></tr
  4190. ><tr
  4191. id=sl_svn7768_650
  4192. ><td class="source"> * Returns how far this font descends from the baseline.<br></td></tr
  4193. ><tr
  4194. id=sl_svn7768_651
  4195. ><td class="source"> * The value is based on a font size of 1.<br></td></tr
  4196. ><tr
  4197. id=sl_svn7768_652
  4198. ><td class="source"> */<br></td></tr
  4199. ><tr
  4200. id=sl_svn7768_653
  4201. ><td class="source"> public float descent() {<br></td></tr
  4202. ><tr
  4203. id=sl_svn7768_654
  4204. ><td class="source"> return ((float) descent / (float) size);<br></td></tr
  4205. ><tr
  4206. id=sl_svn7768_655
  4207. ><td class="source"> }<br></td></tr
  4208. ><tr
  4209. id=sl_svn7768_656
  4210. ><td class="source"><br></td></tr
  4211. ><tr
  4212. id=sl_svn7768_657
  4213. ><td class="source"><br></td></tr
  4214. ><tr
  4215. id=sl_svn7768_658
  4216. ><td class="source"> /**<br></td></tr
  4217. ><tr
  4218. id=sl_svn7768_659
  4219. ><td class="source"> * Width of this character for a font of size 1.<br></td></tr
  4220. ><tr
  4221. id=sl_svn7768_660
  4222. ><td class="source"> */<br></td></tr
  4223. ><tr
  4224. id=sl_svn7768_661
  4225. ><td class="source"> public float width(char c) {<br></td></tr
  4226. ><tr
  4227. id=sl_svn7768_662
  4228. ><td class="source"> if (c == 32) return width(&#39;i&#39;);<br></td></tr
  4229. ><tr
  4230. id=sl_svn7768_663
  4231. ><td class="source"><br></td></tr
  4232. ><tr
  4233. id=sl_svn7768_664
  4234. ><td class="source"> int cc = index(c);<br></td></tr
  4235. ><tr
  4236. id=sl_svn7768_665
  4237. ><td class="source"> if (cc == -1) return 0;<br></td></tr
  4238. ><tr
  4239. id=sl_svn7768_666
  4240. ><td class="source"><br></td></tr
  4241. ><tr
  4242. id=sl_svn7768_667
  4243. ><td class="source"> return ((float) glyphs[cc].setWidth / (float) size);<br></td></tr
  4244. ><tr
  4245. id=sl_svn7768_668
  4246. ><td class="source"> }<br></td></tr
  4247. ><tr
  4248. id=sl_svn7768_669
  4249. ><td class="source"><br></td></tr
  4250. ><tr
  4251. id=sl_svn7768_670
  4252. ><td class="source"><br></td></tr
  4253. ><tr
  4254. id=sl_svn7768_671
  4255. ><td class="source"> //////////////////////////////////////////////////////////////<br></td></tr
  4256. ><tr
  4257. id=sl_svn7768_672
  4258. ><td class="source"><br></td></tr
  4259. ><tr
  4260. id=sl_svn7768_673
  4261. ><td class="source"> // METADATA REQUIRED BY THE RENDERERS<br></td></tr
  4262. ><tr
  4263. id=sl_svn7768_674
  4264. ><td class="source"> <br></td></tr
  4265. ><tr
  4266. id=sl_svn7768_675
  4267. ><td class="source"><br></td></tr
  4268. ><tr
  4269. id=sl_svn7768_676
  4270. ><td class="source"> /**<br></td></tr
  4271. ><tr
  4272. id=sl_svn7768_677
  4273. ><td class="source"> * Store data of some kind for a renderer that requires extra metadata of<br></td></tr
  4274. ><tr
  4275. id=sl_svn7768_678
  4276. ><td class="source"> * some kind. Usually this is a renderer-specific representation of the<br></td></tr
  4277. ><tr
  4278. id=sl_svn7768_679
  4279. ><td class="source"> * font data, for instance a custom OpenGL texture for PGraphicsOpenGL2.<br></td></tr
  4280. ><tr
  4281. id=sl_svn7768_680
  4282. ><td class="source"> * @param renderer The PGraphics renderer associated to the font<br></td></tr
  4283. ><tr
  4284. id=sl_svn7768_681
  4285. ><td class="source"> * @param storage The metadata required by the renderer <br></td></tr
  4286. ><tr
  4287. id=sl_svn7768_682
  4288. ><td class="source"> */<br></td></tr
  4289. ><tr
  4290. id=sl_svn7768_683
  4291. ><td class="source"> public void setCache(PGraphics renderer, Object storage) {<br></td></tr
  4292. ><tr
  4293. id=sl_svn7768_684
  4294. ><td class="source"> if (cacheMap == null) cacheMap = new HashMap&lt;PGraphics, Object&gt;();<br></td></tr
  4295. ><tr
  4296. id=sl_svn7768_685
  4297. ><td class="source"> cacheMap.put(renderer, storage);<br></td></tr
  4298. ><tr
  4299. id=sl_svn7768_686
  4300. ><td class="source"> }<br></td></tr
  4301. ><tr
  4302. id=sl_svn7768_687
  4303. ><td class="source"><br></td></tr
  4304. ><tr
  4305. id=sl_svn7768_688
  4306. ><td class="source"><br></td></tr
  4307. ><tr
  4308. id=sl_svn7768_689
  4309. ><td class="source"> /**<br></td></tr
  4310. ><tr
  4311. id=sl_svn7768_690
  4312. ><td class="source"> * Get cache storage data for the specified renderer. Because each renderer<br></td></tr
  4313. ><tr
  4314. id=sl_svn7768_691
  4315. ><td class="source"> * will cache data in different formats, it&#39;s necessary to store cache data<br></td></tr
  4316. ><tr
  4317. id=sl_svn7768_692
  4318. ><td class="source"> * keyed by the renderer object. Otherwise, attempting to draw the same<br></td></tr
  4319. ><tr
  4320. id=sl_svn7768_693
  4321. ><td class="source"> * image to both a PGraphicsJava2D and a PGraphicsOpenGL2 will cause errors.<br></td></tr
  4322. ><tr
  4323. id=sl_svn7768_694
  4324. ><td class="source"> * @param renderer The PGraphics renderer associated to the font<br></td></tr
  4325. ><tr
  4326. id=sl_svn7768_695
  4327. ><td class="source"> * @return metadata stored for the specified renderer<br></td></tr
  4328. ><tr
  4329. id=sl_svn7768_696
  4330. ><td class="source"> */<br></td></tr
  4331. ><tr
  4332. id=sl_svn7768_697
  4333. ><td class="source"> public Object getCache(PGraphics renderer) {<br></td></tr
  4334. ><tr
  4335. id=sl_svn7768_698
  4336. ><td class="source"> if (cacheMap == null) return null;<br></td></tr
  4337. ><tr
  4338. id=sl_svn7768_699
  4339. ><td class="source"> return cacheMap.get(renderer);<br></td></tr
  4340. ><tr
  4341. id=sl_svn7768_700
  4342. ><td class="source"> }<br></td></tr
  4343. ><tr
  4344. id=sl_svn7768_701
  4345. ><td class="source"><br></td></tr
  4346. ><tr
  4347. id=sl_svn7768_702
  4348. ><td class="source"><br></td></tr
  4349. ><tr
  4350. id=sl_svn7768_703
  4351. ><td class="source"> /**<br></td></tr
  4352. ><tr
  4353. id=sl_svn7768_704
  4354. ><td class="source"> * Remove information associated with this renderer from the cache, if any.<br></td></tr
  4355. ><tr
  4356. id=sl_svn7768_705
  4357. ><td class="source"> * @param parent The PGraphics renderer whose cache data should be removed<br></td></tr
  4358. ><tr
  4359. id=sl_svn7768_706
  4360. ><td class="source"> */<br></td></tr
  4361. ><tr
  4362. id=sl_svn7768_707
  4363. ><td class="source"> public void removeCache(PGraphics renderer) {<br></td></tr
  4364. ><tr
  4365. id=sl_svn7768_708
  4366. ><td class="source"> if (cacheMap != null) {<br></td></tr
  4367. ><tr
  4368. id=sl_svn7768_709
  4369. ><td class="source"> cacheMap.remove(renderer);<br></td></tr
  4370. ><tr
  4371. id=sl_svn7768_710
  4372. ><td class="source"> }<br></td></tr
  4373. ><tr
  4374. id=sl_svn7768_711
  4375. ><td class="source"> }<br></td></tr
  4376. ><tr
  4377. id=sl_svn7768_712
  4378. ><td class="source"> <br></td></tr
  4379. ><tr
  4380. id=sl_svn7768_713
  4381. ><td class="source"> <br></td></tr
  4382. ><tr
  4383. id=sl_svn7768_714
  4384. ><td class="source"> ////////////////////////////////////////////////////////////// <br></td></tr
  4385. ><tr
  4386. id=sl_svn7768_715
  4387. ><td class="source"> <br></td></tr
  4388. ><tr
  4389. id=sl_svn7768_716
  4390. ><td class="source"> public int getGlyphCount() {<br></td></tr
  4391. ><tr
  4392. id=sl_svn7768_717
  4393. ><td class="source"> return glyphCount;<br></td></tr
  4394. ><tr
  4395. id=sl_svn7768_718
  4396. ><td class="source"> }<br></td></tr
  4397. ><tr
  4398. id=sl_svn7768_719
  4399. ><td class="source"> <br></td></tr
  4400. ><tr
  4401. id=sl_svn7768_720
  4402. ><td class="source"> public Glyph getGlyph(int i) {<br></td></tr
  4403. ><tr
  4404. id=sl_svn7768_721
  4405. ><td class="source"> return glyphs[i]; <br></td></tr
  4406. ><tr
  4407. id=sl_svn7768_722
  4408. ><td class="source"> }<br></td></tr
  4409. ><tr
  4410. id=sl_svn7768_723
  4411. ><td class="source"> <br></td></tr
  4412. ><tr
  4413. id=sl_svn7768_724
  4414. ><td class="source"> //////////////////////////////////////////////////////////////<br></td></tr
  4415. ><tr
  4416. id=sl_svn7768_725
  4417. ><td class="source"><br></td></tr
  4418. ><tr
  4419. id=sl_svn7768_726
  4420. ><td class="source"><br></td></tr
  4421. ><tr
  4422. id=sl_svn7768_727
  4423. ><td class="source"> static final char[] EXTRA_CHARS = {<br></td></tr
  4424. ><tr
  4425. id=sl_svn7768_728
  4426. ><td class="source"> 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,<br></td></tr
  4427. ><tr
  4428. id=sl_svn7768_729
  4429. ><td class="source"> 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,<br></td></tr
  4430. ><tr
  4431. id=sl_svn7768_730
  4432. ><td class="source"> 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,<br></td></tr
  4433. ><tr
  4434. id=sl_svn7768_731
  4435. ><td class="source"> 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,<br></td></tr
  4436. ><tr
  4437. id=sl_svn7768_732
  4438. ><td class="source"> 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,<br></td></tr
  4439. ><tr
  4440. id=sl_svn7768_733
  4441. ><td class="source"> 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,<br></td></tr
  4442. ><tr
  4443. id=sl_svn7768_734
  4444. ><td class="source"> 0x00B0, 0x00B1, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00BA,<br></td></tr
  4445. ><tr
  4446. id=sl_svn7768_735
  4447. ><td class="source"> 0x00BB, 0x00BF, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5,<br></td></tr
  4448. ><tr
  4449. id=sl_svn7768_736
  4450. ><td class="source"> 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD,<br></td></tr
  4451. ><tr
  4452. id=sl_svn7768_737
  4453. ><td class="source"> 0x00CE, 0x00CF, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6,<br></td></tr
  4454. ><tr
  4455. id=sl_svn7768_738
  4456. ><td class="source"> 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DF,<br></td></tr
  4457. ><tr
  4458. id=sl_svn7768_739
  4459. ><td class="source"> 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,<br></td></tr
  4460. ><tr
  4461. id=sl_svn7768_740
  4462. ><td class="source"> 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,<br></td></tr
  4463. ><tr
  4464. id=sl_svn7768_741
  4465. ><td class="source"> 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8,<br></td></tr
  4466. ><tr
  4467. id=sl_svn7768_742
  4468. ><td class="source"> 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FF, 0x0102, 0x0103,<br></td></tr
  4469. ><tr
  4470. id=sl_svn7768_743
  4471. ><td class="source"> 0x0104, 0x0105, 0x0106, 0x0107, 0x010C, 0x010D, 0x010E, 0x010F,<br></td></tr
  4472. ><tr
  4473. id=sl_svn7768_744
  4474. ><td class="source"> 0x0110, 0x0111, 0x0118, 0x0119, 0x011A, 0x011B, 0x0131, 0x0139,<br></td></tr
  4475. ><tr
  4476. id=sl_svn7768_745
  4477. ><td class="source"> 0x013A, 0x013D, 0x013E, 0x0141, 0x0142, 0x0143, 0x0144, 0x0147,<br></td></tr
  4478. ><tr
  4479. id=sl_svn7768_746
  4480. ><td class="source"> 0x0148, 0x0150, 0x0151, 0x0152, 0x0153, 0x0154, 0x0155, 0x0158,<br></td></tr
  4481. ><tr
  4482. id=sl_svn7768_747
  4483. ><td class="source"> 0x0159, 0x015A, 0x015B, 0x015E, 0x015F, 0x0160, 0x0161, 0x0162,<br></td></tr
  4484. ><tr
  4485. id=sl_svn7768_748
  4486. ><td class="source"> 0x0163, 0x0164, 0x0165, 0x016E, 0x016F, 0x0170, 0x0171, 0x0178,<br></td></tr
  4487. ><tr
  4488. id=sl_svn7768_749
  4489. ><td class="source"> 0x0179, 0x017A, 0x017B, 0x017C, 0x017D, 0x017E, 0x0192, 0x02C6,<br></td></tr
  4490. ><tr
  4491. id=sl_svn7768_750
  4492. ><td class="source"> 0x02C7, 0x02D8, 0x02D9, 0x02DA, 0x02DB, 0x02DC, 0x02DD, 0x03A9,<br></td></tr
  4493. ><tr
  4494. id=sl_svn7768_751
  4495. ><td class="source"> 0x03C0, 0x2013, 0x2014, 0x2018, 0x2019, 0x201A, 0x201C, 0x201D,<br></td></tr
  4496. ><tr
  4497. id=sl_svn7768_752
  4498. ><td class="source"> 0x201E, 0x2020, 0x2021, 0x2022, 0x2026, 0x2030, 0x2039, 0x203A,<br></td></tr
  4499. ><tr
  4500. id=sl_svn7768_753
  4501. ><td class="source"> 0x2044, 0x20AC, 0x2122, 0x2202, 0x2206, 0x220F, 0x2211, 0x221A,<br></td></tr
  4502. ><tr
  4503. id=sl_svn7768_754
  4504. ><td class="source"> 0x221E, 0x222B, 0x2248, 0x2260, 0x2264, 0x2265, 0x25CA, 0xF8FF,<br></td></tr
  4505. ><tr
  4506. id=sl_svn7768_755
  4507. ><td class="source"> 0xFB01, 0xFB02<br></td></tr
  4508. ><tr
  4509. id=sl_svn7768_756
  4510. ><td class="source"> };<br></td></tr
  4511. ><tr
  4512. id=sl_svn7768_757
  4513. ><td class="source"><br></td></tr
  4514. ><tr
  4515. id=sl_svn7768_758
  4516. ><td class="source"><br></td></tr
  4517. ><tr
  4518. id=sl_svn7768_759
  4519. ><td class="source"> /**<br></td></tr
  4520. ><tr
  4521. id=sl_svn7768_760
  4522. ><td class="source"> * The default Processing character set.<br></td></tr
  4523. ><tr
  4524. id=sl_svn7768_761
  4525. ><td class="source"> * &lt;P&gt;<br></td></tr
  4526. ><tr
  4527. id=sl_svn7768_762
  4528. ><td class="source"> * This is the union of the Mac Roman and Windows ANSI (CP1250)<br></td></tr
  4529. ><tr
  4530. id=sl_svn7768_763
  4531. ><td class="source"> * character sets. ISO 8859-1 Latin 1 is Unicode characters 0x80 -&gt; 0xFF,<br></td></tr
  4532. ><tr
  4533. id=sl_svn7768_764
  4534. ><td class="source"> * and would seem a good standard, but in practice, most P5 users would<br></td></tr
  4535. ><tr
  4536. id=sl_svn7768_765
  4537. ><td class="source"> * rather have characters that they expect from their platform&#39;s fonts.<br></td></tr
  4538. ><tr
  4539. id=sl_svn7768_766
  4540. ><td class="source"> * &lt;P&gt;<br></td></tr
  4541. ><tr
  4542. id=sl_svn7768_767
  4543. ><td class="source"> * This is more of an interim solution until a much better<br></td></tr
  4544. ><tr
  4545. id=sl_svn7768_768
  4546. ><td class="source"> * font solution can be determined. (i.e. create fonts on<br></td></tr
  4547. ><tr
  4548. id=sl_svn7768_769
  4549. ><td class="source"> * the fly from some sort of vector format).<br></td></tr
  4550. ><tr
  4551. id=sl_svn7768_770
  4552. ><td class="source"> * &lt;P&gt;<br></td></tr
  4553. ><tr
  4554. id=sl_svn7768_771
  4555. ><td class="source"> * Not that I expect that to happen.<br></td></tr
  4556. ><tr
  4557. id=sl_svn7768_772
  4558. ><td class="source"> */<br></td></tr
  4559. ><tr
  4560. id=sl_svn7768_773
  4561. ><td class="source"> static public char[] CHARSET;<br></td></tr
  4562. ><tr
  4563. id=sl_svn7768_774
  4564. ><td class="source"> static {<br></td></tr
  4565. ><tr
  4566. id=sl_svn7768_775
  4567. ><td class="source"> CHARSET = new char[126-33+1 + EXTRA_CHARS.length];<br></td></tr
  4568. ><tr
  4569. id=sl_svn7768_776
  4570. ><td class="source"> int index = 0;<br></td></tr
  4571. ><tr
  4572. id=sl_svn7768_777
  4573. ><td class="source"> for (int i = 33; i &lt;= 126; i++) {<br></td></tr
  4574. ><tr
  4575. id=sl_svn7768_778
  4576. ><td class="source"> CHARSET[index++] = (char)i;<br></td></tr
  4577. ><tr
  4578. id=sl_svn7768_779
  4579. ><td class="source"> }<br></td></tr
  4580. ><tr
  4581. id=sl_svn7768_780
  4582. ><td class="source"> for (int i = 0; i &lt; EXTRA_CHARS.length; i++) {<br></td></tr
  4583. ><tr
  4584. id=sl_svn7768_781
  4585. ><td class="source"> CHARSET[index++] = EXTRA_CHARS[i];<br></td></tr
  4586. ><tr
  4587. id=sl_svn7768_782
  4588. ><td class="source"> }<br></td></tr
  4589. ><tr
  4590. id=sl_svn7768_783
  4591. ><td class="source"> };<br></td></tr
  4592. ><tr
  4593. id=sl_svn7768_784
  4594. ><td class="source"><br></td></tr
  4595. ><tr
  4596. id=sl_svn7768_785
  4597. ><td class="source"><br></td></tr
  4598. ><tr
  4599. id=sl_svn7768_786
  4600. ><td class="source"> /**<br></td></tr
  4601. ><tr
  4602. id=sl_svn7768_787
  4603. ><td class="source"> * Get a list of the fonts installed on the system that can be used<br></td></tr
  4604. ><tr
  4605. id=sl_svn7768_788
  4606. ><td class="source"> * by Java. Not all fonts can be used in Java, in fact it&#39;s mostly<br></td></tr
  4607. ><tr
  4608. id=sl_svn7768_789
  4609. ><td class="source"> * only TrueType fonts. OpenType fonts with CFF data such as Adobe&#39;s<br></td></tr
  4610. ><tr
  4611. id=sl_svn7768_790
  4612. ><td class="source"> * OpenType fonts seem to have trouble (even though they&#39;re sort of<br></td></tr
  4613. ><tr
  4614. id=sl_svn7768_791
  4615. ><td class="source"> * TrueType fonts as well, or may have a .ttf extension). Regular<br></td></tr
  4616. ><tr
  4617. id=sl_svn7768_792
  4618. ><td class="source"> * PostScript fonts seem to work OK, however.<br></td></tr
  4619. ><tr
  4620. id=sl_svn7768_793
  4621. ><td class="source"> * &lt;P&gt;<br></td></tr
  4622. ><tr
  4623. id=sl_svn7768_794
  4624. ><td class="source"> * Not recommended for use in applets, but this is implemented<br></td></tr
  4625. ><tr
  4626. id=sl_svn7768_795
  4627. ><td class="source"> * in PFont because the Java methods to access this information<br></td></tr
  4628. ><tr
  4629. id=sl_svn7768_796
  4630. ><td class="source"> * have changed between 1.1 and 1.4, and the 1.4 method is<br></td></tr
  4631. ><tr
  4632. id=sl_svn7768_797
  4633. ><td class="source"> * typical of the sort of undergraduate-level over-abstraction<br></td></tr
  4634. ><tr
  4635. id=sl_svn7768_798
  4636. ><td class="source"> * that the seems to have made its way into the Java API after 1.1.<br></td></tr
  4637. ><tr
  4638. id=sl_svn7768_799
  4639. ><td class="source"> */<br></td></tr
  4640. ><tr
  4641. id=sl_svn7768_800
  4642. ><td class="source"> static public String[] list() {<br></td></tr
  4643. ><tr
  4644. id=sl_svn7768_801
  4645. ><td class="source"> loadFonts();<br></td></tr
  4646. ><tr
  4647. id=sl_svn7768_802
  4648. ><td class="source"> String list[] = new String[fonts.length];<br></td></tr
  4649. ><tr
  4650. id=sl_svn7768_803
  4651. ><td class="source"> for (int i = 0; i &lt; list.length; i++) {<br></td></tr
  4652. ><tr
  4653. id=sl_svn7768_804
  4654. ><td class="source"> list[i] = fonts[i].getName();<br></td></tr
  4655. ><tr
  4656. id=sl_svn7768_805
  4657. ><td class="source"> }<br></td></tr
  4658. ><tr
  4659. id=sl_svn7768_806
  4660. ><td class="source"> return list;<br></td></tr
  4661. ><tr
  4662. id=sl_svn7768_807
  4663. ><td class="source"> }<br></td></tr
  4664. ><tr
  4665. id=sl_svn7768_808
  4666. ><td class="source"> <br></td></tr
  4667. ><tr
  4668. id=sl_svn7768_809
  4669. ><td class="source"><br></td></tr
  4670. ><tr
  4671. id=sl_svn7768_810
  4672. ><td class="source"> static public void loadFonts() {<br></td></tr
  4673. ><tr
  4674. id=sl_svn7768_811
  4675. ><td class="source"> if (fonts == null) {<br></td></tr
  4676. ><tr
  4677. id=sl_svn7768_812
  4678. ><td class="source"> GraphicsEnvironment ge =<br></td></tr
  4679. ><tr
  4680. id=sl_svn7768_813
  4681. ><td class="source"> GraphicsEnvironment.getLocalGraphicsEnvironment();<br></td></tr
  4682. ><tr
  4683. id=sl_svn7768_814
  4684. ><td class="source"> fonts = ge.getAllFonts();<br></td></tr
  4685. ><tr
  4686. id=sl_svn7768_815
  4687. ><td class="source"> if (PApplet.platform == PConstants.MACOSX) {<br></td></tr
  4688. ><tr
  4689. id=sl_svn7768_816
  4690. ><td class="source"> fontDifferent = new HashMap&lt;String,Font&gt;();<br></td></tr
  4691. ><tr
  4692. id=sl_svn7768_817
  4693. ><td class="source"> for (Font font : fonts) {<br></td></tr
  4694. ><tr
  4695. id=sl_svn7768_818
  4696. ><td class="source"> // getName() returns the PostScript name on OS X 10.6 w/ Java 6.<br></td></tr
  4697. ><tr
  4698. id=sl_svn7768_819
  4699. ><td class="source"> fontDifferent.put(font.getName(), font);<br></td></tr
  4700. ><tr
  4701. id=sl_svn7768_820
  4702. ><td class="source"> //fontDifferent.put(font.getPSName(), font);<br></td></tr
  4703. ><tr
  4704. id=sl_svn7768_821
  4705. ><td class="source"> }<br></td></tr
  4706. ><tr
  4707. id=sl_svn7768_822
  4708. ><td class="source"> }<br></td></tr
  4709. ><tr
  4710. id=sl_svn7768_823
  4711. ><td class="source"> }<br></td></tr
  4712. ><tr
  4713. id=sl_svn7768_824
  4714. ><td class="source"> }<br></td></tr
  4715. ><tr
  4716. id=sl_svn7768_825
  4717. ><td class="source"><br></td></tr
  4718. ><tr
  4719. id=sl_svn7768_826
  4720. ><td class="source"><br></td></tr
  4721. ><tr
  4722. id=sl_svn7768_827
  4723. ><td class="source"> /**<br></td></tr
  4724. ><tr
  4725. id=sl_svn7768_828
  4726. ><td class="source"> * Starting with Java 1.5, Apple broke the ability to specify most fonts.<br></td></tr
  4727. ><tr
  4728. id=sl_svn7768_829
  4729. ><td class="source"> * This bug was filed years ago as #4769141 at bugreporter.apple.com. More:<br></td></tr
  4730. ><tr
  4731. id=sl_svn7768_830
  4732. ><td class="source"> * &lt;a href=&quot;http://dev.processing.org/bugs/show_bug.cgi?id=407&quot;&gt;Bug 407&lt;/a&gt;.<br></td></tr
  4733. ><tr
  4734. id=sl_svn7768_831
  4735. ><td class="source"> */<br></td></tr
  4736. ><tr
  4737. id=sl_svn7768_832
  4738. ><td class="source"> static public Font findFont(String name) {<br></td></tr
  4739. ><tr
  4740. id=sl_svn7768_833
  4741. ><td class="source"> loadFonts();<br></td></tr
  4742. ><tr
  4743. id=sl_svn7768_834
  4744. ><td class="source"> if (PApplet.platform == PConstants.MACOSX) {<br></td></tr
  4745. ><tr
  4746. id=sl_svn7768_835
  4747. ><td class="source"> Font maybe = fontDifferent.get(name);<br></td></tr
  4748. ><tr
  4749. id=sl_svn7768_836
  4750. ><td class="source"> if (maybe != null) {<br></td></tr
  4751. ><tr
  4752. id=sl_svn7768_837
  4753. ><td class="source"> return maybe;<br></td></tr
  4754. ><tr
  4755. id=sl_svn7768_838
  4756. ><td class="source"> }<br></td></tr
  4757. ><tr
  4758. id=sl_svn7768_839
  4759. ><td class="source">// for (int i = 0; i &lt; fonts.length; i++) {<br></td></tr
  4760. ><tr
  4761. id=sl_svn7768_840
  4762. ><td class="source">// if (name.equals(fonts[i].getName())) {<br></td></tr
  4763. ><tr
  4764. id=sl_svn7768_841
  4765. ><td class="source">// return fonts[i];<br></td></tr
  4766. ><tr
  4767. id=sl_svn7768_842
  4768. ><td class="source">// }<br></td></tr
  4769. ><tr
  4770. id=sl_svn7768_843
  4771. ><td class="source">// }<br></td></tr
  4772. ><tr
  4773. id=sl_svn7768_844
  4774. ><td class="source"> }<br></td></tr
  4775. ><tr
  4776. id=sl_svn7768_845
  4777. ><td class="source"> return new Font(name, Font.PLAIN, 1);<br></td></tr
  4778. ><tr
  4779. id=sl_svn7768_846
  4780. ><td class="source"> }<br></td></tr
  4781. ><tr
  4782. id=sl_svn7768_847
  4783. ><td class="source"> <br></td></tr
  4784. ><tr
  4785. id=sl_svn7768_848
  4786. ><td class="source"> <br></td></tr
  4787. ><tr
  4788. id=sl_svn7768_849
  4789. ><td class="source"> //////////////////////////////////////////////////////////////<br></td></tr
  4790. ><tr
  4791. id=sl_svn7768_850
  4792. ><td class="source"><br></td></tr
  4793. ><tr
  4794. id=sl_svn7768_851
  4795. ><td class="source"> <br></td></tr
  4796. ><tr
  4797. id=sl_svn7768_852
  4798. ><td class="source"> /**<br></td></tr
  4799. ><tr
  4800. id=sl_svn7768_853
  4801. ><td class="source"> * A single character, and its visage.<br></td></tr
  4802. ><tr
  4803. id=sl_svn7768_854
  4804. ><td class="source"> */<br></td></tr
  4805. ><tr
  4806. id=sl_svn7768_855
  4807. ><td class="source"> public class Glyph {<br></td></tr
  4808. ><tr
  4809. id=sl_svn7768_856
  4810. ><td class="source"> public PImage image;<br></td></tr
  4811. ><tr
  4812. id=sl_svn7768_857
  4813. ><td class="source"> public int value;<br></td></tr
  4814. ><tr
  4815. id=sl_svn7768_858
  4816. ><td class="source"> public int height;<br></td></tr
  4817. ><tr
  4818. id=sl_svn7768_859
  4819. ><td class="source"> public int width;<br></td></tr
  4820. ><tr
  4821. id=sl_svn7768_860
  4822. ><td class="source"> public int index;<br></td></tr
  4823. ><tr
  4824. id=sl_svn7768_861
  4825. ><td class="source"> public int setWidth;<br></td></tr
  4826. ><tr
  4827. id=sl_svn7768_862
  4828. ><td class="source"> public int topExtent;<br></td></tr
  4829. ><tr
  4830. id=sl_svn7768_863
  4831. ><td class="source"> public int leftExtent;<br></td></tr
  4832. ><tr
  4833. id=sl_svn7768_864
  4834. ><td class="source"><br></td></tr
  4835. ><tr
  4836. id=sl_svn7768_865
  4837. ><td class="source"> <br></td></tr
  4838. ><tr
  4839. id=sl_svn7768_866
  4840. ><td class="source"> protected Glyph() {<br></td></tr
  4841. ><tr
  4842. id=sl_svn7768_867
  4843. ><td class="source"> index = -1;<br></td></tr
  4844. ><tr
  4845. id=sl_svn7768_868
  4846. ><td class="source"> // used when reading from a stream or for subclasses<br></td></tr
  4847. ><tr
  4848. id=sl_svn7768_869
  4849. ><td class="source"> }<br></td></tr
  4850. ><tr
  4851. id=sl_svn7768_870
  4852. ><td class="source"> <br></td></tr
  4853. ><tr
  4854. id=sl_svn7768_871
  4855. ><td class="source"> <br></td></tr
  4856. ><tr
  4857. id=sl_svn7768_872
  4858. ><td class="source"> protected Glyph(DataInputStream is) throws IOException {<br></td></tr
  4859. ><tr
  4860. id=sl_svn7768_873
  4861. ><td class="source"> index = -1;<br></td></tr
  4862. ><tr
  4863. id=sl_svn7768_874
  4864. ><td class="source"> readHeader(is);<br></td></tr
  4865. ><tr
  4866. id=sl_svn7768_875
  4867. ><td class="source"> }<br></td></tr
  4868. ><tr
  4869. id=sl_svn7768_876
  4870. ><td class="source"> <br></td></tr
  4871. ><tr
  4872. id=sl_svn7768_877
  4873. ><td class="source"> <br></td></tr
  4874. ><tr
  4875. id=sl_svn7768_878
  4876. ><td class="source"> protected void readHeader(DataInputStream is) throws IOException {<br></td></tr
  4877. ><tr
  4878. id=sl_svn7768_879
  4879. ><td class="source"> value = is.readInt();<br></td></tr
  4880. ><tr
  4881. id=sl_svn7768_880
  4882. ><td class="source"> height = is.readInt();<br></td></tr
  4883. ><tr
  4884. id=sl_svn7768_881
  4885. ><td class="source"> width = is.readInt();<br></td></tr
  4886. ><tr
  4887. id=sl_svn7768_882
  4888. ><td class="source"> setWidth = is.readInt();<br></td></tr
  4889. ><tr
  4890. id=sl_svn7768_883
  4891. ><td class="source"> topExtent = is.readInt();<br></td></tr
  4892. ><tr
  4893. id=sl_svn7768_884
  4894. ><td class="source"> leftExtent = is.readInt();<br></td></tr
  4895. ><tr
  4896. id=sl_svn7768_885
  4897. ><td class="source"><br></td></tr
  4898. ><tr
  4899. id=sl_svn7768_886
  4900. ><td class="source"> // pointer from a struct in the c version, ignored<br></td></tr
  4901. ><tr
  4902. id=sl_svn7768_887
  4903. ><td class="source"> is.readInt();<br></td></tr
  4904. ><tr
  4905. id=sl_svn7768_888
  4906. ><td class="source"> <br></td></tr
  4907. ><tr
  4908. id=sl_svn7768_889
  4909. ><td class="source"> // the values for getAscent() and getDescent() from FontMetrics<br></td></tr
  4910. ><tr
  4911. id=sl_svn7768_890
  4912. ><td class="source"> // seem to be way too large.. perhaps they&#39;re the max?<br></td></tr
  4913. ><tr
  4914. id=sl_svn7768_891
  4915. ><td class="source"> // as such, use a more traditional marker for ascent/descent<br></td></tr
  4916. ><tr
  4917. id=sl_svn7768_892
  4918. ><td class="source"> if (value == &#39;d&#39;) {<br></td></tr
  4919. ><tr
  4920. id=sl_svn7768_893
  4921. ><td class="source"> if (ascent == 0) ascent = topExtent;<br></td></tr
  4922. ><tr
  4923. id=sl_svn7768_894
  4924. ><td class="source"> }<br></td></tr
  4925. ><tr
  4926. id=sl_svn7768_895
  4927. ><td class="source"> if (value == &#39;p&#39;) {<br></td></tr
  4928. ><tr
  4929. id=sl_svn7768_896
  4930. ><td class="source"> if (descent == 0) descent = -topExtent + height;<br></td></tr
  4931. ><tr
  4932. id=sl_svn7768_897
  4933. ><td class="source"> }<br></td></tr
  4934. ><tr
  4935. id=sl_svn7768_898
  4936. ><td class="source"> }<br></td></tr
  4937. ><tr
  4938. id=sl_svn7768_899
  4939. ><td class="source"><br></td></tr
  4940. ><tr
  4941. id=sl_svn7768_900
  4942. ><td class="source"> <br></td></tr
  4943. ><tr
  4944. id=sl_svn7768_901
  4945. ><td class="source"> protected void writeHeader(DataOutputStream os) throws IOException {<br></td></tr
  4946. ><tr
  4947. id=sl_svn7768_902
  4948. ><td class="source"> os.writeInt(value);<br></td></tr
  4949. ><tr
  4950. id=sl_svn7768_903
  4951. ><td class="source"> os.writeInt(height);<br></td></tr
  4952. ><tr
  4953. id=sl_svn7768_904
  4954. ><td class="source"> os.writeInt(width);<br></td></tr
  4955. ><tr
  4956. id=sl_svn7768_905
  4957. ><td class="source"> os.writeInt(setWidth);<br></td></tr
  4958. ><tr
  4959. id=sl_svn7768_906
  4960. ><td class="source"> os.writeInt(topExtent);<br></td></tr
  4961. ><tr
  4962. id=sl_svn7768_907
  4963. ><td class="source"> os.writeInt(leftExtent);<br></td></tr
  4964. ><tr
  4965. id=sl_svn7768_908
  4966. ><td class="source"> os.writeInt(0); // padding<br></td></tr
  4967. ><tr
  4968. id=sl_svn7768_909
  4969. ><td class="source"> }<br></td></tr
  4970. ><tr
  4971. id=sl_svn7768_910
  4972. ><td class="source"> <br></td></tr
  4973. ><tr
  4974. id=sl_svn7768_911
  4975. ><td class="source"> <br></td></tr
  4976. ><tr
  4977. id=sl_svn7768_912
  4978. ><td class="source"> protected void readBitmap(DataInputStream is) throws IOException {<br></td></tr
  4979. ><tr
  4980. id=sl_svn7768_913
  4981. ><td class="source"> image = new PImage(width, height, ALPHA);<br></td></tr
  4982. ><tr
  4983. id=sl_svn7768_914
  4984. ><td class="source"> int bitmapSize = width * height;<br></td></tr
  4985. ><tr
  4986. id=sl_svn7768_915
  4987. ><td class="source"><br></td></tr
  4988. ><tr
  4989. id=sl_svn7768_916
  4990. ><td class="source"> byte[] temp = new byte[bitmapSize];<br></td></tr
  4991. ><tr
  4992. id=sl_svn7768_917
  4993. ><td class="source"> is.readFully(temp);<br></td></tr
  4994. ><tr
  4995. id=sl_svn7768_918
  4996. ><td class="source"><br></td></tr
  4997. ><tr
  4998. id=sl_svn7768_919
  4999. ><td class="source"> // convert the bitmap to an alpha channel<br></td></tr
  5000. ><tr
  5001. id=sl_svn7768_920
  5002. ><td class="source"> int w = width;<br></td></tr
  5003. ><tr
  5004. id=sl_svn7768_921
  5005. ><td class="source"> int h = height;<br></td></tr
  5006. ><tr
  5007. id=sl_svn7768_922
  5008. ><td class="source"> int[] pixels = image.pixels;<br></td></tr
  5009. ><tr
  5010. id=sl_svn7768_923
  5011. ><td class="source"> for (int y = 0; y &lt; h; y++) {<br></td></tr
  5012. ><tr
  5013. id=sl_svn7768_924
  5014. ><td class="source"> for (int x = 0; x &lt; w; x++) {<br></td></tr
  5015. ><tr
  5016. id=sl_svn7768_925
  5017. ><td class="source"> pixels[y * width + x] = temp[y*w + x] &amp; 0xff;<br></td></tr
  5018. ><tr
  5019. id=sl_svn7768_926
  5020. ><td class="source">// System.out.print((image.pixels[y*64+x] &gt; 128) ? &quot;*&quot; : &quot;.&quot;);<br></td></tr
  5021. ><tr
  5022. id=sl_svn7768_927
  5023. ><td class="source"> }<br></td></tr
  5024. ><tr
  5025. id=sl_svn7768_928
  5026. ><td class="source">// System.out.println();<br></td></tr
  5027. ><tr
  5028. id=sl_svn7768_929
  5029. ><td class="source"> }<br></td></tr
  5030. ><tr
  5031. id=sl_svn7768_930
  5032. ><td class="source">// System.out.println();<br></td></tr
  5033. ><tr
  5034. id=sl_svn7768_931
  5035. ><td class="source"> }<br></td></tr
  5036. ><tr
  5037. id=sl_svn7768_932
  5038. ><td class="source"> <br></td></tr
  5039. ><tr
  5040. id=sl_svn7768_933
  5041. ><td class="source"> <br></td></tr
  5042. ><tr
  5043. id=sl_svn7768_934
  5044. ><td class="source"> protected void writeBitmap(DataOutputStream os) throws IOException {<br></td></tr
  5045. ><tr
  5046. id=sl_svn7768_935
  5047. ><td class="source"> int[] pixels = image.pixels;<br></td></tr
  5048. ><tr
  5049. id=sl_svn7768_936
  5050. ><td class="source"> for (int y = 0; y &lt; height; y++) {<br></td></tr
  5051. ><tr
  5052. id=sl_svn7768_937
  5053. ><td class="source"> for (int x = 0; x &lt; width; x++) {<br></td></tr
  5054. ><tr
  5055. id=sl_svn7768_938
  5056. ><td class="source"> os.write(pixels[y * width + x] &amp; 0xff);<br></td></tr
  5057. ><tr
  5058. id=sl_svn7768_939
  5059. ><td class="source"> }<br></td></tr
  5060. ><tr
  5061. id=sl_svn7768_940
  5062. ><td class="source"> }<br></td></tr
  5063. ><tr
  5064. id=sl_svn7768_941
  5065. ><td class="source"> }<br></td></tr
  5066. ><tr
  5067. id=sl_svn7768_942
  5068. ><td class="source"><br></td></tr
  5069. ><tr
  5070. id=sl_svn7768_943
  5071. ><td class="source"><br></td></tr
  5072. ><tr
  5073. id=sl_svn7768_944
  5074. ><td class="source"> protected Glyph(char c) {<br></td></tr
  5075. ><tr
  5076. id=sl_svn7768_945
  5077. ><td class="source"> int mbox3 = size * 3;<br></td></tr
  5078. ><tr
  5079. id=sl_svn7768_946
  5080. ><td class="source"> lazyGraphics.setColor(Color.white);<br></td></tr
  5081. ><tr
  5082. id=sl_svn7768_947
  5083. ><td class="source"> lazyGraphics.fillRect(0, 0, mbox3, mbox3);<br></td></tr
  5084. ><tr
  5085. id=sl_svn7768_948
  5086. ><td class="source"> lazyGraphics.setColor(Color.black);<br></td></tr
  5087. ><tr
  5088. id=sl_svn7768_949
  5089. ><td class="source"> lazyGraphics.drawString(String.valueOf(c), size, size * 2);<br></td></tr
  5090. ><tr
  5091. id=sl_svn7768_950
  5092. ><td class="source"><br></td></tr
  5093. ><tr
  5094. id=sl_svn7768_951
  5095. ><td class="source"> WritableRaster raster = lazyImage.getRaster();<br></td></tr
  5096. ><tr
  5097. id=sl_svn7768_952
  5098. ><td class="source"> raster.getDataElements(0, 0, mbox3, mbox3, lazySamples);<br></td></tr
  5099. ><tr
  5100. id=sl_svn7768_953
  5101. ><td class="source"><br></td></tr
  5102. ><tr
  5103. id=sl_svn7768_954
  5104. ><td class="source"> int minX = 1000, maxX = 0;<br></td></tr
  5105. ><tr
  5106. id=sl_svn7768_955
  5107. ><td class="source"> int minY = 1000, maxY = 0;<br></td></tr
  5108. ><tr
  5109. id=sl_svn7768_956
  5110. ><td class="source"> boolean pixelFound = false;<br></td></tr
  5111. ><tr
  5112. id=sl_svn7768_957
  5113. ><td class="source"><br></td></tr
  5114. ><tr
  5115. id=sl_svn7768_958
  5116. ><td class="source"> for (int y = 0; y &lt; mbox3; y++) {<br></td></tr
  5117. ><tr
  5118. id=sl_svn7768_959
  5119. ><td class="source"> for (int x = 0; x &lt; mbox3; x++) {<br></td></tr
  5120. ><tr
  5121. id=sl_svn7768_960
  5122. ><td class="source"> int sample = lazySamples[y * mbox3 + x] &amp; 0xff;<br></td></tr
  5123. ><tr
  5124. id=sl_svn7768_961
  5125. ><td class="source"> if (sample != 255) {<br></td></tr
  5126. ><tr
  5127. id=sl_svn7768_962
  5128. ><td class="source"> if (x &lt; minX) minX = x;<br></td></tr
  5129. ><tr
  5130. id=sl_svn7768_963
  5131. ><td class="source"> if (y &lt; minY) minY = y;<br></td></tr
  5132. ><tr
  5133. id=sl_svn7768_964
  5134. ><td class="source"> if (x &gt; maxX) maxX = x;<br></td></tr
  5135. ><tr
  5136. id=sl_svn7768_965
  5137. ><td class="source"> if (y &gt; maxY) maxY = y;<br></td></tr
  5138. ><tr
  5139. id=sl_svn7768_966
  5140. ><td class="source"> pixelFound = true;<br></td></tr
  5141. ><tr
  5142. id=sl_svn7768_967
  5143. ><td class="source"> }<br></td></tr
  5144. ><tr
  5145. id=sl_svn7768_968
  5146. ><td class="source"> }<br></td></tr
  5147. ><tr
  5148. id=sl_svn7768_969
  5149. ><td class="source"> }<br></td></tr
  5150. ><tr
  5151. id=sl_svn7768_970
  5152. ><td class="source"><br></td></tr
  5153. ><tr
  5154. id=sl_svn7768_971
  5155. ><td class="source"> if (!pixelFound) {<br></td></tr
  5156. ><tr
  5157. id=sl_svn7768_972
  5158. ><td class="source"> minX = minY = 0;<br></td></tr
  5159. ><tr
  5160. id=sl_svn7768_973
  5161. ><td class="source"> maxX = maxY = 0;<br></td></tr
  5162. ><tr
  5163. id=sl_svn7768_974
  5164. ><td class="source"> // this will create a 1 pixel white (clear) character..<br></td></tr
  5165. ><tr
  5166. id=sl_svn7768_975
  5167. ><td class="source"> // maybe better to set one to -1 so nothing is added?<br></td></tr
  5168. ><tr
  5169. id=sl_svn7768_976
  5170. ><td class="source"> }<br></td></tr
  5171. ><tr
  5172. id=sl_svn7768_977
  5173. ><td class="source"><br></td></tr
  5174. ><tr
  5175. id=sl_svn7768_978
  5176. ><td class="source"> value = c;<br></td></tr
  5177. ><tr
  5178. id=sl_svn7768_979
  5179. ><td class="source"> height = (maxY - minY) + 1;<br></td></tr
  5180. ><tr
  5181. id=sl_svn7768_980
  5182. ><td class="source"> width = (maxX - minX) + 1;<br></td></tr
  5183. ><tr
  5184. id=sl_svn7768_981
  5185. ><td class="source"> setWidth = lazyMetrics.charWidth(c);<br></td></tr
  5186. ><tr
  5187. id=sl_svn7768_982
  5188. ><td class="source"><br></td></tr
  5189. ><tr
  5190. id=sl_svn7768_983
  5191. ><td class="source"> // offset from vertical location of baseline<br></td></tr
  5192. ><tr
  5193. id=sl_svn7768_984
  5194. ><td class="source"> // of where the char was drawn (size*2)<br></td></tr
  5195. ><tr
  5196. id=sl_svn7768_985
  5197. ><td class="source"> topExtent = size*2 - minY;<br></td></tr
  5198. ><tr
  5199. id=sl_svn7768_986
  5200. ><td class="source"><br></td></tr
  5201. ><tr
  5202. id=sl_svn7768_987
  5203. ><td class="source"> // offset from left of where coord was drawn<br></td></tr
  5204. ><tr
  5205. id=sl_svn7768_988
  5206. ><td class="source"> leftExtent = minX - size;<br></td></tr
  5207. ><tr
  5208. id=sl_svn7768_989
  5209. ><td class="source"><br></td></tr
  5210. ><tr
  5211. id=sl_svn7768_990
  5212. ><td class="source"> image = new PImage(width, height, ALPHA);<br></td></tr
  5213. ><tr
  5214. id=sl_svn7768_991
  5215. ><td class="source"> int[] pixels = image.pixels;<br></td></tr
  5216. ><tr
  5217. id=sl_svn7768_992
  5218. ><td class="source"> for (int y = minY; y &lt;= maxY; y++) {<br></td></tr
  5219. ><tr
  5220. id=sl_svn7768_993
  5221. ><td class="source"> for (int x = minX; x &lt;= maxX; x++) {<br></td></tr
  5222. ><tr
  5223. id=sl_svn7768_994
  5224. ><td class="source"> int val = 255 - (lazySamples[y * mbox3 + x] &amp; 0xff);<br></td></tr
  5225. ><tr
  5226. id=sl_svn7768_995
  5227. ><td class="source"> int pindex = (y - minY) * width + (x - minX);<br></td></tr
  5228. ><tr
  5229. id=sl_svn7768_996
  5230. ><td class="source"> pixels[pindex] = val;<br></td></tr
  5231. ><tr
  5232. id=sl_svn7768_997
  5233. ><td class="source"> }<br></td></tr
  5234. ><tr
  5235. id=sl_svn7768_998
  5236. ><td class="source"> }<br></td></tr
  5237. ><tr
  5238. id=sl_svn7768_999
  5239. ><td class="source"><br></td></tr
  5240. ><tr
  5241. id=sl_svn7768_1000
  5242. ><td class="source"> // replace the ascent/descent values with something.. err, decent.<br></td></tr
  5243. ><tr
  5244. id=sl_svn7768_1001
  5245. ><td class="source"> if (value == &#39;d&#39;) {<br></td></tr
  5246. ><tr
  5247. id=sl_svn7768_1002
  5248. ><td class="source"> if (ascent == 0) ascent = topExtent;<br></td></tr
  5249. ><tr
  5250. id=sl_svn7768_1003
  5251. ><td class="source"> }<br></td></tr
  5252. ><tr
  5253. id=sl_svn7768_1004
  5254. ><td class="source"> if (value == &#39;p&#39;) {<br></td></tr
  5255. ><tr
  5256. id=sl_svn7768_1005
  5257. ><td class="source"> if (descent == 0) descent = -topExtent + height;<br></td></tr
  5258. ><tr
  5259. id=sl_svn7768_1006
  5260. ><td class="source"> }<br></td></tr
  5261. ><tr
  5262. id=sl_svn7768_1007
  5263. ><td class="source"> }<br></td></tr
  5264. ><tr
  5265. id=sl_svn7768_1008
  5266. ><td class="source"> }<br></td></tr
  5267. ><tr
  5268. id=sl_svn7768_1009
  5269. ><td class="source">}<br></td></tr
  5270. ></table></pre>
  5271. <pre class="prettyprint"><table width="100%"><tr class="cursor_stop cursor_hidden"><td></td></tr></table></pre>
  5272. </td>
  5273. </tr></table>
  5274. <script type="text/javascript">
  5275. var lineNumUnderMouse = -1;
  5276. function gutterOver(num) {
  5277. gutterOut();
  5278. var newTR = document.getElementById('gr_svn7768_' + num);
  5279. if (newTR) {
  5280. newTR.className = 'undermouse';
  5281. }
  5282. lineNumUnderMouse = num;
  5283. }
  5284. function gutterOut() {
  5285. if (lineNumUnderMouse != -1) {
  5286. var oldTR = document.getElementById(
  5287. 'gr_svn7768_' + lineNumUnderMouse);
  5288. if (oldTR) {
  5289. oldTR.className = '';
  5290. }
  5291. lineNumUnderMouse = -1;
  5292. }
  5293. }
  5294. var numsGenState = {table_base_id: 'nums_table_'};
  5295. var srcGenState = {table_base_id: 'src_table_'};
  5296. var alignerRunning = false;
  5297. var startOver = false;
  5298. function setLineNumberHeights() {
  5299. if (alignerRunning) {
  5300. startOver = true;
  5301. return;
  5302. }
  5303. numsGenState.chunk_id = 0;
  5304. numsGenState.table = document.getElementById('nums_table_0');
  5305. numsGenState.row_num = 0;
  5306. srcGenState.chunk_id = 0;
  5307. srcGenState.table = document.getElementById('src_table_0');
  5308. srcGenState.row_num = 0;
  5309. alignerRunning = true;
  5310. continueToSetLineNumberHeights();
  5311. }
  5312. function rowGenerator(genState) {
  5313. if (genState.row_num < genState.table.rows.length) {
  5314. var currentRow = genState.table.rows[genState.row_num];
  5315. genState.row_num++;
  5316. return currentRow;
  5317. }
  5318. var newTable = document.getElementById(
  5319. genState.table_base_id + (genState.chunk_id + 1));
  5320. if (newTable) {
  5321. genState.chunk_id++;
  5322. genState.row_num = 0;
  5323. genState.table = newTable;
  5324. return genState.table.rows[0];
  5325. }
  5326. return null;
  5327. }
  5328. var MAX_ROWS_PER_PASS = 1000;
  5329. function continueToSetLineNumberHeights() {
  5330. var rowsInThisPass = 0;
  5331. var numRow = 1;
  5332. var srcRow = 1;
  5333. while (numRow && srcRow && rowsInThisPass < MAX_ROWS_PER_PASS) {
  5334. numRow = rowGenerator(numsGenState);
  5335. srcRow = rowGenerator(srcGenState);
  5336. rowsInThisPass++;
  5337. if (numRow && srcRow) {
  5338. if (numRow.offsetHeight != srcRow.offsetHeight) {
  5339. numRow.firstChild.style.height = srcRow.offsetHeight + 'px';
  5340. }
  5341. }
  5342. }
  5343. if (rowsInThisPass >= MAX_ROWS_PER_PASS) {
  5344. setTimeout(continueToSetLineNumberHeights, 10);
  5345. } else {
  5346. alignerRunning = false;
  5347. if (startOver) {
  5348. startOver = false;
  5349. setTimeout(setLineNumberHeights, 500);
  5350. }
  5351. }
  5352. }
  5353. // Do 2 complete passes, because there can be races
  5354. // between this code and prettify.
  5355. startOver = true;
  5356. setTimeout(setLineNumberHeights, 250);
  5357. window.onresize = setLineNumberHeights;
  5358. </script>
  5359. <div id="log">
  5360. <div style="text-align:right">
  5361. <a class="ifCollapse" href="#" onclick="_toggleMeta('', 'p', 'processing', this)">Show details</a>
  5362. <a class="ifExpand" href="#" onclick="_toggleMeta('', 'p', 'processing', this)">Hide details</a>
  5363. </div>
  5364. <div class="ifExpand">
  5365. <div class="pmeta_bubble_bg" style="border:1px solid white">
  5366. <div class="round4"></div>
  5367. <div class="round2"></div>
  5368. <div class="round1"></div>
  5369. <div class="box-inner">
  5370. <div id="changelog">
  5371. <p>Change log</p>
  5372. <div>
  5373. <a href="/p/processing/source/detail?spec=svn7768&r=7659">r7659</a>
  5374. by andres.colubri
  5375. on Feb 06, 2011
  5376. &nbsp; <a href="/p/processing/source/diff?spec=svn7768&r=7659&amp;format=side&amp;path=/trunk/processing/core/src/processing/core/PFont.java&amp;old_path=/trunk/processing/core/src/processing/core/PFont.java&amp;old=7647">Diff</a>
  5377. </div>
  5378. <pre>Removed PMetadata class</pre>
  5379. </div>
  5380. <script type="text/javascript">
  5381. var detail_url = '/p/processing/source/detail?r=7659&spec=svn7768';
  5382. var publish_url = '/p/processing/source/detail?r=7659&spec=svn7768#publish';
  5383. // describe the paths of this revision in javascript.
  5384. var changed_paths = [];
  5385. var changed_urls = [];
  5386. changed_paths.push('/trunk/processing/core/src/processing/core/PApplet.java');
  5387. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PApplet.java?r\x3d7659\x26spec\x3dsvn7768');
  5388. changed_paths.push('/trunk/processing/core/src/processing/core/PFont.java');
  5389. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PFont.java?r\x3d7659\x26spec\x3dsvn7768');
  5390. var selected_path = '/trunk/processing/core/src/processing/core/PFont.java';
  5391. changed_paths.push('/trunk/processing/core/src/processing/core/PGraphicsJava2D.java');
  5392. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PGraphicsJava2D.java?r\x3d7659\x26spec\x3dsvn7768');
  5393. changed_paths.push('/trunk/processing/core/src/processing/core/PImage.java');
  5394. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PImage.java?r\x3d7659\x26spec\x3dsvn7768');
  5395. changed_paths.push('/trunk/processing/core/src/processing/core/PMetadata.java');
  5396. changed_urls.push('/p/processing/source/browse/trunk/processing/core/src/processing/core/PMetadata.java?r\x3d7659\x26spec\x3dsvn7768');
  5397. function getCurrentPageIndex() {
  5398. for (var i = 0; i < changed_paths.length; i++) {
  5399. if (selected_path == changed_paths[i]) {
  5400. return i;
  5401. }
  5402. }
  5403. }
  5404. function getNextPage() {
  5405. var i = getCurrentPageIndex();
  5406. if (i < changed_paths.length - 1) {
  5407. return changed_urls[i + 1];
  5408. }
  5409. return null;
  5410. }
  5411. function getPreviousPage() {
  5412. var i = getCurrentPageIndex();
  5413. if (i > 0) {
  5414. return changed_urls[i - 1];
  5415. }
  5416. return null;
  5417. }
  5418. function gotoNextPage() {
  5419. var page = getNextPage();
  5420. if (!page) {
  5421. page = detail_url;
  5422. }
  5423. window.location = page;
  5424. }
  5425. function gotoPreviousPage() {
  5426. var page = getPreviousPage();
  5427. if (!page) {
  5428. page = detail_url;
  5429. }
  5430. window.location = page;
  5431. }
  5432. function gotoDetailPage() {
  5433. window.location = detail_url;
  5434. }
  5435. function gotoPublishPage() {
  5436. window.location = publish_url;
  5437. }
  5438. </script>
  5439. <style type="text/css">
  5440. #review_nav {
  5441. border-top: 3px solid white;
  5442. padding-top: 6px;
  5443. margin-top: 1em;
  5444. }
  5445. #review_nav td {
  5446. vertical-align: middle;
  5447. }
  5448. #review_nav select {
  5449. margin: .5em 0;
  5450. }
  5451. </style>
  5452. <div id="review_nav">
  5453. <table><tr><td>Go to:&nbsp;</td><td>
  5454. <select name="files_in_rev" onchange="window.location=this.value">
  5455. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PApplet.java?r=7659&amp;spec=svn7768"
  5456. >...src/processing/core/PApplet.java</option>
  5457. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PFont.java?r=7659&amp;spec=svn7768"
  5458. selected="selected"
  5459. >...e/src/processing/core/PFont.java</option>
  5460. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PGraphicsJava2D.java?r=7659&amp;spec=svn7768"
  5461. >...essing/core/PGraphicsJava2D.java</option>
  5462. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PImage.java?r=7659&amp;spec=svn7768"
  5463. >.../src/processing/core/PImage.java</option>
  5464. <option value="/p/processing/source/browse/trunk/processing/core/src/processing/core/PMetadata.java?r=7659&amp;spec=svn7768"
  5465. >...c/processing/core/PMetadata.java</option>
  5466. </select>
  5467. </td></tr></table>
  5468. </div>
  5469. </div>
  5470. <div class="round1"></div>
  5471. <div class="round2"></div>
  5472. <div class="round4"></div>
  5473. </div>
  5474. <div class="pmeta_bubble_bg" style="border:1px solid white">
  5475. <div class="round4"></div>
  5476. <div class="round2"></div>
  5477. <div class="round1"></div>
  5478. <div class="box-inner">
  5479. <div id="older_bubble">
  5480. <p>Older revisions</p>
  5481. <div class="closed" style="margin-bottom:3px;" >
  5482. <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
  5483. <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
  5484. <a href="/p/processing/source/detail?spec=svn7768&r=7647">r7647</a>
  5485. by andres.colubri
  5486. on Jan 31, 2011
  5487. &nbsp; <a href="/p/processing/source/diff?spec=svn7768&r=7647&amp;format=side&amp;path=/trunk/processing/core/src/processing/core/PFont.java&amp;old_path=/trunk/processing/core/src/processing/core/PFont.java&amp;old=7430">Diff</a>
  5488. <br>
  5489. <pre class="ifOpened">Merged-in the changes in the core
  5490. needed for the new opengl renderer</pre>
  5491. </div>
  5492. <div class="closed" style="margin-bottom:3px;" >
  5493. <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
  5494. <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
  5495. <a href="/p/processing/source/detail?spec=svn7768&r=7430">r7430</a>
  5496. by f...@processing.org
  5497. on Nov 15, 2010
  5498. &nbsp; <a href="/p/processing/source/diff?spec=svn7768&r=7430&amp;format=side&amp;path=/trunk/processing/core/src/processing/core/PFont.java&amp;old_path=/trunk/processing/core/src/processing/core/PFont.java&amp;old=7149">Diff</a>
  5499. <br>
  5500. <pre class="ifOpened">add subsetting mode.. this needs a
  5501. better name
  5502. </pre>
  5503. </div>
  5504. <div class="closed" style="margin-bottom:3px;" >
  5505. <img class="ifClosed" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/plus.gif" >
  5506. <img class="ifOpened" onclick="_toggleHidden(this)" src="http://www.gstatic.com/codesite/ph/images/minus.gif" >
  5507. <a href="/p/processing/source/detail?spec=svn7768&r=7149">r7149</a>
  5508. by f...@processing.org
  5509. on Aug 06, 2010
  5510. &nbsp; <a href="/p/processing/source/diff?spec=svn7768&r=7149&amp;format=side&amp;path=/trunk/processing/core/src/processing/core/PFont.java&amp;old_path=/trunk/processing/core/src/processing/core/PFont.java&amp;old=6644">Diff</a>
  5511. <br>
  5512. <pre class="ifOpened">working on how native fonts are
  5513. handled for better consistency
  5514. (incomplete)
  5515. </pre>
  5516. </div>
  5517. <a href="/p/processing/source/list?path=/trunk/processing/core/src/processing/core/PFont.java&start=7659">All revisions of this file</a>
  5518. </div>
  5519. </div>
  5520. <div class="round1"></div>
  5521. <div class="round2"></div>
  5522. <div class="round4"></div>
  5523. </div>
  5524. <div class="pmeta_bubble_bg" style="border:1px solid white">
  5525. <div class="round4"></div>
  5526. <div class="round2"></div>
  5527. <div class="round1"></div>
  5528. <div class="box-inner">
  5529. <div id="fileinfo_bubble">
  5530. <p>File info</p>
  5531. <div>Size: 30684 bytes,
  5532. 1009 lines</div>
  5533. <div><a href="http://processing.googlecode.com/svn/trunk/processing/core/src/processing/core/PFont.java">View raw file</a></div>
  5534. </div>
  5535. </div>
  5536. <div class="round1"></div>
  5537. <div class="round2"></div>
  5538. <div class="round4"></div>
  5539. </div>
  5540. </div>
  5541. </div>
  5542. </div>
  5543. </div>
  5544. </div>
  5545. <script src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/prettify/prettify.js"></script>
  5546. <script type="text/javascript">prettyPrint();</script>
  5547. <script src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/source_file_scripts.js"></script>
  5548. <script type="text/javascript" src="https://kibbles.googlecode.com/files/kibbles-1.3.3.comp.js"></script>
  5549. <script type="text/javascript">
  5550. var lastStop = null;
  5551. var initilized = false;
  5552. function updateCursor(next, prev) {
  5553. if (prev && prev.element) {
  5554. prev.element.className = 'cursor_stop cursor_hidden';
  5555. }
  5556. if (next && next.element) {
  5557. next.element.className = 'cursor_stop cursor';
  5558. lastStop = next.index;
  5559. }
  5560. }
  5561. function pubRevealed(data) {
  5562. updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
  5563. if (initilized) {
  5564. reloadCursors();
  5565. }
  5566. }
  5567. function draftRevealed(data) {
  5568. updateCursorForCell(data.cellId, 'cursor_stop cursor_hidden');
  5569. if (initilized) {
  5570. reloadCursors();
  5571. }
  5572. }
  5573. function draftDestroyed(data) {
  5574. updateCursorForCell(data.cellId, 'nocursor');
  5575. if (initilized) {
  5576. reloadCursors();
  5577. }
  5578. }
  5579. function reloadCursors() {
  5580. kibbles.skipper.reset();
  5581. loadCursors();
  5582. if (lastStop != null) {
  5583. kibbles.skipper.setCurrentStop(lastStop);
  5584. }
  5585. }
  5586. // possibly the simplest way to insert any newly added comments
  5587. // is to update the class of the corresponding cursor row,
  5588. // then refresh the entire list of rows.
  5589. function updateCursorForCell(cellId, className) {
  5590. var cell = document.getElementById(cellId);
  5591. // we have to go two rows back to find the cursor location
  5592. var row = getPreviousElement(cell.parentNode);
  5593. row.className = className;
  5594. }
  5595. // returns the previous element, ignores text nodes.
  5596. function getPreviousElement(e) {
  5597. var element = e.previousSibling;
  5598. if (element.nodeType == 3) {
  5599. element = element.previousSibling;
  5600. }
  5601. if (element && element.tagName) {
  5602. return element;
  5603. }
  5604. }
  5605. function loadCursors() {
  5606. // register our elements with skipper
  5607. var elements = CR_getElements('*', 'cursor_stop');
  5608. var len = elements.length;
  5609. for (var i = 0; i < len; i++) {
  5610. var element = elements[i];
  5611. element.className = 'cursor_stop cursor_hidden';
  5612. kibbles.skipper.append(element);
  5613. }
  5614. }
  5615. function toggleComments() {
  5616. CR_toggleCommentDisplay();
  5617. reloadCursors();
  5618. }
  5619. function keysOnLoadHandler() {
  5620. // setup skipper
  5621. kibbles.skipper.addStopListener(
  5622. kibbles.skipper.LISTENER_TYPE.PRE, updateCursor);
  5623. // Set the 'offset' option to return the middle of the client area
  5624. // an option can be a static value, or a callback
  5625. kibbles.skipper.setOption('padding_top', 50);
  5626. // Set the 'offset' option to return the middle of the client area
  5627. // an option can be a static value, or a callback
  5628. kibbles.skipper.setOption('padding_bottom', 100);
  5629. // Register our keys
  5630. kibbles.skipper.addFwdKey("n");
  5631. kibbles.skipper.addRevKey("p");
  5632. kibbles.keys.addKeyPressListener(
  5633. 'u', function() { window.location = detail_url; });
  5634. kibbles.keys.addKeyPressListener(
  5635. 'r', function() { window.location = detail_url + '#publish'; });
  5636. kibbles.keys.addKeyPressListener('j', gotoNextPage);
  5637. kibbles.keys.addKeyPressListener('k', gotoPreviousPage);
  5638. }
  5639. </script>
  5640. <script src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/code_review_scripts.js"></script>
  5641. <script type="text/javascript">
  5642. // the comment form template
  5643. var form = '<div class="draft"><div class="header"><span class="title">Draft comment:</span></div>' +
  5644. '<div class="body"><form onsubmit="return false;"><textarea id="$ID">$BODY</textarea><br>$ACTIONS</form></div>' +
  5645. '</div>';
  5646. // the comment "plate" template used for both draft and published comment "plates".
  5647. var draft_comment = '<div class="draft" ondblclick="$ONDBLCLICK">' +
  5648. '<div class="header"><span class="title">Draft comment:</span><span class="actions">$ACTIONS</span></div>' +
  5649. '<pre id="$ID" class="body">$BODY</pre>' +
  5650. '</div>';
  5651. var published_comment = '<div class="published">' +
  5652. '<div class="header"><span class="title"><a href="$PROFILE_URL">$AUTHOR:</a></span><div>' +
  5653. '<pre id="$ID" class="body">$BODY</pre>' +
  5654. '</div>';
  5655. function showPublishInstructions() {
  5656. var element = document.getElementById('review_instr');
  5657. if (element) {
  5658. element.className = 'opened';
  5659. }
  5660. }
  5661. function revsOnLoadHandler() {
  5662. // register our source container with the commenting code
  5663. var paths = {'svn7768': '/trunk/processing/core/src/processing/core/PFont.java'}
  5664. CR_setup('', 'p', 'processing', '', 'svn7768', paths,
  5665. 'c6974bcd72eb95455827185f7306e1fa', CR_BrowseIntegrationFactory);
  5666. // register our hidden ui elements with the code commenting code ui builder.
  5667. CR_registerLayoutElement('form', form);
  5668. CR_registerLayoutElement('draft_comment', draft_comment);
  5669. CR_registerLayoutElement('published_comment', published_comment);
  5670. CR_registerActivityListener(CR_ACTIVITY_TYPE.REVEAL_DRAFT_PLATE, showPublishInstructions);
  5671. CR_registerActivityListener(CR_ACTIVITY_TYPE.REVEAL_PUB_PLATE, pubRevealed);
  5672. CR_registerActivityListener(CR_ACTIVITY_TYPE.REVEAL_DRAFT_PLATE, draftRevealed);
  5673. CR_registerActivityListener(CR_ACTIVITY_TYPE.DISCARD_DRAFT_COMMENT, draftDestroyed);
  5674. var initilized = true;
  5675. reloadCursors();
  5676. }
  5677. window.onload = function() {keysOnLoadHandler(); revsOnLoadHandler();};
  5678. </script>
  5679. <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/dit_scripts.js"></script>
  5680. <script type="text/javascript" src="http://www.gstatic.com/codesite/ph/10276742928614796628/js/core_scripts_20081103.js"></script>
  5681. <script type="text/javascript" src="/js/codesite_product_dictionary_ph.pack.04102009.js"></script>
  5682. </div>
  5683. <div id="footer" dir="ltr">
  5684. <div class="text">
  5685. &copy;2010 Google -
  5686. <a href="/projecthosting/terms.html">Terms</a> -
  5687. <a href="http://www.google.com/privacy.html">Privacy</a> -
  5688. <a href="/p/support/">Project Hosting Help</a>
  5689. </div>
  5690. </div>
  5691. <div class="hostedBy" style="margin-top: -20px;">
  5692. <span style="vertical-align: top;">Powered by <a href="http://code.google.com/projecthosting/">Google Project Hosting</a></span>
  5693. </div>
  5694. </body>
  5695. </html>