An open API service indexing awesome lists of open source software.

https://github.com/clumsycomputer/clumsy-graphics

a tool for rapidly developing animations where frames are described using svg elements à la react 🙃
https://github.com/clumsycomputer/clumsy-graphics

animation docker ffmpeg inkscape react svg typescript

Last synced: about 1 month ago
JSON representation

a tool for rapidly developing animations where frames are described using svg elements à la react 🙃

Awesome Lists containing this project

README

        

# clumsy-graphics

a tool for rapidly developing animations where frames are described using svg elements à la react 🙃

## example

#### tl;dr

![TL;DR Hello Rainbow Animation Gif](/assets/HelloRainbow.gif)

#### ./example-project/HelloRainbow.animation.tsx

```typescript
import React from 'react'
import { AnimationModule } from 'clumsy-graphics'
import getColormap from 'colormap'

const HelloRainbowAnimationModule: AnimationModule = {
moduleName: 'Hello-Rainbow',
frameCount: 24,
getFrameDescription: getHelloRainbowFrameDescription,
frameSize: {
width: 1024,
height: 1024,
},
animationSettings: {
frameRate: 9,
constantRateFactor: 1,
},
}

export default HelloRainbowAnimationModule

interface GetHelloRainbowFrameDescriptionApi {
frameCount: number
frameIndex: number
}

async function getHelloRainbowFrameDescription(
api: GetHelloRainbowFrameDescriptionApi
) {
const { frameCount, frameIndex } = api
const rainbowColormap = getColormap({
colormap: 'rainbow-soft',
nshades: frameCount,
format: 'hex',
alpha: 1,
})
const mainFrameColor = rainbowColormap[frameIndex % frameCount]
return (



Hello Rainbow

{new Array(frameCount).fill(null).map((_, squareIndex) => {
const squareStamp = squareIndex / frameCount
const squareRadius = 30 - 30 * squareStamp
const squareLength = 2 * squareRadius
return (

)
})}

)
}
```

#### develop and iterate on animation

```bash
yarn clumsy-graphics startDevelopment --animationModulePath=./example-project/HelloRainbow.animation.tsx
```

open browser at `localhost:3000`

#### ./example-project/HelloRainbow.gif

![Hello Rainbow Animation Gif](/assets/HelloRainbow.gif)

## installation

#### add package to project

```bash
yarn add clumsy-graphics
```

#### setup docker

install and run [docker engine](https://docs.docker.com/engine/install/) _(the majority of `clumsy-graphics` runs within a container to simplify dependency management)_

## api

> clumsy-graphics --animationModulePath=\

- **`animationModulePath`:** path to animation module export file

- required

- **`clientServerPort`:** the port on the host machine to use for handling api, asset, and page requests

- defaultValue = _3000_

#### how-to

- run _clumsy-graphics_ command

- open browser at `localhost:3000`

- begin making changes on the active animation module