zignal 0.3.0
Highlights
This release focuses on text rendering capabilities and significantly expands the Python bindings to provide a complete 2D graphics API. The font support enables rendering text in various bitmap formats, while the Python Canvas API brings drawing capabilities on par with the core library.
Core Improvements
- Unified Point syntax: Cleaner API with Point(2, f32) instead of Point2d(f32)
- Image scaling: New method for flexible image resizing
- PixelIterator: Sequential pixel traversal with view support
- Canvas bounds handling: Better clipping and edge case management
- Matrix enhancements: Improved numerical stability in decompositions
Font Support & Text Rendering
- New font system: Load and render text using PCF and BDF bitmap fonts
- Font compression: Automatic support for gzipped font files
- Built-in font: Default 8x8 font for immediate text rendering
- Canvas text drawing: Render text with optional antialiasing
Python Bindings - Major Expansion
- Canvas API: Complete 2D drawing primitives - lines, circles, polygons, rectangles, Bézier curves
- Geometry classes: Rectangle operations and ConvexHull computation
- Text rendering: BitmapFont class for rendering text in Python
- Enhanced Image class: Richer API with better Canvas integration
PRs
- feat(text): add bitmap font rendering and text drawing by @arrufat in #54
- feat(image): add pixel iterator for image traversal by @arrufat in #55
- feat(python): add resize method and interpolation enum by @arrufat in #56
- feat(image): add letterbox resizing function by @arrufat in #57
- refactor(matrix)!: move analysis methods to Matrix by @arrufat in #58
- feat(python): add canvas object for image drawing by @arrufat in #59
- feat(python): add draw_line method by @arrufat in #60
- refactor(py-stubs): use metadata for stub generation by @arrufat in #61
- refactor(python-bindings): centralize Python C API import by @arrufat in #62
- chore(python): consolidate dev dependencies and stub generation by @arrufat in #63
- feat(python): add pixel access to Image class by @arrufat in #64
- feat(font): add BDF font parsing and rendering by @arrufat in #66
- refactor(point)!: use tuple literal for construction and reorder parameters by @arrufat in #67
- refactor(fdm): restructure FDM to use stateful object by @arrufat in #68
- docs(python): reformat docstrings to markdown by @arrufat in #69
- chore(docs): enable stub file parsing for python docs by @arrufat in #70
- feat(python): allow integer for grayscale color input by @arrufat in #71
- Add a bit of detail in README by @cih9088 in #74
- build(python): improve macOS wheel portability by @arrufat in #73
- feat(font/pcf): add PCF font loading support by @arrufat in #75
- feat(font/bdf): support gzipped BDF font files by @arrufat in #76
- feat(font): add bdf font saving by @arrufat in #77
- feat(python): add drawing and filling methods to canvas by @arrufat in #78
- feat(bdf): add support for saving compressed files by @arrufat in #79
- refactor(color): simplify python color object creation by @arrufat in #80
- feat(image): add image scaling method by @arrufat in #81
- refactor(canvas): use comptime for draw methods by @arrufat in #82
- feat(python): add convex hull computation by @arrufat in #83
Full Changelog: 0.2.0...0.3.0