Modular, multi-layer, multi-frame pixel art editor built with Python 3, Tkinter, and sv_ttk. Professional tools, infinite undo, and animation support.
Professional-grade pixel art tools in a clean, modular package
Pixel-perfect pencil, eraser, bucket fill, line, rectangle, ellipse, gradient, spray, eyedropper, selection, move, and pan tools.
tools/RGBA / HSV / HEX color spaces, primary+secondary colors, recent colors, favorites, and an editable palette panel.
models/PaletteAdd, duplicate, delete, merge-down, reorder, visibility, lock, opacity, and per-layer blend modes (normal, multiply, screen, additive).
models/LayerUnlimited animation frames with drag-to-reorder, per-frame duration, playback, and onion skinning with configurable range.
models/FrameCommand-based undo system with bounded memory using region-diff commands, not full-canvas snapshots.
commands/Infinite zoom anchored at cursor, smooth panning, pixel grid, custom snapping grid, and rulers.
ui/CanvasViewNative .pxlst format with embedded base64 PNG data, autosave with crash recovery, and export to PNG/GIF/sprite sheet/PNG sequence.
services/Horizontal/vertical symmetry for all drawing tools, rectangular selection, cut/copy/paste, and canvas resize with 9-point anchoring.
core/EventBusGet up and running from source
Modular, decoupled, and extensible by design
Framework-free primitives: Color, Rect, Point, Bresenham rasterization, and EventBus pub/sub system.
Domain model: PixelBuffer, Layer, Frame, Document, and Palette with numpy-backed RGBA raster.
Undo/redo system with execute()/undo() pattern coordinated by HistoryManager.
12 tool classes with shared ToolContext and ToolManager, plus brush engine and shape tool abstractions.
I/O, export, clipboard, autosave, and file dialogs as cross-cutting concerns.
Nearest-neighbor scaling, transparency checkerboard, thumbnails, and onion-skin tinting.
Application controller that wires UI actions to model mutations via commands.
Tkinter views: MainWindow, CanvasView, Toolbar, panels, and dialogs.