Skip to content

Commit

Permalink
added palette generation via html to reduce file size
Browse files Browse the repository at this point in the history
  • Loading branch information
Oleksandr Yanovych committed Mar 29, 2017
1 parent 1b55e7f commit 5d87ccc
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 7 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
"dependencies": {
"es6-promise": "^4.1.0",
"file-saver": "^1.3.2",
"hyperscript": "^2.0.2",
"jszip": "^3.1.3",
"keyboardjs": "^2.3.3",
"pako": "^1.0.5",
Expand Down
13 changes: 7 additions & 6 deletions src/components/modals/Downloadproject/Downloadproject.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@ import ModalWindow from '../../modalwindow/Modalwindow';
import ToggleCheckbox from '../../togglecheckbox/Togglecheckbox';

import Downloader from '../../../fileloaders/Downloader';
import { combineImageDataToCanvas, combineColorPaletteToCanvas } from '../../../utils/canvasUtils';
import { combineImageDataToCanvas } from '../../../utils/canvasUtils';
import { getAllActiveColors } from '../../../utils/colorUtils';
import StateLoader from '../../../statemanager/StateLoader';

import { Files } from '../../../defaults/constants';

import generatePalette from '../../../htmlgenerators/paletteGenerator';

class DownloadProjectModal extends Component {
constructor (props) {
super(props);
Expand Down Expand Up @@ -48,11 +50,10 @@ class DownloadProjectModal extends Component {
const spritesImageDataArray = this.props.framesOrder.map(
el => this.props.framesCollection[el].naturalImageData
);
return Downloader.prepareCanvasBlobAsync(
combineColorPaletteToCanvas(
getAllActiveColors(spritesImageDataArray),
100,
500

return Downloader.prepareHTMLBlobAsync(
generatePalette(
getAllActiveColors(spritesImageDataArray)
),
Files.NAME.PALETTE
);
Expand Down
3 changes: 2 additions & 1 deletion src/defaults/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ export const projectExtension = '.pxlsh';
export const Files = {
MIMETYPE: {
JSON: 'application/json',
HTML: 'text/html',
GIF: 'image/gif',
PNG: 'image/png'
},
NAME: {
PALETTE: 'palette.png',
PALETTE: 'palette.html',
SPRITES: 'sprites.png',
ANIMATION: 'animation.gif',
PROJECT: 'project' + projectExtension,
Expand Down
12 changes: 12 additions & 0 deletions src/fileloaders/Downloader.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,18 @@ export default class Downloader {
});
}

static prepareHTMLBlobAsync (dataHTML, name) {
return new Promise(resolve => {
const serializer = new XMLSerializer(),
html = serializer.serializeToString(dataHTML);

resolve({
blob: new Blob([html], { type: Files.MIMETYPE.HTML }),
name
});
});
}

static prepareCanvasBlobAsync (canvas, name) {
return new Promise(resolve => {
toBlob(canvas)(blob => {
Expand Down
40 changes: 40 additions & 0 deletions src/htmlgenerators/paletteGenerator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import h from 'hyperscript';

import { getBlackWhiteContrastColor, stringToRGBA } from '../utils/colorUtils';

export default list => {
const ulStyle = {
'list-style': 'none',
'padding': '0',
'width': '400px',
'margin': '0 auto'
};

const liStyle = {
'height': '25px',
'font-size': '22px',
'font-family': 'monospace',
'text-align': 'center',
'padding': '20px'
};

return h('html',
h('head'),
h('body',
h('ul',
{ style: ulStyle },
list.map(color =>
h('li', color, {
style: Object.assign(
liStyle,
{
'background-color': color,
'color': getBlackWhiteContrastColor(stringToRGBA(color))
}
)
})
)
)
)
);
};

0 comments on commit 5d87ccc

Please sign in to comment.