Removed justify node

This commit is contained in:
Jurn Wubben 2026-01-24 20:28:29 +01:00
parent 3e6ce77549
commit a6c067ac43
2 changed files with 54 additions and 76 deletions

View file

@ -134,10 +134,6 @@ impl EscPosBuilder {
self.extend(&[0x1B, b'd', amount])
}
pub fn write_justify(&mut self, justify: JustifyOrientation) {
self.extend(&[0x1B, b'a', justify as u8]);
}
pub fn write_text(&mut self, text: &str, text_effect: Option<&[TextEffect]>) -> () {
let mut buf: Vec<u8> = vec![];
buf.reserve(12 + text.len());

View file

@ -7,8 +7,6 @@ use std::{error::Error, io::stdin};
mod escpos;
use escpos::{BARTextPosition, BARType, EscPosBuilder, ImageOrientation, QREcc, TextEffect};
use crate::escpos::JustifyOrientation;
#[derive(Debug, Deserialize)]
struct Document {
#[serde(rename = "$value")]
@ -27,9 +25,6 @@ enum Node {
#[serde(rename = "p")]
Text(Text),
#[serde(rename = "justify")]
Justify(Justify),
#[serde(rename = "img")]
Img(Img),
@ -43,15 +38,6 @@ enum Node {
Feed(Feed),
}
#[derive(Debug, Deserialize)]
struct Justify {
#[serde(rename = "@align")]
pub align: JustifyOrientation,
#[serde(rename = "$value")]
pub value: Vec<Node>,
}
#[derive(Debug, Deserialize)]
struct Heading {
#[serde(rename = "$value")]
@ -141,66 +127,62 @@ where
Ok(Some(out))
}
fn handle_node(node: Node, builder: &mut EscPosBuilder) -> Result<(), Box<dyn Error>> {
match node {
Node::PlainText(ref t) => {
builder.write_text(t.trim(), None);
builder.write_feed(None);
}
Node::Heading(t) => {
builder.write_text(
&t.value,
Some(&[TextEffect::DoubleHeight, TextEffect::DoubleWidth]),
);
builder.write_feed(None);
}
Node::Text(t) => {
if let Some(ref list) = t.style {
builder.write_text(&t.value, Some(list));
} else {
builder.write_text(&t.value, None);
}
builder.write_feed(None);
}
Node::Justify(t) => {
builder.write_justify(t.align);
for i in t.value {
handle_node(i, builder)?;
}
builder.write_justify(JustifyOrientation::default());
}
Node::Img(img) => {
let dynimg = image::open(&img.src)?;
builder.write_bitmap(&dynimg, img.orientation);
}
Node::Qr(q) => {
let value = q.value;
let value = value.trim();
if value.is_empty() {
return Ok(());
};
builder.write_qr(&value, q.size, q.ecc);
}
Node::Barcode(b) => {
let value = b.value;
let value = value.trim();
if value.is_empty() {
return Ok(());
};
builder.write_barcode(&value, b.height, b.mod_width, b.text_position, b.bar_type)?;
}
Node::Feed(f) => {
builder.write_feed(f.amount);
}
}
Ok(())
}
fn handle_document(doc: Document, builder: &mut EscPosBuilder) -> Result<(), Box<dyn Error>> {
for node in doc.children {
handle_node(node, builder)?;
match node {
Node::PlainText(ref t) => {
builder.write_text(t.trim(), None);
builder.write_feed(None);
}
Node::Heading(t) => {
builder.write_text(
&t.value,
Some(&[TextEffect::DoubleHeight, TextEffect::DoubleWidth]),
);
builder.write_feed(None);
}
Node::Text(t) => {
if let Some(ref list) = t.style {
builder.write_text(&t.value, Some(list));
} else {
builder.write_text(&t.value, None);
}
builder.write_feed(None);
}
Node::Img(img) => {
let dynimg = image::open(&img.src)?;
builder.write_bitmap(&dynimg, img.orientation);
}
Node::Qr(q) => {
let value = q.value;
let value = value.trim();
if value.is_empty() {
return Ok(());
};
builder.write_qr(&value, q.size, q.ecc);
}
Node::Barcode(b) => {
let value = b.value;
let value = value.trim();
if value.is_empty() {
return Ok(());
};
builder.write_barcode(
&value,
b.height,
b.mod_width,
b.text_position,
b.bar_type,
)?;
}
Node::Feed(f) => {
builder.write_feed(f.amount);
}
}
}
Ok(())
}