src-detector-gridsampler.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Documentation</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <base href="../">
  8. <link rel="icon" href="images/favicon.ico"/>
  9. <link rel="stylesheet" href="css/normalize.css">
  10. <link rel="stylesheet" href="css/base.css">
  11. <link rel="preconnect" href="https://fonts.gstatic.com">
  12. <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
  13. <link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
  14. <link rel="stylesheet" href="css/template.css">
  15. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
  16. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
  17. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
  18. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
  19. <script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
  20. <script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
  21. <script src="js/template.js"></script>
  22. <script src="js/search.js"></script>
  23. <script defer src="js/searchIndex.js"></script>
  24. </head>
  25. <body id="top">
  26. <header class="phpdocumentor-header phpdocumentor-section">
  27. <h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
  28. <input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
  29. <label class="phpdocumentor-header__menu-icon" for="menu-button">
  30. <i class="fas fa-bars"></i>
  31. </label>
  32. <section data-search-form class="phpdocumentor-search">
  33. <label>
  34. <span class="visually-hidden">Search for</span>
  35. <svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
  36. <circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
  37. <line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
  38. </svg>
  39. <input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
  40. </label>
  41. </section>
  42. <nav class="phpdocumentor-topnav">
  43. <ul class="phpdocumentor-topnav__menu">
  44. <li class="phpdocumentor-topnav__menu-item -menu">
  45. <a href="https://php-qrcode.readthedocs.io">
  46. <span>
  47. User Manual
  48. </span>
  49. </a>
  50. </li>
  51. <li class="phpdocumentor-topnav__menu-item -social">
  52. <a href="https://github.com/chillerlan/php-qrcode">
  53. <span>
  54. <i class="fab fa-github"></i>
  55. </span>
  56. </a>
  57. </li>
  58. <li class="phpdocumentor-topnav__menu-item -social">
  59. <a href="https://github.com/chillerlan/php-qrcode/discussions">
  60. <span>
  61. <i class="fas fa-envelope-open-text"></i>
  62. </span>
  63. </a>
  64. </li>
  65. </ul>
  66. </nav>
  67. </header>
  68. <main class="phpdocumentor">
  69. <div class="phpdocumentor-section">
  70. <input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
  71. <label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
  72. Menu
  73. </label>
  74. <aside class="phpdocumentor-column -three phpdocumentor-sidebar">
  75. <section class="phpdocumentor-sidebar__category -namespaces">
  76. <h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
  77. <h4 class="phpdocumentor-sidebar__root-namespace">
  78. <a href="namespaces/chillerlan.html" class="">chillerlan</a>
  79. </h4>
  80. <ul class="phpdocumentor-list">
  81. <li>
  82. <a href="namespaces/chillerlan-qrcode.html" class="">QRCode</a>
  83. </li>
  84. <li>
  85. <a href="namespaces/chillerlan-qrcodetest.html" class="">QRCodeTest</a>
  86. </li>
  87. </ul>
  88. </section>
  89. <section class="phpdocumentor-sidebar__category -packages">
  90. <h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
  91. <h4 class="phpdocumentor-sidebar__root-namespace">
  92. <a href="packages/Application.html" class="">Application</a>
  93. </h4>
  94. </section>
  95. <section class="phpdocumentor-sidebar__category -reports">
  96. <h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
  97. <h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
  98. <h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
  99. <h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
  100. </section>
  101. <section class="phpdocumentor-sidebar__category -indices">
  102. <h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
  103. <h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
  104. </section>
  105. </aside>
  106. <div class="phpdocumentor-column -nine phpdocumentor-content">
  107. <section>
  108. <ul class="phpdocumentor-breadcrumbs">
  109. </ul>
  110. <article class="phpdocumentor-element -file">
  111. <h2 class="phpdocumentor-content__title">GridSampler.php</h2>
  112. <p class="phpdocumentor-summary">Class GridSampler</p>
  113. <h5 class="phpdocumentor-tag-list__heading" id="tags">
  114. Tags
  115. <a href="files/src-detector-gridsampler.html#tags" class="headerlink"><i class="fas fa-link"></i></a>
  116. </h5>
  117. <dl class="phpdocumentor-tag-list">
  118. <dt class="phpdocumentor-tag-list__entry">
  119. <span class="phpdocumentor-tag__name">created</span>
  120. </dt>
  121. <dd class="phpdocumentor-tag-list__definition">
  122. <section class="phpdocumentor-description"><p>17.01.2021</p>
  123. </section>
  124. </dd>
  125. <dt class="phpdocumentor-tag-list__entry">
  126. <span class="phpdocumentor-tag__name">author</span>
  127. </dt>
  128. <dd class="phpdocumentor-tag-list__definition">
  129. <section class="phpdocumentor-description"><p>ZXing Authors</p>
  130. </section>
  131. </dd>
  132. <dt class="phpdocumentor-tag-list__entry">
  133. <span class="phpdocumentor-tag__name">author</span>
  134. </dt>
  135. <dd class="phpdocumentor-tag-list__definition">
  136. <section class="phpdocumentor-description"><p>Smiley <a href="mailto:smiley@chillerlan.net">smiley@chillerlan.net</a></p>
  137. </section>
  138. </dd>
  139. <dt class="phpdocumentor-tag-list__entry">
  140. <span class="phpdocumentor-tag__name">copyright</span>
  141. </dt>
  142. <dd class="phpdocumentor-tag-list__definition">
  143. <section class="phpdocumentor-description"><p>2021 Smiley</p>
  144. </section>
  145. </dd>
  146. <dt class="phpdocumentor-tag-list__entry">
  147. <span class="phpdocumentor-tag__name">license</span>
  148. </dt>
  149. <dd class="phpdocumentor-tag-list__definition">
  150. <section class="phpdocumentor-description"><p>Apache-2.0</p>
  151. </section>
  152. </dd>
  153. </dl>
  154. <h3 id="toc">
  155. Table of Contents
  156. <a href="files/src-detector-gridsampler.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
  157. </h3>
  158. <h4 id="toc-classes">
  159. Classes
  160. <a href="files/src-detector-gridsampler.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
  161. </h4>
  162. <dl class="phpdocumentor-table-of-contents">
  163. <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/chillerlan-QRCode-Detector-GridSampler.html"><abbr title="\chillerlan\QRCode\Detector\GridSampler">GridSampler</abbr></a></dt><dd>Implementations of this class can, given locations of finder patterns for a QR code in an
  164. image, sample the right points in the image to reconstruct the QR code, accounting for
  165. perspective distortion. It is abstracted since it is relatively expensive and should be allowed
  166. to take advantage of platform-specific optimized implementations, like Sun&#039;s Java Advanced
  167. Imaging library, but which may not be available in other environments such as J2ME, and vice
  168. versa.</dd> </dl>
  169. <div class="phpdocumentor-modal" id="source-view">
  170. <div class="phpdocumentor-modal-bg" data-exit-button></div>
  171. <div class="phpdocumentor-modal-container">
  172. <div class="phpdocumentor-modal-content">
  173. <pre style="max-height: 500px; overflow-y: scroll" data-src="files/src/Detector/GridSampler.php.txt" class="language-php line-numbers linkable-line-numbers"></pre>
  174. </div>
  175. <button data-exit-button class="phpdocumentor-modal__close">&times;</button>
  176. </div>
  177. </div>
  178. <script type="text/javascript">
  179. (function () {
  180. function loadExternalCodeSnippet(el, url, line) {
  181. Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
  182. const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
  183. const language = 'php';
  184. const code = document.createElement('code');
  185. code.className = 'language-' + language;
  186. pre.textContent = '';
  187. pre.setAttribute('data-line', line)
  188. code.textContent = 'Loading…';
  189. pre.appendChild(code);
  190. var xhr = new XMLHttpRequest();
  191. xhr.open('GET', src, true);
  192. xhr.onreadystatechange = function () {
  193. if (xhr.readyState !== 4) {
  194. return;
  195. }
  196. if (xhr.status < 400 && xhr.responseText) {
  197. code.textContent = xhr.responseText;
  198. Prism.highlightElement(code);
  199. d=document.getElementsByClassName("line-numbers");
  200. d[0].scrollTop = d[0].children[1].offsetTop;
  201. return;
  202. }
  203. if (xhr.status === 404) {
  204. code.textContent = '✖ Error: File could not be found';
  205. return;
  206. }
  207. if (xhr.status >= 400) {
  208. code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
  209. return;
  210. }
  211. code.textContent = '✖ Error: An unknown error occurred';
  212. };
  213. xhr.send(null);
  214. });
  215. }
  216. const modalButtons = document.querySelectorAll("[data-modal]");
  217. const openedAsLocalFile = window.location.protocol === 'file:';
  218. if (modalButtons.length > 0 && openedAsLocalFile) {
  219. console.warn(
  220. 'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
  221. 'browsers block XHR requests when a page is opened this way'
  222. );
  223. }
  224. modalButtons.forEach(function (trigger) {
  225. if (openedAsLocalFile) {
  226. trigger.setAttribute("hidden", "hidden");
  227. }
  228. trigger.addEventListener("click", function (event) {
  229. event.preventDefault();
  230. const modal = document.getElementById(trigger.dataset.modal);
  231. if (!modal) {
  232. console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
  233. return;
  234. }
  235. modal.classList.add("phpdocumentor-modal__open");
  236. loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
  237. const exits = modal.querySelectorAll("[data-exit-button]");
  238. exits.forEach(function (exit) {
  239. exit.addEventListener("click", function (event) {
  240. event.preventDefault();
  241. modal.classList.remove("phpdocumentor-modal__open");
  242. });
  243. });
  244. });
  245. });
  246. })();
  247. </script>
  248. </article>
  249. </section>
  250. <section class="phpdocumentor-on-this-page__sidebar">
  251. <section class="phpdocumentor-on-this-page__content">
  252. <strong class="phpdocumentor-on-this-page__title">On this page</strong>
  253. <ul class="phpdocumentor-list -clean">
  254. <li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
  255. <li>
  256. <ul class="phpdocumentor-list -clean">
  257. <li><a href="files/src-detector-gridsampler.html#toc-classes">Classes</a></li>
  258. </ul>
  259. </li>
  260. </ul>
  261. </section>
  262. </section>
  263. </div>
  264. <section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
  265. <section class="phpdocumentor-search-results__dialog">
  266. <header class="phpdocumentor-search-results__header">
  267. <h2 class="phpdocumentor-search-results__title">Search results</h2>
  268. <button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
  269. </header>
  270. <section class="phpdocumentor-search-results__body">
  271. <ul class="phpdocumentor-search-results__entries"></ul>
  272. </section>
  273. </section>
  274. </section>
  275. </div>
  276. <a href="files/src-detector-gridsampler.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
  277. </main>
  278. <script>
  279. cssVars({});
  280. </script>
  281. <script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
  282. <script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
  283. <script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
  284. <script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
  285. </body>
  286. </html>