Skip to content

zignal 0.3.0

Choose a tag to compare

@arrufat arrufat released this 04 Aug 06:54
· 423 commits to master since this release

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