Allow linespacing reset. Make this the default.

This commit is contained in:
Michael Elsdörfer 2016-08-26 10:38:36 +02:00
parent 854b75be30
commit 07d47765aa
3 changed files with 15 additions and 2 deletions

View File

@ -102,6 +102,7 @@ TXT_INVERT_ON = GS + b'\x42\x01' # Inverse Printing ON
TXT_INVERT_OFF = GS + b'\x42\x00' # Inverse Printing OFF TXT_INVERT_OFF = GS + b'\x42\x00' # Inverse Printing OFF
# Spacing # Spacing
LINESPACING_RESET = ESC + b'2'
LINESPACING_FUNCS = { LINESPACING_FUNCS = {
60: ESC + b'A', # line_spacing/60 of an inch, 0 <= line_spacing <= 85 60: ESC + b'A', # line_spacing/60 of an inch, 0 <= line_spacing <= 85
360: ESC + b'+', # line_spacing/360 of an inch, 0 <= line_spacing <= 255 360: ESC + b'+', # line_spacing/360 of an inch, 0 <= line_spacing <= 255

View File

@ -565,9 +565,11 @@ class Escpos(object):
else: else:
self._raw(TXT_INVERT_OFF) self._raw(TXT_INVERT_OFF)
def line_spacing(self, spacing=30, divisor=180): def line_spacing(self, spacing=None, divisor=180):
""" Set line character spacing. """ Set line character spacing.
If no spacing is given, we reset it to the default.
There are different commands for setting the line spacing, using There are different commands for setting the line spacing, using
a different denominator: a different denominator:
@ -578,6 +580,10 @@ class Escpos(object):
Some printers may not support all of them. The most commonly Some printers may not support all of them. The most commonly
available command (using a divisor of 180) is chosen. available command (using a divisor of 180) is chosen.
""" """
if spacing is None:
self._raw(LINESPACING_RESET)
return
if divisor not in LINESPACING_FUNCS: if divisor not in LINESPACING_FUNCS:
raise ValueError("divisor must be either 360, 180 or 60") raise ValueError("divisor must be either 360, 180 or 60")
if (divisor in [360, 180] \ if (divisor in [360, 180] \

View File

@ -8,10 +8,16 @@ def test_line_spacing_code_gen():
assert printer.output == '\x1b3\n' assert printer.output == '\x1b3\n'
def test_line_spacing_rest():
printer = Dummy()
printer.line_spacing()
assert printer.output == '\x1b2'
def test_line_spacing_error_handling(): def test_line_spacing_error_handling():
printer = Dummy() printer = Dummy()
with assert_raises(ValueError): with assert_raises(ValueError):
printer.line_spacing(divisor=44) printer.line_spacing(99, divisor=44)
with assert_raises(ValueError): with assert_raises(ValueError):
printer.line_spacing(divisor=80, spacing=86) printer.line_spacing(divisor=80, spacing=86)
with assert_raises(ValueError): with assert_raises(ValueError):