initial, still very untested support for PT-P750W

This commit is contained in:
Philipp Klaus
2019-09-02 22:37:38 +02:00
parent 05516a7692
commit 638b365d45
5 changed files with 26 additions and 9 deletions

View File

@@ -9,7 +9,8 @@ from PIL import Image
import PIL.ImageOps, PIL.ImageChops
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.image_trafos import filtered_hsv
@@ -102,7 +103,7 @@ def convert(qlr, images, label, **kwargs):
else:
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):
im = im.rotate(rotate, expand=True)
if dpi_600:
@@ -161,10 +162,14 @@ def convert(qlr, images, label, **kwargs):
qlr.mtype = 0x0B
qlr.mwidth = tape_size[0]
qlr.mlength = tape_size[1]
else:
elif label_specs['kind'] in (ENDLESS_LABEL, ):
qlr.mtype = 0x0A
qlr.mwidth = tape_size[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.add_media_and_quality(im.size[1])
try:

View File

@@ -21,6 +21,7 @@ logger = logging.getLogger(__name__)
DIE_CUT_LABEL = None
ENDLESS_LABEL = None
ROUND_DIE_CUT_LABEL = None
PTOUCH_ENDLESS_LABEL = None
label_type_specs = {}
label_sizes = []
# 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 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
from brother_ql.labels import FormFactor
DIE_CUT_LABEL = FormFactor.DIE_CUT
ENDLESS_LABEL = FormFactor.ENDLESS
ROUND_DIE_CUT_LABEL = FormFactor.ROUND_DIE_CUT
PTOUCH_ENDLESS_LABEL =FormFactor.PTOUCH_ENDLESS
from brother_ql.labels import LabelsManager
lm = LabelsManager()

View File

@@ -19,6 +19,8 @@ class FormFactor(IntEnum):
ENDLESS = 2
#: round die-cut labels
ROUND_DIE_CUT = 3
#: endless P-touch labels
PTOUCH_ENDLESS = 4
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("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("pt24", ( 24, 0), FormFactor.PTOUCH_ENDLESS,( 128, 0), ( 128, 0), 0, feed_margin=14),
)
class LabelsManager(ElementsManager):

View File

@@ -55,6 +55,8 @@ ALL_MODELS = [
Model('QL-820NWB',(150, 11811), two_color=True),
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('PT-P750W', (31, 14172), number_bytes_per_row=16),
Model('PT-P900W', (57, 28346), number_bytes_per_row=70),
]
class ModelsManager(ElementsManager):

View File

@@ -245,13 +245,18 @@ class BrotherQLRaster(object):
while start + row_len <= frame_len:
for i, frame in enumerate(frames):
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:
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)
start += row_len
self.data += file_str.getvalue()