initial, still very untested support for PT-P750W
This commit is contained in:
@@ -9,7 +9,8 @@ from PIL import Image
|
|||||||
import PIL.ImageOps, PIL.ImageChops
|
import PIL.ImageOps, PIL.ImageChops
|
||||||
|
|
||||||
from brother_ql.raster import BrotherQLRaster
|
from brother_ql.raster import BrotherQLRaster
|
||||||
from brother_ql.devicedependent import label_type_specs, ENDLESS_LABEL, DIE_CUT_LABEL, ROUND_DIE_CUT_LABEL, right_margin_addition
|
from brother_ql.devicedependent import ENDLESS_LABEL, DIE_CUT_LABEL, ROUND_DIE_CUT_LABEL, PTOUCH_ENDLESS_LABEL
|
||||||
|
from brother_ql.devicedependent import label_type_specs, right_margin_addition
|
||||||
from brother_ql import BrotherQLUnsupportedCmd
|
from brother_ql import BrotherQLUnsupportedCmd
|
||||||
from brother_ql.image_trafos import filtered_hsv
|
from brother_ql.image_trafos import filtered_hsv
|
||||||
|
|
||||||
@@ -102,7 +103,7 @@ def convert(qlr, images, label, **kwargs):
|
|||||||
else:
|
else:
|
||||||
dots_expected = dots_printable
|
dots_expected = dots_printable
|
||||||
|
|
||||||
if label_specs['kind'] == ENDLESS_LABEL:
|
if label_specs['kind'] in (ENDLESS_LABEL, PTOUCH_ENDLESS_LABEL):
|
||||||
if rotate not in ('auto', 0):
|
if rotate not in ('auto', 0):
|
||||||
im = im.rotate(rotate, expand=True)
|
im = im.rotate(rotate, expand=True)
|
||||||
if dpi_600:
|
if dpi_600:
|
||||||
@@ -161,10 +162,14 @@ def convert(qlr, images, label, **kwargs):
|
|||||||
qlr.mtype = 0x0B
|
qlr.mtype = 0x0B
|
||||||
qlr.mwidth = tape_size[0]
|
qlr.mwidth = tape_size[0]
|
||||||
qlr.mlength = tape_size[1]
|
qlr.mlength = tape_size[1]
|
||||||
else:
|
elif label_specs['kind'] in (ENDLESS_LABEL, ):
|
||||||
qlr.mtype = 0x0A
|
qlr.mtype = 0x0A
|
||||||
qlr.mwidth = tape_size[0]
|
qlr.mwidth = tape_size[0]
|
||||||
qlr.mlength = 0
|
qlr.mlength = 0
|
||||||
|
elif label_specs['kind'] in (PTOUCH_ENDLESS_LABEL, ):
|
||||||
|
qlr.mtype = 0x00
|
||||||
|
qlr.mwidth = tape_size[0]
|
||||||
|
qlr.mlength = 0
|
||||||
qlr.pquality = int(hq)
|
qlr.pquality = int(hq)
|
||||||
qlr.add_media_and_quality(im.size[1])
|
qlr.add_media_and_quality(im.size[1])
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ logger = logging.getLogger(__name__)
|
|||||||
DIE_CUT_LABEL = None
|
DIE_CUT_LABEL = None
|
||||||
ENDLESS_LABEL = None
|
ENDLESS_LABEL = None
|
||||||
ROUND_DIE_CUT_LABEL = None
|
ROUND_DIE_CUT_LABEL = None
|
||||||
|
PTOUCH_ENDLESS_LABEL = None
|
||||||
label_type_specs = {}
|
label_type_specs = {}
|
||||||
label_sizes = []
|
label_sizes = []
|
||||||
# And concerning printer models
|
# And concerning printer models
|
||||||
@@ -61,13 +62,14 @@ def _populate_label_legacy_structures():
|
|||||||
We contain this code inside a function so that the imports
|
We contain this code inside a function so that the imports
|
||||||
we do in here are not visible at the module level.
|
we do in here are not visible at the module level.
|
||||||
"""
|
"""
|
||||||
global DIE_CUT_LABEL, ENDLESS_LABEL, ROUND_DIE_CUT_LABEL
|
global DIE_CUT_LABEL, ENDLESS_LABEL, ROUND_DIE_CUT_LABEL, PTOUCH_ENDLESS_LABEL
|
||||||
global label_sizes, label_type_specs
|
global label_sizes, label_type_specs
|
||||||
|
|
||||||
from brother_ql.labels import FormFactor
|
from brother_ql.labels import FormFactor
|
||||||
DIE_CUT_LABEL = FormFactor.DIE_CUT
|
DIE_CUT_LABEL = FormFactor.DIE_CUT
|
||||||
ENDLESS_LABEL = FormFactor.ENDLESS
|
ENDLESS_LABEL = FormFactor.ENDLESS
|
||||||
ROUND_DIE_CUT_LABEL = FormFactor.ROUND_DIE_CUT
|
ROUND_DIE_CUT_LABEL = FormFactor.ROUND_DIE_CUT
|
||||||
|
PTOUCH_ENDLESS_LABEL =FormFactor.PTOUCH_ENDLESS
|
||||||
|
|
||||||
from brother_ql.labels import LabelsManager
|
from brother_ql.labels import LabelsManager
|
||||||
lm = LabelsManager()
|
lm = LabelsManager()
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ class FormFactor(IntEnum):
|
|||||||
ENDLESS = 2
|
ENDLESS = 2
|
||||||
#: round die-cut labels
|
#: round die-cut labels
|
||||||
ROUND_DIE_CUT = 3
|
ROUND_DIE_CUT = 3
|
||||||
|
#: endless P-touch labels
|
||||||
|
PTOUCH_ENDLESS = 4
|
||||||
|
|
||||||
class Color(IntEnum):
|
class Color(IntEnum):
|
||||||
"""
|
"""
|
||||||
@@ -102,6 +104,7 @@ ALL_LABELS = (
|
|||||||
Label("d12", ( 12, 12), FormFactor.ROUND_DIE_CUT, ( 142, 142), ( 94, 94), 113 , feed_margin=35),
|
Label("d12", ( 12, 12), FormFactor.ROUND_DIE_CUT, ( 142, 142), ( 94, 94), 113 , feed_margin=35),
|
||||||
Label("d24", ( 24, 24), FormFactor.ROUND_DIE_CUT, ( 284, 284), ( 236, 236), 42 ),
|
Label("d24", ( 24, 24), FormFactor.ROUND_DIE_CUT, ( 284, 284), ( 236, 236), 42 ),
|
||||||
Label("d58", ( 58, 58), FormFactor.ROUND_DIE_CUT, ( 688, 688), ( 618, 618), 51 ),
|
Label("d58", ( 58, 58), FormFactor.ROUND_DIE_CUT, ( 688, 688), ( 618, 618), 51 ),
|
||||||
|
Label("pt24", ( 24, 0), FormFactor.PTOUCH_ENDLESS,( 128, 0), ( 128, 0), 0, feed_margin=14),
|
||||||
)
|
)
|
||||||
|
|
||||||
class LabelsManager(ElementsManager):
|
class LabelsManager(ElementsManager):
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ ALL_MODELS = [
|
|||||||
Model('QL-820NWB',(150, 11811), two_color=True),
|
Model('QL-820NWB',(150, 11811), two_color=True),
|
||||||
Model('QL-1050', (295, 35433), number_bytes_per_row=162, additional_offset_r=44),
|
Model('QL-1050', (295, 35433), number_bytes_per_row=162, additional_offset_r=44),
|
||||||
Model('QL-1060N', (295, 35433), number_bytes_per_row=162, additional_offset_r=44),
|
Model('QL-1060N', (295, 35433), number_bytes_per_row=162, additional_offset_r=44),
|
||||||
|
Model('PT-P750W', (31, 14172), number_bytes_per_row=16),
|
||||||
|
Model('PT-P900W', (57, 28346), number_bytes_per_row=70),
|
||||||
]
|
]
|
||||||
|
|
||||||
class ModelsManager(ElementsManager):
|
class ModelsManager(ElementsManager):
|
||||||
|
|||||||
@@ -245,13 +245,18 @@ class BrotherQLRaster(object):
|
|||||||
while start + row_len <= frame_len:
|
while start + row_len <= frame_len:
|
||||||
for i, frame in enumerate(frames):
|
for i, frame in enumerate(frames):
|
||||||
row = frame[start:start+row_len]
|
row = frame[start:start+row_len]
|
||||||
if second_image:
|
|
||||||
file_str.write(b'\x77\x01' if i == 0 else b'\x77\x02')
|
|
||||||
else:
|
|
||||||
file_str.write(b'\x67\x00')
|
|
||||||
if self._compression:
|
if self._compression:
|
||||||
row = packbits.encode(row)
|
row = packbits.encode(row)
|
||||||
file_str.write(bytes([len(row)]))
|
translen = len(row) # number of bytes to be transmitted
|
||||||
|
if self.model.startswith('PT'):
|
||||||
|
file_str.write(b'\x47')
|
||||||
|
file_str.write(bytes([translen%256, translen//256]))
|
||||||
|
else:
|
||||||
|
if second_image:
|
||||||
|
file_str.write(b'\x77\x01' if i == 0 else b'\x77\x02')
|
||||||
|
else:
|
||||||
|
file_str.write(b'\x67\x00')
|
||||||
|
file_str.write(bytes([translen]))
|
||||||
file_str.write(row)
|
file_str.write(row)
|
||||||
start += row_len
|
start += row_len
|
||||||
self.data += file_str.getvalue()
|
self.data += file_str.getvalue()
|
||||||
|
|||||||
Reference in New Issue
Block a user