MyNixOS website logo
Description

Sprite previewer/animator.

View your sprites in an animated way with SDL2

sdl2-sprite

Create a horizontal sprite like this:

The size of the intended result image is 220x130, so provide that:

sdl2-sprite blue-fish.png 220x130 --fps 15

This will open a window animating that sprite:

(Note: this is a screenflow recording of the animation manually edited to repeat, so it's not as smooth as in reality.)

The animation repeats indefinitely at the desired framerate.

Using Haskell API

Use load to load in a sprite for a Renderer:

load :: MonadIO m => Renderer -> FilePath -> V2 CInt -> m Sprite

To render the sprite at a given position use render:

render :: MonadIO m => Sprite -> V2 CInt -> m ()

To advance the sprite's frame to the next frame (or loop), use animate:

animate :: Sprite -> Sprite

This is a pure function, so you can use it in a loop. See the source in app/Main.hs of this repository for an example.

How to make sprites in Inkscape

Choose the size of your intended result e.g. 220x130 and then setup the grid in Inkscape to show that size (see the Spacing X/Spacing Y fields):

It'll look like this, which is handy:

When you want to make a new frame, use Ctrl-D to duplicate the selection and use the Transform tool to move it exactly 220 pixels to the right and hit Apply.

Make sure that your document dimensions are your width x your frame count.

Finally, export your image with the right "Image size" - make sure the size is 130 so that the width scales right:

Now you're good to go! Hit Export.

Metadata

Version

0.0.1

Platforms (77)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows