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');