"use strict"; var progressVal = 0; var show_progress = 5; var start_hist_delay = 1000; // used to be 4000 var mini_delay = 300; //var hasLocalStorage = (typeof(Storage) !== "undefined"); // **** var hasLocalStorage = false; var quantHSLHistogramArray; //var saveOnServer=true; var saveOnServer=false; var retrieveFromServer=true; function runlength_encode(int_array) { var array_len = int_array.length; if (array_len<2) { console.warn("runlength_encode(): unable to run-length encode array of length " + array_len); console.warn("returning null"); return null; } var int_array_rle = new Array(); var lock_val=int_array[0]; var next_val=int_array[1]; var i = 1; while (ishow_progress) { $progressArea.slideDown(); } img_list.sort(); var root_img_re = /^.*\/(.*?)\..*?$/; var progress_step = 100.0 / img_list_len; var callback_count = 0; var i; for (i=0; ishow_progress) { progressVal = 100; $progressBar.progressbar('value',progressVal); //$progressArea.slideUp(); // Now move on and start computing colour histograms setTimeout(function() { doneDisplayFlags(img_list,$progressArea,$progressBar); } ,start_hist_delay); } } }; /* $("h2").live('mousedown', function(e) { if( (e.which == 1) ) { alert("left button"); }if( (e.which == 3) ) { alert("right button"); }else if( (e.which == 2) ) { alert("middle button"); } e.preventDefault(); }).live('contextmenu', function(e){ e.preventDefault(); }); */ imageObj.onclick = function(e) { // Store result of HSL quantization in the image object/tag if (!this.quantHSLHist) { // Only need to compute this if it is not already stored in the object/tag this.quantHSLHist = createHSLHistogram(this,16); console.log(this.quantHSLHist); } if (e.which == 1 ) { // Left => use in comparison pair flag_comparison_array[clicked_on_count] = this.quantHSLHist; clicked_on_count++; if (clicked_on_count==2) { // trigger comparison alert("Similarity score: " + quantizedColourHistogramComparison(flag_comparison_array[0],flag_comparison_array[1])); clicked_on_count=0; } } else if (e.which == 2) { // Middle => fix on this and do similarity with everything else var fix_id = this.id; e.preventDefault(); } }; imageObj.src = img_url; imageObj.title = title.toUpperCase(); imageObj.country = imageObj.title; imageObj.id = "flag-img-" + i; $displayDiv.append(imageObj); } } function calcSimilarityValues(newFlagQuantHSLHist, $displayDiv,$progressArea,$progressBar) { console.log("*** calcSimilarityValues()"); var iframe = $('#similarity-2d-iframe').contents(); var img_obj_list = iframe.find('#flagArea').children('img').toArray(); var img_obj_list_len = img_obj_list.length; if (img_obj_list_len==0) { return; } else if (img_obj_list_len>show_progress) { // number of images to process non-trivial $progressArea.slideDown(); } var progress_step = 100.0 / img_obj_list_len; for (var i=0; i need to compute it imageObj.quantHSLHist = createHSLHistogram(imageObj,16); //console.log(imageObj.quantHSLHist); } }); } else { imageObj.quantHSLHist = createHSLHistogram(imageObj,16); } } if (chain_count < img_list_len-1) { progressVal += progress_step; $progressBar.progressbar('value',progressVal); setTimeout(function() { computeFlagHistogramChain(chain_count+1,img_list_len, progressVal, progress_step, $progressArea,$progressBar) } ,mini_delay // any time delay causes break in 'rendering' thread, even 0! ); } else { $progressArea.find('span:first').text("Done."); if (img_list_len>show_progress) { progressVal = 100; $progressBar.progressbar('value',progressVal); $progressArea.slideUp(); } doneComputingHistograms(img_list_len); } } function computeFlagHistograms(img_list,$progressArea,$progressBar) { var img_list_len = img_list.length; if (img_list_len==0) { $progressArea.find('span:first').text("Empty list: no computation needed."); return; } $progressArea.find('span:first').text("Computing histograms:"); progressVal = 0; if (img_list_len>show_progress) { $progressArea.slideDown(); } var progress_step = 100.0 / img_list_len; // Start the chaining process setTimeout(function() { computeFlagHistogramChain(0,img_list_len, progressVal, progress_step, $progressArea,$progressBar) } ,mini_delay // any time delay causes break in 'rendering' thread, even 0! ); } function doneComputingHistograms(img_list_len) { quantHSLHistogramArray = new Array(img_list_len); for (var i=0; i regenerating"); } } } if (needToComputeHistograms) { if (retrieveFromServer) { // before computing histograms from scratch, see if resulting data stored on server console.log("Retrieving stored colour histgram data for all flags ..."); $.ajax({ async: true, dataType: "json", url: "../similarity-2d/json-data/all-hsv-histograms-rle.json", success: function(rle_data) { console.log("... success"); if (rle_data.length != img_list.length) { console.log("Stored histogram data out of date with flag list."); console.log("rle len = " + rle_data.length + ", img_list len = " + img_list.length); // what is stored on the sever differed to the number of images displayed computeFlagHistograms(img_list,$progressArea,$progressBar); } else { var img_list_len = img_list.length; quantHSLHistogramArray = new Array(img_list_len); // Need to rle decode each entry in this array for (var i=0; i