| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636 | 
							- import { Jimp, mkJGD } from '@jimp/test-utils';
 
- import configure from '@jimp/custom';
 
- import blit from '@jimp/plugin-blit';
 
- import crop from '@jimp/plugin-crop';
 
- import resize from '@jimp/plugin-resize';
 
- import rotate from '../src';
 
- const jimp = configure({ plugins: [rotate, blit, crop, resize] }, Jimp);
 
- describe('Rotate a image with even size', () => {
 
-   let imgSrc = null;
 
-   before(done => {
 
-     jimp
 
-       .read(
 
-         mkJGD(
 
-           '▰▴▴▴▪▪▪▰',
 
-           '▴▴▴▴▪▪▪▪',
 
-           '▴▴▴▴▪▪▪▪',
 
-           '▴▴▴▴▪▪▪▪',
 
-           '▪▪▪▪▴▴▴▴',
 
-           '▪▪▪▪▴▴▴▴',
 
-           '▪▪▪▪▴▴▴▴',
 
-           '▦▪▪▪▴▴▴▦'
 
-         )
 
-       )
 
-       .then(imgJimp => {
 
-         imgSrc = imgJimp;
 
-         done();
 
-       })
 
-       .catch(done);
 
-   });
 
-   it('1 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(1, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '▰▴▴▴▪▪▪▰  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▦▪▪▪▴▴▴▦  ',
 
-           '          ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('91 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(91, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '          ',
 
-           '▰▪▪▪▴▴▴▦  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▰▴▴▴▪▪▪▦  ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('30 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(30, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '     ▰▰     ',
 
-           '   ▪▪▪▪     ',
 
-           '  ▴▪▪▪▪▪    ',
 
-           '▴▴▴▴▪▪▪▪    ',
 
-           '▴▴▴▴▪▪▴▴▴   ',
 
-           '▴▴▴▴▪▴▴▴▴▴  ',
 
-           ' ▴▴▪▪▴▴▴▴▦  ',
 
-           ' ▪▪▪▪▪▴▴▴   ',
 
-           '  ▪▪▪▪▪     ',
 
-           '   ▪▪▪      ',
 
-           '   ▦        ',
 
-           '            '
 
-         )
 
-       );
 
-   });
 
-   it('45 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(45, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '              ',
 
-           '     ▰        ',
 
-           '    ▪▪▪       ',
 
-           '   ▪▪▪▪▪      ',
 
-           '  ▴▴▪▪▪▪▴     ',
 
-           ' ▴▴▴▴▪▪▴▴▴    ',
 
-           '▰▰▴▴▴▴▴▴▴▴▦   ',
 
-           ' ▴▴▴▴▪▪▴▴▴    ',
 
-           '  ▴▴▪▪▪▪▴     ',
 
-           '   ▪▪▪▪▪      ',
 
-           '    ▪▪▪       ',
 
-           '     ▦        ',
 
-           '              ',
 
-           '              '
 
-         )
 
-       );
 
-   });
 
-   it('60 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(60, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '   ▰        ',
 
-           '   ▪▪▪      ',
 
-           '  ▪▪▪▪▪     ',
 
-           ' ▪▪▪▪▪▴▴▴   ',
 
-           ' ▴▴▪▪▴▴▴▴▦  ',
 
-           '▴▴▴▴▪▴▴▴▴▴  ',
 
-           '▴▴▴▴▪▪▴▴▴   ',
 
-           '▴▴▴▴▪▪▪▪    ',
 
-           '  ▴▪▪▪▪▪    ',
 
-           '   ▪▪▪▪     ',
 
-           '     ▦▦     ',
 
-           '            '
 
-         )
 
-       );
 
-   });
 
-   it('90 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(90, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '          ',
 
-           '▰▪▪▪▴▴▴▦  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▰▴▴▴▪▪▪▦  ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('120 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(120, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '            ',
 
-           '     ▴▦     ',
 
-           '    ▴▴▴▴    ',
 
-           '  ▪▪▴▴▴▴    ',
 
-           '▰▪▪▪▴▴▴▴▪   ',
 
-           '▰▪▪▪▪▴▴▪▪▪  ',
 
-           ' ▪▪▪▪▪▪▪▪▪  ',
 
-           ' ▪▪▴▴▴▪▪▪▪▦ ',
 
-           '  ▴▴▴▴▴▪▪   ',
 
-           '   ▴▴▴▴▪    ',
 
-           '   ▴▴▴      ',
 
-           '            '
 
-         )
 
-       );
 
-   });
 
-   it('135 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(135, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '              ',
 
-           '              ',
 
-           '      ▦       ',
 
-           '     ▴▴▴      ',
 
-           '    ▴▴▴▴▴     ',
 
-           '   ▪▪▴▴▴▪▪    ',
 
-           '  ▪▪▪▪▴▪▪▪▪   ',
 
-           ' ▰▪▪▪▪▴▪▪▪▪▦  ',
 
-           '  ▪▪▪▴▴▴▪▪▪   ',
 
-           '   ▪▴▴▴▴▴▪    ',
 
-           '    ▴▴▴▴▴     ',
 
-           '     ▴▰▴      ',
 
-           '      ▰       ',
 
-           '              '
 
-         )
 
-       );
 
-   });
 
-   it('180 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(180, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '          ',
 
-           ' ▦▴▴▴▪▪▪▦ ',
 
-           ' ▴▴▴▴▪▪▪▪ ',
 
-           ' ▴▴▴▴▪▪▪▪ ',
 
-           ' ▴▴▴▴▪▪▪▪ ',
 
-           ' ▪▪▪▪▴▴▴▴ ',
 
-           ' ▪▪▪▪▴▴▴▴ ',
 
-           ' ▪▪▪▪▴▴▴▴ ',
 
-           ' ▰▪▪▪▴▴▴▰ ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('225 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(225, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '              ',
 
-           '       ▦      ',
 
-           '      ▪▪▪     ',
 
-           '     ▪▪▪▪▪    ',
 
-           '    ▴▪▪▪▪▴▴   ',
 
-           '   ▴▴▴▪▪▴▴▴▴  ',
 
-           '  ▦▴▴▴▴▴▴▴▴▰▰ ',
 
-           '   ▴▴▴▪▪▴▴▴▴  ',
 
-           '    ▴▪▪▪▪▴▴   ',
 
-           '     ▪▪▪▪▪    ',
 
-           '      ▪▪▪     ',
 
-           '       ▰      ',
 
-           '              ',
 
-           '              '
 
-         )
 
-       );
 
-   });
 
-   it('270 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(270, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           ' ▦▪▪▪▴▴▴▰ ',
 
-           ' ▪▪▪▪▴▴▴▴ ',
 
-           ' ▪▪▪▪▴▴▴▴ ',
 
-           ' ▪▪▪▪▴▴▴▴ ',
 
-           ' ▴▴▴▴▪▪▪▪ ',
 
-           ' ▴▴▴▴▪▪▪▪ ',
 
-           ' ▴▴▴▴▪▪▪▪ ',
 
-           ' ▦▴▴▴▪▪▪▰ ',
 
-           '          ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('315 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(315, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '      ▰       ',
 
-           '     ▴▰▴      ',
 
-           '    ▴▴▴▴▴     ',
 
-           '   ▪▴▴▴▴▴▪    ',
 
-           '  ▪▪▪▴▴▴▪▪▪   ',
 
-           ' ▦▪▪▪▪▴▪▪▪▪▰  ',
 
-           '  ▪▪▪▪▴▪▪▪▪   ',
 
-           '   ▪▪▴▴▴▪▪    ',
 
-           '    ▴▴▴▴▴     ',
 
-           '     ▴▴▴      ',
 
-           '      ▦       ',
 
-           '              ',
 
-           '              ',
 
-           '              '
 
-         )
 
-       );
 
-   });
 
-   it('360 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(360, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '▰▴▴▴▪▪▪▰  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▪▪▪▪▴▴▴▴  ',
 
-           '▦▪▪▪▴▴▴▦  ',
 
-           '          ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
- });
 
- describe('Rotate a image with odd size', () => {
 
-   let imgSrc = null;
 
-   before(done => {
 
-     jimp
 
-       .read(
 
-         mkJGD(
 
-           '▴▴▴▦▪▪▪',
 
-           '▴▴▴▦▪▪▪',
 
-           '▴▴▴▦▪▪▪',
 
-           '▦▦▦▦▦▦▦',
 
-           '▴▴▴▦▴▴▴',
 
-           '▴▴▴▦▴▴▴',
 
-           '▴▴▴▦▴▴▴'
 
-         )
 
-       )
 
-       .then(imgJimp => {
 
-         imgSrc = imgJimp;
 
-         done();
 
-       })
 
-       .catch(done);
 
-   });
 
-   it('45 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(45, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '            ',
 
-           '     ▪      ',
 
-           '    ▪▪▪     ',
 
-           '   ▦▪▪▪▦    ',
 
-           '  ▴▴▦▪▦▴▴   ',
 
-           ' ▴▴▴▴▦▴▴▴▴  ',
 
-           '  ▴▴▦▴▦▴▴   ',
 
-           '   ▦▴▴▴▦    ',
 
-           '    ▴▴▴     ',
 
-           '     ▴      ',
 
-           '            ',
 
-           '            '
 
-         )
 
-       );
 
-   });
 
-   it('135 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(135, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '            ',
 
-           '     ▴      ',
 
-           '    ▴▴▴     ',
 
-           '   ▦▴▴▴▦    ',
 
-           '  ▪▪▦▴▦▴▴   ',
 
-           ' ▪▪▪▪▦▴▴▴▴  ',
 
-           '  ▪▪▦▴▦▴▴   ',
 
-           '   ▦▴▴▴▦    ',
 
-           '    ▴▴▴     ',
 
-           '     ▴      ',
 
-           '            ',
 
-           '            '
 
-         )
 
-       );
 
-   });
 
-   it('225 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(225, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '            ',
 
-           '     ▴      ',
 
-           '    ▴▴▴     ',
 
-           '   ▦▴▴▴▦    ',
 
-           '  ▴▴▦▴▦▴▴   ',
 
-           ' ▴▴▴▴▦▴▴▴▴  ',
 
-           '  ▴▴▦▪▦▴▴   ',
 
-           '   ▦▪▪▪▦    ',
 
-           '    ▪▪▪     ',
 
-           '     ▪      ',
 
-           '            ',
 
-           '            '
 
-         )
 
-       );
 
-   });
 
-   it('315 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(315, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '            ',
 
-           '     ▴      ',
 
-           '    ▴▴▴     ',
 
-           '   ▦▴▴▴▦    ',
 
-           '  ▴▴▦▴▦▪▪   ',
 
-           ' ▴▴▴▴▦▪▪▪▪  ',
 
-           '  ▴▴▦▴▦▪▪   ',
 
-           '   ▦▴▴▴▦    ',
 
-           '    ▴▴▴     ',
 
-           '     ▴      ',
 
-           '            ',
 
-           '            '
 
-         )
 
-       );
 
-   });
 
- });
 
- describe('Rotate a non-square image', () => {
 
-   let imgSrc = null;
 
-   before(done => {
 
-     jimp
 
-       .read(mkJGD('▴▴▴▴▪▪▪▪', '▴▴▴▴▪▪▪▪', '▦▦▦▦▴▴▴▴', '▦▦▦▦▴▴▴▴'))
 
-       .then(imgJimp => {
 
-         imgSrc = imgJimp;
 
-         done();
 
-       })
 
-       .catch(done);
 
-   });
 
-   it('1 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(1, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▪  ',
 
-           '▦▦▦▦▴▴▴▴  ',
 
-           '▦▦▦▦▴▴▴▴  ',
 
-           '          ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('10 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(10, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '       ▪  ',
 
-           ' ▴▴▴▪▪▪▪  ',
 
-           '▴▴▴▴▪▪▪▴  ',
 
-           '▴▴▦▦▴▴▴▴  ',
 
-           '▦▦▦▦▴▴▴   ',
 
-           '▦▦        ',
 
-           '          ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('30 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(30, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '          ',
 
-           '     ▪▪   ',
 
-           '   ▪▪▪▪   ',
 
-           ' ▴▴▪▪▴▴▴  ',
 
-           '▴▴▴▦▴▴▴   ',
 
-           '▴▴▦▦▴▴    ',
 
-           '▦▦▦▦      ',
 
-           ' ▦        ',
 
-           '          ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('45 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(45, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '          ',
 
-           '    ▪▪    ',
 
-           '   ▪▪▪▴   ',
 
-           '  ▴▪▪▴▴▴  ',
 
-           ' ▴▴▴▴▴▴   ',
 
-           '▴▴▴▦▦▴    ',
 
-           '▴▴▦▦▦     ',
 
-           ' ▦▦▦      ',
 
-           '  ▦       ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('90 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(90, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '      ',
 
-           '▪▪▴▴  ',
 
-           '▪▪▴▴  ',
 
-           '▪▪▴▴  ',
 
-           '▪▪▴▴  ',
 
-           '▴▴▦▦  ',
 
-           '▴▴▦▦  ',
 
-           '▴▴▦▦  ',
 
-           '▴▴▦▦  ',
 
-           '      '
 
-         )
 
-       );
 
-   });
 
-   it('135 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(135, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '          ',
 
-           '   ▴      ',
 
-           '  ▴▴▴     ',
 
-           ' ▪▪▴▴▴    ',
 
-           ' ▪▪▪▴▦▦   ',
 
-           '  ▪▪▴▦▦▦  ',
 
-           '   ▴▴▴▦▦▦ ',
 
-           '    ▴▴▴▦  ',
 
-           '     ▴▴   ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('180 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(180, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '          ',
 
-           ' ▴▴▴▴▦▦▦▦ ',
 
-           ' ▴▴▴▴▦▦▦▦ ',
 
-           ' ▪▪▪▪▴▴▴▴ ',
 
-           ' ▪▪▪▪▴▴▴▴ ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('225 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(225, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '      ▦   ',
 
-           '     ▦▦▦  ',
 
-           '    ▦▦▦▴▴ ',
 
-           '   ▴▦▦▴▴▴ ',
 
-           '  ▴▴▴▴▴▴  ',
 
-           ' ▴▴▴▪▪▴   ',
 
-           '  ▴▪▪▪    ',
 
-           '   ▪▪     ',
 
-           '          ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
-   it('315 degrees', () => {
 
-     imgSrc
 
-       .clone()
 
-       .rotate(315, true)
 
-       .getJGDSync()
 
-       .should.be.sameJGD(
 
-         mkJGD(
 
-           '  ▴▴      ',
 
-           ' ▦▴▴▴     ',
 
-           '▦▦▦▴▴▴    ',
 
-           ' ▦▦▦▴▪▪   ',
 
-           '  ▦▦▴▪▪▪  ',
 
-           '   ▴▴▴▪▪  ',
 
-           '    ▴▴▴   ',
 
-           '     ▴    ',
 
-           '          ',
 
-           '          '
 
-         )
 
-       );
 
-   });
 
- });
 
 
  |