diff options
Diffstat (limited to 'source/settings/CodeForm.mc')
| -rw-r--r-- | source/settings/CodeForm.mc | 20 |
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; } |
