tela.js

1.0.4 • Public • Published

tela.js

Experimental graphic library from scratch, with reference implementation of computer graphics algorithms.

Purpose

The purpose of this graphic engine is to be able to generate images in a computational way, with minimal dependencies, such that the readable graphical algorithms shine instead of opaque graphical APIs. The engine should also be capable to create videos and interactive demos or games.

Playground usage: Playground

Table of Contents

Quick start

In the browser

<!DOCTYPE html>
<html lang="en">

<head>
</head>

<body>

</body>
<script type="module">
    import { Canvas, Animation, Color } from "https://cdn.jsdelivr.net/npm/tela.js/dist/web/index.js";

    // You can also import from local file
    // import { Canvas, Animation, Color} from "./node_modules/tela.js/dist/web/index.js";

    const width = 640;
    const height = 480;
    const canvas = Canvas.ofSize(640, 480);
    Animation
        .loop(({ time, dt }) => {
            document.title = `FPS: ${(Math.floor(1 / dt))}`;
            canvas.map((x, y) => {
                return Color.ofRGB(
                    ((x * time) / width) % 1,
                    ((y * time) / height) % 1
                )
            })
        })
        .play();
    document.body.appendChild(canvas.DOM);

</script>

</html>

On the desktop

Install tela.js it using npm install tela.js / bun add tela.js.

import { Animation, Color } from "tela.js/dist/node/index.js";
import Window from "tela.js/src/Tela/Window.js";

const width = 640;
const height = 480;
const window = Window.ofSize(640, 480);
Animation
    .loop(({ time, dt }) => {
        window.setTitle(`FPS: ${Math.floor(1 / dt)}`);
        window.map((x, y) => {
            return Color.ofRGB(
                ((x * time) / width) % 1,
                ((y * time) / height) % 1
            )
        })
    })
    .play();

And run it: node index.mjs / bun index.js

Note: Attention to running node with ES6 imports module

Generate images and videos

Install tela.js it using npm install tela.js / bun add tela.js.

Create a file:

// index.js
import { Color, video } from "tela.js/dist/node/index.js";

const width = 640;
const height = 480;
const FPS = 25;
const maxVideoTime = 10; // time in seconds

function animation({ time, image }) {
    return image.map((x, y) => {
        return Color.ofRGB(
            ((x * time) / width) % 1,
            ((y * time) / height) % 1
        )
    })
}

video(
    "hello_world.mp4",
    animation,
    { width, height, FPS }
)
    .until(({ time }) => time < maxVideoTime);

And run it: node index.mjs / bun index.js

Note generating videos

To generate videos and images tela.js needs ffmpeg in your system, in a way that it is possible to write on the console:

ffmpeg -version 

# it should output something like: fmpeg version 4.4.2-0ubuntu0.22.04.1...
# maybe with a different OS...

Dependencies

Node is preferred when running the demos (it is faster, opened a bug in bun), bun is needed to build the library.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.4
    54
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.4
    54
  • 1.0.3
    37
  • 1.0.2
    43
  • 1.0.1
    40
  • 1.0.0
    3

Package Sidebar

Install

npm i tela.js

Weekly Downloads

177

Version

1.0.4

License

Apache-2.0

Unpacked Size

469 kB

Total Files

46

Last publish

Collaborators

  • pedroth