v4k-git-backup/tools/Luminance HDR/hdrhtml/hdrhtml_hdrlabs_templ/hdrhtml_page_templ.html

275 lines
11 KiB
HTML

<html>
<head>
<title>@title@</title>
<!-- HDRHTML BEG: Put this part in the "head" section -->
<!-- required: mootools v1.2.4. with (More) Slider and Asset extension -->
<script type="text/javascript" src="hdrhtml_assets/mootools-1.2.4.js"></script>
<!-- optional: include this script for iPad/iPhone compatibility -->
<script type="text/javascript" src="hdrhtml_assets/mouse2touch.js"></script>
<!-- required: CSS styling of the HDR-Viewer -->
<link rel="stylesheet" type="text/css" media="screen" href="hdrhtml_assets/hdr_viewer.css" />
<script type="text/javascript">
/*
-----------------------------------------------
HDR HTML Viewer ver. 1.7
Author: v1.0 Rafal Mantiuk
URL: http://www.cs.ubc.ca/~mantiuk/hdrhtml.html
Template v1.7 by Christian Bloch, www.hdrlabs.com
Requires: mootools javascript library from www.mootools.net or linked in from google's server:
http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js
Slider and Asset extensions from the mootools (More) section
----------------------------------------------- */
// For suppressing the text-selection cursor when dragging or interacting with the viewer
var noselect = false;
window.addEvent('selectstart', function(e) {
if (noselect) {
e.stop();
return false;
}
});
// for updating the EV label
function update_exp_text( hdr_image, new_exp ) {
ev_label = "EV:<span class='labelnumber'>"+ Math.round( (hdr_image.best_exp-new_exp)*10 )/10 + " f</span>";
// delete the next two lines if you prefer plain decimal display for fractional EV values
ev_label = ev_label.replace(/\.3/, "<font size=\"-1\"><sup> 1</sup>/<sub>3</sub></font>");
ev_label = ev_label.replace(/\.7/, "<font size=\"-1\"><sup> 2</sup>/<sub>3</sub></font>");
$(hdr_image.base_name + "_exp_text").innerHTML = ev_label;
}
function change_exp( hdr_image, exp_change ) {
hdr_active_image = hdr_image;
hdr_image.exposure = hdr_image.exposure + exp_change;
// clamp to exposure limits
if( hdr_image.exposure > hdr_image.f8_stops*8 ) {
hdr_image.exposure = hdr_image.f8_stops*8;
}
else if( hdr_image.exposure < 0 ) {
hdr_image.exposure = 0;
}
exp_cur = Math.floor(hdr_image.exposure / 8);
exp_shar = exp_cur + 1;
exp_blend = Math.round((hdr_image.exposure - exp_cur*8)*hdr_image.f_step_res);
// blend each image accordingly
var i;
for( i = 0; i < hdr_image.basis; i++ ) {
var img_obj = $(hdr_image.base_name+"_"+i);
img_obj.set('src', hdr_image.image_dir + hdr_image.base_name + "_"+exp_cur+"_" + (i+1) + ".jpg");
img_obj.setStyle('opacity', cf[exp_blend][i]);
}
for( i = 0; i < hdr_image.shared_basis; i++ ) {
var img_obj = $(hdr_image.base_name+"_"+(i+hdr_image.basis));
img_obj.set('src',hdr_image.image_dir + hdr_image.base_name + "_"+exp_shar+"_" + (i+1) + ".jpg");
img_obj.setStyle( 'opacity', cf[exp_blend][i+hdr_image.basis] );
}
update_exp_text( hdr_image, hdr_image.exposure );
}
// keyboartd events
function hdr_onkeydown(e) {
var hdr_image = hdr_active_image;
var keynum;
if( hdr_image == null )
return;
var hdrnum = hdr_names.indexOf(hdr_image.base_name);
if(window.event) { // IE
keynum = window.event.keyCode;
if( keynum == 189 )
hdr_slider[hdrnum].set(hdr_image.exposure*10 - 10);
if( keynum == 187 )
hdr_slider[hdrnum].set(hdr_image.exposure*10 + 10);
} else if(e.which) { // Netscape/Firefox/Opera
keynum = e.which;
if( keynum == 109 )
hdr_slider[hdrnum].set(hdr_image.exposure*10 - 10);
if( keynum == 61 )
hdr_slider[hdrnum].set(hdr_image.exposure*10 + 10);
}
}
// ----------------------------------------
// This must be called from within the HTML
// ----------------------------------------
// - injects images into viewport
// - binds slider to EV
// - binds mousewheel to slider
// Called once from each "hdr_viewer" div
// inject images into HTML
function insert_hdr_image( hdr_image ) {
hdr_viewport = $(hdr_image.base_name+'_viewport');
hdr_viewer = hdr_viewport.getParent('div.hdr_viewer');
// preload images
var preloading = new Array();
var k = 0;
for( i = 0; i < hdr_image.f8_stops; i++ ) {
for( j = 0; j < hdr_image.basis; j++ ) {
preloading[k] = ""+hdr_image.image_dir + hdr_image.base_name + "_"+i+"_" + (j+1) + ".jpg";
k = k + 1;
}
}
preloading[k] = ""+hdr_image.image_dir + hdr_image.base_name + "_"+hdr_image.f8_stops+"_1.jpg";
// for showing the AJAX spinning circle swap the next line with the block below
new Asset.images(preloading);
// var loadspinner = new Spinner(hdr_viewer).show('noFX');
// var myImages = new Asset.images(preloading, {
// onComplete: function(){
// loadspinner.destroy();
// }
// });
// enumerate all instances to remember the name
hdrcount = hdrcount + 1;
hdr_names[hdrcount] = ""+hdr_image.base_name;
var injection = "";
for( i = 0; i < hdr_image.basis + hdr_image.shared_basis; i++ ) {
injection += "<img id=\"" + hdr_image.base_name + "_" + i +
"\" style=\"margin: 0px; padding: 0px; opacity: 1; width: " +
hdr_image.width + "px; height: " + hdr_image.height +
"px; position: absolute; top: 0px; left: 0px\"" +
" />\n";
}
// also inject a hidden help viewer
injection += "<div id=\"" + hdr_image.base_name + "_help_view" + "\" class=\"hdr_instructions\"" +
"style=\"margin: 0px; padding: 0px; opacity: 0; width: " +
hdr_image.width + "px; height: " + hdr_image.height +
"px; position: absolute; top: 0px; left: 0px\" ><div style=\"padding: 50px;\">" +
"<h1><a href=\"http://pfstools.sourceforge.net/hdrhtml/\" target=\"_blank\">HDR HTML Viewer</a></h1>" +
"v1.0 (C) 2008 Rafal Mantiuk | <a href=\"http://pfstools.sourceforge.net/\" target=\"_blank\">pfsTools</a><br />" +
"v1.7 mod 2010 Christian Bloch | <a href=\"www.hdrlabs.com\" target=\"_blank\">HDR Labs</a><br />" +
"<ul><li>Change exposure by sliding the dynamic range window left and right. Or just use the scroll wheel.</li>" +
"<li>Press \"-\" and \"=\" keys to change exposure by 1 f-stop.</li>" +
"<li>The green plot represents the HDR histogram. EV value is given in f-stops (log<sub>2</sub> units) " +
"relative to the inital exposure.</li>" +
"<li>The exposure window / slider encompasses 8 f-stops.</li>" +
"</ul></div></div>";
hdr_viewport.set('html',injection);
// link help viewer to help buttom
var help_view = $(hdr_image.base_name+'_help_view').fade('hide');;
$(hdr_image.base_name+'_help').addEvent('click', function() {
if(help_view.getStyle('opacity') == 0) help_view.fade(0.85);
else help_view.fade('out');
});
help_view.addEvent('click', function() {
help_view.fade('out');
});
// initialize mootools slider
hist_left = Math.round((-hdr_image.hist_start)*hdr_image.pix_per_fstop);
var el = $(hdr_image.base_name+'_dr_ctrl');
el.style.left = Math.round(hist_left) + "px";
el.style.width = Math.round(hdr_image.hist_width-hist_left) + "px";
el.getElement('.knob').style.width = hdr_image.pix_per_fstop*8 + "px";
var EVrange = (hdr_image.hist_width-hist_left)/hdr_image.pix_per_fstop-7.7;
var slider = new Slider(el, el.getElement('.knob'), {
steps: EVrange*hdr_image.f_step_res,
range: [0,EVrange*10],
onChange: function(value) {
change_exp( hdr_image, value/10 - hdr_image.exposure);
}
}).set(hdr_image.exposure*10);
// clone this slider into an array for keyboard access
hdr_slider[hdrcount] = slider;
// link active hdr image to rollover on the current image
hdr_viewer.addEvent('mouseenter', function() {
hdr_active_image = hdr_image;
// suppress accidental selection of individual images or text
noselect = true;
});
// link the mousewheel to the slider
hdr_viewer.addEvent('mousewheel', function(e) {
e.stop(); // prevent the mousewheel from scrolling the page.
noselect = true;
slider.set((hdr_image.exposure + e.wheel/2)*10);
});
// restore outside text to be selectable
hdr_viewer.addEvent('mouseleave', function() {
noselect = false;
});
}
</script>
<!-- HDRHTML END -->
</head>
<body>
<!-- HDRHTML BEG: Put this part at the beginning of the "body" section -->
<script type="text/javascript">
@hdr_img_def@
@cf_array_def@
var hdrcount = 0;
var hdr_names = new Array();
var hdr_slider = new Array();
hdr_active_image = null;
document.onkeydown = hdr_onkeydown;
</script>
<!-- HDRHTML END -->
@image_htmlcode@
</body>
</html>