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
1 changed files with 100 additions and 95 deletions

View File

@ -292,9 +292,9 @@ const FileManager = (() => {
return JSON.stringify(dictionary);
}
function loadPalette() {
if (browsePaletteHolder.files && browsePaletteHolder.files[0]) {
//make sure file is allowed filetype
let file = browsePaletteHolder.files[0];
var fileContentType =
file.type
@ -302,7 +302,30 @@ const FileManager = (() => {
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
palettes['Loaded palette'] = {};
palettes['Loaded palette'].colors = colors;
@ -311,11 +334,7 @@ const FileManager = (() => {
Util.toggle('palette-menu-splash');
}
switch (fileContentType) {
case 'image/png':
case 'image/gif':
//load file
fileReader.onload = function(e) {
function loadPaletteFromImage(e) {
var img = new Image();
img.onload = function() {
//draw image onto the temporary canvas
@ -343,11 +362,10 @@ const FileManager = (() => {
addPalette(colorPalette);
};
img.src = e.target.result;
};
break;
case 'gpl':
fileReader.onload = function() {
file.text().then((content) => {
}
function loadPaletteFromGimp(e) {
let content = e.target.result;
let colorPalette = content.split(/\r?\n/)
// Skip header line
.slice(1)
@ -379,14 +397,11 @@ const FileManager = (() => {
return '#' + Color.rgbToHex(color);
});
addPalette(colorPalette);
});
};
break;
case 'hex':
fileReader.onload = function() {
file.text().then((content) => {
}
function loadPaletteFromHex(e) {
let content = e.target.result;
let colorPalette = content.split(/\r?\n/)
.map((line) => line.trim())
.filter((line) => line != "")
@ -400,16 +415,6 @@ const FileManager = (() => {
return '#000000';
});
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;