Refactor palette loading.

This commit is contained in:
Theo Cavignac 2022-12-22 23:37:38 +01:00 committed by Théo Cavignac
parent 845e384ae0
commit c08c7f2d0b

View File

@ -292,9 +292,9 @@ const FileManager = (() => {
return JSON.stringify(dictionary); return JSON.stringify(dictionary);
} }
function loadPalette() { function loadPalette() {
if (browsePaletteHolder.files && browsePaletteHolder.files[0]) { if (browsePaletteHolder.files && browsePaletteHolder.files[0]) {
//make sure file is allowed filetype
let file = browsePaletteHolder.files[0]; let file = browsePaletteHolder.files[0];
var fileContentType = var fileContentType =
file.type file.type
@ -302,7 +302,30 @@ const FileManager = (() => {
var fileReader = new FileReader(); var fileReader = new FileReader();
let addPalette = (colors) => { // dispatch on file type
switch (fileContentType) {
case 'image/png':
case 'image/gif':
fileReader.onload = loadPaletteFromImage;
fileReader.readAsDataURL(browsePaletteHolder.files[0]);
break;
case 'gpl':
fileReader.onload = loadPaletteFromGimp;
fileReader.readAsText(browsePaletteHolder.files[0]);
break;
case 'hex':
fileReader.onload = loadPaletteFromHex;
fileReader.readAsText(browsePaletteHolder.files[0]);
break;
default:
alert('Only PNG, GIF, .hex and .gpl files are supported at this time.');
}
}
browsePaletteHolder.value = null;
}
function addPalette(colors) {
//add to palettes so that it can be loaded when they click okay //add to palettes so that it can be loaded when they click okay
palettes['Loaded palette'] = {}; palettes['Loaded palette'] = {};
palettes['Loaded palette'].colors = colors; palettes['Loaded palette'].colors = colors;
@ -311,11 +334,7 @@ const FileManager = (() => {
Util.toggle('palette-menu-splash'); Util.toggle('palette-menu-splash');
} }
switch (fileContentType) { function loadPaletteFromImage(e) {
case 'image/png':
case 'image/gif':
//load file
fileReader.onload = function(e) {
var img = new Image(); var img = new Image();
img.onload = function() { img.onload = function() {
//draw image onto the temporary canvas //draw image onto the temporary canvas
@ -343,11 +362,10 @@ const FileManager = (() => {
addPalette(colorPalette); addPalette(colorPalette);
}; };
img.src = e.target.result; img.src = e.target.result;
}; }
break;
case 'gpl': function loadPaletteFromGimp(e) {
fileReader.onload = function() { let content = e.target.result;
file.text().then((content) => {
let colorPalette = content.split(/\r?\n/) let colorPalette = content.split(/\r?\n/)
// Skip header line // Skip header line
.slice(1) .slice(1)
@ -379,14 +397,11 @@ const FileManager = (() => {
return '#' + Color.rgbToHex(color); return '#' + Color.rgbToHex(color);
}); });
addPalette(colorPalette); addPalette(colorPalette);
}); }
};
break; function loadPaletteFromHex(e) {
case 'hex': let content = e.target.result;
fileReader.onload = function() {
file.text().then((content) => {
let colorPalette = content.split(/\r?\n/) let colorPalette = content.split(/\r?\n/)
.map((line) => line.trim()) .map((line) => line.trim())
.filter((line) => line != "") .filter((line) => line != "")
@ -400,16 +415,6 @@ const FileManager = (() => {
return '#000000'; return '#000000';
}); });
addPalette(colorPalette); addPalette(colorPalette);
});
};
break;
default:
alert('Only PNG, GIF, .hex and .gpl files are supported at this time.');
}
fileReader.readAsDataURL(browsePaletteHolder.files[0]);
}
browsePaletteHolder.value = null;
} }
currentImportPivotElement = undefined; currentImportPivotElement = undefined;