function checkForAtom(offset) {
reader.onload = function(e) {
- var atom = new Atom(e.target.result);
- if (atom)
+ var atom = new Atom();
+ if (atom) {
+ atom.parse(e.target.result, 0);
readAtom(offset, atom.size);
+ }
};
- var subset = file.slice(offset, offset + 16);
+ var subset = file.slice(offset, offset + 36);
reader.readAsArrayBuffer(subset);
}
checkForAtom(0);
}
-
function toDOMRepresentation(object)
{
if (object instanceof Atom)
return document.createTextNode('"' + object + '"');
else if (object instanceof Date)
return document.createTextNode(object.toLocaleString());
- else
+ else if (object instanceof Uint8Array) {
+ return Uint8ArrayNode(object);
+ } else if (object instanceof Object)
+ return toDOMNode(object);
+ else if (object === null)
+ return document.createTextNode('[null]');
+ else
return document.createTextNode(object.toString());
}
continue;
var div = document.createElement('div');
var dt = document.createElement('dt');
- dt.appendChild(document.createTextNode(property));
+ dt.appendChild(document.createTextNode(property + ': '));
var dd = document.createElement('dd');
dd.appendChild(toDOMRepresentation(value));
div.appendChild(dt);
}
return output;
}
+
+ function Uint8ArrayNode(array)
+ {
+ var table = document.createElement('table');
+ var width = 16;
+ for (var offset = 0; offset <= array.length; offset += width) {
+ var tr = document.createElement('tr');
+ table.appendChild(tr);
+
+ var th = document.createElement('th');
+ tr.appendChild(th);
+ th.innerText = ('0000000' + offset.toString(16)).substr(-8) + ':';
+
+ for (var column = 0; column < width && offset + column < array.length; column += 2) {
+ var td = document.createElement('td');
+ tr.appendChild(td);
+ td.innerText = ('00' + array[offset + column].toString(16)).substr(-2);
+ if (offset + column + 1 < array.length)
+ td.innerText += ('00' + array[offset + column + 1].toString(16)).substr(-2);
+ }
+ }
+ return table;
+ }
function setup() {
document.getElementById('file').addEventListener('change', onFileSelect, false);
<style>
dl { border: 1px solid black; padding: 1px; }
dt, dd { display: inline; }
- dt:after { content:": " }
+ /*dt:after { content:": " }*/
dd:after { content:"\A"; white-space:pre; }
dd dl { margin: 0; vertical-align: top }
dd span { display: inline-block; vertical-align: top; }
- dt, dd { display: inline-block; min-width: 8em; }
+ dt, dd { display: inline-block; min-width: 14em; }
dd { margin-left: 1em; }
+ dd th { font-weight: normal; text-align: right; }
.description { text-align: center; font-weight: bold; }
/* make the output display as a table */