X-Git-Url: https://git.sesse.net/?p=pr0n;a=blobdiff_plain;f=files%2Fpr0n-fullscreen.js;h=d66a5f1e849ba26c9974f134e4909bfc80035d4c;hp=c69f8a7a5830fc92f756356b7736b1db43fc34e1;hb=e2a371c2ca30d21795053333a8d539477abeee81;hpb=872fc70512d24ca88b368a9c58269a283c804192 diff --git a/files/pr0n-fullscreen.js b/files/pr0n-fullscreen.js index c69f8a7..d66a5f1 100644 --- a/files/pr0n-fullscreen.js +++ b/files/pr0n-fullscreen.js @@ -1,9 +1,9 @@ -var req; +(function() { -function init_ajax() -{ - req = new XMLHttpRequest(); -} +var global_disabled_opacity = 0.1; +var global_default_opacity = 0.7; +var global_highlight_opacity = 1.0; +var global_infobox = true; function find_width() { @@ -26,6 +26,9 @@ function find_dpr() * pick_image_size, below. */ var fixed_sizes = [ + [ 3840, 2880 ], + [ 3200, 2400 ], + [ 2800, 2100 ], [ 2304, 1728 ], [ 2048, 1536 ], [ 1920, 1440 ], @@ -139,9 +142,23 @@ function display_image(width, height, evt, filename, element_id) img.style.transformOrigin = "top left"; img.style.transform = "scale(" + (1.0 / dpr) + ")"; - // Update the "download original" link. - var original_url = window.location.origin + "/" + evt + "/original/" + filename; - document.getElementById("origdownload").href = original_url; + if (element_id == "image") { + // Update the "download original" link. + var original_url = window.location.origin + "/" + evt + "/original/" + filename; + document.getElementById("origdownload").href = original_url; + + // If it's a raw image, show a JPEG link. + var fulldownload = document.getElementById("fulldownload"); + if (filename.match(/\.(nef|cr2)$/i)) { + fulldownload.style.display = "block"; + var full_url = window.location.origin + "/" + evt + "/" + filename; + document.getElementById("fulldownloadlink").href = full_url; + origdownload.innerHTML = "Download original image (RAW)"; + } else { + fulldownload.style.display = "none"; + origdownload.innerHTML = "Download original image"; + } + } if (global_infobox) { var url; @@ -274,8 +291,8 @@ function relayout() prepare_preload(img, global_image_num + 1); } - set_opacity("previous", can_go_previous() ? global_default_opacity : 0.1); - set_opacity("next", can_go_next() ? global_default_opacity : 0.1); + set_opacity("previous", can_go_previous() ? global_default_opacity : global_disabled_opacity); + set_opacity("next", can_go_next() ? global_default_opacity : global_disabled_opacity); set_opacity("close", global_default_opacity); set_opacity("options", global_default_opacity); } @@ -291,9 +308,9 @@ function go_previous() set_opacity("previous", global_default_opacity); prepare_preload(img, global_image_num - 1); } else { - set_opacity("previous", 0.1); + set_opacity("previous", global_disabled_opacity); } - set_opacity("next", can_go_next() ? global_default_opacity : 0.1); + set_opacity("next", can_go_next() ? global_default_opacity : global_disabled_opacity); } function go_next() @@ -307,14 +324,18 @@ function go_next() set_opacity("next", global_default_opacity); prepare_preload(img, global_image_num + 1); } else { - set_opacity("next", 0.1); + set_opacity("next", global_disabled_opacity); } - set_opacity("previous", can_go_previous() ? global_default_opacity : 0.1); + set_opacity("previous", can_go_previous() ? global_default_opacity : global_disabled_opacity); } function do_close() { - window.location = global_return_url; + if (global_image_num > 0) { + window.location = global_return_url + '#' + (global_image_num + 1); + } else { + window.location = global_return_url; + } } function toggle_optionmenu() @@ -327,6 +348,7 @@ function toggle_optionmenu() set_opacity("options", 0.7); } } +window['toggle_optionmenu'] = toggle_optionmenu; function draw_text(msg) { @@ -359,7 +381,7 @@ function fade_text(opacity) if (opacity < 0.0) { opacity = 0.0; } - setTimeout("fade_text(" + opacity + ")", 30); + setTimeout(function() { fade_text(opacity); }, 30); } else { var text = document.getElementById("text"); if (text !== null) { @@ -370,35 +392,32 @@ function fade_text(opacity) function select_image(evt, filename, selected) { - if (!req) { - return; - } - if (selected) { draw_text("Selecting " + filename + "..."); } else { draw_text("Unselecting " + filename + "..."); } + var req = new XMLHttpRequest(); req.open("POST", window.location.origin + "/select", false); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.send("event=" + evt + "&filename=" + filename + "&selected=" + selected); - setTimeout("fade_text(0.99)", 30); + setTimeout(function() { fade_text(0.99); }, 30); } function key_down(which) { if (which == 39) { // right if (can_go_next()) { - set_opacity("next", 0.99); + set_opacity("next", global_highlight_opacity); } } else if (which == 37) { // left if (can_go_previous()) { - set_opacity("previous", 0.99); + set_opacity("previous", global_highlight_opacity); } } else if (which == 27) { // escape - set_opacity("close", 0.99); + set_opacity("close", global_higlight_opacity); } else { check_for_hash_change(); } @@ -435,6 +454,7 @@ function parse_image_num(default_value) { return default_value; } } +window['parse_image_num'] = parse_image_num; function check_for_hash_change() { var num = parse_image_num(-1); @@ -446,13 +466,52 @@ function check_for_hash_change() { function toggle_immersive() { if (global_default_opacity == 0.7) { + global_disabled_opacity = 0.0; global_default_opacity = 0.0; + global_highlight_opacity = 0.2; global_infobox = false; document.getElementById('immersivetoggle').innerHTML = 'Show decorations'; } else { + global_disabled_opacity = 0.1; global_default_opacity = 0.7; + global_highlight_opacity = 1.0; global_infobox = true; document.getElementById('immersivetoggle').innerHTML = 'Hide all decorations'; } relayout(); } +window['toggle_immersive'] = toggle_immersive; + +window.onload = function() { + relayout(); + setInterval(check_for_hash_change, 1000); + + var body = document.body; + body.onresize = function() { relayout(); }; + body.onkeydown = function(evt) { key_down(evt.keyCode); }; + body.onkeyup = function(evt) { key_up(evt.keyCode); }; + body.onhashchange = function() { check_for_hash_change(); }; + body.onclick = function() { check_for_hash_change(); }; + + var previous = document.getElementById('previous'); + previous.onmousedown = function() { if (can_go_previous()) { set_opacity('previous', global_highlight_opacity); } }; + previous.onmouseup = function() { if (can_go_previous()) { set_opacity('previous', global_default_opacity); go_previous(); } }; + previous.onmouseout = function() { if (can_go_previous()) { set_opacity('previous', global_default_opacity); } }; + + var next = document.getElementById('next'); + next.onmousedown = function() { if (can_go_next()) { set_opacity('next', global_highlight_opacity); } }; + next.onmouseup = function() { if (can_go_next()) { set_opacity('next', global_default_opacity); go_next(); } }; + next.onmouseout = function() { if (can_go_next()) { set_opacity('next', global_default_opacity); } }; + + var close = document.getElementById('close'); + close.onmousedown = function() { set_opacity('close', global_highlight_opacity); }; + close.onmouseup = function() { set_opacity('close', global_default_opacity); do_close(); }; + close.onmouseout = function() { set_opacity('close', global_default_opacity); }; + + var options = document.getElementById('options'); + options.onmousedown = function() { set_opacity('options', global_highlight_opacity); }; + options.onmouseup = function() { set_opacity('options', global_default_opacity); toggle_optionmenu(); }; + options.onmouseout = function() { set_opacity('options', global_default_opacity); }; +}; + +})();