reanimate/README.md
David Himmelstrup c2af9fbac0 Improve haddock documentation. (#20)
* Improve CLI help message.

* Change hackage badge color.

* Add supported platforms.

* Add 'signalOscillate'

* Split SVG module into smaller parts.

Former-commit-id: ad62a06a5442912f6bd0be0e10d02fe53345b846
2019-09-28 16:24:41 +08:00

73 lines
3.1 KiB
Markdown

[![Hackage](https://img.shields.io/hackage/v/reanimate.svg?color=success)](http://hackage.haskell.org/package/reanimate)
[![Build Status](https://dev.azure.com/lemmih0612/reanimate/_apis/build/status/Lemmih.reanimate?branchName=master)](https://dev.azure.com/lemmih0612/reanimate/_build/latest?definitionId=1&branchName=master)
[![Documentation Status](https://readthedocs.org/projects/reanimate/badge/?version=latest)](https://reanimate.readthedocs.io/en/latest/?badge=latest)
![Platforms](https://img.shields.io/badge/platform-linux%20%7C%20osx%20%7C%20windows-informational)
# reanimate
Reanimate is a reactive framework for creating non-interactive animations from SVG images.
This package consists of a set of combinators, a renderer (using ffmpeg), and a web-based
previewer. Inline latex code is supported when 'latex' and 'dvisvgm' are installed.
Nothing about the API is stable at this point.
# YouTube
Completed animations are uploaded to the [Reanimated Science](https://www.youtube.com/channel/UCbZujyI7i6JbI-I0shPvDgg) channel.
Animation snippets are uploaded to the [Reanimated Science Playground](https://www.youtube.com/channel/UCL7MwXLtQbhJeb6Ts3_HooA) channel.
# Getting started
Reanimate ships with a web-based viewer and automatic code reloading. To get a small demo
up and running, clone the repository, run one of the examples (this will install the library),
and wait for a browser window to open:
```console
$ git clone https://github.com/Lemmih/reanimate.git
$ cd reanimate/
$ stack build
$ stack ./examples/latex_color.hs
```
This should render the `latex_color` example in a new browser window. If you then change the
animation source code, the browser window will automatically reload and show the updated animation.
# TODO
* Improve bounding box approximations
* Alignment and positioning combinators
* Figure out why performance doesn't scale linearly with more cores
- diagrams are slow because they are rendered as a bytestring and then parsed as SVG. Find a way to shortcut.
* Test-suite: Compile and render all the example animations on the build servers. The SVG output should be stable.
* API for generating slides.
* Warn if 'group' nodes are found in 'clippath's.
* Optionally use gifski for high quality gifs: https://gif.ski/
* Driver:
- Flags for selecting fps in web viewer
- Detect if there's already an open browser window. If there is, don't open another one.
- Watch all code files in the same directory (and sub-directories) as the source code.
* Viewer:
- Keys for pausing, moving frame-by-frame, resetting.
* Documentation:
- Tutorials
- Coordinate system
- "Draw" effect
- Pixel perfect povray (orthographic projection)
- Gallery
# Examples
The example gifs are displayed at 25 fps.
![LaTeX wheel](gifs/latex_wheel.gif)
![Sunflower](gifs/sunflower.gif)
![Tangent](gifs/tangent.gif)
![Goo](gifs/goo.gif)
![Drawing LaTeX equations](gifs/latex_draw.gif)
![Bounding boxes](gifs/bbox.gif)
![Colorful LaTeX](gifs/latex_color.gif)
![Bezier curves](gifs/bezier.gif)
![Valentine's Day](gifs/valentine.gif)
![Basic LaTeX](gifs/latex_basic.gif)