Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
c34251d
initial setup complete
dbecker4130 Dec 9, 2016
abb8730
Merge pull request #1 from dbecker4130/setup
geoffsimons Dec 9, 2016
17729af
helper and constructor skeleton complete
dbecker4130 Dec 9, 2016
342d48b
linter file added
dbecker4130 Dec 9, 2016
1730a8a
Merge pull request #2 from dbecker4130/bitmap-io
geoffsimons Dec 9, 2016
f28ffc2
loading initial metadata
meganreardon Dec 9, 2016
0196c57
Merge pull request #3 from dbecker4130/bitmap-load
dbecker4130 Dec 9, 2016
20ae113
Added color table parsing
geoffsimons Dec 9, 2016
007a588
Merge pull request #4 from dbecker4130/load-colors
meganreardon Dec 9, 2016
5e2128a
parsing the pixel array
meganreardon Dec 9, 2016
9ef3e0b
parsing the pixel array, added getting the pixel array to the load fu…
meganreardon Dec 10, 2016
dec0b8f
Merge pull request #5 from dbecker4130/load-pixels
geoffsimons Dec 10, 2016
e3db431
Moved parse code to the constructor
geoffsimons Dec 10, 2016
02e13f3
Merge pull request #6 from dbecker4130/move-parse-code
meganreardon Dec 10, 2016
481dc7b
Implemented save method in the helper
geoffsimons Dec 10, 2016
b9e711b
Merge pull request #7 from dbecker4130/save-bitmap
meganreardon Dec 10, 2016
2b3b8ef
Moved buffer access into getter methods
geoffsimons Dec 10, 2016
ea59e72
Merge pull request #8 from dbecker4130/refactor-constructor
meganreardon Dec 10, 2016
61c864c
Added empty methods with TODOs
geoffsimons Dec 10, 2016
deee890
removed running the save function to avoid getting the test.bmp file …
meganreardon Dec 10, 2016
0a90e34
updated gitignore file to include temp folder and test.bmp file in im…
meganreardon Dec 10, 2016
10025f3
Fixed a compile time error
geoffsimons Dec 10, 2016
5f53cf1
Merge pull request #10 from dbecker4130/update-git-ignore
geoffsimons Dec 10, 2016
233a42b
Merge pull request #11 from dbecker4130/setter-stubs
meganreardon Dec 10, 2016
35ee887
test file started
dbecker4130 Dec 10, 2016
4fd2a79
Merge pull request #12 from dbecker4130/save-load-test
geoffsimons Dec 10, 2016
90675cb
Test cases and TODOs
geoffsimons Dec 11, 2016
0f50d25
Merge pull request #13 from dbecker4130/constructor-test
dbecker4130 Dec 11, 2016
14a1a48
Initial implementation of setPixelArray
geoffsimons Dec 11, 2016
3ca7ba3
Image to test rotate method
geoffsimons Dec 11, 2016
4932958
Added tests for get/set Pixel Array
geoffsimons Dec 11, 2016
6995174
Merge pull request #14 from dbecker4130/impl-setPixelArray
meganreardon Dec 11, 2016
781a203
Now writes a black.bmp to check setPixelArray
geoffsimons Dec 11, 2016
b8d3c9d
Merge pull request #15 from dbecker4130/check-black.bmp
meganreardon Dec 11, 2016
b947bff
Implementation and test code
geoffsimons Dec 11, 2016
b69511e
Merge pull request #16 from dbecker4130/transform-rotate
meganreardon Dec 11, 2016
34a43a1
Added a parameterized transform constructor
geoffsimons Dec 12, 2016
e266937
Merge pull request #18 from dbecker4130/param-rotate
meganreardon Dec 12, 2016
71cbb13
including setColorArray code without test files
meganreardon Dec 12, 2016
2f977dc
Merge pull request #20 from dbecker4130/set-color-array-2
geoffsimons Dec 12, 2016
2718f2d
Added function to set color 0 to white
geoffsimons Dec 12, 2016
57bbeb6
Merge pull request #21 from dbecker4130/color-swap-example
meganreardon Dec 12, 2016
d956579
Added color swap transform
geoffsimons Dec 12, 2016
a3be1ad
helper tests complete and pass
dbecker4130 Dec 12, 2016
3caddb8
Merge pull request #24 from dbecker4130/helper-test
geoffsimons Dec 12, 2016
e97c958
Merge pull request #22 from dbecker4130/transform-color-swap
dbecker4130 Dec 12, 2016
7704ceb
Simple CLI to transform bitmaps
geoffsimons Dec 12, 2016
2b98bfe
Merge pull request #25 from dbecker4130/cli-parsing
dbecker4130 Dec 12, 2016
c04c67f
getWidth test complete
dbecker4130 Dec 12, 2016
02bcf06
getColorArray test complete
dbecker4130 Dec 12, 2016
41b1e10
Added error checks for setPixelArray
geoffsimons Dec 12, 2016
7ba37b8
Checking for non-integer pixel values
geoffsimons Dec 12, 2016
468895d
Added tests for bunk values in setPixelArray
geoffsimons Dec 12, 2016
35df86c
Merge pull request #26 from dbecker4130/setPixelArray-error-checks
dbecker4130 Dec 12, 2016
65d3f13
getColorArray test complete and grayscale transformation complete
dbecker4130 Dec 13, 2016
9e3065e
Merge pull request #36 from dbecker4130/constructor-test-d
geoffsimons Dec 13, 2016
d76e9a7
Added tests for empty, null, and bogus ops
geoffsimons Dec 13, 2016
ecb285d
Merge branch 'master' into test-transforms-1
geoffsimons Dec 13, 2016
9a78417
grayscale transform test added and passes test
dbecker4130 Dec 13, 2016
fcf4fc5
Merge pull request #37 from dbecker4130/grayscale-test
geoffsimons Dec 13, 2016
3ed8f23
Merge branch 'master' into test-transforms-1
geoffsimons Dec 13, 2016
4793ae7
adds set color array and tests
meganreardon Dec 13, 2016
a003374
Merge pull request #39 from dbecker4130/set-color-array-and-tests
geoffsimons Dec 13, 2016
6dd71ea
Added #rotate tests
geoffsimons Dec 13, 2016
fee43c2
Swapped test messages
geoffsimons Dec 13, 2016
e7d287b
Merge pull request #40 from dbecker4130/test-transforms-1
dbecker4130 Dec 13, 2016
130789d
Added expect().within()
geoffsimons Dec 13, 2016
f35a62f
stripe transforms one and two working
meganreardon Dec 13, 2016
ef69be1
Merge pull request #41 from dbecker4130/test-pixel-range
dbecker4130 Dec 13, 2016
81d2fdd
stripe transform one and two and images in place
meganreardon Dec 13, 2016
64011ea
Test that bitmap.transform() returns bitmap
geoffsimons Dec 13, 2016
c47cb2b
Merge pull request #43 from dbecker4130/test-transforms-2
dbecker4130 Dec 13, 2016
47ab2fa
stripeone and stripe two transforms and tests working
meganreardon Dec 13, 2016
410f156
Merge pull request #44 from dbecker4130/transform-stripes
geoffsimons Dec 13, 2016
e7daf01
Added error checking on Bitmap()
geoffsimons Dec 13, 2016
31859f1
Removed TODOs that no longer apply
geoffsimons Dec 13, 2016
7323c37
Merge pull request #47 from dbecker4130/bitmap-error-checks
dbecker4130 Dec 13, 2016
28c626b
added readme file
meganreardon Dec 13, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -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"
}
102 changes: 102 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@

# Created by https://www.gitignore.io/api/macos,node,vim,vim

### macOS ###
*.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


### Node ###
# Logs
logs
*.log
npm-debug.log*
node_modules

# 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

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# 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



### Vim ###
# swap
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
# session
Session.vim
# temporary
.netrwhist
*~
# auto-generated tag files
tags


### Vim ###
# swap
# session
# temporary
# auto-generated tag files

### project specific ###
temp
img/test.bmp
23 changes: 23 additions & 0 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
'use strict';

const gulp = require('gulp');
const eslint = require('gulp-eslint');
const mocha = require('gulp-mocha');

gulp.task('test', function() {
gulp.src('./test/*-test.js', { read: false })
.pipe(mocha({ reporter: 'spec' }));
});

gulp.task('lint', function() {
return gulp.src(['**/*.js', '!node_modules'])
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
});

gulp.task('dev', function() {
gulp.watch(['**/*.js', '!node_modules'], ['lint', 'task']);
});

gulp.task('default', ['dev']);
Binary file added img/test-grayscale.bmp
Binary file not shown.
Binary file added img/test-rotated-90.bmp
Binary file not shown.
Binary file added img/test-stripe-one.bmp
Binary file not shown.
Binary file added img/test-stripe-two.bmp
Binary file not shown.
71 changes: 71 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
'use strict';

const bmHelper = require('./lib/bitmap-file-helper.js');
const transforms = require('./model/transform-constructor.js');

//TODO: I suggest we change bitMapData to bitmap. -Geoff
bmHelper.load('./img/palette-bitmap.bmp', function(err, bitMapData) {
// console.log(bitMapData.colors[28]);
// console.dir(bitMapData);
// for(var prop in bitMapData) {
// console.log(prop);
// }
console.log(bitMapData.getColorArray());
console.log(bitMapData.getPixelArray());

// bmHelper.save('./img/test.bmp', bitMapData, function(err, data) {
// if(err) console.log('error:', err); //TODO: Just log for test
// console.log('data:', data);
// });

// makeBlackAndSave(bitMapData);
// rotateRightAndSave(bitMapData);
// rotate180AndSave(bitMapData);
switchColorAndSave(bitMapData);
});

function switchColorAndSave(bitmap) {
// var colors = bitmap.getColorArray();
var white = {
red: 255,
blue: 255,
green: 255,
alpha: 0
};
// colors[0] = white;
// bitmap.setColorArray(colors);
bitmap.transform(transforms.swapColor(0, white));
bmHelper.save('./temp/color-swap.bmp', bitmap, function(err) {
if(err) console.log(err);
console.log('saved color swap');
});
}

function rotate180AndSave(bitmap) {
bitmap.transform(transforms.rotate(180));
bmHelper.save('./temp/rotated-180.bmp', bitmap, function(err) {
if(err) console.log(err);
console.log('saved rotated 180 bmp');
});
}

function rotateRightAndSave(bitmap) {
bitmap.transform(transforms.rotateRight);
bmHelper.save('./temp/rotated-90.bmp', bitmap, function(err, data) {
if(err) console.log(err);
console.log('done saving rotated data:', data);
});
}

function makeBlackAndSave(bitmap) {
var pixels = bitmap.getPixelArray();
for(let i in pixels) {
pixels[i] = 0; //Setting all pixels to color 0.
}
bitmap.setPixelArray(pixels);
bmHelper.save('./temp/black.bmp', bitmap, function(err, data) {
if(err) console.log(err);
console.log('done saving data:', data);
});

}
23 changes: 23 additions & 0 deletions lib/bitmap-file-helper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
'use strict';

const fs = require('fs');
const Bitmap = require('../model/bitmap-constructor.js').Bitmap;

module.exports = exports = {};

exports.load = function(filepath, callback) {
fs.readFile(filepath, function (err, data) {
if(err) return callback(err);
var bm = new Bitmap(data);
//TODO: Possibly store filepath in the bm object, or pass as
// constructor param.
callback(null, bm);
});
};

exports.save = function(filepath, bitmap, callback) {
fs.writeFile(filepath, bitmap.buf, function(err, data) {
if(err) return callback(err);
callback(null, data);
});
};
Loading