From a1d47efb36ac250035e83d44aa3a379f3a4377e1 Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Thu, 20 Jul 2017 12:06:19 -0700 Subject: [PATCH 01/23] basic files set up --- .eslintignore | 5 ++ .gitignore | 127 ++++++++++++++++++++++++++++++++ eslintrc | 21 ++++++ lib/bitmap-transformer.js | 0 package.json | 29 ++++++++ test/bitmap-transformer-test.js | 0 6 files changed, 182 insertions(+) create mode 100644 .eslintignore create mode 100644 .gitignore create mode 100644 eslintrc create mode 100644 lib/bitmap-transformer.js create mode 100644 package.json create mode 100644 test/bitmap-transformer-test.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..05b1cf3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +**/node_modules/* +**/vendor/* +**/*.min.js +**/coverage/* +**/build/* diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ec7bce --- /dev/null +++ b/.gitignore @@ -0,0 +1,127 @@ +# Created by https://www.gitignore.io/api/osx,node,linux,windows + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + +### OSX ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.gitignore.io/api/osx,node,linux,windows diff --git a/eslintrc b/eslintrc new file mode 100644 index 0000000..8dc6807 --- /dev/null +++ b/eslintrc @@ -0,0 +1,21 @@ +{ + "rules": { + "no-console": "off", + "indent": [ "error", 2 ], + "quotes": [ "error", "single" ], + "semi": ["error", "always"], + "linebreak-style": [ "error", "unix" ] + }, + "env": { + "es6": true, + "node": true, + "mocha": true, + "jasmine": true + }, + "ecmaFeatures": { + "modules": true, + "experimentalObjectRestSpread": true, + "impliedStrict": true + }, + "extends": "eslint:recommended" +} diff --git a/lib/bitmap-transformer.js b/lib/bitmap-transformer.js new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json new file mode 100644 index 0000000..754c89f --- /dev/null +++ b/package.json @@ -0,0 +1,29 @@ +{ + "name": "04-bitmap_transformer", + "version": "1.0.0", + "description": "this project changes a bitmap file into several variations", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "mocha" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/loganabsher/04-bitmap_transformer.git" + }, + "keywords": [ + "bitmap" + ], + "author": "Logan Absher, Luis Manzo, Nick Asmussen", + "license": "MIT", + "bugs": { + "url": "https://github.com/loganabsher/04-bitmap_transformer/issues" + }, + "homepage": "https://github.com/loganabsher/04-bitmap_transformer#readme", + "devDependencies": { + "chai": "^4.1.0", + "mocha": "^3.4.2" + } +} diff --git a/test/bitmap-transformer-test.js b/test/bitmap-transformer-test.js new file mode 100644 index 0000000..e69de29 From 283dd41002685ad47621b714e72e6d44f680bc66 Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Thu, 20 Jul 2017 12:08:27 -0700 Subject: [PATCH 02/23] renamed eslintrc to .eslintrc --- eslintrc => .eslintrc | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename eslintrc => .eslintrc (100%) diff --git a/eslintrc b/.eslintrc similarity index 100% rename from eslintrc rename to .eslintrc From a37bf28a1205bf672c7042d157db2e2171b6470d Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Thu, 20 Jul 2017 12:20:16 -0700 Subject: [PATCH 03/23] following directory structure --- lib/{bitmap-transformer.js => bitmap-file-helper.js} | 0 test/bitmap-transformer-test.js => model/bitmap-constructor.js | 0 test/bitmap-constructor-test.js | 0 test/bitmap-file-helper-test.js | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename lib/{bitmap-transformer.js => bitmap-file-helper.js} (100%) rename test/bitmap-transformer-test.js => model/bitmap-constructor.js (100%) create mode 100644 test/bitmap-constructor-test.js create mode 100644 test/bitmap-file-helper-test.js diff --git a/lib/bitmap-transformer.js b/lib/bitmap-file-helper.js similarity index 100% rename from lib/bitmap-transformer.js rename to lib/bitmap-file-helper.js diff --git a/test/bitmap-transformer-test.js b/model/bitmap-constructor.js similarity index 100% rename from test/bitmap-transformer-test.js rename to model/bitmap-constructor.js diff --git a/test/bitmap-constructor-test.js b/test/bitmap-constructor-test.js new file mode 100644 index 0000000..e69de29 diff --git a/test/bitmap-file-helper-test.js b/test/bitmap-file-helper-test.js new file mode 100644 index 0000000..e69de29 From a4f70d536cad9e6b3f3abff7553bd7aaf9e79dbc Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Thu, 20 Jul 2017 12:42:01 -0700 Subject: [PATCH 04/23] changing gh branch format --- assets/palette-write-bitmap.bmp | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/palette-write-bitmap.bmp diff --git a/assets/palette-write-bitmap.bmp b/assets/palette-write-bitmap.bmp new file mode 100644 index 0000000..e69de29 From 7c36b70a2bbee24a9723b3031a04d88ca1f8b051 Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Thu, 20 Jul 2017 15:05:10 -0700 Subject: [PATCH 05/23] data flow working --- model/bitmap-constructor.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index e69de29..5994969 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -0,0 +1,29 @@ +'use strict'; + +const fileHelper = require(`${__dirname}/../lib/bitmap-file-helper.js`); +const fs = require('fs'); + +// module.exports = exports = {}; + +const bitObj = {}; + +function BitConstructor(data){ + this.type = data.toString('utf-8', 0, 2); + this.size = data.readInt32LE(2); + this.width = data.readInt32LE(18); + this.height = data.readInt32LE(22); + this.x = data.readInt32LE(38); + this.y = data.readInt32LE(42); + this.maxColorNum = data.readInt32LE(46); + this.hS = data.readInt32LE(14); + this.pixW = data.readInt32LE(18); + this.pixH = data.readInt32LE(20); + this.BpP = data.readInt32LE(24); +} + +fileHelper(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { + if(err) throw err; + bitObj.thingOne = new BitConstructor(data); + console.log(bitObj); + return data; +}); From 2765d387b4eca66f354e53165a2c7eca4446dd23 Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Thu, 20 Jul 2017 15:05:43 -0700 Subject: [PATCH 06/23] data flow working --- lib/bitmap-file-helper.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/bitmap-file-helper.js b/lib/bitmap-file-helper.js index e69de29..9f5d76f 100644 --- a/lib/bitmap-file-helper.js +++ b/lib/bitmap-file-helper.js @@ -0,0 +1,12 @@ +'use strict'; + +const fs = require('fs'); + +const initFile = module.exports = (path, callback) => { + fs.readFile(path, (err, data) => { + if(err) return callback(err); + return callback(null, data); + }); +}; + +// initFile(`${__dirname}/../assets/palette-bitmap.bmp`); From 356d8ef018eb611f059ada627f31091d525431c4 Mon Sep 17 00:00:00 2001 From: Nick Asmussen Date: Thu, 20 Jul 2017 16:34:31 -0700 Subject: [PATCH 07/23] updates constructor func to get meta data from bitmap --- model/bitmap-constructor.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index 5994969..047963d 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -10,15 +10,16 @@ const bitObj = {}; function BitConstructor(data){ this.type = data.toString('utf-8', 0, 2); this.size = data.readInt32LE(2); + this.headerSize = data.readInt32LE(14); + this.bitsPerPixel = data.readInt32LE(28); this.width = data.readInt32LE(18); this.height = data.readInt32LE(22); - this.x = data.readInt32LE(38); - this.y = data.readInt32LE(42); - this.maxColorNum = data.readInt32LE(46); - this.hS = data.readInt32LE(14); - this.pixW = data.readInt32LE(18); - this.pixH = data.readInt32LE(20); - this.BpP = data.readInt32LE(24); + // this.maxColorNum = data.readInt32LE(46); + this.colorTableStart = this.headerSize + 14; + + this.rowWidth = Math.ceil(((this.bitsPerPixel * this.width + 31)/32) * 4); + + this.buffer = data.toString('hex', 1078, this.size); } fileHelper(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { From 38c53605f11c1525ed3d5d7613fe8b579ee21735 Mon Sep 17 00:00:00 2001 From: Nick Asmussen Date: Thu, 20 Jul 2017 16:44:41 -0700 Subject: [PATCH 08/23] adds color table to the bitmap constructor --- model/bitmap-constructor.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index 047963d..1b4e6bd 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -10,12 +10,14 @@ const bitObj = {}; function BitConstructor(data){ this.type = data.toString('utf-8', 0, 2); this.size = data.readInt32LE(2); + this.pixelArrayStart = data.readInt32LE(10); this.headerSize = data.readInt32LE(14); this.bitsPerPixel = data.readInt32LE(28); this.width = data.readInt32LE(18); this.height = data.readInt32LE(22); // this.maxColorNum = data.readInt32LE(46); this.colorTableStart = this.headerSize + 14; + this.colorTable = data.toString('hex', this.colorTableStart, this.pixelArrayStart); this.rowWidth = Math.ceil(((this.bitsPerPixel * this.width + 31)/32) * 4); From 83776176efe36f9499a8c0306a61574ef487d0d7 Mon Sep 17 00:00:00 2001 From: Luis Manzo Date: Thu, 20 Jul 2017 19:46:26 -0700 Subject: [PATCH 09/23] produces colorTable and pixelTable arrays, minor naming changes --- .eslintrc | 5 ----- lib/bitmap-file-helper.js | 1 + model/bitmap-constructor.js | 21 +++++++++++---------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/.eslintrc b/.eslintrc index 8dc6807..195624a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -12,10 +12,5 @@ "mocha": true, "jasmine": true }, - "ecmaFeatures": { - "modules": true, - "experimentalObjectRestSpread": true, - "impliedStrict": true - }, "extends": "eslint:recommended" } diff --git a/lib/bitmap-file-helper.js b/lib/bitmap-file-helper.js index 9f5d76f..74f31cb 100644 --- a/lib/bitmap-file-helper.js +++ b/lib/bitmap-file-helper.js @@ -9,4 +9,5 @@ const initFile = module.exports = (path, callback) => { }); }; + // initFile(`${__dirname}/../assets/palette-bitmap.bmp`); diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index 1b4e6bd..d3d05bb 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -1,13 +1,12 @@ 'use strict'; -const fileHelper = require(`${__dirname}/../lib/bitmap-file-helper.js`); +const initFile = require(`${__dirname}/../lib/bitmap-file-helper.js`); const fs = require('fs'); - // module.exports = exports = {}; const bitObj = {}; -function BitConstructor(data){ +function Bitmap(data) { this.type = data.toString('utf-8', 0, 2); this.size = data.readInt32LE(2); this.pixelArrayStart = data.readInt32LE(10); @@ -17,16 +16,18 @@ function BitConstructor(data){ this.height = data.readInt32LE(22); // this.maxColorNum = data.readInt32LE(46); this.colorTableStart = this.headerSize + 14; - this.colorTable = data.toString('hex', this.colorTableStart, this.pixelArrayStart); + this.colorTable = data.toString('hex', this.colorTableStart, this.pixelArrayStart).match(/.{1,8}/g); - this.rowWidth = Math.ceil(((this.bitsPerPixel * this.width + 31)/32) * 4); + this.rowWidth = Math.ceil(((this.bitsPerPixel * this.width + 31) / 32) * 4); - this.buffer = data.toString('hex', 1078, this.size); + this.pixelTable = data.toString('hex', this.pixelArrayStart, this.size).match(/.{1,2}/g); } -fileHelper(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { - if(err) throw err; - bitObj.thingOne = new BitConstructor(data); +initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { + if (err) throw err; + bitObj.thingOne = new Bitmap(data); console.log(bitObj); - return data; + + return bitObj; }); + From 0e3d1a2e501bda5a2829b173a7a7b6bea4d9f2bb Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Fri, 21 Jul 2017 12:38:33 -0700 Subject: [PATCH 10/23] added writeFile func, started tests --- assets/palette-write-bitmap.bmp | Bin 0 -> 11078 bytes lib/bitmap-file-helper.js | 11 ++++++++--- model/bitmap-constructor.js | 7 +++---- test/bitmap-file-helper-test.js | 20 ++++++++++++++++++++ 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/assets/palette-write-bitmap.bmp b/assets/palette-write-bitmap.bmp index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..97ad0df321f8762c0bf9a7c50cf2f2177a19bd46 100644 GIT binary patch literal 11078 zcmeI1vCC~o6~!lD;l%@2EN*oR5z&B!&xb^Ufj~eDgCHp)VxbTT97mSQczLIiCsY!#mCx7OZs=G^bgdv-Q&-u>pxnR8~Xz1E(YbMAeweD%wp z87?n;XpHC8`cC~lH$LqCkA8ZLk9{P6<2iNlr}Fuae`37!{Flb(UVL+W@%4Adr@r^s z@#e4IAHV#=KgSFI`uF(SKYlSD{Ql8+`)6MmpMC4q@yS!hAq{NKtMyECSXr0vd5;0VB$56kII6NMl(l} zu=~|5_d8w^(ps+L1T9KL2FuQ~x5EBG3g9jlMR3|GA_0PmIj57{g2q7PB{WWvyN!@+ zYxoXmT@&7Cx_muj4(UE=N}+|Cvyp_a2{D~XQfagy3Oa{&DQ82_YC(Y*gC~5OL{m(+ zz{QbhkAOQDnO0%(jI+EKM<_%xl_)8mRLMZ|R6Y{F>irYU+nNyM)LC=NEHF^CJPL~3 zWCd32-H$;kgm#O%oVS+Kc{?fbGHinhQ7}n@@t|v9jx+x#Ax1M97sg589P}AUCL;n> ztwL>o){#4I>O)etU?@=G3l?Oit&Y7GNroKq zyr5NOK|M<0EF1wZ2HOO@i|28*y(5c3F7a~H1Ug>8LS6yxoPs{+s4I!Qa8YBcawq|q zwaDOPhYj6+z9?u0j&_P;mGp2kyGcU!Fa#n8`eXKsq!kscqFk z$t}@T!q@@?72pOBD(du)C$PhfhEigAy6;Yz_*WH?2T5rOH43{xJrrFdM@3UUF@Ri%W{is*c#4o%Nu=2{ zRvNIvp{0=%)oGCth_v$Ew_l$(cB8TtOAbO3dR-7R-pmqwbEt2406Yq0UQD&?++->U#lqa7M z{W=9zBtV}a_F>?XaC>!uf-V1M3hlSgmfvv#9E&XJ2p`9(Gm&8N)RkW%dAb}Dq0t;v ze6&xgW-JRq&)8r;Sq5%{Z}7@T&KlW<^@-Imv7GwLMRPz&zb$tuV}FZCD$J{)2ZDma zB{HJD1Qi0ji+Ri1-n2`W1Uv*g$tnQ?m2uWya#zNIAOLXK9!sHRe0Lsh*NFnhDAhdH zMe!5{228xcfVBRU{7zH2ajoyJ=B7n6(Lgr6qFptgL6 z2A_Tt``Uuvf^@_zeR20HEH%rGYqPBnGGUt+mP6^86B24ATx)QHL==7fFeoR1R+|Qo zSsDr+3Ro7Vmf*K)rj=+c;)!Mf<_`oeK{e5Wo^YyWbMnk$>S|g&ZDKiEfqQt-aGJk^ ziiL+sm01jbOYC+wnKdaD-91a#CBDQsz9L5Q|;*E@A5WJ-<5^fiO zoeBrf+bLp&2i;JPI}Gl#3^WT2*+uShkois*7#@s2ocL&bH~X9TVT1>$Y8T2TWRMRRL@YYwh?xu@7B$^a z<#3>P0d_*uW5aa7D6Nj-5WJZBPDVok5xATcK`yDDpyks%j~&--(=X$sLqB0o7374G zxw$C7wiJs9kr{KZYL^T%n|CUsup7GQ0p+56>}H+XG%E-VSg5kRY8hYEn)1Y`9_8F- zZJAi`C=^d&9T_q$0=BhSN8!UpvFrnhIu$-O@FX34ZHtg-XN+iY4HY1pRYWjC2^ra2VF1KvC zD9iL(weft?8q`u`Y9%eYu$?aKNQ;X3&EHhc>Lh^S(38_m$npw?(vf8Xk?${~7BvF0 zzT+muVwgBgqeDnsi%Axu6F2ckO7yc*km|ssFr8|_PGovfL`9KRZ ziygp4amy-wsz{D=Q;-o>;0IIS5a4`QZ3@jR?^>!nlkJ|I)|oP5<7vuP znMall?=Rsvgb>fG1nhi3gAB9v=BUY)?J?;gPZpIrF*5_qVs~iCBiEoK!Vf2-CnT1+k!q#}}jR4`Dm2$gsdvgsvRj0zm|{KI+ui(#}diBc?X>kQOc^kifi z)-Cf+!PYo7ZL{Ey`Y?{$=B)*rL%TNd)$sDyalMg=bz3r#8`;y&VL+8nMua(gBJgl& zZDTyQ~2i5&|3Fy{Xe=h$87~rCw literal 0 HcmV?d00001 diff --git a/lib/bitmap-file-helper.js b/lib/bitmap-file-helper.js index 74f31cb..9dcfec7 100644 --- a/lib/bitmap-file-helper.js +++ b/lib/bitmap-file-helper.js @@ -2,12 +2,17 @@ const fs = require('fs'); -const initFile = module.exports = (path, callback) => { +module.exports = exports = {}; + +exports.initFile = (path, callback) => { fs.readFile(path, (err, data) => { if(err) return callback(err); return callback(null, data); }); }; - -// initFile(`${__dirname}/../assets/palette-bitmap.bmp`); +exports.writeNew = (path, data) => { + fs.writeFile(path, data, (err) => { + if(err) return err; + }); +}; diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index d3d05bb..44bd75b 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -1,6 +1,6 @@ 'use strict'; -const initFile = require(`${__dirname}/../lib/bitmap-file-helper.js`); +const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); const fs = require('fs'); // module.exports = exports = {}; @@ -23,11 +23,10 @@ function Bitmap(data) { this.pixelTable = data.toString('hex', this.pixelArrayStart, this.size).match(/.{1,2}/g); } -initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { +fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { if (err) throw err; bitObj.thingOne = new Bitmap(data); console.log(bitObj); - + fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, data); return bitObj; }); - diff --git a/test/bitmap-file-helper-test.js b/test/bitmap-file-helper-test.js index e69de29..e815c8c 100644 --- a/test/bitmap-file-helper-test.js +++ b/test/bitmap-file-helper-test.js @@ -0,0 +1,20 @@ +'use strict'; + +const expect = require('chai').expect; +const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); + +describe('File Helper Module', function(){ + describe('Init File', () => { + fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { + it('Should not error', () => { + expect(err).to.not(err); + }); + it('Should have data', () => { + expect(data).to.exist(); + }); + }); + }); + describe('Write New', () => { + fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, `${__dirname}/../assets/palette-bitmap.bmp`); + }); +}); From daab686c2ba53062cb0bbd6aed561002c87bb914 Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Fri, 21 Jul 2017 13:02:02 -0700 Subject: [PATCH 11/23] modified constructor file to be more exportable --- model/bitmap-constructor.js | 22 ++++++++++++---------- test/bitmap-constructor-test.js | 10 ++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index 44bd75b..93a16a3 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -1,10 +1,10 @@ 'use strict'; const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); -const fs = require('fs'); -// module.exports = exports = {}; +// const fs = require('fs'); +module.exports = exports = {}; -const bitObj = {}; +exports.bitObj = {}; function Bitmap(data) { this.type = data.toString('utf-8', 0, 2); @@ -23,10 +23,12 @@ function Bitmap(data) { this.pixelTable = data.toString('hex', this.pixelArrayStart, this.size).match(/.{1,2}/g); } -fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { - if (err) throw err; - bitObj.thingOne = new Bitmap(data); - console.log(bitObj); - fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, data); - return bitObj; -}); +exports.changeFile = () => { + fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { + if (err) throw err; + exports.bitObj.thingOne = new Bitmap(data); + console.log(exports.bitObj); + fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, data); + return exports.bitObj; + }); +}; diff --git a/test/bitmap-constructor-test.js b/test/bitmap-constructor-test.js index e69de29..e6e427b 100644 --- a/test/bitmap-constructor-test.js +++ b/test/bitmap-constructor-test.js @@ -0,0 +1,10 @@ +'use strict'; + +const expect = require('chai').expect; +const BMConstructor = require(`${__dirname}/../model/bitmap-constructor.js`); + +describe('Bitmap Constructor Module', function(){ + describe('Constructor', () => { + + }); +}); From 94679b57aa4210f522ea715b381b40c9c252860c Mon Sep 17 00:00:00 2001 From: Luis Manzo Date: Fri, 21 Jul 2017 14:22:36 -0700 Subject: [PATCH 12/23] makes some incomplete progress in color transforming --- index.js | 19 +++++++++++++++++++ model/bitmap-constructor.js | 20 +++++--------------- model/color-constructor.js | 13 +++++++++++++ 3 files changed, 37 insertions(+), 15 deletions(-) create mode 100644 index.js create mode 100644 model/color-constructor.js diff --git a/index.js b/index.js new file mode 100644 index 0000000..2a04a0e --- /dev/null +++ b/index.js @@ -0,0 +1,19 @@ +let Bitmap = require(`${__dirname}/model/bitmap-constructor.js`); +let ColorTransform = require(`${__dirname}/model/color-constructor.js`); +let fileHelper = require(`${__dirname}/lib/bitmap-file-helper.js`); + +const changeFile = () => { + fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { + if (err) throw err; + let bitObj = new Bitmap(data); + let transform = new ColorTransform(bitObj); + console.log(bitObj); + console.log(transform.colorShift(bitObj)); + fileHelper.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, data); + }); + +}; + + +changeFile(); + diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index 93a16a3..ee611b4 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -1,12 +1,9 @@ 'use strict'; - const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); -// const fs = require('fs'); -module.exports = exports = {}; -exports.bitObj = {}; +// const fs = require('fs'); -function Bitmap(data) { +module.exports = function Bitmap (data) { this.type = data.toString('utf-8', 0, 2); this.size = data.readInt32LE(2); this.pixelArrayStart = data.readInt32LE(10); @@ -21,14 +18,7 @@ function Bitmap(data) { this.rowWidth = Math.ceil(((this.bitsPerPixel * this.width + 31) / 32) * 4); this.pixelTable = data.toString('hex', this.pixelArrayStart, this.size).match(/.{1,2}/g); -} - -exports.changeFile = () => { - fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { - if (err) throw err; - exports.bitObj.thingOne = new Bitmap(data); - console.log(exports.bitObj); - fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, data); - return exports.bitObj; + this.colorMap = this.pixelTable.map(function (pix) { + return parseInt(pix); }); -}; +}; \ No newline at end of file diff --git a/model/color-constructor.js b/model/color-constructor.js new file mode 100644 index 0000000..e3eca28 --- /dev/null +++ b/model/color-constructor.js @@ -0,0 +1,13 @@ +module.exports = function ColorTransform (bitmap) { +}; + +ColorTransform.prototype.colorShift = function(bitmap) { + let colorMap = bitmap.colorMap; + colorMap.map(function(pixel) { + console.log(pixel + 1); + return pixel + 1; + }) + + return colorMap; +}; + From 5d5d5f30bbabefc7bf8e45c41b493ea51f5254ca Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Fri, 21 Jul 2017 15:09:25 -0700 Subject: [PATCH 13/23] logan-firday --- index.js | 13 +++++++------ model/bitmap-constructor.js | 6 +----- model/color-constructor.js | 16 ++++++++-------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/index.js b/index.js index 2a04a0e..2ca8f44 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,5 @@ +'use strict'; + let Bitmap = require(`${__dirname}/model/bitmap-constructor.js`); let ColorTransform = require(`${__dirname}/model/color-constructor.js`); let fileHelper = require(`${__dirname}/lib/bitmap-file-helper.js`); @@ -6,14 +8,13 @@ const changeFile = () => { fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { if (err) throw err; let bitObj = new Bitmap(data); - let transform = new ColorTransform(bitObj); - console.log(bitObj); - console.log(transform.colorShift(bitObj)); - fileHelper.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, data); + let transform = new ColorTransform(); + bitObj.pixelTable = transform.colorShift(bitObj); + // console.log(bitObj.pixelTable); + console.log(bitObj.pixelTable); + fileHelper.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, bitObj); }); - }; changeFile(); - diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index ee611b4..72be219 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -1,7 +1,4 @@ 'use strict'; -const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); - -// const fs = require('fs'); module.exports = function Bitmap (data) { this.type = data.toString('utf-8', 0, 2); @@ -11,7 +8,6 @@ module.exports = function Bitmap (data) { this.bitsPerPixel = data.readInt32LE(28); this.width = data.readInt32LE(18); this.height = data.readInt32LE(22); - // this.maxColorNum = data.readInt32LE(46); this.colorTableStart = this.headerSize + 14; this.colorTable = data.toString('hex', this.colorTableStart, this.pixelArrayStart).match(/.{1,8}/g); @@ -21,4 +17,4 @@ module.exports = function Bitmap (data) { this.colorMap = this.pixelTable.map(function (pix) { return parseInt(pix); }); -}; \ No newline at end of file +}; diff --git a/model/color-constructor.js b/model/color-constructor.js index e3eca28..b806de4 100644 --- a/model/color-constructor.js +++ b/model/color-constructor.js @@ -1,13 +1,13 @@ -module.exports = function ColorTransform (bitmap) { +'use strict'; + +const ColorTransform = module.exports = function() { }; ColorTransform.prototype.colorShift = function(bitmap) { let colorMap = bitmap.colorMap; - colorMap.map(function(pixel) { - console.log(pixel + 1); - return pixel + 1; - }) - - return colorMap; + return colorMap.map(function(pixel) { + let newPix = pixel + 1; + console.log(newPix.toString(16)); + return newPix.toString(16); + }); }; - From d8698488f173cd19b12fcba3ceb9061dd3db753b Mon Sep 17 00:00:00 2001 From: Nick Asmussen Date: Fri, 21 Jul 2017 16:59:41 -0700 Subject: [PATCH 14/23] invert color transform and debugging --- assets/palette-write-bitmap.bmp | Bin 11078 -> 0 bytes index.js | 15 ++++++------ model/bitmap-constructor.js | 1 + model/color-constructor.js | 40 +++++++++++++++++++++++++++----- 4 files changed, 42 insertions(+), 14 deletions(-) delete mode 100644 assets/palette-write-bitmap.bmp diff --git a/assets/palette-write-bitmap.bmp b/assets/palette-write-bitmap.bmp deleted file mode 100644 index 97ad0df321f8762c0bf9a7c50cf2f2177a19bd46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11078 zcmeI1vCC~o6~!lD;l%@2EN*oR5z&B!&xb^Ufj~eDgCHp)VxbTT97mSQczLIiCsY!#mCx7OZs=G^bgdv-Q&-u>pxnR8~Xz1E(YbMAeweD%wp z87?n;XpHC8`cC~lH$LqCkA8ZLk9{P6<2iNlr}Fuae`37!{Flb(UVL+W@%4Adr@r^s z@#e4IAHV#=KgSFI`uF(SKYlSD{Ql8+`)6MmpMC4q@yS!hAq{NKtMyECSXr0vd5;0VB$56kII6NMl(l} zu=~|5_d8w^(ps+L1T9KL2FuQ~x5EBG3g9jlMR3|GA_0PmIj57{g2q7PB{WWvyN!@+ zYxoXmT@&7Cx_muj4(UE=N}+|Cvyp_a2{D~XQfagy3Oa{&DQ82_YC(Y*gC~5OL{m(+ zz{QbhkAOQDnO0%(jI+EKM<_%xl_)8mRLMZ|R6Y{F>irYU+nNyM)LC=NEHF^CJPL~3 zWCd32-H$;kgm#O%oVS+Kc{?fbGHinhQ7}n@@t|v9jx+x#Ax1M97sg589P}AUCL;n> ztwL>o){#4I>O)etU?@=G3l?Oit&Y7GNroKq zyr5NOK|M<0EF1wZ2HOO@i|28*y(5c3F7a~H1Ug>8LS6yxoPs{+s4I!Qa8YBcawq|q zwaDOPhYj6+z9?u0j&_P;mGp2kyGcU!Fa#n8`eXKsq!kscqFk z$t}@T!q@@?72pOBD(du)C$PhfhEigAy6;Yz_*WH?2T5rOH43{xJrrFdM@3UUF@Ri%W{is*c#4o%Nu=2{ zRvNIvp{0=%)oGCth_v$Ew_l$(cB8TtOAbO3dR-7R-pmqwbEt2406Yq0UQD&?++->U#lqa7M z{W=9zBtV}a_F>?XaC>!uf-V1M3hlSgmfvv#9E&XJ2p`9(Gm&8N)RkW%dAb}Dq0t;v ze6&xgW-JRq&)8r;Sq5%{Z}7@T&KlW<^@-Imv7GwLMRPz&zb$tuV}FZCD$J{)2ZDma zB{HJD1Qi0ji+Ri1-n2`W1Uv*g$tnQ?m2uWya#zNIAOLXK9!sHRe0Lsh*NFnhDAhdH zMe!5{228xcfVBRU{7zH2ajoyJ=B7n6(Lgr6qFptgL6 z2A_Tt``Uuvf^@_zeR20HEH%rGYqPBnGGUt+mP6^86B24ATx)QHL==7fFeoR1R+|Qo zSsDr+3Ro7Vmf*K)rj=+c;)!Mf<_`oeK{e5Wo^YyWbMnk$>S|g&ZDKiEfqQt-aGJk^ ziiL+sm01jbOYC+wnKdaD-91a#CBDQsz9L5Q|;*E@A5WJ-<5^fiO zoeBrf+bLp&2i;JPI}Gl#3^WT2*+uShkois*7#@s2ocL&bH~X9TVT1>$Y8T2TWRMRRL@YYwh?xu@7B$^a z<#3>P0d_*uW5aa7D6Nj-5WJZBPDVok5xATcK`yDDpyks%j~&--(=X$sLqB0o7374G zxw$C7wiJs9kr{KZYL^T%n|CUsup7GQ0p+56>}H+XG%E-VSg5kRY8hYEn)1Y`9_8F- zZJAi`C=^d&9T_q$0=BhSN8!UpvFrnhIu$-O@FX34ZHtg-XN+iY4HY1pRYWjC2^ra2VF1KvC zD9iL(weft?8q`u`Y9%eYu$?aKNQ;X3&EHhc>Lh^S(38_m$npw?(vf8Xk?${~7BvF0 zzT+muVwgBgqeDnsi%Axu6F2ckO7yc*km|ssFr8|_PGovfL`9KRZ ziygp4amy-wsz{D=Q;-o>;0IIS5a4`QZ3@jR?^>!nlkJ|I)|oP5<7vuP znMall?=Rsvgb>fG1nhi3gAB9v=BUY)?J?;gPZpIrF*5_qVs~iCBiEoK!Vf2-CnT1+k!q#}}jR4`Dm2$gsdvgsvRj0zm|{KI+ui(#}diBc?X>kQOc^kifi z)-Cf+!PYo7ZL{Ey`Y?{$=B)*rL%TNd)$sDyalMg=bz3r#8`;y&VL+8nMua(gBJgl& zZDTyQ~2i5&|3Fy{Xe=h$87~rCw diff --git a/index.js b/index.js index 2ca8f44..993c352 100644 --- a/index.js +++ b/index.js @@ -4,17 +4,16 @@ let Bitmap = require(`${__dirname}/model/bitmap-constructor.js`); let ColorTransform = require(`${__dirname}/model/color-constructor.js`); let fileHelper = require(`${__dirname}/lib/bitmap-file-helper.js`); -const changeFile = () => { +const invertBitmap = () => { fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { if (err) throw err; - let bitObj = new Bitmap(data); + + let bitmap = new Bitmap(data); let transform = new ColorTransform(); - bitObj.pixelTable = transform.colorShift(bitObj); - // console.log(bitObj.pixelTable); - console.log(bitObj.pixelTable); - fileHelper.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, bitObj); + bitmap.colorTable = transform.invertColors(bitmap); + + fileHelper.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, bitmap); }); }; - -changeFile(); +invertBitmap(); diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index 72be219..2f7ece0 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -9,6 +9,7 @@ module.exports = function Bitmap (data) { this.width = data.readInt32LE(18); this.height = data.readInt32LE(22); this.colorTableStart = this.headerSize + 14; + this.colorTable = data.toString('hex', this.colorTableStart, this.pixelArrayStart).match(/.{1,8}/g); this.rowWidth = Math.ceil(((this.bitsPerPixel * this.width + 31) / 32) * 4); diff --git a/model/color-constructor.js b/model/color-constructor.js index b806de4..aea9acb 100644 --- a/model/color-constructor.js +++ b/model/color-constructor.js @@ -3,11 +3,39 @@ const ColorTransform = module.exports = function() { }; -ColorTransform.prototype.colorShift = function(bitmap) { - let colorMap = bitmap.colorMap; - return colorMap.map(function(pixel) { - let newPix = pixel + 1; - console.log(newPix.toString(16)); - return newPix.toString(16); +// ColorTransform.prototype.colorShift = function(bitmap) { +// let colorMap = bitmap.colorMap; +// return colorMap.map(function(pixel) { +// let newPix = pixel + 1; +// console.log(newPix.toString(16)); +// return newPix.toString(16); +// }); +// }; + +ColorTransform.prototype.invertColors = function(bitmap) { + let colorTable = bitmap.colorTable; + + return colorTable.map(function(hexColor){ + let hexArray = hexColor.match(/.{1,2}/g); + + let r = parseInt(hexArray[0], 16); + let g = parseInt(hexArray[1], 16); + let b = parseInt(hexArray[2], 16); + let invertR = (255 - r).toString(16); + let invertG = (255 - g).toString(16); + let invertB = (255 - b).toString(16); + + let invertArray = [invertR, invertG, invertB, '00']; + + invertArray.forEach(function(val, i){ + if(val.length === 1) { + invertArray[i] = '0'+invertArray[i]; + } + }); + + invertArray = invertArray.join(''); + return invertArray; }); }; +// +// ColorTransform.prototype.shiftColors = function From c7f6d7b50a1ae3b33f49f8da0cd2a92067a73068 Mon Sep 17 00:00:00 2001 From: Nick Asmussen Date: Sat, 22 Jul 2017 11:26:03 -0700 Subject: [PATCH 15/23] adds a rotation transform --- index.js | 19 +++++++++++++++++-- model/color-constructor.js | 10 ++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 993c352..27de198 100644 --- a/index.js +++ b/index.js @@ -4,16 +4,31 @@ let Bitmap = require(`${__dirname}/model/bitmap-constructor.js`); let ColorTransform = require(`${__dirname}/model/color-constructor.js`); let fileHelper = require(`${__dirname}/lib/bitmap-file-helper.js`); +var transform = new ColorTransform(); + const invertBitmap = () => { fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { if (err) throw err; let bitmap = new Bitmap(data); - let transform = new ColorTransform(); bitmap.colorTable = transform.invertColors(bitmap); fileHelper.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, bitmap); }); }; -invertBitmap(); +const rotateBitmap = () => { + fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { + if (err) throw err; + + let bitmap = new Bitmap(data); + bitmap.pixelTable = transform.rotateImage(bitmap); + + console.log('rotated bitmap', bitmap); + + fileHelper.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, bitmap); + }); +}; + +// invertBitmap(); +rotateBitmap(); diff --git a/model/color-constructor.js b/model/color-constructor.js index aea9acb..741e292 100644 --- a/model/color-constructor.js +++ b/model/color-constructor.js @@ -37,5 +37,11 @@ ColorTransform.prototype.invertColors = function(bitmap) { return invertArray; }); }; -// -// ColorTransform.prototype.shiftColors = function + +ColorTransform.prototype.rotateImage = function(bitmap) { + + let pixelTable = bitmap.pixelTable; + + return pixelTable.reverse(); + +}; From 4a90cd42273377cad5a297669ab24982fa813328 Mon Sep 17 00:00:00 2001 From: Luis Manzo Date: Sat, 22 Jul 2017 16:28:13 -0700 Subject: [PATCH 16/23] writes bitmap to a new file, also adds a color shift transform --- index.js | 12 +++++++++--- lib/bitmap-file-helper.js | 7 ++++--- model/color-constructor.js | 40 ++++++++++++++++++++++++++++++-------- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/index.js b/index.js index 993c352..970567d 100644 --- a/index.js +++ b/index.js @@ -5,15 +5,21 @@ let ColorTransform = require(`${__dirname}/model/color-constructor.js`); let fileHelper = require(`${__dirname}/lib/bitmap-file-helper.js`); const invertBitmap = () => { - fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { + + let onRead = (err, data) => { if (err) throw err; let bitmap = new Bitmap(data); let transform = new ColorTransform(); + bitmap.colorTable = transform.blueShift(bitmap); bitmap.colorTable = transform.invertColors(bitmap); + console.log(data); + + let bufferedBitmap = new Buffer(bitmap.pixelTable.join('')); + fileHelper.writeNew(`${__dirname}/assets/palette-write-bitmap.bmp`, data /*insert changed bitmap here*/, exports.writeNew); + }; - fileHelper.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, bitmap); - }); + fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; invertBitmap(); diff --git a/lib/bitmap-file-helper.js b/lib/bitmap-file-helper.js index 9dcfec7..b05146d 100644 --- a/lib/bitmap-file-helper.js +++ b/lib/bitmap-file-helper.js @@ -12,7 +12,8 @@ exports.initFile = (path, callback) => { }; exports.writeNew = (path, data) => { - fs.writeFile(path, data, (err) => { - if(err) return err; - }); + return fs.writeFile(path, data, (err, data) => { + if(err) console.log(err); + return data; + }) }; diff --git a/model/color-constructor.js b/model/color-constructor.js index aea9acb..f4562fd 100644 --- a/model/color-constructor.js +++ b/model/color-constructor.js @@ -1,6 +1,6 @@ 'use strict'; -const ColorTransform = module.exports = function() { +const ColorTransform = module.exports = function () { }; // ColorTransform.prototype.colorShift = function(bitmap) { @@ -12,10 +12,10 @@ const ColorTransform = module.exports = function() { // }); // }; -ColorTransform.prototype.invertColors = function(bitmap) { +ColorTransform.prototype.invertColors = function (bitmap) { let colorTable = bitmap.colorTable; - return colorTable.map(function(hexColor){ + return colorTable.map(function (hexColor) { let hexArray = hexColor.match(/.{1,2}/g); let r = parseInt(hexArray[0], 16); @@ -26,10 +26,11 @@ ColorTransform.prototype.invertColors = function(bitmap) { let invertB = (255 - b).toString(16); let invertArray = [invertR, invertG, invertB, '00']; + // console.log(invertArray); - invertArray.forEach(function(val, i){ - if(val.length === 1) { - invertArray[i] = '0'+invertArray[i]; + invertArray.forEach(function (val, i) { + if (val.length === 1) { + invertArray[i] = '0' + invertArray[i]; } }); @@ -37,5 +38,28 @@ ColorTransform.prototype.invertColors = function(bitmap) { return invertArray; }); }; -// -// ColorTransform.prototype.shiftColors = function + +ColorTransform.prototype.blueShift = function (bitmap) { + let colorTable = bitmap.colorTable; + return colorTable.map(function (hexColor) { + let hexArray = hexColor.match(/.{1,2}/g); + + let r = parseInt(hexArray[0], 16); + let g = parseInt(hexArray[1], 16); + let b = parseInt(hexArray[2], 16); + let invertR = (Math.ceil(r * 0.33)).toString(16); + let invertG = (g).toString(16); + let invertB = (b).toString(16); + + let colorShiftArray = [invertR, invertG, invertB, '00']; + colorShiftArray.forEach(function (val, i) { + if (val.length === 1) { + colorShiftArray[i] = '0' + colorShiftArray[i]; + } + }); + + colorShiftArray = colorShiftArray.join(''); + return colorShiftArray; + }); +}; + From 5e0da7ad11b23da457d8e64f3bff27b29af4e58c Mon Sep 17 00:00:00 2001 From: Luis Manzo Date: Sat, 22 Jul 2017 18:22:02 -0700 Subject: [PATCH 17/23] writes inverted image to bitmap --- index.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 970567d..6da8407 100644 --- a/index.js +++ b/index.js @@ -11,12 +11,20 @@ const invertBitmap = () => { let bitmap = new Bitmap(data); let transform = new ColorTransform(); - bitmap.colorTable = transform.blueShift(bitmap); + // bitmap.colorTable = transform.blueShift(bitmap); bitmap.colorTable = transform.invertColors(bitmap); - console.log(data); + // let copiedData = data.copy(); + let copied = new Buffer(data); - let bufferedBitmap = new Buffer(bitmap.pixelTable.join('')); - fileHelper.writeNew(`${__dirname}/assets/palette-write-bitmap.bmp`, data /*insert changed bitmap here*/, exports.writeNew); + //inserts new color table + let startToColorTable = copied.slice(0, bitmap.headerSize + 14); + console.log(bitmap.headerSize); + let subColorTableBuffer = new Buffer(bitmap.colorTable.join(''), 'hex'); + let colorTableToEnd = copied.slice(data.readInt32LE(10)); + let testcopy = Buffer.concat([startToColorTable, subColorTableBuffer, colorTableToEnd ]); + + + fileHelper.writeNew(`${__dirname}/assets/palette-write-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); }; fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); From 0b8471380b6595b44093b2b6ed52a90e81138843 Mon Sep 17 00:00:00 2001 From: Luis Manzo Date: Sat, 22 Jul 2017 18:43:34 -0700 Subject: [PATCH 18/23] adds red color shift transform --- assets/palette-write-bitmap.bmp | Bin 0 -> 11078 bytes index.js | 29 ++++++++++++++++++++++++++++- model/color-constructor.js | 4 ++-- 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 assets/palette-write-bitmap.bmp diff --git a/assets/palette-write-bitmap.bmp b/assets/palette-write-bitmap.bmp new file mode 100644 index 0000000000000000000000000000000000000000..93fec7747e31304b96351e4a65be32e3ac840018 GIT binary patch literal 11078 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 JYpg$){{kudh@Jod literal 0 HcmV?d00001 diff --git a/index.js b/index.js index b331fb9..3369e71 100644 --- a/index.js +++ b/index.js @@ -32,6 +32,32 @@ const invertBitmap = () => { fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; +const colorShiftBitmap = () => { + + let onRead = (err, data) => { + if (err) throw err; + + let bitmap = new Bitmap(data); + let transform = new ColorTransform(); + bitmap.colorTable = transform.blueShift(bitmap); + // bitmap.colorTable = transform.invertColors(bitmap); + // let copiedData = data.copy(); + let copied = new Buffer(data); + + //inserts new color table + let startToColorTable = copied.slice(0, bitmap.headerSize + 14); + console.log(bitmap.headerSize); + let subColorTableBuffer = new Buffer(bitmap.colorTable.join(''), 'hex'); + let colorTableToEnd = copied.slice(data.readInt32LE(10)); + let testcopy = Buffer.concat([startToColorTable, subColorTableBuffer, colorTableToEnd]); + + + fileHelper.writeNew(`${__dirname}/assets/palette-write-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); + }; + + fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); +}; + const rotateBitmap = () => { fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { if (err) throw err; @@ -45,5 +71,6 @@ const rotateBitmap = () => { }); }; -invertBitmap(); +colorShiftBitmap(); +// invertBitmap(); // rotateBitmap(); diff --git a/model/color-constructor.js b/model/color-constructor.js index 913f294..32901ef 100644 --- a/model/color-constructor.js +++ b/model/color-constructor.js @@ -47,8 +47,8 @@ ColorTransform.prototype.blueShift = function (bitmap) { let r = parseInt(hexArray[0], 16); let g = parseInt(hexArray[1], 16); let b = parseInt(hexArray[2], 16); - let invertR = (Math.ceil(r * 0.33)).toString(16); - let invertG = (g).toString(16); + let invertR = (Math.ceil(r * 0.1)).toString(16); + let invertG = (Math.ceil(g * 0.1)).toString(16); let invertB = (b).toString(16); let colorShiftArray = [invertR, invertG, invertB, '00']; From 4db0412c9e7ff0f3ec08c692bf2e493e8858b0c9 Mon Sep 17 00:00:00 2001 From: Nick Asmussen Date: Sun, 23 Jul 2017 15:16:33 -0700 Subject: [PATCH 19/23] writes the rotated image --- assets/palette-invert-bitmap.bmp | Bin 0 -> 11078 bytes assets/palette-rotate-bitmap.bmp | Bin 0 -> 11078 bytes assets/palette-shift-bitmap.bmp | Bin 0 -> 11078 bytes index.js | 40 ++++++++++++++++--------------- lib/bitmap-file-helper.js | 2 +- 5 files changed, 22 insertions(+), 20 deletions(-) create mode 100644 assets/palette-invert-bitmap.bmp create mode 100644 assets/palette-rotate-bitmap.bmp create mode 100644 assets/palette-shift-bitmap.bmp diff --git a/assets/palette-invert-bitmap.bmp b/assets/palette-invert-bitmap.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d835124ae712ff2c2b3374af2d7eddf96fca5b4f GIT binary patch literal 11078 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 CgQA`Q literal 0 HcmV?d00001 diff --git a/assets/palette-shift-bitmap.bmp b/assets/palette-shift-bitmap.bmp new file mode 100644 index 0000000000000000000000000000000000000000..93fec7747e31304b96351e4a65be32e3ac840018 GIT binary patch literal 11078 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 JYpg$){{kudh@Jod literal 0 HcmV?d00001 diff --git a/index.js b/index.js index 3369e71..bc8e9f6 100644 --- a/index.js +++ b/index.js @@ -4,8 +4,6 @@ let Bitmap = require(`${__dirname}/model/bitmap-constructor.js`); let ColorTransform = require(`${__dirname}/model/color-constructor.js`); let fileHelper = require(`${__dirname}/lib/bitmap-file-helper.js`); -var transform = new ColorTransform(); - const invertBitmap = () => { let onRead = (err, data) => { @@ -13,20 +11,18 @@ const invertBitmap = () => { let bitmap = new Bitmap(data); let transform = new ColorTransform(); - // bitmap.colorTable = transform.blueShift(bitmap); - bitmap.colorTable = transform.invertColors(bitmap); - // let copiedData = data.copy(); let copied = new Buffer(data); + bitmap.colorTable = transform.invertColors(bitmap); + //inserts new color table let startToColorTable = copied.slice(0, bitmap.headerSize + 14); - console.log(bitmap.headerSize); let subColorTableBuffer = new Buffer(bitmap.colorTable.join(''), 'hex'); let colorTableToEnd = copied.slice(data.readInt32LE(10)); let testcopy = Buffer.concat([startToColorTable, subColorTableBuffer, colorTableToEnd]); - fileHelper.writeNew(`${__dirname}/assets/palette-write-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); + fileHelper.writeNew(`${__dirname}/assets/palette-invert-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); }; fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); @@ -39,38 +35,44 @@ const colorShiftBitmap = () => { let bitmap = new Bitmap(data); let transform = new ColorTransform(); - bitmap.colorTable = transform.blueShift(bitmap); - // bitmap.colorTable = transform.invertColors(bitmap); - // let copiedData = data.copy(); let copied = new Buffer(data); + bitmap.colorTable = transform.blueShift(bitmap); + //inserts new color table let startToColorTable = copied.slice(0, bitmap.headerSize + 14); - console.log(bitmap.headerSize); let subColorTableBuffer = new Buffer(bitmap.colorTable.join(''), 'hex'); let colorTableToEnd = copied.slice(data.readInt32LE(10)); let testcopy = Buffer.concat([startToColorTable, subColorTableBuffer, colorTableToEnd]); - - fileHelper.writeNew(`${__dirname}/assets/palette-write-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); + fileHelper.writeNew(`${__dirname}/assets/palette-shift-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); }; fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; const rotateBitmap = () => { - fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { + + let onRead = (err, data) => { if (err) throw err; let bitmap = new Bitmap(data); + let transform = new ColorTransform(); + let copied = new Buffer(data); + bitmap.pixelTable = transform.rotateImage(bitmap); - console.log('rotated bitmap', bitmap); + // inserts new pixel arr + let startPixelTable = copied.slice(0, bitmap.pixelArrayStart); + let pixelArrBuffer = new Buffer(bitmap.pixelTable.join(''), 'hex'); + let testcopy = Buffer.concat([startPixelTable, pixelArrBuffer]); + + fileHelper.writeNew(`${__dirname}/assets/palette-rotate-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); + }; - fileHelper.writeNew(`${__dirname}/assets/palette-write-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); - }); + fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; colorShiftBitmap(); -// invertBitmap(); -// rotateBitmap(); +invertBitmap(); +rotateBitmap(); diff --git a/lib/bitmap-file-helper.js b/lib/bitmap-file-helper.js index b05146d..e46b8bb 100644 --- a/lib/bitmap-file-helper.js +++ b/lib/bitmap-file-helper.js @@ -15,5 +15,5 @@ exports.writeNew = (path, data) => { return fs.writeFile(path, data, (err, data) => { if(err) console.log(err); return data; - }) + }); }; From c370a73a96ef09e28716828daa8d0db7dd061239 Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Sun, 23 Jul 2017 16:18:22 -0700 Subject: [PATCH 20/23] fixed testing bug --- assets/palette-write-bitmap.bmp | Bin 11078 -> 108 bytes lib/bitmap-file-helper.js | 2 +- test/bitmap-constructor-test.js | 2 +- test/bitmap-file-helper-test.js | 20 ++++++++++++++------ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/assets/palette-write-bitmap.bmp b/assets/palette-write-bitmap.bmp index 93fec7747e31304b96351e4a65be32e3ac840018..18822905db0ef5cc13ade73b03e237231745c630 100644 GIT binary patch literal 108 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 JYpg$){{kudh@Jod diff --git a/lib/bitmap-file-helper.js b/lib/bitmap-file-helper.js index b05146d..e46b8bb 100644 --- a/lib/bitmap-file-helper.js +++ b/lib/bitmap-file-helper.js @@ -15,5 +15,5 @@ exports.writeNew = (path, data) => { return fs.writeFile(path, data, (err, data) => { if(err) console.log(err); return data; - }) + }); }; diff --git a/test/bitmap-constructor-test.js b/test/bitmap-constructor-test.js index e6e427b..b2a8586 100644 --- a/test/bitmap-constructor-test.js +++ b/test/bitmap-constructor-test.js @@ -5,6 +5,6 @@ const BMConstructor = require(`${__dirname}/../model/bitmap-constructor.js`); describe('Bitmap Constructor Module', function(){ describe('Constructor', () => { - + }); }); diff --git a/test/bitmap-file-helper-test.js b/test/bitmap-file-helper-test.js index e815c8c..8bcd5e5 100644 --- a/test/bitmap-file-helper-test.js +++ b/test/bitmap-file-helper-test.js @@ -5,16 +5,24 @@ const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); describe('File Helper Module', function(){ describe('Init File', () => { - fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { - it('Should not error', () => { - expect(err).to.not(err); + it('Should not error', (done) => { + fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, function(err, data){ + console.log(err); + expect(err).to.equal(null); + done(); }); - it('Should have data', () => { - expect(data).to.exist(); + }); + it('Should find data', (done) => { + fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, function(err, data){ + console.log(data); + expect(data).to.not.equal(null); + done(); }); }); }); describe('Write New', () => { - fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, `${__dirname}/../assets/palette-bitmap.bmp`); + it('Should ', () => { + fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, `${__dirname}/../assets/palette-bitmap.bmp`); + }); }); }); From 0004ee31d747ad07c1d8aadf6b8bc4f78db25a19 Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Mon, 24 Jul 2017 08:23:20 -0700 Subject: [PATCH 21/23] working on testing --- assets/palette-write-bitmap.bmp | 1 - index.js | 14 +++++++----- lib/bitmap-file-helper.js | 9 +++++++- test/bitmap-constructor-test.js | 39 +++++++++++++++++++++++++++++---- test/bitmap-file-helper-test.js | 28 ++++++++++++++++++----- 5 files changed, 74 insertions(+), 17 deletions(-) diff --git a/assets/palette-write-bitmap.bmp b/assets/palette-write-bitmap.bmp index 1882290..e69de29 100644 --- a/assets/palette-write-bitmap.bmp +++ b/assets/palette-write-bitmap.bmp @@ -1 +0,0 @@ -/Users/susanmcgogney/codefellows/401/lab-assignments/04-bitmap_transformer/test/../assets/palette-bitmap.bmp \ No newline at end of file diff --git a/index.js b/index.js index 3369e71..a83611e 100644 --- a/index.js +++ b/index.js @@ -6,7 +6,9 @@ let fileHelper = require(`${__dirname}/lib/bitmap-file-helper.js`); var transform = new ColorTransform(); -const invertBitmap = () => { +module.exports = exports = {}; + +exports.invertBitmap = () => { let onRead = (err, data) => { if (err) throw err; @@ -32,7 +34,7 @@ const invertBitmap = () => { fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; -const colorShiftBitmap = () => { +exports.colorShiftBitmap = () => { let onRead = (err, data) => { if (err) throw err; @@ -58,7 +60,7 @@ const colorShiftBitmap = () => { fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; -const rotateBitmap = () => { +exports.rotateBitmap = () => { fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { if (err) throw err; @@ -71,6 +73,6 @@ const rotateBitmap = () => { }); }; -colorShiftBitmap(); -// invertBitmap(); -// rotateBitmap(); +exports.colorShiftBitmap(); +// exports.invertBitmap(); +// exports.rotateBitmap(); diff --git a/lib/bitmap-file-helper.js b/lib/bitmap-file-helper.js index e46b8bb..8ad91db 100644 --- a/lib/bitmap-file-helper.js +++ b/lib/bitmap-file-helper.js @@ -13,7 +13,14 @@ exports.initFile = (path, callback) => { exports.writeNew = (path, data) => { return fs.writeFile(path, data, (err, data) => { - if(err) console.log(err); + if(err) return err; + return data; + }); +}; + +exports.eraseFile = (path) => { + return fs.writeFile(path, '', (err, data) => { + if(err) return err; return data; }); }; diff --git a/test/bitmap-constructor-test.js b/test/bitmap-constructor-test.js index b2a8586..53ac543 100644 --- a/test/bitmap-constructor-test.js +++ b/test/bitmap-constructor-test.js @@ -1,10 +1,41 @@ 'use strict'; const expect = require('chai').expect; -const BMConstructor = require(`${__dirname}/../model/bitmap-constructor.js`); - -describe('Bitmap Constructor Module', function(){ - describe('Constructor', () => { +const index = require(`${__dirname}/../index.js`); +const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); +describe('Bitmap Constructor Module', () => { + describe('#Invert Bitmap', () => { + it('Should have a new file written', (done) => { + fileReader.eraseFile(`${__dirname}/../assets/palette-write-bitmap.bmp`); + index.invertBitmap(); + fileReader.initFile(`${__dirname}/../assets/palette-write-bitmap.bmp`, (err, data) => { + expect(err).to.equal(null); + expect(data).to.not.equal(null); + done(); + }); + }); + }); + describe('#Color Shift Bitmap', () => { + it('Should have a new file written', (done) => { + fileReader.eraseFile(`${__dirname}/../assets/palette-write-bitmap.bmp`); + index.colorShiftBitmap(); + fileReader.initFile(`${__dirname}/../assets/palette-write-bitmap.bmp`, (err, data) => { + expect(err).to.equal(null); + expect(data).to.not.equal(null); + done(); + }); + }); + }); + describe('#Rotate Bitmap', () => { + it('Should have a new file written', (done) => { + fileReader.eraseFile(`${__dirname}/../assets/palette-write-bitmap.bmp`); + index.rotateBitmap(); + fileReader.initFile(`${__dirname}/../assets/palette-write-bitmap.bmp`, (err, data) => { + expect(err).to.equal(null); + expect(data).to.not.equal(null); + done(); + }); + }); }); }); diff --git a/test/bitmap-file-helper-test.js b/test/bitmap-file-helper-test.js index 8bcd5e5..ee901e0 100644 --- a/test/bitmap-file-helper-test.js +++ b/test/bitmap-file-helper-test.js @@ -4,25 +4,43 @@ const expect = require('chai').expect; const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); describe('File Helper Module', function(){ - describe('Init File', () => { + describe('#Init File', () => { it('Should not error', (done) => { - fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, function(err, data){ + fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { console.log(err); expect(err).to.equal(null); done(); }); }); it('Should find data', (done) => { - fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, function(err, data){ + fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { console.log(data); expect(data).to.not.equal(null); done(); }); }); }); - describe('Write New', () => { - it('Should ', () => { + describe('#Write New', () => { + it('Should write new file', (done) => { + fileReader.eraseFile(`${__dirname}/../assets/palette-write-bitmap.bmp`); fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, `${__dirname}/../assets/palette-bitmap.bmp`); + fileReader.initFile(`${__dirname}/../assets/palette-write-bitmap.bmp`, (err, data) => { + expect(err).to.equal(null); + expect(data).to.not.equal(null); + done(); + }); + }); + }); + describe('#Erase file', () => { + it('Should erase palette-write-bitmap.bmp', (done) => { + fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { + expect(err).to.equal(null); + fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, data); + expect(data).to.not.equal(null); + fileReader.eraseFile(`${__dirname}/../assets/palette-write-bitmap.bmp`); + expect() + done(); + }); }); }); }); From 7561d01c6e657b10c5b5d17180cc26fbc52ee16b Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Mon, 24 Jul 2017 08:43:20 -0700 Subject: [PATCH 22/23] basic testing done --- assets/palette-write-bitmap.bmp | Bin 0 -> 11078 bytes index.js | 28 ++++++++++++++-------------- test/bitmap-constructor-test.js | 12 ++++++------ 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/assets/palette-write-bitmap.bmp b/assets/palette-write-bitmap.bmp index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..97ad0df321f8762c0bf9a7c50cf2f2177a19bd46 100644 GIT binary patch literal 11078 zcmeI1vCC~o6~!lD;l%@2EN*oR5z&B!&xb^Ufj~eDgCHp)VxbTT97mSQczLIiCsY!#mCx7OZs=G^bgdv-Q&-u>pxnR8~Xz1E(YbMAeweD%wp z87?n;XpHC8`cC~lH$LqCkA8ZLk9{P6<2iNlr}Fuae`37!{Flb(UVL+W@%4Adr@r^s z@#e4IAHV#=KgSFI`uF(SKYlSD{Ql8+`)6MmpMC4q@yS!hAq{NKtMyECSXr0vd5;0VB$56kII6NMl(l} zu=~|5_d8w^(ps+L1T9KL2FuQ~x5EBG3g9jlMR3|GA_0PmIj57{g2q7PB{WWvyN!@+ zYxoXmT@&7Cx_muj4(UE=N}+|Cvyp_a2{D~XQfagy3Oa{&DQ82_YC(Y*gC~5OL{m(+ zz{QbhkAOQDnO0%(jI+EKM<_%xl_)8mRLMZ|R6Y{F>irYU+nNyM)LC=NEHF^CJPL~3 zWCd32-H$;kgm#O%oVS+Kc{?fbGHinhQ7}n@@t|v9jx+x#Ax1M97sg589P}AUCL;n> ztwL>o){#4I>O)etU?@=G3l?Oit&Y7GNroKq zyr5NOK|M<0EF1wZ2HOO@i|28*y(5c3F7a~H1Ug>8LS6yxoPs{+s4I!Qa8YBcawq|q zwaDOPhYj6+z9?u0j&_P;mGp2kyGcU!Fa#n8`eXKsq!kscqFk z$t}@T!q@@?72pOBD(du)C$PhfhEigAy6;Yz_*WH?2T5rOH43{xJrrFdM@3UUF@Ri%W{is*c#4o%Nu=2{ zRvNIvp{0=%)oGCth_v$Ew_l$(cB8TtOAbO3dR-7R-pmqwbEt2406Yq0UQD&?++->U#lqa7M z{W=9zBtV}a_F>?XaC>!uf-V1M3hlSgmfvv#9E&XJ2p`9(Gm&8N)RkW%dAb}Dq0t;v ze6&xgW-JRq&)8r;Sq5%{Z}7@T&KlW<^@-Imv7GwLMRPz&zb$tuV}FZCD$J{)2ZDma zB{HJD1Qi0ji+Ri1-n2`W1Uv*g$tnQ?m2uWya#zNIAOLXK9!sHRe0Lsh*NFnhDAhdH zMe!5{228xcfVBRU{7zH2ajoyJ=B7n6(Lgr6qFptgL6 z2A_Tt``Uuvf^@_zeR20HEH%rGYqPBnGGUt+mP6^86B24ATx)QHL==7fFeoR1R+|Qo zSsDr+3Ro7Vmf*K)rj=+c;)!Mf<_`oeK{e5Wo^YyWbMnk$>S|g&ZDKiEfqQt-aGJk^ ziiL+sm01jbOYC+wnKdaD-91a#CBDQsz9L5Q|;*E@A5WJ-<5^fiO zoeBrf+bLp&2i;JPI}Gl#3^WT2*+uShkois*7#@s2ocL&bH~X9TVT1>$Y8T2TWRMRRL@YYwh?xu@7B$^a z<#3>P0d_*uW5aa7D6Nj-5WJZBPDVok5xATcK`yDDpyks%j~&--(=X$sLqB0o7374G zxw$C7wiJs9kr{KZYL^T%n|CUsup7GQ0p+56>}H+XG%E-VSg5kRY8hYEn)1Y`9_8F- zZJAi`C=^d&9T_q$0=BhSN8!UpvFrnhIu$-O@FX34ZHtg-XN+iY4HY1pRYWjC2^ra2VF1KvC zD9iL(weft?8q`u`Y9%eYu$?aKNQ;X3&EHhc>Lh^S(38_m$npw?(vf8Xk?${~7BvF0 zzT+muVwgBgqeDnsi%Axu6F2ckO7yc*km|ssFr8|_PGovfL`9KRZ ziygp4amy-wsz{D=Q;-o>;0IIS5a4`QZ3@jR?^>!nlkJ|I)|oP5<7vuP znMall?=Rsvgb>fG1nhi3gAB9v=BUY)?J?;gPZpIrF*5_qVs~iCBiEoK!Vf2-CnT1+k!q#}}jR4`Dm2$gsdvgsvRj0zm|{KI+ui(#}diBc?X>kQOc^kifi z)-Cf+!PYo7ZL{Ey`Y?{$=B)*rL%TNd)$sDyalMg=bz3r#8`;y&VL+8nMua(gBJgl& zZDTyQ~2i5&|3Fy{Xe=h$87~rCw literal 0 HcmV?d00001 diff --git a/index.js b/index.js index 6699a21..9ab8c17 100644 --- a/index.js +++ b/index.js @@ -55,25 +55,25 @@ exports.colorShiftBitmap = () => { fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; - let onRead = (err, data) => { exports.rotateBitmap = () => { - fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { - if (err) throw err; - - let bitmap = new Bitmap(data); - let transform = new ColorTransform(); - let copied = new Buffer(data); + let onRead = (err, data) => { + fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, (err, data) => { + if (err) throw err; - bitmap.pixelTable = transform.rotateImage(bitmap); + let bitmap = new Bitmap(data); + let transform = new ColorTransform(); + let copied = new Buffer(data); - // inserts new pixel arr - let startPixelTable = copied.slice(0, bitmap.pixelArrayStart); - let pixelArrBuffer = new Buffer(bitmap.pixelTable.join(''), 'hex'); - let testcopy = Buffer.concat([startPixelTable, pixelArrBuffer]); + bitmap.pixelTable = transform.rotateImage(bitmap); - fileHelper.writeNew(`${__dirname}/assets/palette-rotate-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); - }; + // inserts new pixel arr + let startPixelTable = copied.slice(0, bitmap.pixelArrayStart); + let pixelArrBuffer = new Buffer(bitmap.pixelTable.join(''), 'hex'); + let testcopy = Buffer.concat([startPixelTable, pixelArrBuffer]); + fileHelper.writeNew(`${__dirname}/assets/palette-rotate-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); + }); + } fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; diff --git a/test/bitmap-constructor-test.js b/test/bitmap-constructor-test.js index 53ac543..926d1b4 100644 --- a/test/bitmap-constructor-test.js +++ b/test/bitmap-constructor-test.js @@ -7,9 +7,9 @@ const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); describe('Bitmap Constructor Module', () => { describe('#Invert Bitmap', () => { it('Should have a new file written', (done) => { - fileReader.eraseFile(`${__dirname}/../assets/palette-write-bitmap.bmp`); + fileReader.eraseFile(`${__dirname}/../assets/palette-invert-bitmap.bmp`); index.invertBitmap(); - fileReader.initFile(`${__dirname}/../assets/palette-write-bitmap.bmp`, (err, data) => { + fileReader.initFile(`${__dirname}/../assets/palette-invert-bitmap.bmp`, (err, data) => { expect(err).to.equal(null); expect(data).to.not.equal(null); done(); @@ -18,9 +18,9 @@ describe('Bitmap Constructor Module', () => { }); describe('#Color Shift Bitmap', () => { it('Should have a new file written', (done) => { - fileReader.eraseFile(`${__dirname}/../assets/palette-write-bitmap.bmp`); + fileReader.eraseFile(`${__dirname}/../assets/palette-shift-bitmap.bmp`); index.colorShiftBitmap(); - fileReader.initFile(`${__dirname}/../assets/palette-write-bitmap.bmp`, (err, data) => { + fileReader.initFile(`${__dirname}/../assets/palette-shift-bitmap.bmp`, (err, data) => { expect(err).to.equal(null); expect(data).to.not.equal(null); done(); @@ -29,9 +29,9 @@ describe('Bitmap Constructor Module', () => { }); describe('#Rotate Bitmap', () => { it('Should have a new file written', (done) => { - fileReader.eraseFile(`${__dirname}/../assets/palette-write-bitmap.bmp`); + fileReader.eraseFile(`${__dirname}/../assets/palette-rotate-bitmap.bmp`); index.rotateBitmap(); - fileReader.initFile(`${__dirname}/../assets/palette-write-bitmap.bmp`, (err, data) => { + fileReader.initFile(`${__dirname}/../assets/palette-rotate-bitmap.bmp`, (err, data) => { expect(err).to.equal(null); expect(data).to.not.equal(null); done(); From 787fc068fc97bdbfe9ad7ab9effba03e031d9c45 Mon Sep 17 00:00:00 2001 From: Logan Absher Date: Mon, 24 Jul 2017 11:45:16 -0700 Subject: [PATCH 23/23] added new test for constructor, cleaned up code --- index.js | 28 +++++++++------------------- model/bitmap-constructor.js | 5 ++--- model/color-constructor.js | 17 +---------------- test/bitmap-constructor-test.js | 11 +++++++++++ test/bitmap-file-helper-test.js | 3 --- 5 files changed, 23 insertions(+), 41 deletions(-) diff --git a/index.js b/index.js index 9ab8c17..41136e5 100644 --- a/index.js +++ b/index.js @@ -1,15 +1,12 @@ 'use strict'; -let Bitmap = require(`${__dirname}/model/bitmap-constructor.js`); -let ColorTransform = require(`${__dirname}/model/color-constructor.js`); -let fileHelper = require(`${__dirname}/lib/bitmap-file-helper.js`); - -var transform = new ColorTransform(); +const Bitmap = require(`${__dirname}/model/bitmap-constructor.js`); +const ColorTransform = require(`${__dirname}/model/color-constructor.js`); +const fileHelper = require(`${__dirname}/lib/bitmap-file-helper.js`); module.exports = exports = {}; exports.invertBitmap = () => { - let onRead = (err, data) => { if (err) throw err; @@ -19,21 +16,17 @@ exports.invertBitmap = () => { bitmap.colorTable = transform.invertColors(bitmap); - //inserts new color table let startToColorTable = copied.slice(0, bitmap.headerSize + 14); let subColorTableBuffer = new Buffer(bitmap.colorTable.join(''), 'hex'); let colorTableToEnd = copied.slice(data.readInt32LE(10)); let testcopy = Buffer.concat([startToColorTable, subColorTableBuffer, colorTableToEnd]); - - fileHelper.writeNew(`${__dirname}/assets/palette-invert-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); + fileHelper.writeNew(`${__dirname}/assets/palette-invert-bitmap.bmp`, testcopy, exports.writeNew); }; - fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; exports.colorShiftBitmap = () => { - let onRead = (err, data) => { if (err) throw err; @@ -43,15 +36,13 @@ exports.colorShiftBitmap = () => { bitmap.colorTable = transform.blueShift(bitmap); - //inserts new color table let startToColorTable = copied.slice(0, bitmap.headerSize + 14); let subColorTableBuffer = new Buffer(bitmap.colorTable.join(''), 'hex'); let colorTableToEnd = copied.slice(data.readInt32LE(10)); let testcopy = Buffer.concat([startToColorTable, subColorTableBuffer, colorTableToEnd]); - fileHelper.writeNew(`${__dirname}/assets/palette-shift-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); + fileHelper.writeNew(`${__dirname}/assets/palette-shift-bitmap.bmp`, testcopy, exports.writeNew); }; - fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; @@ -66,17 +57,16 @@ exports.rotateBitmap = () => { bitmap.pixelTable = transform.rotateImage(bitmap); - // inserts new pixel arr let startPixelTable = copied.slice(0, bitmap.pixelArrayStart); let pixelArrBuffer = new Buffer(bitmap.pixelTable.join(''), 'hex'); let testcopy = Buffer.concat([startPixelTable, pixelArrBuffer]); - fileHelper.writeNew(`${__dirname}/assets/palette-rotate-bitmap.bmp`, testcopy /*insert changed bitmap here*/, exports.writeNew); + fileHelper.writeNew(`${__dirname}/assets/palette-rotate-bitmap.bmp`, testcopy, exports.writeNew); }); - } + }; fileHelper.initFile(`${__dirname}/assets/palette-bitmap.bmp`, onRead); }; exports.colorShiftBitmap(); -// exports.invertBitmap(); -// exports.rotateBitmap(); +exports.invertBitmap(); +exports.rotateBitmap(); diff --git a/model/bitmap-constructor.js b/model/bitmap-constructor.js index 2f7ece0..6ff08af 100644 --- a/model/bitmap-constructor.js +++ b/model/bitmap-constructor.js @@ -8,13 +8,12 @@ module.exports = function Bitmap (data) { this.bitsPerPixel = data.readInt32LE(28); this.width = data.readInt32LE(18); this.height = data.readInt32LE(22); + this.colorTableStart = this.headerSize + 14; - this.colorTable = data.toString('hex', this.colorTableStart, this.pixelArrayStart).match(/.{1,8}/g); - this.rowWidth = Math.ceil(((this.bitsPerPixel * this.width + 31) / 32) * 4); - this.pixelTable = data.toString('hex', this.pixelArrayStart, this.size).match(/.{1,2}/g); + this.colorMap = this.pixelTable.map(function (pix) { return parseInt(pix); }); diff --git a/model/color-constructor.js b/model/color-constructor.js index 32901ef..e520f09 100644 --- a/model/color-constructor.js +++ b/model/color-constructor.js @@ -1,16 +1,6 @@ 'use strict'; -const ColorTransform = module.exports = function () { -}; - -// ColorTransform.prototype.colorShift = function(bitmap) { -// let colorMap = bitmap.colorMap; -// return colorMap.map(function(pixel) { -// let newPix = pixel + 1; -// console.log(newPix.toString(16)); -// return newPix.toString(16); -// }); -// }; +const ColorTransform = module.exports = function () {}; ColorTransform.prototype.invertColors = function (bitmap) { let colorTable = bitmap.colorTable; @@ -26,14 +16,12 @@ ColorTransform.prototype.invertColors = function (bitmap) { let invertB = (255 - b).toString(16); let invertArray = [invertR, invertG, invertB, '00']; - // console.log(invertArray); invertArray.forEach(function (val, i) { if (val.length === 1) { invertArray[i] = '0' + invertArray[i]; } }); - invertArray = invertArray.join(''); return invertArray; }); @@ -57,16 +45,13 @@ ColorTransform.prototype.blueShift = function (bitmap) { colorShiftArray[i] = '0' + colorShiftArray[i]; } }); - colorShiftArray = colorShiftArray.join(''); return colorShiftArray; }); }; ColorTransform.prototype.rotateImage = function(bitmap) { - let pixelTable = bitmap.pixelTable; return pixelTable.reverse(); - }; diff --git a/test/bitmap-constructor-test.js b/test/bitmap-constructor-test.js index 926d1b4..f099834 100644 --- a/test/bitmap-constructor-test.js +++ b/test/bitmap-constructor-test.js @@ -3,6 +3,7 @@ const expect = require('chai').expect; const index = require(`${__dirname}/../index.js`); const fileReader = require(`${__dirname}/../lib/bitmap-file-helper.js`); +const bitmapConstructor = require(`${__dirname}/../model/bitmap-constructor.js`); describe('Bitmap Constructor Module', () => { describe('#Invert Bitmap', () => { @@ -38,4 +39,14 @@ describe('Bitmap Constructor Module', () => { }); }); }); + describe('#Bitmap Constructor', () => { + it('Should return an object', (done) => { + fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { + expect(err).to.equal(null); + let result = new bitmapConstructor(data); + expect(result).to.be.an('object'); + done(); + }); + }); + }); }); diff --git a/test/bitmap-file-helper-test.js b/test/bitmap-file-helper-test.js index ee901e0..47d6e1c 100644 --- a/test/bitmap-file-helper-test.js +++ b/test/bitmap-file-helper-test.js @@ -7,14 +7,12 @@ describe('File Helper Module', function(){ describe('#Init File', () => { it('Should not error', (done) => { fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { - console.log(err); expect(err).to.equal(null); done(); }); }); it('Should find data', (done) => { fileReader.initFile(`${__dirname}/../assets/palette-bitmap.bmp`, (err, data) => { - console.log(data); expect(data).to.not.equal(null); done(); }); @@ -38,7 +36,6 @@ describe('File Helper Module', function(){ fileReader.writeNew(`${__dirname}/../assets/palette-write-bitmap.bmp`, data); expect(data).to.not.equal(null); fileReader.eraseFile(`${__dirname}/../assets/palette-write-bitmap.bmp`); - expect() done(); }); });