Save Colors in various palette file formats

main
Isaiah Odhner 2021-01-28 23:03:09 -05:00
parent 917136b7f9
commit 40939d2d41
3 changed files with 19 additions and 16 deletions

View File

@ -2319,10 +2319,10 @@ function image_stretch_and_skew(){
$w.center();
}
function choose_file_name_and_type(file_name, types, callback) {
function choose_file_name_and_type(dialog_name, file_name, types, callback) {
// file_name = `${file_name.replace(/\.(bmp|dib|a?png|gif|jpe?g|jpe|jfif|tiff?|webp|raw)$/i, "")}.png`;
const $w = new $FormToolWindow(localize("Save As"));
const $w = new $FormToolWindow(dialog_name);
$w.addClass("save-as");
// TODO: hotkeys (N, T, S, Enter, Esc)
@ -2427,7 +2427,7 @@ function save_canvas_as(canvas, fileName, savedCallbackUnreliable){
// "256 Color Bitmap (*.bmp;*.dib)": "image/bitmap",
// "24-bit Bitmap (*.bmp;*.dib)": "image/bitmap",
};
choose_file_name_and_type(file_name, image_types, (new_file_name, file_type)=> {
choose_file_name_and_type(localize("Save As"), file_name, image_types, (new_file_name, file_type)=> {
canvas.toBlob(blob => {
const png_magic_bytes = [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A];
sanity_check_blob(blob, () => {

View File

@ -655,10 +655,20 @@ window.menus = {
blue: b / 255,
}));
}
const file_content = AnyPalette.writePalette(ap, AnyPalette.formats.GIMP_PALETTE);
const blob = new Blob([file_content], {type: "text/plain"});
sanity_check_blob(blob, ()=> {
saveAs(blob, "Colors.gpl");
const palette_types = {};
for (const [format_id, format] of Object.entries(AnyPalette.formats)) {
if (format.write) {
palette_types[format_id] = `${format.name} (${
format.fileExtensions.map((extension)=> `*.${extension}`).join(";")
})`;
}
}
choose_file_name_and_type(localize("Save Colors"), "Colors", palette_types, (palette_file_name, format_id)=> {
const file_content = AnyPalette.writePalette(ap, AnyPalette.formats[format_id]);
const blob = new Blob([file_content], {type: "text/plain"});
sanity_check_blob(blob, ()=> {
saveAs(blob, palette_file_name);
});
});
},
description: localize("Saves the current palette of colors to a file."),

View File

@ -557,18 +557,11 @@ html, body, .jspaint {
}
.save-as .window-content > form > div > label > input,
.save-as .window-content > form > div > label > select {
flex: 1 1 0;
min-width: 0px;
width: calc(100vw - 220px);
max-width: 230px;
float: right;
margin: 5px;
}
@media (min-width: 500px) {
.save-as .window-content > form > div > label > input,
.save-as .window-content > form > div > label > select {
width: 230px;
flex: 0 0 auto;
}
}
.save-as .button-group button {
margin: 5px;
}