All checks were successful
Build ptprnt / build (push) Successful in 3m52s
Reviewed-on: moritz/ptouch-prnt#18
2.7 KiB
2.7 KiB
Changelog
All notable changes to ptprnt will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.2.0] - v0.2.0
Added
- Multi-label support - print multiple labels in sequence
- LabelBuilder API with fluent interface for constructing labels
- FakePrinter driver for testing without hardware (outputs PNG files)
- PrinterService core service for printer operations
- CliParser component with ICliParser interface
- ICairoWrapper interface for testable graphics rendering
- MockCairoWrapper for unit testing
- Pre-commit hook for automatic copyright updates
- USB trace mode for debugging (
-Dusb_trace_only=true)
Changed
- Major refactoring: Reorganized codebase into layered architecture
- Application layer: PtouchPrint, CliParser, PrinterService
- Printer drivers: Moved to
src/printers/with factory pattern - Graphics system: Added builder pattern and Cairo abstraction
- Core services: Separated into
src/core/directory
- Label class now uses dependency injection for Cairo/Pango
- CLI parsing separated from main application logic
- Updated dependencies to latest versions
- Improved project documentation (README.md, CLAUDE.md)
Fixed
- Label corruption issues resolved
- Printer info retrieval bugs
- USB attachment logic
- Multiple lines handling in labels
- Printer selection logic
[0.1.0] - 2024
Added
- Initial release of ptprnt
- Basic label printing functionality for Brother P-touch P700 series
- Pango/Cairo-based text rendering
- USB device communication via libusb-1.0
- Template-based Bitmap class supporting multiple pixel formats (ALPHA8, RGBX8, RGBA8, ARGB8)
- Monochrome bitmap conversion for printer output
- PrinterDriverFactory for creating printer instances
- USB device abstraction layer (IUsbDevice, UsbDevice, UsbDeviceFactory)
- Command-line interface using CLI11
- Logging with spdlog and file output
- Unit tests using GoogleTest
- Code coverage reporting with gcovr
- Meson build system with C++20 support
- CI/CD pipeline with automated testing
Core Components (v0.1.0)
- PtouchPrint: Main application orchestrator
- P700Printer: Brother P-touch P700 driver implementation
- Bitmap: Template-based image storage
- Label: Text rendering with Pango/Cairo
- Monochrome: Bitmap to monochrome conversion
- UsbDevice: libusb wrapper for device communication
Project Origins
ptprnt is a modern C++20 rewrite of ptouch-print. All credits for reverse engineering the Brother P-touch USB protocol go to Dominic Rademacher.