summaryrefslogtreecommitdiff
path: root/source/settings
diff options
context:
space:
mode:
Diffstat (limited to 'source/settings')
-rw-r--r--source/settings/CodeForm.mc20
1 files changed, 12 insertions, 8 deletions
diff --git a/source/settings/CodeForm.mc b/source/settings/CodeForm.mc
index 89d519d..810cd6e 100644
--- a/source/settings/CodeForm.mc
+++ b/source/settings/CodeForm.mc
@@ -115,7 +115,8 @@ module CodeForm {
// Encodes a code once to prove it is valid and to check that it fits this
// screen. When step() returns true: error is set, or the code is fine
-// (notes may hold remarks) and, for 2D codes, cache holds Matrix.toBytes().
+// (notes may hold remarks) and, for 2D codes, cache holds the packed matrix
+// (Codes.Packed).
class CodeCheck extends Jobs.Job {
// Linear codes draw with 10 quiet modules on each side (CodeView).
@@ -129,7 +130,7 @@ class CodeCheck extends Jobs.Job {
private var _payload as String;
private var _options as Number;
private var _job as Codes.MatrixJob? = null;
- private var _matrix as Codes.Matrix? = null;
+ private var _packer as Codes.Packer? = null;
private var _started as Boolean = false;
private var _w as Number;
private var _h as Number;
@@ -157,11 +158,14 @@ class CodeCheck extends Jobs.Job {
_payload = "";
return false;
}
- var matrix = _matrix;
- if (matrix != null) {
- // Packing gets a step of its own (it runs over every module).
- cache = matrix.toBytes();
- _matrix = null;
+ var packer = _packer;
+ if (packer != null) {
+ // Packing runs in steps of its own (it visits every module).
+ if (!packer.step(budget)) {
+ return false;
+ }
+ cache = packer.result;
+ _packer = null;
return true;
}
var job = _job as Codes.MatrixJob;
@@ -181,7 +185,7 @@ class CodeCheck extends Jobs.Job {
if (!Codes.fits(totalW, totalH, px, _w, _h, _round)) {
notes.add("Too large for this screen: needs " + px + " px per module, " + totalW * px + " x " + totalH * px + " px");
}
- _matrix = m;
+ _packer = new Codes.Packer(m);
return false;
}