From a6c067ac4393fbefb38cbbb971b73929d4b6089b Mon Sep 17 00:00:00 2001 From: Jurn Wubben Date: Sat, 24 Jan 2026 20:28:29 +0100 Subject: [PATCH] Removed justify node --- src/escpos.rs | 4 -- src/main.rs | 126 ++++++++++++++++++++++---------------------------- 2 files changed, 54 insertions(+), 76 deletions(-) diff --git a/src/escpos.rs b/src/escpos.rs index 28721d4..7d42616 100644 --- a/src/escpos.rs +++ b/src/escpos.rs @@ -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 = vec![]; buf.reserve(12 + text.len()); diff --git a/src/main.rs b/src/main.rs index 65f8cdb..b5043ae 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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, -} - #[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> { - 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> { 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(()) }