Removed justify node
This commit is contained in:
parent
3e6ce77549
commit
a6c067ac43
2 changed files with 54 additions and 76 deletions
|
|
@ -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());
|
||||
|
|
|
|||
126
src/main.rs
126
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<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(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue