From 39e29deb5b356240fdbf3ca2eddbf1980f8ad5a0 Mon Sep 17 00:00:00 2001 From: NaitLee Date: Sun, 8 May 2022 01:34:15 +0800 Subject: [PATCH] Important fixes to 0.5.0 --- .gitignore | 2 +- 1-build.sh | 4 ++-- printer.py | 27 ++++++++++++++-------- printer_lib/commander.py | 8 +++---- server.py | 1 + version | 2 +- www/about.html | 32 +++++++++++++++----------- www/index.html | 49 ++++++++++++++++++++++++---------------- www/lang/en-US.json | 4 +++- www/lang/zh-CN.json | 4 +++- www/main.css | 12 +++++++--- www/main.js | 3 ++- 12 files changed, 91 insertions(+), 57 deletions(-) diff --git a/.gitignore b/.gitignore index f2e13c5..1e378f3 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,7 @@ build-android/dist *.apk *.apk.* cat-printer*.zip -*-sha256.txt +cat-printer-sha256-*.txt # bleak, the bare pip package as a folder build-common/bleak # python embeddable package, with bleak_winrt inside diff --git a/1-build.sh b/1-build.sh index e24737b..322b238 100755 --- a/1-build.sh +++ b/1-build.sh @@ -1,6 +1,6 @@ #!/bin/sh # For ultimate laziness! -rm -rf cat-printer-*.zip cat-printer-*.apk* cat-printer-*-sha256.txt +rm -rf cat-printer-*.zip cat-printer-*.apk* cat-printer-sha256-*.txt echo -n 'Version tag: ' read version echo -n $version > version @@ -16,5 +16,5 @@ echo 'Signing apk with keyfile...' ./4-sign.sh $signkey cd ../ echo 'SHA256 Hash...' -sha256sum cat-printer-* > cat-printer-$version-sha256.txt +sha256sum cat-printer-* > cat-printer-sha256-$version.txt echo 'Complete!' diff --git a/printer.py b/printer.py index 0c45f1a..0e75da5 100644 --- a/printer.py +++ b/printer.py @@ -131,7 +131,7 @@ class PrinterError(Exception): def __init__(self, *args): super().__init__(*args) self.message = args[0] - self.message_localized = i18n(args) + self.message_localized = i18n(*args) class PrinterData(): ''' The image data to be used by `PrinterDriver`. @@ -277,6 +277,7 @@ class PrinterDriver(Commander): rtl: bool = False energy: int = None + quality: int = 24 mtu: int = 200 @@ -427,20 +428,23 @@ class PrinterDriver(Commander): def _prepare(self): self.get_device_state() - self.set_dpi_as_200() - self.use_energy_control(True) - if self.energy is not None: - self.set_energy(self.energy * 0xff) if self.model.is_new_kind: self.start_printing_new() else: self.start_printing() - self.set_speed(8) # already fine if above 4. maybe just enough - self.get_device_state() + self.set_dpi_as_200() + if self.quality: # well, slower makes stable heating + self.set_speed(self.quality) + if self.energy is not None: + self.set_energy(self.energy * 0xff) + self.apply_energy() self.update_device() + self.flush() + self.start_lattice() def _finish(self): self.end_lattice() + self.set_speed(8) self.feed_paper(128) self.get_device_state() self.flush() @@ -450,7 +454,6 @@ class PrinterDriver(Commander): flip(data.data, data.width, data.height, self.flip_h, self.flip_v, overwrite=True) self._prepare() # TODO: consider compression on new devices - self.start_lattice() for chunk in data.read(paper_width // 8): if self.dry_run: chunk = b'\x00' * len(chunk) @@ -615,8 +618,10 @@ def _main(): help=i18n('image-printing-options')) parser.add_argument('-t', '--text', metavar='Size[,FontFamily][,pf2][,nowrap][,rtl]', type=str, default='', help=i18n('text-printing-mode-with-options')) - parser.add_argument('-e', '--energy', metavar='<0.0-1.0>', type=float, default=None, + parser.add_argument('-e', '--energy', metavar='0.0-1.0', type=float, default=None, help=i18n('control-printer-thermal-strength')) + parser.add_argument('-q', '--quality', metavar='1-4', type=int, default=3, + help=i18n('print-quality')) parser.add_argument('-d', '--dry', action='store_true', help=i18n('dry-run-test-print-process-only')) parser.add_argument('-f', '--fake', metavar='XY01', type=str, default='', @@ -638,7 +643,9 @@ def _main(): printer.scan_timeout = float(scan_param[0]) identifier = ','.join(scan_param[1:]) if args.energy is not None: - printer.energy = args.energy * 0xff + printer.energy = int(args.energy * 0xff) + if args.quality is not None: + printer.quality = 4 * (args.quality + 5) image_param = args.image.split(',') if 'flip' in image_param: diff --git a/printer_lib/commander.py b/printer_lib/commander.py index 8a9d392..ffadf6a 100644 --- a/printer_lib/commander.py +++ b/printer_lib/commander.py @@ -82,12 +82,10 @@ class Commander(metaclass=ABCMeta): 'Start printing on newer printers' self.send( bytearray([0x12, 0x51, 0x78, 0xa3, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff]) ) - def use_energy_control(self, enable: bool): - ''' Whether enable energy control (with set_energy) or not - Note: I remember I can't disable it, when I (incorrectly) - thought it was "image/text mode" + def apply_energy(self): + ''' Apply previously set energy to printer ''' - self.send( self.make_command(0xbe, int_to_bytes(0x01 if enable else 0x00)) ) + self.send( self.make_command(0xbe, int_to_bytes(0x01)) ) def get_device_state(self): '(unknown). seems it could refresh device state & apply config' diff --git a/server.py b/server.py index 91c7561..2429fc3 100644 --- a/server.py +++ b/server.py @@ -188,6 +188,7 @@ class PrinterServerHandler(BaseHTTPRequestHandler): self.printer.fake = self.settings.fake self.printer.dump = self.settings.dump self.printer.energy = self.settings.energy + self.printer.quality = self.settings.quality self.printer.flip_h = self.settings.flip_h or self.settings.flip self.printer.flip_v = self.settings.flip_v or self.settings.flip self.printer.rtl = self.settings.force_rtl diff --git a/version b/version index 79a2734..5d4294b 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.5.0 \ No newline at end of file +0.5.1 \ No newline at end of file diff --git a/www/about.html b/www/about.html index 2e192d7..dd52f4f 100644 --- a/www/about.html +++ b/www/about.html @@ -17,19 +17,25 @@ GitHub

Contributors

-
-
- NaitLee -
-
Developer
-
- frankenstein91 -
-
Developer
-
Translator
-
All testers & users
-
Everyone is awesome!
-
+
+
+
+ NaitLee +
+
Developer
+
+
+
+ frankenstein91 +
+
Developer
+
Translator
+
+
+
All testers & users
+
Everyone is awesome!
+
+

Copyright

Copyright © 2021-2022 NaitLee Soft. diff --git a/www/index.html b/www/index.html index 0dc424a..6fa432f 100644 --- a/www/index.html +++ b/www/index.html @@ -20,27 +20,38 @@


- - - -
+
+
+
+ + +
+ +
- - -
+
+
+
+
- - -
+
+
+
+
+ +
+
+
+
diff --git a/www/lang/en-US.json b/www/lang/en-US.json index 22e42d5..e49490d 100644 --- a/www/lang/en-US.json +++ b/www/lang/en-US.json @@ -124,5 +124,7 @@ "strength-": "Strength:", "or-drag-file-to-below": "Or drag file to below", "reset": "Reset", - "cat-face-toward": "Cat Face Toward" + "cat-face-toward": "Cat Face Toward", + "quality-": "Quality:", + "print-quality": "Print quality" } \ No newline at end of file diff --git a/www/lang/zh-CN.json b/www/lang/zh-CN.json index ad9755a..5082e52 100644 --- a/www/lang/zh-CN.json +++ b/www/lang/zh-CN.json @@ -119,5 +119,7 @@ "strength-": "力度:", "or-drag-file-to-below": "或拖拽文件至下方", "reset": "重置", - "cat-face-toward": "猫脸朝上" + "cat-face-toward": "猫脸朝上", + "quality-": "质量:", + "print-quality": "打印质量" } \ No newline at end of file diff --git a/www/main.css b/www/main.css index 3dee511..deb0644 100644 --- a/www/main.css +++ b/www/main.css @@ -227,7 +227,7 @@ p { height: calc(var(--panel-height) - var(--compact-menu-height)); padding: var(--span-double) var(--span); box-sizing: border-box; - /* overflow-y: scroll; */ + overflow-y: scroll; } .panel.sub.active { height: calc(var(--panel-height) / 2); @@ -284,8 +284,14 @@ dl { margin: var(--span) 0; display: block; } -dd { display: inline; } -dd+dd { margin-left: var(--font-size); } +dt { display: inline-block; min-width: 6em; text-align: end; } +dd { display: inline-block; margin: 0 calc(var(--font-size) / 4); } +.contributors dt { + min-width: 12em; + text-align: center; + padding: 0 calc(var(--font-size) / 4); + border-right: var(--border) solid var(--fore-color); +} hr { border: none; border-top: var(--border) solid var(--fore-color); diff --git a/www/main.js b/www/main.js index 653f3e7..1aa0240 100644 --- a/www/main.js +++ b/www/main.js @@ -326,7 +326,7 @@ class CanvasController { this.algorithm = name; this.threshold = CanvasController.defaultThreshold; this._thresholdRange.dispatchEvent(new Event('change')); - this.energy = name == 'algo-direct' ? 72 : 48; + this.energy = name == 'algo-direct' ? 96 : 64; this._energyRange.dispatchEvent(new Event('change')); this.activatePreview(); } @@ -590,6 +590,7 @@ class Main { ); this.attachSetter('#threshold', 'change', 'threshold'); this.attachSetter('#energy', 'change', 'energy'); + this.attachSetter('#quality', 'change', 'quality'); this.attachSetter('#flip', 'change', 'flip'); // this.attachSetter('#flip-h', 'change', 'flip_h'); // this.attachSetter('#flip-v', 'change', 'flip_v');