Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
b69d53f
Initial files added. Initial repo creation.
broxsonl Sep 15, 2016
c11dfaf
npm init done. Package.json created.
broxsonl Sep 15, 2016
7f1b9b8
Added devDependencies.
broxsonl Sep 15, 2016
a574a1e
Finished initial repo setup.
broxsonl Sep 15, 2016
e47d98e
Merge pull request #1 from broxsonl/repo-setup
peterkim2 Sep 15, 2016
1562f7b
Found where the color array begins and logged.
broxsonl Sep 15, 2016
b097e77
Able to manipulate the colors of the file and write a new one.
broxsonl Sep 16, 2016
12ad984
Merge pull request #2 from broxsonl/reading-a-bitmap-file
broxsonl Sep 16, 2016
f8e48d8
Messing with the constructor.
broxsonl Sep 16, 2016
0bcc8b9
put the running stuff back in place.
broxsonl Sep 16, 2016
27d8d7b
Played around with the constructor.
broxsonl Sep 16, 2016
347c663
Started working on the constructor and moving the color changer over.
broxsonl Sep 16, 2016
a6224ff
Merge pull request #3 from broxsonl/bitmap-constructor-creator
peterkim2 Sep 16, 2016
4921fc8
stashing changes
peterkim2 Sep 16, 2016
9727a26
bit constructor object started
peterkim2 Sep 16, 2016
cd96a31
cleaned up bitmap helper
peterkim2 Sep 16, 2016
e751f8e
added readFile to bitMapFileHelper got data back
peterkim2 Sep 16, 2016
b3edc92
modularized color changing functionality
peterkim2 Sep 17, 2016
2183cff
got write file added into bitmapHelper
peterkim2 Sep 17, 2016
d3879c3
Merge pull request #4 from broxsonl/bitmap-constructor-work
broxsonl Sep 17, 2016
485f952
made bitmap helper able to export multiple functions
peterkim2 Sep 17, 2016
a777bed
inverted constructor is not working.
peterkim2 Sep 17, 2016
7eb5c44
grayscale function is working but need to logic to finish
peterkim2 Sep 17, 2016
9cbb1de
Merge pull request #5 from broxsonl/invert-function
broxsonl Sep 17, 2016
bcde97b
Cleaned up index.js.
broxsonl Sep 18, 2016
6559475
Cleaned up the bitmapConstructor.js file and refactored unnecessary c…
broxsonl Sep 18, 2016
2cfe0ab
Cleaned up inverse constructor and refactored unnecessary code.
broxsonl Sep 18, 2016
95ef9d9
Cleaned up Grayscale constructor and refactored unnecessary code.
broxsonl Sep 18, 2016
eacef6d
Created grayscale formula, got constructor working.
broxsonl Sep 18, 2016
7a4a392
Merge pull request #6 from broxsonl/grayscaler
peterkim2 Sep 18, 2016
36ef765
Cleaned up some code and changed the greenscaler from the allgreen.
broxsonl Sep 18, 2016
aadc8d0
Cleaned up extraneous code, added descriptive comments to index.
broxsonl Sep 18, 2016
3a3f010
Merge pull request #7 from broxsonl/cleanup
peterkim2 Sep 18, 2016
33e4e48
created test for bitmapHelper.
peterkim2 Sep 18, 2016
32ac899
added throw errors on bitmapHelper.js
peterkim2 Sep 18, 2016
0107a14
writefile adds bitmaps to transformed assets folder
peterkim2 Sep 18, 2016
ae21bfc
Merge pull request #8 from broxsonl/bitmap-filehelper-test
broxsonl Sep 18, 2016
8962e7d
Stash
broxsonl Sep 18, 2016
f0b191f
Merge branch 'master' of https://github.com/broxsonl/lab-04-bitmap
broxsonl Sep 18, 2016
d1abf9e
Renamed some of the test files and added use strict to all.
broxsonl Sep 18, 2016
080b2de
Put entire grayscaler on the module so we can look at its properties …
broxsonl Sep 19, 2016
357b5ae
Refactored greenscaler and inverter to attach everything to the module.
broxsonl Sep 19, 2016
f3e387f
Wrote tests for the constructors to ensure they were running.
broxsonl Sep 19, 2016
30e4e35
Merge pull request #9 from broxsonl/greenscale-constructor-test
peterkim2 Sep 19, 2016
bdb223e
Delete grayscale-bitmap.bmp
broxsonl Sep 19, 2016
afdc446
Delete greenscale-bitmap.bmp
broxsonl Sep 19, 2016
7d9a81c
Delete inverted-bitmap.bmp
broxsonl Sep 19, 2016
a616b38
Put a placeholder in the folder that bitmaps are generated in.
broxsonl Sep 19, 2016
036c192
Merge pull request #10 from broxsonl/Fixes
peterkim2 Sep 19, 2016
513957c
Added a pic of the original bitmap file to the readme.
broxsonl Sep 19, 2016
bc18b82
Merge pull request #11 from broxsonl/writing-docs
broxsonl Sep 19, 2016
50e3ac3
Update README.md
broxsonl Sep 19, 2016
337d068
Update README.md
broxsonl Sep 19, 2016
aba3488
Update README.md
broxsonl Sep 19, 2016
bd70f36
Update README.md
broxsonl Sep 19, 2016
3476796
Update README.md
broxsonl Sep 19, 2016
96b2e8b
Update README.md
broxsonl Sep 19, 2016
510e122
Update README.md
broxsonl Sep 19, 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
3 changes: 3 additions & 0 deletions bitmap-destruction-force/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
**/node_modules/*
**/vendor/*
**/*.min.js
41 changes: 41 additions & 0 deletions bitmap-destruction-force/.eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"rules": {
"comma-dangle": ["error", "always-multiline"],
"no-console": 0,
"indent": [
2,
2
],
"quotes": [
2,
"single"
],
"linebreak-style": [
2,
"unix"
],
"semi": [
2,
"always"
]
},
"env": {
"es6": true,
"node": true,
"browser": true
},
"globals": {
"describe": false,
"it": false,
"beforeEach": false,
"afterEach": false,
"before": false,
"after": false
},
"ecmaFeatures": {
"modules": true,
"experimentalObjectRestSpread": true,
"impliedStrict": true
},
"extends": "eslint:recommended"
}
65 changes: 65 additions & 0 deletions bitmap-destruction-force/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Created by https://www.gitignore.io/api/osx,linux,node,vim

### OSX ###
.DS_Store
.AppleDouble
.LSOverride

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


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

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# 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 REPL history
.node_repl_history

### Vim ###
# swap
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
# session
Session.vim
# temporary
.netrwhist
*~

# auto-generated tag files
tags
45 changes: 45 additions & 0 deletions bitmap-destruction-force/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
##Team Bitmap Destruction Force

**Collaborators:**

Lee Broxson, Peter Kim

##How to use this application

**Original 8-bit color bitmap**

![alt tag](../assets/bitmap.bmp)

This application's intent is to easily transform an 8-bit color bitmap file to either greenscale, grayscale or an inverted version of the original bitmap being used.

**Convert a single 8-bit color bitmap to a greenscaled, grayscaled and inverted color version all at once**

In the 'bitmap-destruction-force' directory, in your terminal, run the following command:

node index.js

**Example of greenscaled bitmap**

In the primary repository, enter the following command:

node index.js bitmapFileHelper.turnGreen(Greenscaler.greenScale);

![alt tag](./transformed-assets/greenscale-bitmap.bmp)

**Example of grayscaled bitmap**

In the primary repository, enter the following command:

node index.js bitmapFileHelper.grayScale(Grayscaler.grayScale);

![alt tag](./transformed-assets/grayscale-bitmap.bmp)

**Example of invert-colored bitmap**

In the primary repository, enter the following command:

node index.js bitmapFileHelper.invertColor(Inverter.invert);

![alt tag](./transformed-assets/inverted-bitmap.bmp)

More features and different bitmap transformers to come!
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome docs!

24 changes: 24 additions & 0 deletions bitmap-destruction-force/gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
'use strict';

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

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

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

gulp.task('default', ['test']);

gulp.task('dev', function() {
gulp.watch(['**/*.js', '!node_modules/**'],
['lint', 'test']);
});
12 changes: 12 additions & 0 deletions bitmap-destruction-force/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
'use strict';

const bitmapFileHelper = require('./lib/bitmapFileHelper.js');

const Greenscaler = require('./model/greenscale-constructor.js');
const Inverter = require('./model/inverse-constructor.js');
const Grayscaler = require('./model/grayscale-constructor.js');

//Running node on index.js will produce three unique bitmaps with the function invocations below:
bitmapFileHelper.turnGreen(Greenscaler.greenScale); //Greenscales the bitmap
bitmapFileHelper.invertColor(Inverter.invert); //Inverts the colors of the bitmap
bitmapFileHelper.grayScale(Grayscaler.grayScale); //Grayscales the colors of the bitmap
32 changes: 32 additions & 0 deletions bitmap-destruction-force/lib/bitmapFileHelper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
'use strict';

const fs = require('fs');
var buf;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's unnecessary to create this variable; just pass data directly into your callbacks :)

module.exports = exports = {};

exports.turnGreen = function(callback) {
fs.readFile(`${__dirname}/../../assets/bitmap.bmp`, function(err, data){
if(err) throw new Error('bitmap buffer not acquired');
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of throwing errors, you should pass them to a callback and deal with them in that way.

buf = data;
callback(buf);
fs.writeFile(`${__dirname}/../transformed-assets/greenscale-bitmap.bmp`, buf);
});
};

exports.invertColor = function(callback) {
fs.readFile(`${__dirname}/../../assets/bitmap.bmp`, function(err, data){
if(err) throw new Error('bitmap buffer not acquired');
buf = data;
callback(buf);
fs.writeFile(`${__dirname}/../transformed-assets/inverted-bitmap.bmp`, buf);
});
};

exports.grayScale = function(callback) {
fs.readFile(`${__dirname}/../../assets/bitmap.bmp`, function(err, data){
if(err) throw new Error('bitmap buffer not acquired');
buf = data;
callback(buf);
fs.writeFile(`${__dirname}/../transformed-assets/grayscale-bitmap.bmp`, buf);
});
};
27 changes: 27 additions & 0 deletions bitmap-destruction-force/model/grayscale-constructor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use strict';

module.exports = exports = {};

exports.grayScale = function(buf, err){
if (err) throw new Error('Error grayscaling bitmap');
var duck = new exports.GrayScale(buf);
duck.grayScale(buf);
};

exports.GrayScale = function(buf){
this.filesize = buf.readUInt32LE(2);
this.offset = buf.readUInt32LE(10);
this.colorArray = buf.slice(54, 1078);
};

exports.GrayScale.prototype.grayScale = function(){
var currentColor;
for (var i = 0;i < 1024;i += 4){
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of hard-coding in 1024, it would be a good idea to reference a property such as this.colorArray.length.

currentColor = this.colorArray.slice(i, i+4);
var currentColorAverage = ((currentColor[0] + currentColor[1] + currentColor[2])/3);
currentColor[0] = currentColorAverage;
currentColor[1] = currentColorAverage;
currentColor[2] = currentColorAverage;
currentColor[3] = 0;
}
};
26 changes: 26 additions & 0 deletions bitmap-destruction-force/model/greenscale-constructor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use strict';

module.exports = exports = {};

exports.greenScale = function(buf){
var duck = new exports.GreenScaler(buf);
duck.turnGreen(buf);
};

exports.GreenScaler = function(buf){
this.filesize = buf.readUInt32LE(2);
this.offset = buf.readUInt32LE(10);
this.colorArray = buf.slice(54, 1078);
};

exports.GreenScaler.prototype.turnGreen = function(){
var currentColor;
for (var i = 0;i < 1024;i += 4){
currentColor = this.colorArray.slice(i, i+4);
var currentColorAverage = ((currentColor[0] + currentColor[1] + currentColor[2])/3);
currentColor[0] = 0;
currentColor[1] = currentColorAverage;
currentColor[2] = 0;
currentColor[3] = 0;
}
};
26 changes: 26 additions & 0 deletions bitmap-destruction-force/model/inverse-constructor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use strict';

module.exports = exports = {};

exports.invert = function(buf){
var duck = new exports.Inverter(buf);
duck.invertColor(buf);
};

exports.Inverter = function(buf){
this.filesize = buf.readUInt32LE(2);
this.offset = buf.readUInt32LE(10);
this.colorArray = buf.slice(54, 1078);
};

exports.Inverter.prototype.invertColor = function(){
var currentColor;
for (var i = 0;i < 1024;i += 4){
currentColor = this.colorArray.slice(i, i+4);
//console.log('B' + currentColor[0] + ' + ' + 'G' + currentColor[1] + ' + ' + 'R' + currentColor[2] + ' + ' + 'A' + currentColor[3]);
currentColor[0] = 255 - currentColor[0];
currentColor[1] = 255 - currentColor[1];
currentColor[2] = 255 - currentColor[2];
currentColor[3] = 0;
}
};
22 changes: 22 additions & 0 deletions bitmap-destruction-force/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "bitmap-destruction-force",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": [
"broxsonl@gmail.com",
"peterkim23@gmail.com"
],
"license": "ISC",
"devDependencies": {
"eslint": "^3.5.0",
"gulp": "^3.9.1",
"gulp-eslint": "^3.0.1",
"gulp-mocha": "^3.0.1",
"mocha": "^3.0.2"
}
}
36 changes: 36 additions & 0 deletions bitmap-destruction-force/test/bitmapFileHelperTest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
'use strict';

const bitmapFileHelper = require('../lib/bitmapFileHelper.js');
const assert = require('assert');

describe('testing bitmapFileHelper', function(){
describe('#turnGreen', function(){
it('should return buffer data', function(done){
bitmapFileHelper.turnGreen(function(buf){
assert.ok(buf, 'is not buffer data');
done();
});
});
});
describe('#invertColor', function(){
it('should return buffer data', function(done){
bitmapFileHelper.invertColor(function(buf){
assert.ok(buf, 'is not buffer data');
done();
});
});
});
describe('#grayScale', function(){
it('should return buffer data', function(done){
bitmapFileHelper.grayScale(function(buf){
assert.ok(buf, 'is not buffer data');
done();
});
});
it('should be a valid filename', function() {
bitmapFileHelper.turnGreen([`${__dirname}/dont-exist.bmp`], function(err){
assert.ifError(err);
});
});
});
});
13 changes: 13 additions & 0 deletions bitmap-destruction-force/test/grayscale-constructor-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'use strict';

const assert = require('assert');
const Grayscaler = require('../model/grayscale-constructor.js');

describe('Grayscaler', function(){
describe('#grayscale', function(){
it('should ensure Grayscaler is running', function(done){
assert.ok(Grayscaler);
done();
});
});
});
Loading