Path: blob/master/node_modules/@jimp/plugin-mask/test/mask.test.js
1126 views
import { Jimp, mkJGD } from '@jimp/test-utils';1import configure from '@jimp/custom';23import mask from '../src';45const jimp = configure({ plugins: [mask] }, Jimp);67describe('Mask', () => {8let imgSrcOpaq;9let imgSrcAlpa;10let maskGrayBig;11let maskGraySmall;12let maskColor;1314before(done => {15Promise.all([16jimp.read(mkJGD('▴□▾□■□', '■▴■▾■□', '■□▴□▾□', '■□■▴■▾')),17jimp.read(mkJGD('▴▵▾▿', '▴▵▾▿', '▴▵▾▿')),18jimp.read(mkJGD('048840', '8CFFC8', '8CFFC8', '048840')),19jimp.read(mkJGD('0369', '369C', '69CF')),20jimp.read(mkJGD('▴▴▾▾', '▪▪▰▰', '□□□□'))21])22.then(imgs => {23imgSrcOpaq = imgs[0];24imgSrcAlpa = imgs[1];25maskGrayBig = imgs[2];26maskGraySmall = imgs[3];27maskColor = imgs[4];28done();29})30.catch(done);31});3233it('Affect opaque image with a gray mask with the same size', () => {34imgSrcOpaq35.clone()36.mask(maskGrayBig)37.getJGDSync()38.should.be.sameJGD({39width: 6,40height: 4,41data: [420xff000000,430xffffff44,440x0000ff88,450xffffff88,460x00000044,470xffffff00,480x00000088,490xff0000cc,500x000000ff,510x0000ffff,520x000000cc,530xffffff88,540x00000088,550xffffffcc,560xff0000ff,570xffffffff,580x0000ffcc,590xffffff88,600x00000000,610xffffff44,620x00000088,630xff000088,640x00000044,650x0000ff0066]67});68});6970it('Affect opaque image with a gray mask with the same size, blited', () => {71imgSrcOpaq72.clone()73.mask(maskGrayBig, 1, 1)74.getJGDSync()75.should.be.sameJGD({76width: 6,77height: 4,78data: [790xff0000ff,800xffffffff,810x0000ffff,820xffffffff,830x000000ff,840xffffffff,850x000000ff,860xff000000,870x00000044,880x0000ff88,890x00000088,900xffffff44,910x000000ff,920xffffff88,930xff0000cc,940xffffffff,950x0000ffff,960xffffffcc,970x000000ff,980xffffff88,990x000000cc,1000xff0000ff,1010x000000ff,1020x0000ffcc103]104});105});106107it('Affect opaque image with a gray mask with the same size, blited negative', () => {108imgSrcOpaq109.clone()110.mask(maskGrayBig, -1, -1)111.getJGDSync()112.should.be.sameJGD({113width: 6,114height: 4,115data: [1160xff0000cc,1170xffffffff,1180x0000ffff,1190xffffffcc,1200x00000088,1210xffffffff,1220x000000cc,1230xff0000ff,1240x000000ff,1250x0000ffcc,1260x00000088,1270xffffffff,1280x00000044,1290xffffff88,1300xff000088,1310xffffff44,1320x0000ff00,1330xffffffff,1340x000000ff,1350xffffffff,1360x000000ff,1370xff0000ff,1380x000000ff,1390x0000ffff140]141});142});143144it('Affect opaque image with a smaller gray mask', () => {145imgSrcOpaq146.clone()147.mask(maskGraySmall)148.getJGDSync()149.should.be.sameJGD({150width: 6,151height: 4,152data: [1530xff000000,1540xffffff33,1550x0000ff66,1560xffffff99,1570x000000ff,1580xffffffff,1590x00000033,1600xff000066,1610x00000099,1620x0000ffcc,1630x000000ff,1640xffffffff,1650x00000066,1660xffffff99,1670xff0000cc,1680xffffffff,1690x0000ffff,1700xffffffff,1710x000000ff,1720xffffffff,1730x000000ff,1740xff0000ff,1750x000000ff,1760x0000ffff177]178});179});180181it('Affect opaque image with a smaller gray mask, blited', () => {182imgSrcOpaq183.clone()184.mask(maskGraySmall, 1, 1)185.getJGDSync()186.should.be.sameJGD({187width: 6,188height: 4,189data: [1900xff0000ff,1910xffffffff,1920x0000ffff,1930xffffffff,1940x000000ff,1950xffffffff,1960x000000ff,1970xff000000,1980x00000033,1990x0000ff66,2000x00000099,2010xffffffff,2020x000000ff,2030xffffff33,2040xff000066,2050xffffff99,2060x0000ffcc,2070xffffffff,2080x000000ff,2090xffffff66,2100x00000099,2110xff0000cc,2120x000000ff,2130x0000ffff214]215});216});217218it('Affect alpha image with a bigger gray mask', () => {219imgSrcAlpa220.clone()221.mask(maskGrayBig)222.getJGDSync()223.should.be.sameJGD({224width: 4,225height: 3,226data: [2270xff000000,2280xff000021,2290x0000ff88,2300x0000ff43,2310xff000088,2320xff000065,2330x0000ffff,2340x0000ff7f,2350xff000088,2360xff000065,2370x0000ffff,2380x0000ff7f239]240});241});242243it('Affect alpha image with a bigger gray mask, blited', () => {244imgSrcAlpa245.clone()246.mask(maskGrayBig, -1, -1)247.getJGDSync()248.should.be.sameJGD({249width: 4,250height: 3,251data: [2520xff0000cc,2530xff00007f,2540x0000ffff,2550x0000ff65,2560xff0000cc,2570xff00007f,2580x0000ffff,2590x0000ff65,2600xff000044,2610xff000043,2620x0000ff88,2630x0000ff21264]265});266});267268it('Affect opaque image with a colored mask', () => {269imgSrcOpaq270.clone()271.mask(maskColor, 1, 1)272.getJGDSync()273.should.be.sameJGD({274width: 6,275height: 4,276data: [2770xff0000ff,2780xffffffff,2790x0000ffff,2800xffffffff,2810x000000ff,2820xffffffff,2830x000000ff,2840xff000055,2850x00000055,2860x0000ff55,2870x00000055,2880xffffffff,2890x000000ff,2900xffffffaa,2910xff0000aa,2920xffffffaa,2930x0000ffaa,2940xffffffff,2950x000000ff,2960xffffffff,2970x000000ff,2980xff0000ff,2990x000000ff,3000x0000ffff301]302});303});304});305306307