UNPKG

voluptasquisquam

Version:

Image processing and manipulation in JavaScript

105 lines (87 loc) 2.83 kB
import {Image} from 'test/common'; import 'should'; describe('we check paintPolyline', function () { it('should yield the painted image with a line', function () { let size = 5; let data = new Array(size * size * 3); for (let i = 0; i < data.length; i++) { data[i] = i; } let image = new Image(size, size, data, {kind: 'RGB'}); let points = [[1, 1], [3, 3]]; image.paintPolyline(points); let painted = [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ]; let exptected = getExpected(painted, [255, 0, 0]); Array.from(image.data).should.eql(exptected); }); it('should yield the painted image with a rectangle', function () { let size = 5; let data = new Array(size * size * 3); for (let i = 0; i < data.length; i++) { data[i] = i; } let image = new Image(size, size, data, {kind: 'RGB'}); let points = [[1, 1], [4, 1], [4, 3], [1, 3]]; image.paintPolyline(points); let painted = [ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 ]; let exptected = getExpected(painted, [255, 0, 0]); Array.from(image.data).should.eql(exptected); }); it('should yield the painted image B/W image with a triangle', function () { let size = 5; let data = new Array(size * size); for (let i = 0; i < data.length; i++) { data[i] = i; } let image = new Image(size, size, data, {kind: 'GREY'}); let points = [[2, 0], [4, 2], [0, 2]]; image.paintPolyline(points); let painted = [ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; let exptected = getExpectedGrey(painted, [255, 0, 0]); Array.from(image.data).should.eql(exptected); }); }); function getExpected(painted, color) { let result = new Array(painted.length * 3); for (let i = 0; i < result.length; i++) { result[i] = i; } for (let i = 0; i < result.length / 3; i++) { if (painted[i] === 1) { result[i * 3] = color[0]; result[i * 3 + 1] = color[1]; result[i * 3 + 2] = color[2]; } } return result; } function getExpectedGrey(painted, color) { let result = new Array(painted.length); for (let i = 0; i < result.length; i++) { result[i] = i; } for (let i = 0; i < result.length; i++) { if (painted[i] === 1) { result[i] = color[0]; } } return result; }