A cross-platform 2D animation tool built with MoonBit.
Features • Architecture • Building • License
Enimate is a modern 2D animation editor, designed to run seamlessly across native desktop(Linux/macOS/Windows) and web browsers (WASM). Built with MoonBit's functional programming paradigm, it delivers high-performance animation capabilities through a clean, decoupled architecture.
- 🎨 Canvas & Rendering - Path-based drawing with Skia/CanvasKit backends
- ✨ Effects System - Blur, shadow, color matrix, masks, and distortion filters
- 🖱️ Interactive Tools - Mouse/keyboard input handling for precise control
- 🎬 Animation Engine - Timeline-based keyframe animation with easing
- 📁 File System - Cross-platform project save/load with caching
- 🔊 Audio Support - Playback control with FFmpeg (native/WASM) and Web Audio (WASM)
┌────────────────────────────────────────────────────────┐
│ Layer 1: Business Logic (MoonBit) │
│ - Canvas core, Effects, Animation, Timeline │
├────────────────────────────────────────────────────────┤
│ Layer 2: API Abstractions (MoonBit) │
│ - RenderAPI, WindowInputAPI, FileSystemAPI │
├────────────────────────────────────────────────────────┤
│ Layer 3: Platform Implementations │
│ - Native: Qt6 + Skia + FFmpeg + Platform APIs │
│ - WASM: Qt6.wasm + CanvasKit + FFmpeg.wasm + Web APIs │
└────────────────────────────────────────────────────────┘
Prerequisites: Qt6, Skia, FFmpeg, MoonBit toolchain
# Setup dependencies(Currently only works on Linux)
./scripts/setup_deps.sh
./scripts/setup_qt.sh
./scripts/setup_skia.sh
./scripts/setup_ffmpeg.sh
# Build native target
moon build --target native
# Build WASM target
moon build --target wasmApache-2.0
Made with ❤️ using MoonBit
