Просмотр исходного кода

Deploying to gh-pages from @ chillerlan/php-qrcode@89de3849dd1c4c47b376fce1ea5bfd4fb21cfb01 🚀

codemasher 2 месяцев назад
Родитель
Сommit
1f7e8fd977

+ 38 - 32
classes/chillerlan-QRCode-Output-QREps.html

@@ -358,8 +358,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -419,9 +419,9 @@ in long loops for a significant performance increase.</dd>
 <dd>Returns the main header for the EPS file, including function definitions and background</dd>
 <dd>Returns the main header for the EPS file, including function definitions and background</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
-    <a class="" href="classes/chillerlan-QRCode-Output-QREps.html#method_module">module()</a>
+    <a class="" href="classes/chillerlan-QRCode-Output-QREps.html#method_moduleTransform">moduleTransform()</a>
     <span>
     <span>
-                                &nbsp;: string    </span>
+                                &nbsp;: string|null    </span>
 </dt>
 </dt>
 <dd>Returns a path segment for a single module</dd>
 <dd>Returns a path segment for a single module</dd>
 
 
@@ -1382,39 +1382,38 @@ you need to supply the $file parameter here in that case (or handle the option v
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -1841,9 +1840,9 @@ in long loops for a significant performance increase.</p>
             -protected
             -protected
                                                         "
                                                         "
 >
 >
-    <h4 class="phpdocumentor-element__name" id="method_module">
-        module()
-        <a href="classes/chillerlan-QRCode-Output-QREps.html#method_module" class="headerlink"><i class="fas fa-link"></i></a>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QREps.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
 
 
     </h4>
     </h4>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
@@ -1857,7 +1856,7 @@ in long loops for a significant performance increase.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">module</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">string</span></code>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">string|null</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
@@ -1885,6 +1884,13 @@ in long loops for a significant performance increase.</p>
                             </dt>
                             </dt>
             <dd class="phpdocumentor-argument-list__definition">
             <dd class="phpdocumentor-argument-list__definition">
                 
                 
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
             </dd>
             </dd>
             </dl>
             </dl>
 
 
@@ -1894,7 +1900,7 @@ in long loops for a significant performance increase.</p>
 
 
             <section>
             <section>
         <h5 class="phpdocumentor-return-value__heading">Return values</h5>
         <h5 class="phpdocumentor-return-value__heading">Return values</h5>
-        <span class="phpdocumentor-signature__response_type">string</span>
+        <span class="phpdocumentor-signature__response_type">string|null</span>
             </section>
             </section>
 
 
 </article>
 </article>
@@ -2354,7 +2360,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QREps.html#method_header">header()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QREps.html#method_header">header()</a></li>
-                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QREps.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QREps.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QREps.html#method_paths">paths()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QREps.html#method_paths">paths()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QREps.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QREps.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRFpdf.html

@@ -357,8 +357,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -417,6 +417,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Renders a single module</dd>
 <dd>Renders a single module</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-RGBArrayModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-RGBArrayModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1465,39 +1472,38 @@ you need to supply the $file parameter here in that case (or handle the option v
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -1910,6 +1916,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2345,6 +2439,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRFpdf.html#method_initFPDF">initFPDF()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRFpdf.html#method_initFPDF">initFPDF()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRFpdf.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRFpdf.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-RGBArrayModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-RGBArrayModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRGdImage.html

@@ -362,8 +362,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -443,6 +443,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Creates a single QR pixel with the given settings</dd>
 <dd>Creates a single QR pixel with the given settings</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1637,39 +1644,38 @@ in long loops for a significant performance increase.</dd>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -2235,6 +2241,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2799,6 +2893,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRGdImageAVIF.html

@@ -362,8 +362,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -443,6 +443,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Creates a single QR pixel with the given settings</dd>
 <dd>Creates a single QR pixel with the given settings</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1675,39 +1682,38 @@ in long loops for a significant performance increase.</dd>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -2273,6 +2279,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2844,6 +2938,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageAVIF.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageAVIF.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRGdImageBMP.html

@@ -362,8 +362,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -443,6 +443,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Creates a single QR pixel with the given settings</dd>
 <dd>Creates a single QR pixel with the given settings</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1675,39 +1682,38 @@ in long loops for a significant performance increase.</dd>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -2273,6 +2279,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2844,6 +2938,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageBMP.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageBMP.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRGdImageGIF.html

@@ -362,8 +362,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -443,6 +443,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Creates a single QR pixel with the given settings</dd>
 <dd>Creates a single QR pixel with the given settings</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1675,39 +1682,38 @@ in long loops for a significant performance increase.</dd>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -2273,6 +2279,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2844,6 +2938,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageGIF.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageGIF.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRGdImageJPEG.html

@@ -362,8 +362,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -443,6 +443,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Creates a single QR pixel with the given settings</dd>
 <dd>Creates a single QR pixel with the given settings</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1675,39 +1682,38 @@ in long loops for a significant performance increase.</dd>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -2273,6 +2279,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2844,6 +2938,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageJPEG.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageJPEG.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRGdImagePNG.html

@@ -362,8 +362,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -443,6 +443,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Creates a single QR pixel with the given settings</dd>
 <dd>Creates a single QR pixel with the given settings</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1675,39 +1682,38 @@ in long loops for a significant performance increase.</dd>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -2273,6 +2279,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2844,6 +2938,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImagePNG.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImagePNG.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImagePNG.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImagePNG.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRGdImageWEBP.html

@@ -362,8 +362,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -443,6 +443,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Creates a single QR pixel with the given settings</dd>
 <dd>Creates a single QR pixel with the given settings</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1675,39 +1682,38 @@ in long loops for a significant performance increase.</dd>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -2273,6 +2279,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2844,6 +2938,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_getQuality">getQuality()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImage.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageWEBP.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRGdImageWEBP.html#method_renderImage">renderImage()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRImagick.html

@@ -350,8 +350,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -417,6 +417,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>draws a single pixel at the given position</dd>
 <dd>draws a single pixel at the given position</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QRImagick.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QRImagick.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1504,39 +1511,38 @@ you need to supply the $file parameter here in that case (or handle the option v
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -1984,6 +1990,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2469,6 +2563,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRImagick.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRImagick.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRImagick.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRImagick.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRImagick.html#method_setBgColor">setBgColor()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRImagick.html#method_setBgColor">setBgColor()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRInterventionImage.html

@@ -361,8 +361,8 @@ note: css4 colors are not included</dd>
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -414,6 +414,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>draws a single pixel at the given position</dd>
 <dd>draws a single pixel at the given position</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1531,39 +1538,38 @@ note: css4 colors are not included</p>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -1937,6 +1943,94 @@ in long loops for a significant performance increase.</p>
     
     
 
 
     
     
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2351,6 +2445,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRInterventionImage.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRInterventionImage.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRMarkup.html

@@ -312,8 +312,8 @@ note: css4 colors are not included</dd>
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -372,6 +372,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Guesses the mime type from the given $imageData</dd>
 <dd>Guesses the mime type from the given $imageData</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1311,39 +1318,38 @@ note: css4 colors are not included</p>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -1756,6 +1762,94 @@ in long loops for a significant performance increase.</p>
         <span class="phpdocumentor-signature__response_type">string</span>
         <span class="phpdocumentor-signature__response_type">string</span>
             </section>
             </section>
 
 
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2167,6 +2261,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getModuleValueAt">getModuleValueAt()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getModuleValueAt">getModuleValueAt()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRMarkupHTML.html

@@ -320,8 +320,8 @@ note: css4 colors are not included</dd>
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -380,6 +380,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Guesses the mime type from the given $imageData</dd>
 <dd>Guesses the mime type from the given $imageData</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1357,39 +1364,38 @@ note: css4 colors are not included</p>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -1802,6 +1808,94 @@ in long loops for a significant performance increase.</p>
         <span class="phpdocumentor-signature__response_type">string</span>
         <span class="phpdocumentor-signature__response_type">string</span>
             </section>
             </section>
 
 
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2220,6 +2314,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getModuleValueAt">getModuleValueAt()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getModuleValueAt">getModuleValueAt()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>

+ 39 - 33
classes/chillerlan-QRCode-Output-QRMarkupSVG.html

@@ -382,8 +382,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -457,9 +457,9 @@ in long loops for a significant performance increase.</dd>
 <dd>returns the &lt;svg&gt; header with the given options parsed</dd>
 <dd>returns the &lt;svg&gt; header with the given options parsed</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
-    <a class="" href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_module">module()</a>
+    <a class="" href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_moduleTransform">moduleTransform()</a>
     <span>
     <span>
-                                &nbsp;: string    </span>
+                                &nbsp;: string|null    </span>
 </dt>
 </dt>
 <dd>returns a path segment for a single module</dd>
 <dd>returns a path segment for a single module</dd>
 
 
@@ -1458,39 +1458,38 @@ you need to supply the $file parameter here in that case (or handle the option v
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -2026,9 +2025,9 @@ in long loops for a significant performance increase.</p>
             -protected
             -protected
                                                         "
                                                         "
 >
 >
-    <h4 class="phpdocumentor-element__name" id="method_module">
-        module()
-        <a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_module" class="headerlink"><i class="fas fa-link"></i></a>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
 
 
     </h4>
     </h4>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
@@ -2042,7 +2041,7 @@ in long loops for a significant performance increase.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">module</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">string</span></code>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">string|null</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
@@ -2070,13 +2069,20 @@ in long loops for a significant performance increase.</p>
                             </dt>
                             </dt>
             <dd class="phpdocumentor-argument-list__definition">
             <dd class="phpdocumentor-argument-list__definition">
                 
                 
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
             </dd>
             </dd>
             </dl>
             </dl>
 
 
     
     
     <h5 class="phpdocumentor-tag-list__heading" id="tags">
     <h5 class="phpdocumentor-tag-list__heading" id="tags">
         Tags
         Tags
-        <a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_module#tags" class="headerlink"><i class="fas fa-link"></i></a>
+        <a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
 
 
     </h5>
     </h5>
     <dl class="phpdocumentor-tag-list">
     <dl class="phpdocumentor-tag-list">
@@ -2094,7 +2100,7 @@ in long loops for a significant performance increase.</p>
 
 
             <section>
             <section>
         <h5 class="phpdocumentor-return-value__heading">Return values</h5>
         <h5 class="phpdocumentor-return-value__heading">Return values</h5>
-        <span class="phpdocumentor-signature__response_type">string</span>
+        <span class="phpdocumentor-signature__response_type">string|null</span>
             </section>
             </section>
 
 
 </article>
 </article>
@@ -2627,7 +2633,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_getViewBox">getViewBox()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_getViewBox">getViewBox()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_header">header()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_header">header()</a></li>
-                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_path">path()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_path">path()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_paths">paths()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_paths">paths()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRMarkupXML.html

@@ -332,8 +332,8 @@ note: css4 colors are not included</dd>
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -406,6 +406,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Creates a DOM element for a single module</dd>
 <dd>Creates a DOM element for a single module</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1459,39 +1466,38 @@ note: css4 colors are not included</p>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -2040,6 +2046,94 @@ in long loops for a significant performance increase.</p>
         <span class="phpdocumentor-signature__response_type"><abbr title="\DOMElement">DOMElement</abbr>|null</span>
         <span class="phpdocumentor-signature__response_type"><abbr title="\DOMElement">DOMElement</abbr>|null</span>
             </section>
             </section>
 
 
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2518,6 +2612,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupXML.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupXML.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupXML.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupXML.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupXML.html#method_row">row()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRMarkupXML.html#method_row">row()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QROutputAbstract.html

@@ -301,8 +301,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -347,6 +347,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Guesses the mime type from the given $imageData</dd>
 <dd>Guesses the mime type from the given $imageData</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1157,39 +1164,38 @@ in long loops for a significant performance increase.</dd>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -1500,6 +1506,94 @@ in long loops for a significant performance increase.</p>
         <span class="phpdocumentor-signature__response_type">string</span>
         <span class="phpdocumentor-signature__response_type">string</span>
             </section>
             </section>
 
 
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -1903,6 +1997,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getModuleValueAt">getModuleValueAt()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getModuleValueAt">getModuleValueAt()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRStringJSON.html

@@ -352,8 +352,8 @@ note: css4 colors are not included</dd>
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -398,6 +398,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Creates an array element for a single module</dd>
 <dd>Creates an array element for a single module</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1480,39 +1487,38 @@ note: css4 colors are not included</p>
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -1856,6 +1862,94 @@ in long loops for a significant performance increase.</p>
         <span class="phpdocumentor-signature__response_type">array&lt;string|int, mixed&gt;|null</span>
         <span class="phpdocumentor-signature__response_type">array&lt;string|int, mixed&gt;|null</span>
             </section>
             </section>
 
 
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2346,6 +2440,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRStringJSON.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRStringJSON.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRStringJSON.html#method_module">module()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRStringJSON.html#method_module">module()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-CssColorModuleValueTrait.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRStringJSON.html#method_row">row()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRStringJSON.html#method_row">row()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>

+ 119 - 24
classes/chillerlan-QRCode-Output-QRStringText.html

@@ -326,8 +326,8 @@
     <span>
     <span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
                                 &nbsp;: array&lt;int, mixed&gt;    </span>
 </dt>
 </dt>
-<dd>collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</dd>
+<dd>collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</dd>
 
 
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_copyVars">copyVars()</a>
@@ -372,6 +372,13 @@ in long loops for a significant performance increase.</dd>
 </dt>
 </dt>
 <dd>Guesses the mime type from the given $imageData</dd>
 <dd>Guesses the mime type from the given $imageData</dd>
 
 
+            <dt class="phpdocumentor-table-of-contents__entry -method -protected">
+    <a class="" href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a>
+    <span>
+                                &nbsp;: mixed    </span>
+</dt>
+<dd>The transform callback for the module collector</dd>
+
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
             <dt class="phpdocumentor-table-of-contents__entry -method -protected">
     <a class="" href="classes/chillerlan-QRCode-Output-QRStringText.html#method_prepareModuleValue">prepareModuleValue()</a>
     <a class="" href="classes/chillerlan-QRCode-Output-QRStringText.html#method_prepareModuleValue">prepareModuleValue()</a>
     <span>
     <span>
@@ -1429,39 +1436,38 @@ you need to supply the $file parameter here in that case (or handle the option v
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">267</span>
+    <span class="phpdocumentor-element-found-in__line">262</span>
 
 
     </aside>
     </aside>
 
 
-        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type and runs a $transform function on each module and
-returns an array with the transformed modules</p>
+        <p class="phpdocumentor-summary">collects the modules per QRMatrix::M_* type, runs a transform method on each module and
+returns an array with the transformed modules.</p>
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">protected</span>
     <span class="phpdocumentor-signature__visibility">protected</span>
-                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$transform</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
+                    <span class="phpdocumentor-signature__name">collectModules</span><span>(</span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">array&lt;int, mixed&gt;</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
     
     
-        <section class="phpdocumentor-description"><p>The transform callback is called with the following parameters:</p>
-<p>$x            - current column
-$y            - current row
-$M_TYPE       - field value
-$M_TYPE_LAYER - (possibly modified) field value that acts as layer id</p>
-</section>
-
-        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
-    <dl class="phpdocumentor-argument-list">
-                    <dt class="phpdocumentor-argument-list__entry">
-                <span class="phpdocumentor-signature__argument__name">$transform</span>
-                : <span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr></span>
-                            </dt>
-            <dd class="phpdocumentor-argument-list__definition">
-                
-            </dd>
-            </dl>
-
     
     
+    
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::moduleTransform()">QROutputAbstract::moduleTransform()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
 
 
     
     
 
 
@@ -1776,6 +1782,94 @@ in long loops for a significant performance increase.</p>
         <span class="phpdocumentor-signature__response_type">string</span>
         <span class="phpdocumentor-signature__response_type">string</span>
             </section>
             </section>
 
 
+</article>
+                    <article
+        class="phpdocumentor-element
+            -method
+            -protected
+                                                        "
+>
+    <h4 class="phpdocumentor-element__name" id="method_moduleTransform">
+        moduleTransform()
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h4>
+    <aside class="phpdocumentor-element-found-in">
+    <abbr class="phpdocumentor-element-found-in__file" title="src/Output/QROutputAbstract.php"><a href="files/src-output-qroutputabstract.html"><abbr title="src/Output/QROutputAbstract.php">QROutputAbstract.php</abbr></a></abbr>
+    :
+    <span class="phpdocumentor-element-found-in__line">307</span>
+
+    </aside>
+
+        <p class="phpdocumentor-summary">The transform callback for the module collector</p>
+
+    <code class="phpdocumentor-code phpdocumentor-signature ">
+    <span class="phpdocumentor-signature__visibility">protected</span>
+                    <span class="phpdocumentor-signature__name">moduleTransform</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$x</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$y</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">mixed</span></code>
+
+    <div class="phpdocumentor-label-line">
+        </div>
+    
+        <section class="phpdocumentor-description"><p>$x            - current column
+$y            - current row
+$M_TYPE       - field value
+$M_TYPE_LAYER - (possibly modified) field value that acts as layer id ($paths array key)</p>
+<p>This method should return a value suitable for the current output class.
+It must return <code class="prettyprint">null</code> for an empty value.</p>
+</section>
+
+        <h5 class="phpdocumentor-argument-list__heading">Parameters</h5>
+    <dl class="phpdocumentor-argument-list">
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$x</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$y</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+                    <dt class="phpdocumentor-argument-list__entry">
+                <span class="phpdocumentor-signature__argument__name">$M_TYPE_LAYER</span>
+                : <span class="phpdocumentor-signature__argument__return-type">int</span>
+                            </dt>
+            <dd class="phpdocumentor-argument-list__definition">
+                
+            </dd>
+            </dl>
+
+    
+    <h5 class="phpdocumentor-tag-list__heading" id="tags">
+        Tags
+        <a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform#tags" class="headerlink"><i class="fas fa-link"></i></a>
+
+    </h5>
+    <dl class="phpdocumentor-tag-list">
+                                    <dt class="phpdocumentor-tag-list__entry">
+                    <span class="phpdocumentor-tag__name">see</span>
+                </dt>
+                <dd class="phpdocumentor-tag-list__definition">
+                                                                                    <span class="phpdocumentor-tag-link"><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"><abbr title="\chillerlan\QRCode\Output\QROutputAbstract::collectModules()">QROutputAbstract::collectModules()</abbr></a></span>
+                                        
+                                             
+                                    </dd>
+                                            </dl>
+
+    
+
+    
 </article>
 </article>
                     <article
                     <article
         class="phpdocumentor-element
         class="phpdocumentor-element
@@ -2207,6 +2301,7 @@ or given via $mime, otherwise it is guessed from the image $data.</p>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getModuleValueAt">getModuleValueAt()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getModuleValueAt">getModuleValueAt()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_getOutputDimensions">getOutputDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_guessMimeType">guessMimeType()</a></li>
+                                            <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform">moduleTransform()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRStringText.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QRStringText.html#method_prepareModuleValue">prepareModuleValue()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_saveToFile">saveToFile()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>
                                             <li class=""><a href="classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_setMatrixDimensions">setMatrixDimensions()</a></li>

+ 11 - 11
classes/chillerlan-QRCodeTest-Common-MaskPatternTest.html

@@ -316,7 +316,7 @@
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">124</span>
+    <span class="phpdocumentor-element-found-in__line">129</span>
 
 
     </aside>
     </aside>
 
 
@@ -351,7 +351,7 @@
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">101</span>
+    <span class="phpdocumentor-element-found-in__line">103</span>
 
 
     </aside>
     </aside>
 
 
@@ -359,7 +359,7 @@
 
 
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">public</span>
     <span class="phpdocumentor-signature__visibility">public</span>
-                    <span class="phpdocumentor-signature__name">testMask</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$pattern</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">array&lt;string|int, mixed&gt;&nbsp;</span><span class="phpdocumentor-signature__argument__name">$expected</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">void</span></code>
+                    <span class="phpdocumentor-signature__name">testMask</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type">int&nbsp;</span><span class="phpdocumentor-signature__argument__name">$pattern</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">array&lt;string|int, array&lt;string|int, int&gt;&gt;&nbsp;</span><span class="phpdocumentor-signature__argument__name">$expected</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">void</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
@@ -376,7 +376,7 @@
             </dd>
             </dd>
                     <dt class="phpdocumentor-argument-list__entry">
                     <dt class="phpdocumentor-argument-list__entry">
                 <span class="phpdocumentor-signature__argument__name">$expected</span>
                 <span class="phpdocumentor-signature__argument__name">$expected</span>
-                : <span class="phpdocumentor-signature__argument__return-type">array&lt;string|int, mixed&gt;</span>
+                : <span class="phpdocumentor-signature__argument__return-type">array&lt;string|int, array&lt;string|int, int&gt;&gt;</span>
                             </dt>
                             </dt>
             <dd class="phpdocumentor-argument-list__definition">
             <dd class="phpdocumentor-argument-list__definition">
                 
                 
@@ -417,7 +417,7 @@
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">131</span>
+    <span class="phpdocumentor-element-found-in__line">136</span>
 
 
     </aside>
     </aside>
 
 
@@ -451,7 +451,7 @@
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">142</span>
+    <span class="phpdocumentor-element-found-in__line">147</span>
 
 
     </aside>
     </aside>
 
 
@@ -485,7 +485,7 @@
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">149</span>
+    <span class="phpdocumentor-element-found-in__line">154</span>
 
 
     </aside>
     </aside>
 
 
@@ -519,7 +519,7 @@
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">160</span>
+    <span class="phpdocumentor-element-found-in__line">165</span>
 
 
     </aside>
     </aside>
 
 
@@ -553,14 +553,14 @@
     <aside class="phpdocumentor-element-found-in">
     <aside class="phpdocumentor-element-found-in">
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     <abbr class="phpdocumentor-element-found-in__file" title="tests/Common/MaskPatternTest.php"><a href="files/tests-common-maskpatterntest.html"><abbr title="tests/Common/MaskPatternTest.php">MaskPatternTest.php</abbr></a></abbr>
     :
     :
-    <span class="phpdocumentor-element-found-in__line">108</span>
+    <span class="phpdocumentor-element-found-in__line">113</span>
 
 
     </aside>
     </aside>
 
 
     
     
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <code class="phpdocumentor-code phpdocumentor-signature ">
     <span class="phpdocumentor-signature__visibility">private</span>
     <span class="phpdocumentor-signature__visibility">private</span>
-                    <span class="phpdocumentor-signature__name">assertMask</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$mask</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">array&lt;string|int, mixed&gt;&nbsp;</span><span class="phpdocumentor-signature__argument__name">$expected</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">bool</span></code>
+                    <span class="phpdocumentor-signature__name">assertMask</span><span>(</span><span class="phpdocumentor-signature__argument"><span class="phpdocumentor-signature__argument__return-type"><abbr title="\Closure">Closure</abbr>&nbsp;</span><span class="phpdocumentor-signature__argument__name">$mask</span></span><span class="phpdocumentor-signature__argument"><span>, </span><span class="phpdocumentor-signature__argument__return-type">array&lt;string|int, array&lt;string|int, int&gt;&gt;&nbsp;</span><span class="phpdocumentor-signature__argument__name">$expected</span></span><span>)</span><span> : </span><span class="phpdocumentor-signature__response_type">bool</span></code>
 
 
     <div class="phpdocumentor-label-line">
     <div class="phpdocumentor-label-line">
         </div>
         </div>
@@ -577,7 +577,7 @@
             </dd>
             </dd>
                     <dt class="phpdocumentor-argument-list__entry">
                     <dt class="phpdocumentor-argument-list__entry">
                 <span class="phpdocumentor-signature__argument__name">$expected</span>
                 <span class="phpdocumentor-signature__argument__name">$expected</span>
-                : <span class="phpdocumentor-signature__argument__return-type">array&lt;string|int, mixed&gt;</span>
+                : <span class="phpdocumentor-signature__argument__return-type">array&lt;string|int, array&lt;string|int, int&gt;&gt;</span>
                             </dt>
                             </dt>
             <dd class="phpdocumentor-argument-list__definition">
             <dd class="phpdocumentor-argument-list__definition">
                 
                 

+ 12 - 7
js/searchIndex.js

@@ -2491,10 +2491,10 @@ Search.appendIndex(
             "summary": "returns\u0020one\u0020or\u0020more\u0020EPS\u0020path\u0020blocks",
             "summary": "returns\u0020one\u0020or\u0020more\u0020EPS\u0020path\u0020blocks",
             "url": "classes/chillerlan-QRCode-Output-QREps.html#method_paths"
             "url": "classes/chillerlan-QRCode-Output-QREps.html#method_paths"
         },                {
         },                {
-            "fqsen": "\\chillerlan\\QRCode\\Output\\QREps\u003A\u003Amodule\u0028\u0029",
-            "name": "module",
+            "fqsen": "\\chillerlan\\QRCode\\Output\\QREps\u003A\u003AmoduleTransform\u0028\u0029",
+            "name": "moduleTransform",
             "summary": "Returns\u0020a\u0020path\u0020segment\u0020for\u0020a\u0020single\u0020module",
             "summary": "Returns\u0020a\u0020path\u0020segment\u0020for\u0020a\u0020single\u0020module",
-            "url": "classes/chillerlan-QRCode-Output-QREps.html#method_module"
+            "url": "classes/chillerlan-QRCode-Output-QREps.html#method_moduleTransform"
         },                {
         },                {
             "fqsen": "\\chillerlan\\QRCode\\Output\\QREps\u003A\u003AMIME_TYPE",
             "fqsen": "\\chillerlan\\QRCode\\Output\\QREps\u003A\u003AMIME_TYPE",
             "name": "MIME_TYPE",
             "name": "MIME_TYPE",
@@ -2916,10 +2916,10 @@ Search.appendIndex(
             "summary": "renders\u0020and\u0020returns\u0020a\u0020single\u0020\u003Cpath\u003E\u0020element",
             "summary": "renders\u0020and\u0020returns\u0020a\u0020single\u0020\u003Cpath\u003E\u0020element",
             "url": "classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_path"
             "url": "classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_path"
         },                {
         },                {
-            "fqsen": "\\chillerlan\\QRCode\\Output\\QRMarkupSVG\u003A\u003Amodule\u0028\u0029",
-            "name": "module",
+            "fqsen": "\\chillerlan\\QRCode\\Output\\QRMarkupSVG\u003A\u003AmoduleTransform\u0028\u0029",
+            "name": "moduleTransform",
             "summary": "returns\u0020a\u0020path\u0020segment\u0020for\u0020a\u0020single\u0020module",
             "summary": "returns\u0020a\u0020path\u0020segment\u0020for\u0020a\u0020single\u0020module",
-            "url": "classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_module"
+            "url": "classes/chillerlan-QRCode-Output-QRMarkupSVG.html#method_moduleTransform"
         },                {
         },                {
             "fqsen": "\\chillerlan\\QRCode\\Output\\QRMarkupSVG\u003A\u003AMIME_TYPE",
             "fqsen": "\\chillerlan\\QRCode\\Output\\QRMarkupSVG\u003A\u003AMIME_TYPE",
             "name": "MIME_TYPE",
             "name": "MIME_TYPE",
@@ -3038,8 +3038,13 @@ Search.appendIndex(
         },                {
         },                {
             "fqsen": "\\chillerlan\\QRCode\\Output\\QROutputAbstract\u003A\u003AcollectModules\u0028\u0029",
             "fqsen": "\\chillerlan\\QRCode\\Output\\QROutputAbstract\u003A\u003AcollectModules\u0028\u0029",
             "name": "collectModules",
             "name": "collectModules",
-            "summary": "collects\u0020the\u0020modules\u0020per\u0020QRMatrix\u003A\u003AM_\u002A\u0020type\u0020and\u0020runs\u0020a\u0020\u0024transform\u0020function\u0020on\u0020each\u0020module\u0020and\nreturns\u0020an\u0020array\u0020with\u0020the\u0020transformed\u0020modules",
+            "summary": "collects\u0020the\u0020modules\u0020per\u0020QRMatrix\u003A\u003AM_\u002A\u0020type,\u0020runs\u0020a\u0020transform\u0020method\u0020on\u0020each\u0020module\u0020and\nreturns\u0020an\u0020array\u0020with\u0020the\u0020transformed\u0020modules.",
             "url": "classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"
             "url": "classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_collectModules"
+        },                {
+            "fqsen": "\\chillerlan\\QRCode\\Output\\QROutputAbstract\u003A\u003AmoduleTransform\u0028\u0029",
+            "name": "moduleTransform",
+            "summary": "The\u0020transform\u0020callback\u0020for\u0020the\u0020module\u0020collector",
+            "url": "classes/chillerlan-QRCode-Output-QROutputAbstract.html#method_moduleTransform"
         },                {
         },                {
             "fqsen": "\\chillerlan\\QRCode\\Output\\QROutputAbstract\u003A\u003A\u0024moduleCount",
             "fqsen": "\\chillerlan\\QRCode\\Output\\QROutputAbstract\u003A\u003A\u0024moduleCount",
             "name": "moduleCount",
             "name": "moduleCount",