0.1.0 • Published 4 years ago

potpack-weighted v0.1.0

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

potpack

A tiny JavaScript library for packing 2D rectangles into a near-square container, which is useful for generating CSS sprites and WebGL textures. Similar to shelf-pack, but static (you can't add items once a layout is generated), and aims for maximal space utilization.

A variation of algorithms used in rectpack2D and bin-pack, which are in turn based on this article by Blackpawn.

Demo

Example usage

import potpackweighted from 'potpack-weighted';

const boxes = [
    {w: 300, h: 50, weight: 20},
    {w: 100, h: 200, weight: 0},
    ...
];

const {w, h, fill} = potpackweighted(boxes);
// w and h are resulting container's width and height;
// fill is the space utilization value (0 to 1), higher is better
//weight is prioritized over fitting.  higher weights will always be closer to the top left corner
// potpack mutates the boxes array: it's sorted by height,
// and box objects are augmented with x, y coordinates:
boxes[0]; // {w: 300, h: 50,  x: 100, y: 0}
boxes[1]; // {w: 100, h: 200, x: 0,   y: 0}

Install

Install with NPM (npm install potpack-weighted) or Yarn (yarn add potpack-weighted), then:

// import as an ES module
import potpackweighted from 'potpack-weighted';

// or require in Node / Browserify
const potpackweighted = require('potpack-weighted');

Or use a browser build directly:

<script src="https://unpkg.com/potpack-weighted@0.1.0/index.js"></script>
0.1.0

4 years ago