Skip to content

Latest commit

 

History

History
42 lines (35 loc) · 2.04 KB

TODO.md

File metadata and controls

42 lines (35 loc) · 2.04 KB

TODO

Fundamentals

  • Finalize README and make a project description
  • Write functions to load and save image files
  • Write helper for creating color.RGBA objects, to avoid nil dereferencing
  • Write helper for creating palette slice, as Gopy doesn't have abstraction for slice of objects
  • Support popular image formats (decode and encode):
    • PNG
    • JPEG
    • WebP
    • TIFF (mostly for previews)
    • GIF (static)
    • BMP
  • Override the whole pixelmappers module, as Gopy ignores methods that has return type set as type signature Moved to dither-gopy
  • Support for image manipulation (ideally support native Python libraries, like PIL) There isn't any sufficient way to transport binary data between Go and Python yet. Library users will simply have to apply additional effects before dithering

Multi-arch support:

  • Be able to generate wheels for multiple architectures and platforms
  • Add support for Windows
Here's how this will be structured: In this repository, the bindings, a wrapper and everything needed to pack this mess into a usable library package will be stored.

dither_go will contain a x86_64-linux-gnu copy of bindings already generated (and updated by some small workflow), in order to run test workflows in future.
Bindings for other architectures and platforms will be generated by build_wheel workflow which (using setup.py) will override inside a wheel base bindings with those for targeted arch/platform.

In v1.0

  • Write more tests and examples
  • Generate documentation
  • Make bindings fully MyPy compliant
  • Override Config suffixed and ErrorDiffusionMatrix.Offset() functions
  • Create an exception system. Functions in Go will return error code and optional error message, and Python wrapper will raise an adequate exception if it receives them
  • Support additional image formats:
    • JXL
    • AVIF
    • HEIC/HEIF
    • (maybe?; only decode) SVG