Completed
Push — master ( b6cd50...963683 )
by Roberto
03:14
created

Daruma::setFont()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 11
ccs 0
cts 10
cp 0
rs 9.4285
cc 1
eloc 9
nc 1
nop 1
crap 2
1
<?php
2
3
namespace Posprint\Printers;
4
5
/**
6
 * Daruma class for POS printer
7
 * Model: DR700
8
 *
9
 * @category   NFePHP
10
 * @package    Posprint
11
 * @copyright  Copyright (c) 2016
12
 * @license    http://www.gnu.org/licenses/lesser.html LGPL v3
13
 * @author     Roberto L. Machado <linux.rlm at gmail dot com>
14
 * @link       http://github.com/nfephp-org/posprint for the canonical source repository
15
 */
16
17
use Posprint\Printers\DefaultPrinter;
18
use Posprint\Printers\PrinterInterface;
19
20
final class Daruma extends DefaultPrinter implements PrinterInterface
21
{
22
    /**
23
     * List all available code pages.
24
     *
25
     * @var array
26
     */
27
    protected $aCodePage = array(
28
        'ISO8859-1' => array('conv' => 'ISO8859-1', 'table' => '0', 'desc' => 'ISO8859-1: Latin1'),
29
    );
30
    /**
31
     * List all available region pages.
32
     *
33
     * @var array
34
     */
35
    protected $aRegion = array(
36
        'LATIN',
37
    );
38
    /**
39
     * List all avaiable fonts
40
     *
41
     * @var array
42
     */
43
    protected $aFont = array(0 => 'normal', 1 => 'elite');
44
    /**
45
     * Selected internal font.
46
     *
47
     * @var string
48
     */
49
    protected $font = 'normal';
50
    /**
51
     * Seleted code page
52
     * Defined in printer class.
53
     *
54
     * @var string
55
     */
56
    protected $codepage = 'ISO8859-1';
57
    /**
58
     * Acceptable barcodes list
59
     * @var array
60
     */
61
    protected $barcode1Dlist = [
62
        'EAN13' => 1,
63
        'EAN8' => 2,
64
        'S25' => 3,
65
        'I25' => 4,
66
        'CODE128' => 5,
67
        'CODE39' => 6,
68
        'CODE93' => 7,
69
        'UPC_A' => 8,
70
        'CODABAR' => 9,
71
        'MSI' => 10,
72
        'CODE11' => 11
73
    ];
74
    /**
75
     * List of supported models
76
     * @var array
77
     */
78
    protected $modelList = [
79
        'DR600',
80
        'DR700'
81
    ];
82
    /**
83
     * Selected model
84
     * @var string
85
     */
86
    protected $printerModel = 'DR700';
87
    
88
    //public function __construct(); vide DefaultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
89
    //public function defaultCodePage(); vide DefaultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
90
    //public function defaultRegionPage(); vide DefaultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
91
    //public function defaultFont(); vide DefaultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
92
    //public function defaultModel(); vide DefaultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
93
    //public function initialize(); vide DefaultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
94
    //
95
    //          0000000000111111111122222222223333333333
96
    //          0123456789012345678901234567890123456789
97
    //[ESC] 228 0XXXX5678X0XXX45XXXXXXXXXXXXXXXXX3456XX9
0 ignored issues
show
Unused Code Comprehensibility introduced by
50% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
98
    /**
99
     * Select printer mode
100
     *
101
     * @param string $mode
102
     */
103
    public function setPrintMode($mode = null)
104
    {
105
        //not used for this printer
106
    }
107
    
108
    //public function setCodePage(); vide DefaultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
109
    
110
    /**
111
     * Set a region page.
112
     * The numeric key of array $this->aRegion is the command parameter.
113
     *
114
     * @param string $region
115
     */
116
    public function setRegionPage($region = null)
117
    {
118
        //not used for this printer
119
    }
120
    
121
    /**
122
     * Set a printer font
123
     * If send a valid font name will set the printer otherelse a default font is selected
124
     *     ESC ! n
125
     *        n (BIT)           FUNÇÃO
126
     *            0 ..... 0      fonte normal
127
     *                    1      fonte elite
128
     *            3 ..... 0      desliga enfatizado
129
     *                    1      liga enfatizado
130
     *            4 ..... 0      desliga dupla altura
131
     *                    1      liga dupla altura
132
     *            5 ..... 0      desliga expandido
133
     *                    1      liga expandido
134
     *            7 ..... 0      desliga sublinhado
135
     *                    1      liga sublinhado
136
     *
137
     * @param string $font
138
     */
139
    public function setFont($font = null)
140
    {
141
        $font = $this->defaultFont($font);
142
        $fn = array_keys($this->aFont, $font, true);
143
        $mode = $fn[0];
144
        $mode += (8 * $this->boldMode);
145
        $mode += (16 * $this->doubleHeight);
0 ignored issues
show
Bug introduced by
The property doubleHeight does not seem to exist. Did you mean doubleHeigth?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
146
        $mode += (32 * $this->expandedMode);
147
        $mode += (128 * $this->underlineMode);
148
        $this->buffer->write(self::ESC.'!'.chr($mode));
149
    }
150
151
    /**
152
     * Set emphasys mode on or off.
153
     */
154
    public function setBold()
155
    {
156
        $this->boldMode = ! $this->boldMode;
157
        if ($this->boldMode) {
158
            $this->buffer->write(self::ESC . 'E');
159
        } else {
160
            $this->buffer->write(self::ESC . 'F');
161
        }
162
    }
163
164
    /**
165
     * Set Italic mode
166
     * Apenas para V.02.20.00 ou superior.
167
     */
168
    public function setItalic()
169
    {
170
        $n = 1;
171
        if ($this->italicMode) {
172
            $n = 0;
173
        }
174
        $this->italicMode = ! $this->italicMode;
175
        $this->buffer->write(self::ESC . '4' .chr($n));
176
    }
177
178
    /**
179
     * Set underline mode on or off.
180
     */
181
    public function setUnderlined()
182
    {
183
        $this->underlineMode = ! $this->underlineMode;
184
        $this->buffer->write(self::ESC . '-');
185
    }
186
    
187
    /**
188
     * Set or unset condensed mode.
189
     */
190
    public function setCondensed()
191
    {
192
        $this->condensedMode = ! $this->condensedMode;
193
        if ($this->condensedMode) {
194
            $this->buffer->write(self::SI);
195
        } else {
196
            $this->buffer->write(self::DC2);
197
        }
198
    }
199
    
200
    /**
201
     * Set or unset expanded mode.
202
     *
203
     * @param integer $size not used
204
     */
205
    public function setExpanded($size = null)
206
    {
207
        $this->expandedMode = ! $this->expandedMode;
208
        $this->buffer->write(self::ESC . 'W');
209
    }
210
    
211
    /**
212
     * Aligns all data in one line to the selected layout in standard mode.
213
     * L - left  C - center  R - rigth
214
     * OBS: O comando de justificação de texto desliga as configurações de margem.
215
     *      Apenas para V.02.20.00 ou superior.
216
     *
217
     * @param string $align
218
     */
219
    public function setAlign($align = null)
220
    {
221
        if (is_null($align)) {
222
            $align = 'L';
223
        }
224
        $value = strtoupper($align);
225
        switch ($value) {
226
            case 'C':
227
                $mode = 1;
228
                break;
229
            case 'R':
230
                $mode = 2;
231
                break;
232
            default:
233
                $mode = 0;
234
        }
235
        $this->buffer->write(self::ESC . 'j' . chr($mode));
236
    }
237
    
238
    /**
239
     * Turns white/black reverse print On or Off for characters.
240
     */
241
    public function setReverseColors()
242
    {
243
        //not used for this printer
244
    }
245
246
    /**
247
     * Set rotate 90 degrees.
248
     */
249
    public function setRotate90()
250
    {
251
        //not used for this printer
252
    }
253
    
254
    /**
255
     * Set horizontal and vertical motion units
256
     * $horizontal => character spacing 1/x"
257
     * $vertical => line spacing 1/y".
258
     * DLE A x y
259
     * Ajusta a unidade de movimento horizontal e vertical para aproximadamente
260
     *   25.4/x mm {1/x"} e 25.4/y mm {1/y"}. A unidade horizontal (x) não é utilizada
261
     * na impressora.
262
     *   Faixa: 0 ≤ x ≤ 255
263
     *          0 ≤ y ≤ 255
264
     * Padrão: x = 200 (sem uso na impressora)
265
     *         y = 400
266
     * Quando x e y são igual a zero, o valor padrão é carregado.
267
     *
268
     * @param int $horizontal
269
     * @param int $vertical
270
     */
271
    public function setSpacing($horizontal = 30, $vertical = 30)
272
    {
273
        $horizontal = self::validateInteger($horizontal, 0, 255, 30);
274
        $vertical = self::validateInteger($vertical, 0, 255, 30);
275
        $this->buffer->write(self::DLE.'A'.chr($horizontal).chr($vertical));
276
    }
277
    
278
    /**
279
     * Set right-side character spacing
280
     * 0 ≤ n ≤ 255 => 1/x".
281
     *
282
     * @param int $value
283
     */
284
    public function setCharSpacing($value = 3)
285
    {
286
        //not used for this printer
287
    }
288
    
289
    //public function setParagraph(); vide DefaultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
290
    //public function text(); vide default
0 ignored issues
show
Unused Code Comprehensibility introduced by
50% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
291
    
292
    /**
293
     * Prints data and feeds paper n lines
294
     * ESC d n Prints data and feeds paper n lines.
295
     *
296
     * @param integer $lines
297
     */
298
    public function lineFeed($lines = 1)
299
    {
300
        $lines = self::validateInteger($lines, 0, 255, 1);
301
        for ($lin = 1; $lin <= $lines; $lin++) {
302
            $this->buffer->write(self::LF);
303
        }
304
    }
305
306
    //public function dotFeed(); vide default
0 ignored issues
show
Unused Code Comprehensibility introduced by
50% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
307
308
    /**
309
     * Insert a image.
310
     * DLE X m xL xH yL yH d1....dk
311
     *  m   Mode    Vertical Dot Density    Horizontal Dot Density
312
     *  0 Normal         200 dpi                200 dpi
313
     *  1 Double-width   200 dpi                100 dpi
314
     *  2 Double-height  100 dpi                200 dpi
315
     *  3 Quadruple      100 dpi                100 dpi
316
     *
317
     * @param  string $filename Path to image file
318
     * @param  float  $width
319
     * @param  float  $height
320
     * @param  int    $size     0-normal 1-Double Width 2-Double Heigth 3-Quadruple
321
     * @throws RuntimeException
322
     */
323
    public function putImage($filename = '', $width = null, $height = null, $size = 0)
324
    {
325
        try {
326
            $img = new Graphics($filename, $width, $height);
327
        } catch (RuntimeException $e) {
0 ignored issues
show
Bug introduced by
The class Posprint\Printers\RuntimeException does not exist. Did you forget a USE statement, or did you not list all dependencies?

Scrutinizer analyzes your composer.json/composer.lock file if available to determine the classes, and functions that are defined by your dependencies.

It seems like the listed class was neither found in your dependencies, nor was it found in the analyzed files in your repository. If you are using some other form of dependency management, you might want to disable this analysis.

Loading history...
328
            throw new RuntimeException($e->getMessage());
329
        } catch (InvalidArgumentException $e) {
0 ignored issues
show
Bug introduced by
The class Posprint\Printers\InvalidArgumentException does not exist. Did you forget a USE statement, or did you not list all dependencies?

Scrutinizer analyzes your composer.json/composer.lock file if available to determine the classes, and functions that are defined by your dependencies.

It seems like the listed class was neither found in your dependencies, nor was it found in the analyzed files in your repository. If you are using some other form of dependency management, you might want to disable this analysis.

Loading history...
330
            throw new RuntimeException($e->getMessage());
331
        }
332
        $size = self::validateInteger($size, 0, 3, 0);
333
        $imgHeader = self::dataHeader(array($img->getWidth(), $img->getHeight()), true);
334
        $this->buffer->write(self::DLE . 'X' . chr($size) . $imgHeader . $img->getRasterImage());
335
    }
336
    
337
    /**
338
     * Generate a pulse, for opening a cash drawer if one is connected.
339
     *
340
     * @param int $pin    not for this printer
341
     * @param int $on_ms  not for this printer
342
     * @param int $off_ms not for this printer
343
     */
344
    public function pulse($pin = 0, $on_ms = 120, $off_ms = 240)
345
    {
346
        $this->buffer->write(self::ESC . 'p');
347
    }
348
349
    /**
350
     * Cut the paper.
351
     *
352
     * @param int $mode  FULL or PARTIAL. not for this printer.
353
     * @param int $lines Number of lines to feed after cut
354
     */
355
    public function cut($mode = 'PARTIAL', $lines = 3)
356
    {
357
        $this->buffer->write(self::ESC.'m');
358
        $this->lineFeed($lines);
359
    }
360
    
361
    /**
362
     * Implements barcodes 1D
363
     * ESC b n1 n2 n3 n4 s1...sn NULL
364
     *  n1 – tipo do código a ser impresso
365
     *      EAN13 1
366
     *      EAN8 2
367
     *      S2OF5 3
368
     *      I2OF5 4
369
     *      CODE128 5
370
     *      CODE39 6
371
     *      CODE93 7
372
     *      UPC_A 8
373
     *      CODABAR 9
374
     *      MSI 10
375
     *      CODE11 11
376
     *  n2 – largura da barra. De 2 a 5. Se 0, é usado 2.
377
     *  n3 – altura da barra. De 50 a 200. Se 0, é usado 50.
378
     *  n4 – se 1, imprime o código abaixo das barras
379
     *  s1...sn – string contendo o código.
380
     *      EAN-13: 12 dígitos de 0 a 9
381
     *      EAN–8: 7 dígitos de 0 a 9
382
     *      UPC–A: 11 dígitos de 0 a 9
383
     *      CODE 39 : Tamanho variável. 0-9, A-Z, '-', '.', '%', '/', '$', ' ', '+'
384
     *      O caracter '*' de start/stop é inserido automaticamente.
385
     *      Sem dígito de verificação MOD 43
386
     *      CODE 93: Tamanho variável. 0-9, A-Z, '-', '.', ' ', '$', '/', '+', '%'
387
     *      O caracter '*' de start/stop é inserido automaticamente.
388
     *      CODABAR: tamanho variável. 0 - 9, '$', '-', ':', '/', '.', '+'
389
     *      Existem 4 diferentes caracteres de start/stop: A, B, C, and D que são
390
     *      usados em pares e não podem aparecer em nenhum outro lugar do código.
391
     *      Sem dígito de verificação
392
     *      CODE 11: Tamanho variável. 0 a 9
393
     *      Checksum de dois caracteres.
394
     *      CODE 128: Tamanho variável. Todos os caracteres ASCII.
395
     *      Interleaved 2 of 5: tamanho sempre par. 0 a 9. Sem dígito de verificação
396
     *      Standard 2 of 5 (Industrial): 0 a 9. Sem dígito de verificação
397
     *      MSI/Plessey: tamanho variável. 0 - 9. 1 dígito de verificação
398
     *
399
     * @param int    $type        Default CODE128
400
     * @param int    $height
401
     * @param int    $lineWidth
402
     * @param string $txtPosition
403
     * @param string $txtFont
404
     * @param string $data
405
     */
406
    public function barcode(
407
        $data = '123456',
408
        $type = 'CODE128',
409
        $height = 162,
410
        $lineWidth = 2,
411
        $txtPosition = 'none',
412
        $txtFont = ''
413
    ) {
414
        if (! $data = Barcodes\Barcode1DAnalysis::validate($data, $type)) {
415
            throw new \InvalidArgumentException('Data or barcode type is incorrect.');
416
        }
417
        if (! array_key_exists($type, $this->barcode1Dlist)) {
418
            throw new \InvalidArgumentException('This barcode type is not listed.');
419
        }
420
        $id = $this->barcode1Dlist[$type];
421
        $height = self::validateInteger($height, 50, 200, 50);
422
        $lineWidth = self::validateInteger($lineWidth, 2, 5, 2);
423
        $n4 = 0;
424
        if ($txtPosition != 'none') {
425
            $n4 = 1;
426
        }
427
        $this->buffer->write(self::ESC . 'b' . chr($id) . chr($lineWidth) . chr($height) . chr($n4) . $data);
428
    }
429
430
    /**
431
     * Print PDF 417 2D barcode
432
     * @param string $data
433
     * @param integer $ecc
434
     * @param integer $pheight
435
     * @param integer $pwidth
436
     * @param integer $colunms
437
     * @return boolean
438
     */
439
    public function barcodePDF417($data = '', $ecc = 5, $pheight = 2, $pwidth = 2, $colunms = 3)
440
    {
441
        if (empty($data)) {
442
            return false;
443
        }
444
        $length = strlen($data)+6;
445
        if ($length > 906) {
446
            return false;
447
        }
448
        $pheight = self::validateInteger($pheight, 1, 8, 2);
449
        $pwidth = self::validateInteger($pwidth, 1, 8, 2);
450
        $pH = intval($length / 256);
451
        $pL = ($length % 256);
452
        //[ESC] <128> <–Size><+Size> <–Columns><+Columns> <–Height><+Height> <–Width><+Width>
453
        //<D001> <D002> . . . <Dnnn>
454
        //Size inclui os demais 6 bytes de controle
455
        //Size ≤ 906
456
        //nnn = Size – 6
457
        $cH = intval($colunms / 256);
458
        $cL = ($colunms % 256);
459
        $hH = intval($pheight / 256);
460
        $hL = ($pheight % 256);
461
        $wH = intval($pwidth / 256);
462
        $wL = ($pwidth % 256);
463
        
464
        $this->buffer->write(self::ESC
465
            . chr(128)
466
            . chr($pL)
467
            . chr($pH)
468
            . chr($cL)
469
            . chr($cH)
470
            . chr($hL)
471
            . chr($hH)
472
            . chr($wL)
473
            . chr($wH)
474
            . $data);
475
    }
476
    
477
    /**
478
     * Print QR Code
479
     * [ESC] <129> <–Size><+Size> <Width> <Ecc> <D001> <D002> . . . <Dnnn>
480
     * Size inclui os 2 bytes de controle
481
     *    Size ≤ 402
482
     *    nnn = Size – 2
483
     *   Largura do módulo (Width): 0, 4 ≤ Width ≤ 7 ( =0 para default = 5)
484
     *   Redundância (ECC): 0, M, Q, H ( =0 para cálculo automático)
485
     * Apenas para V.02.50.00 ou superior.
486
     *
487
     * @param string $data   Dados a serem inseridos no QRCode
488
     * @param string $level  Nivel de correção L,M,Q ou H
489
     * @param int    $modelo modelo de QRCode none
490
     * @param int    $wmod   largura da barra 4 ~ 7
491
     */
492
    public function barcodeQRCode($data = '', $level = 'L', $modelo = 2, $wmod = 4)
493
    {
494
        $len = strlen($data);
495
        $size = $len + 2;
496
        if ($size > 402) {
497
            return false;
498
        }
499
        $nH = round($size/256, 0);
500
        $nL = $size%256;
501
        if ($wmod > 7 || $wmod < 4) {
502
            $wmod = 5;
0 ignored issues
show
Unused Code introduced by
$wmod is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
503
        }
504
        //set error correction level
505
        $level = strtoupper($level);
506
        switch ($level) {
507
            case 'M':
508
            case 'Q':
509
            case 'H':
510
                $ecc = $level;
511
                break;
512
            default:
513
                $ecc = 0;
514
        }
515
        $this->buffer->write(self::ESC . chr(129) . chr($nL) . chr($nH) . chr($w) . $ecc . $data);
0 ignored issues
show
Bug introduced by
The variable $w does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
516
    }
517
    //public function send(); vide DefultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
518
    //public function close(); vide DefaultPrinter
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
519
}
520