<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!-- NewPage --> <html lang="en"> <head> <!-- Generated by javadoc --> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>GridSampler (ZXing 3.3.0 API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> <body> <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { parent.document.title="GridSampler (ZXing 3.3.0 API)"; } } catch(err) { } //--> var methods = {"i0":9,"i1":9,"i2":6,"i3":6,"i4":9}; var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; var tableTab = "tableTab"; var activeTableTab = "activeTableTab"; </script> <noscript> <div>JavaScript is disabled on your browser.</div> </noscript> <!-- ========= START OF TOP NAVBAR ======= --> <div class="topNav"><a name="navbar.top"> <!-- --> </a> <div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> <a name="navbar.top.firstrow"> <!-- --> </a> <ul class="navList" title="Navigation"> <li><a href="../../../../overview-summary.html">Overview</a></li> <li><a href="package-summary.html">Package</a></li> <li class="navBarCell1Rev">Class</li> <li><a href="class-use/GridSampler.html">Use</a></li> <li><a href="package-tree.html">Tree</a></li> <li><a href="../../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../../index-all.html">Index</a></li> <li><a href="../../../../help-doc.html">Help</a></li> </ul> </div> <div class="subNav"> <ul class="navList"> <li><a href="../../../../com/google/zxing/common/GlobalHistogramBinarizer.html" title="class in com.google.zxing.common"><span class="typeNameLink">Prev Class</span></a></li> <li><a href="../../../../com/google/zxing/common/HybridBinarizer.html" title="class in com.google.zxing.common"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../index.html?com/google/zxing/common/GridSampler.html" target="_top">Frames</a></li> <li><a href="GridSampler.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> </ul> <div> <script type="text/javascript"><!-- allClassesLink = document.getElementById("allclasses_navbar_top"); if(window==top) { allClassesLink.style.display = "block"; } else { allClassesLink.style.display = "none"; } //--> </script> </div> <div> <ul class="subNavList"> <li>Summary: </li> <li>Nested | </li> <li>Field | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> <li>Field | </li> <li><a href="#constructor.detail">Constr</a> | </li> <li><a href="#method.detail">Method</a></li> </ul> </div> <a name="skip.navbar.top"> <!-- --> </a></div> <!-- ========= END OF TOP NAVBAR ========= --> <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">com.google.zxing.common</div> <h2 title="Class GridSampler" class="title">Class GridSampler</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li> <li> <ul class="inheritance"> <li>com.google.zxing.common.GridSampler</li> </ul> </li> </ul> <div class="description"> <ul class="blockList"> <li class="blockList"> <dl> <dt>Direct Known Subclasses:</dt> <dd><a href="../../../../com/google/zxing/common/DefaultGridSampler.html" title="class in com.google.zxing.common">DefaultGridSampler</a></dd> </dl> <hr> <br> <pre>public abstract class <span class="typeNameLabel">GridSampler</span> extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre> <div class="block">Implementations of this class can, given locations of finder patterns for a QR code in an image, sample the right points in the image to reconstruct the QR code, accounting for perspective distortion. It is abstracted since it is relatively expensive and should be allowed to take advantage of platform-specific optimized implementations, like Sun's Java Advanced Imaging library, but which may not be available in other environments such as J2ME, and vice versa. The implementation used can be controlled by calling <a href="../../../../com/google/zxing/common/GridSampler.html#setGridSampler-com.google.zxing.common.GridSampler-"><code>setGridSampler(GridSampler)</code></a> with an instance of a class which implements this interface.</div> <dl> <dt><span class="simpleTagLabel">Author:</span></dt> <dd>Sean Owen</dd> </dl> </li> </ul> </div> <div class="summary"> <ul class="blockList"> <li class="blockList"> <!-- ======== CONSTRUCTOR SUMMARY ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor.summary"> <!-- --> </a> <h3>Constructor Summary</h3> <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> <caption><span>Constructors</span><span class="tabEnd"> </span></caption> <tr> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> <td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/google/zxing/common/GridSampler.html#GridSampler--">GridSampler</a></span>()</code> </td> </tr> </table> </li> </ul> <!-- ========== METHOD SUMMARY =========== --> <ul class="blockList"> <li class="blockList"><a name="method.summary"> <!-- --> </a> <h3>Method Summary</h3> <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> <caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Method and Description</th> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>protected static void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/zxing/common/GridSampler.html#checkAndNudgePoints-com.google.zxing.common.BitMatrix-float:A-">checkAndNudgePoints</a></span>(<a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a> image, float[] points)</code> <div class="block">Checks a set of points that have been transformed to sample points on an image against the image's dimensions to see if the point are even within the image.</div> </td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>static <a href="../../../../com/google/zxing/common/GridSampler.html" title="class in com.google.zxing.common">GridSampler</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/zxing/common/GridSampler.html#getInstance--">getInstance</a></span>()</code> </td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>abstract <a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/zxing/common/GridSampler.html#sampleGrid-com.google.zxing.common.BitMatrix-int-int-float-float-float-float-float-float-float-float-float-float-float-float-float-float-float-float-">sampleGrid</a></span>(<a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a> image, int dimensionX, int dimensionY, float p1ToX, float p1ToY, float p2ToX, float p2ToY, float p3ToX, float p3ToY, float p4ToX, float p4ToY, float p1FromX, float p1FromY, float p2FromX, float p2FromY, float p3FromX, float p3FromY, float p4FromX, float p4FromY)</code> <div class="block">Samples an image for a rectangular matrix of bits of the given dimension.</div> </td> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>abstract <a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/zxing/common/GridSampler.html#sampleGrid-com.google.zxing.common.BitMatrix-int-int-com.google.zxing.common.PerspectiveTransform-">sampleGrid</a></span>(<a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a> image, int dimensionX, int dimensionY, <a href="../../../../com/google/zxing/common/PerspectiveTransform.html" title="class in com.google.zxing.common">PerspectiveTransform</a> transform)</code> </td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>static void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/zxing/common/GridSampler.html#setGridSampler-com.google.zxing.common.GridSampler-">setGridSampler</a></span>(<a href="../../../../com/google/zxing/common/GridSampler.html" title="class in com.google.zxing.common">GridSampler</a> newGridSampler)</code> <div class="block">Sets the implementation of GridSampler used by the library.</div> </td> </tr> </table> <ul class="blockList"> <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> <!-- --> </a> <h3>Methods inherited from class java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3> <code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li> </ul> </li> </ul> </li> </ul> </div> <div class="details"> <ul class="blockList"> <li class="blockList"> <!-- ========= CONSTRUCTOR DETAIL ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor.detail"> <!-- --> </a> <h3>Constructor Detail</h3> <a name="GridSampler--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>GridSampler</h4> <pre>public GridSampler()</pre> </li> </ul> </li> </ul> <!-- ============ METHOD DETAIL ========== --> <ul class="blockList"> <li class="blockList"><a name="method.detail"> <!-- --> </a> <h3>Method Detail</h3> <a name="setGridSampler-com.google.zxing.common.GridSampler-"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>setGridSampler</h4> <pre>public static void setGridSampler(<a href="../../../../com/google/zxing/common/GridSampler.html" title="class in com.google.zxing.common">GridSampler</a> newGridSampler)</pre> <div class="block">Sets the implementation of GridSampler used by the library. One global instance is stored, which may sound problematic. But, the implementation provided ought to be appropriate for the entire platform, and all uses of this library in the whole lifetime of the JVM. For instance, an Android activity can swap in an implementation that takes advantage of native platform libraries.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>newGridSampler</code> - The platform-specific object to install.</dd> </dl> </li> </ul> <a name="getInstance--"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>getInstance</h4> <pre>public static <a href="../../../../com/google/zxing/common/GridSampler.html" title="class in com.google.zxing.common">GridSampler</a> getInstance()</pre> <dl> <dt><span class="returnLabel">Returns:</span></dt> <dd>the current implementation of GridSampler</dd> </dl> </li> </ul> <a name="sampleGrid-com.google.zxing.common.BitMatrix-int-int-float-float-float-float-float-float-float-float-float-float-float-float-float-float-float-float-"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>sampleGrid</h4> <pre>public abstract <a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a> sampleGrid(<a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a> image, int dimensionX, int dimensionY, float p1ToX, float p1ToY, float p2ToX, float p2ToY, float p3ToX, float p3ToY, float p4ToX, float p4ToY, float p1FromX, float p1FromY, float p2FromX, float p2FromY, float p3FromX, float p3FromY, float p4FromX, float p4FromY) throws <a href="../../../../com/google/zxing/NotFoundException.html" title="class in com.google.zxing">NotFoundException</a></pre> <div class="block">Samples an image for a rectangular matrix of bits of the given dimension. The sampling transformation is determined by the coordinates of 4 points, in the original and transformed image space.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>image</code> - image to sample</dd> <dd><code>dimensionX</code> - width of <a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common"><code>BitMatrix</code></a> to sample from image</dd> <dd><code>dimensionY</code> - height of <a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common"><code>BitMatrix</code></a> to sample from image</dd> <dd><code>p1ToX</code> - point 1 preimage X</dd> <dd><code>p1ToY</code> - point 1 preimage Y</dd> <dd><code>p2ToX</code> - point 2 preimage X</dd> <dd><code>p2ToY</code> - point 2 preimage Y</dd> <dd><code>p3ToX</code> - point 3 preimage X</dd> <dd><code>p3ToY</code> - point 3 preimage Y</dd> <dd><code>p4ToX</code> - point 4 preimage X</dd> <dd><code>p4ToY</code> - point 4 preimage Y</dd> <dd><code>p1FromX</code> - point 1 image X</dd> <dd><code>p1FromY</code> - point 1 image Y</dd> <dd><code>p2FromX</code> - point 2 image X</dd> <dd><code>p2FromY</code> - point 2 image Y</dd> <dd><code>p3FromX</code> - point 3 image X</dd> <dd><code>p3FromY</code> - point 3 image Y</dd> <dd><code>p4FromX</code> - point 4 image X</dd> <dd><code>p4FromY</code> - point 4 image Y</dd> <dt><span class="returnLabel">Returns:</span></dt> <dd><a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common"><code>BitMatrix</code></a> representing a grid of points sampled from the image within a region defined by the "from" parameters</dd> <dt><span class="throwsLabel">Throws:</span></dt> <dd><code><a href="../../../../com/google/zxing/NotFoundException.html" title="class in com.google.zxing">NotFoundException</a></code> - if image can't be sampled, for example, if the transformation defined by the given points is invalid or results in sampling outside the image boundaries</dd> </dl> </li> </ul> <a name="sampleGrid-com.google.zxing.common.BitMatrix-int-int-com.google.zxing.common.PerspectiveTransform-"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>sampleGrid</h4> <pre>public abstract <a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a> sampleGrid(<a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a> image, int dimensionX, int dimensionY, <a href="../../../../com/google/zxing/common/PerspectiveTransform.html" title="class in com.google.zxing.common">PerspectiveTransform</a> transform) throws <a href="../../../../com/google/zxing/NotFoundException.html" title="class in com.google.zxing">NotFoundException</a></pre> <dl> <dt><span class="throwsLabel">Throws:</span></dt> <dd><code><a href="../../../../com/google/zxing/NotFoundException.html" title="class in com.google.zxing">NotFoundException</a></code></dd> </dl> </li> </ul> <a name="checkAndNudgePoints-com.google.zxing.common.BitMatrix-float:A-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>checkAndNudgePoints</h4> <pre>protected static void checkAndNudgePoints(<a href="../../../../com/google/zxing/common/BitMatrix.html" title="class in com.google.zxing.common">BitMatrix</a> image, float[] points) throws <a href="../../../../com/google/zxing/NotFoundException.html" title="class in com.google.zxing">NotFoundException</a></pre> <div class="block"><p>Checks a set of points that have been transformed to sample points on an image against the image's dimensions to see if the point are even within the image.</p> <p>This method will actually "nudge" the endpoints back onto the image if they are found to be barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder patterns in an image where the QR Code runs all the way to the image border.</p> <p>For efficiency, the method will check points from either end of the line until one is found to be within the image. Because the set of points are assumed to be linear, this is valid.</p></div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>image</code> - image into which the points should map</dd> <dd><code>points</code> - actual points in x1,y1,...,xn,yn form</dd> <dt><span class="throwsLabel">Throws:</span></dt> <dd><code><a href="../../../../com/google/zxing/NotFoundException.html" title="class in com.google.zxing">NotFoundException</a></code> - if an endpoint is lies outside the image boundaries</dd> </dl> </li> </ul> </li> </ul> </li> </ul> </div> </div> <!-- ========= END OF CLASS DATA ========= --> <!-- ======= START OF BOTTOM NAVBAR ====== --> <div class="bottomNav"><a name="navbar.bottom"> <!-- --> </a> <div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> <a name="navbar.bottom.firstrow"> <!-- --> </a> <ul class="navList" title="Navigation"> <li><a href="../../../../overview-summary.html">Overview</a></li> <li><a href="package-summary.html">Package</a></li> <li class="navBarCell1Rev">Class</li> <li><a href="class-use/GridSampler.html">Use</a></li> <li><a href="package-tree.html">Tree</a></li> <li><a href="../../../../deprecated-list.html">Deprecated</a></li> <li><a href="../../../../index-all.html">Index</a></li> <li><a href="../../../../help-doc.html">Help</a></li> </ul> </div> <div class="subNav"> <ul class="navList"> <li><a href="../../../../com/google/zxing/common/GlobalHistogramBinarizer.html" title="class in com.google.zxing.common"><span class="typeNameLink">Prev Class</span></a></li> <li><a href="../../../../com/google/zxing/common/HybridBinarizer.html" title="class in com.google.zxing.common"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../index.html?com/google/zxing/common/GridSampler.html" target="_top">Frames</a></li> <li><a href="GridSampler.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> </ul> <div> <script type="text/javascript"><!-- allClassesLink = document.getElementById("allclasses_navbar_bottom"); if(window==top) { allClassesLink.style.display = "block"; } else { allClassesLink.style.display = "none"; } //--> </script> </div> <div> <ul class="subNavList"> <li>Summary: </li> <li>Nested | </li> <li>Field | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> <li>Field | </li> <li><a href="#constructor.detail">Constr</a> | </li> <li><a href="#method.detail">Method</a></li> </ul> </div> <a name="skip.navbar.bottom"> <!-- --> </a></div> <!-- ======== END OF BOTTOM NAVBAR ======= --> <p class="legalCopy"><small>Copyright © 2007–2016. All rights reserved.</small></p> </body> </html>