feat(*): inkless app for the mxw01 thermal printer
This commit is contained in:
commit
0c36cc115e
50 files changed
+4028
No files matched your search
@@ -0,0 +1,44 @@
|
||||
import Foundation
|
||||
@testable import Inkless
|
||||
import Testing
|
||||
|
||||
struct ImagingTests {
|
||||
@Test func packsLeftmostDotIntoLowestBit() {
|
||||
var dots = [UInt8](repeating: 0, count: 16)
|
||||
dots[0] = 1
|
||||
dots[9] = 1
|
||||
let bitmap = DotBitmap(width: 16, height: 1, dots: dots)
|
||||
#expect([UInt8](bitmap.packedRows()) == [0b0000_0001, 0b0000_0010])
|
||||
}
|
||||
|
||||
@Test func packsGrayAsInvertedNibblesHighFirst() {
|
||||
let bitmap = GrayBitmap(width: 4, height: 1, luma: [255, 0, 128, 16])
|
||||
#expect([UInt8](bitmap.packedNibbles()) == [0x0F, 0x7E])
|
||||
}
|
||||
|
||||
@Test func padsShortJobsWithPaper() {
|
||||
let raster = PrintRaster.dots(.blank(rows: 10)).padded(toMinimumHeight: 90)
|
||||
#expect(raster.height == 90)
|
||||
#expect(raster.blackRatio == 0)
|
||||
}
|
||||
|
||||
@Test(arguments: DitherAlgorithm.allCases)
|
||||
func ditherKeepsExtremesAndAverageTone(algorithm: DitherAlgorithm) {
|
||||
let side = 64
|
||||
let white = algorithm.apply(to: .init(repeating: 1, count: side * side), width: side, height: side)
|
||||
let black = algorithm.apply(to: .init(repeating: 0, count: side * side), width: side, height: side)
|
||||
#expect(white.allSatisfy { $0 == 0 })
|
||||
#expect(black.allSatisfy { $0 == 1 })
|
||||
|
||||
guard algorithm != .threshold else { return }
|
||||
let grey = algorithm.apply(to: .init(repeating: 0.5, count: side * side), width: side, height: side)
|
||||
let ratio = Double(grey.reduce(0) { $0 + Int($1) }) / Double(grey.count)
|
||||
#expect(abs(ratio - 0.5) < 0.15)
|
||||
}
|
||||
|
||||
@Test func textRendersToHeadWidth() throws {
|
||||
let raster = try #require(TextRenderer.render("Milk\nBread", style: TextStyle()))
|
||||
#expect(raster.width == PrintHead.dots)
|
||||
#expect(raster.blackRatio > 0)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user