summaryrefslogtreecommitdiffstats
path: root/examples/webkit/imageanalyzer/resources/index.html
blob: 653295158864e7169cec14013ec664cf3a1d0f8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133

<html>
    <body>
    <!-- [ images list ] -->
        <div style="float:right; width:50%; border-left: solid 1px black">
            <div id="listdiv" align="center">
                <h5>Images to be analyzed:</h5>
                <select multiple size=10 id=imglist style="width:80%"></select>
                <br />
                <input type="button" id="evalbutton" value="Analyze" onclick="analyzeImages()" />
            </div>
        </div>
    <!-- [ images list ] -->
        <div style="width:50%">
            <div id="titleblock" align="center">
                <h2>Image Analyzer</h2>
            </div>
            <div id=outputdiv align=center>
                <h4>Status: <span id=status>Idle</span></h4>
                <h5>
                    Latest Results:<br />
                    Red: <span id=redval style="color:red">n/a</span><br />
                    Green: <span id=greenval style="color:green">n/a</span><br />
                    Blue: <span id=blueval style="color:blue">n/a</span><br />
                </h5>
                <h3>Click on images below to select for analysis</h3>
            </div>
        </div>
        <!-- [ sample images ] -->
        <div id=imagediv style="clear:both; text-align:center">
        <hr/>
            <img src="images/mtRainier.jpg" height=150px onclick='return addImage(this);' />
            <img src="images/bellaCoola.jpg" height=150px onclick='return addImage(this);'/>
            <img src="images/seaShell.jpg" height=150px onclick='return addImage(this);'/>
        <!-- [ sample images ] -->
            <img src="images/flower.jpg" height=150px onclick='return addImage(this);'/>
            <img src="images/trees.jpg" height=150px onclick='return addImage(this);'/>
        </div>

    </body>
</html>

<script type="text/javascript">
    var remaining = 0;
    var connected = false;
    //We use this function because connect statements resolve their target once, imediately
    //not at signal emission so they must be connected once the imageAnalyzer object has been added to the frame
    //! <!--  [ connect slots ] -->
    function connectSlots()
    {
        if ( !connected ) {
            connected = true;
            imageAnalyzer.finishedAnalysis.connect(this, finished);
            imageAnalyzer.updateProgress.connect(this, updateProg);
        }
    }
    //! <!--  [ connect slots ] -->

    function finished() {
        setStatus('Idle');
        setResults(imageAnalyzer.red.toFixed(2), imageAnalyzer.green.toFixed(2), imageAnalyzer.blue.toFixed(2));
    }
    //This will function as the recieving "slot" for the progress signal
    function updateProg(complete, max)
    {
        var oldRemaining = remaining;
        remaining = max - complete;
        pullList(oldRemaining - remaining);
        //Prevent results getting messed up if we don't get signals in order
        if( imageAnalyzer.busy ) {
            setStatus('Processing (' + complete + ' of ' + max + ' completed)');
            setResults('Calculating','Calculating','Calculating');
        }
    }

//! <!--  [ analyzeImages ] -->
function analyzeImages() {
    connectSlots();
    var imglist = document.getElementsByTagName('option');
    if (imglist.length > 0) {
        stringlist = [];
        for(var i=0; i<imglist.length; i++) {
            stringlist[i]=imglist[i].value;
        }
        if (!imageAnalyzer.busy) {
            remaining = stringlist.length;
            imageAnalyzer.startAnalysis(stringlist);
        } else {
            alert("Processing, please wait until finished.");
        }
//! <!--  [ analyzeImages ] -->
    } else {
        alert('No images selected. Click on one or more images to select them for analysis.');
    }
}
function clearList() {
    var imglist = document.getElementById('imglist');
    while(imglist.length > 0) {
        imglist.removeChild(imglist.childNodes[0]);
    }
}
function pullList(count) {
    var imglist = document.getElementById('imglist');
    while(imglist.length > 0 && count > 0) {
        imglist.removeChild(imglist.childNodes[0]);
        count--;
    }
}
function setStatus(statusString) {
    document.getElementById('status').innerHTML = statusString;
}

function setResults(red, green, blue) {
    if (! isNaN(red) ) { red += " %"; }
    if (! isNaN(green) ) { green += " %"; }
    if (! isNaN(blue) ) { blue += " %"; }
    document.getElementById('redval').innerHTML = red;
    document.getElementById('greenval').innerHTML = green;
    document.getElementById('blueval').innerHTML = blue;
}
//! <!--  [ addImage ] -->
function addImage(newimg) {
    var imglist = document.getElementById('imglist');
    var curChildren = imglist.childNodes;
    var newline = document.createElement('option');
    newline.innerHTML = newimg.src.substring(newimg.src.lastIndexOf('/')+1);
    newline.value = newimg.src;
    imglist.appendChild(newline);
}
//! <!--  [ addImage ] -->
</script>