/* JVIV - JavaScript Voxel Image Viewer */ JVIV = function() { this.requires = ["CBDL/CBDL_graphics.js"]; var state = 0; var vif_loader; var loop; var display; var buffer = []; this.Main = function() { display = new CBDL.Graphics.Display(document.body, new CBDL.Graphics.VideoMode(512, 512, CBDL.Graphics.VM_SCALE), CBDL.Graphics.BACKEND.DIV); display.Init(); display.Fill(25, 75, 25); vif_loader = new VL.Loader('test.txt'); (loop = new CBDL.Loop(this, onLoop)).start(); }; var offset = 0; var version = 0; var type = 0; var width = 0; var height = 0; var depth = 0; var palette_size = 0; var palettes = []; var voxels = []; var boxels = []; function onLoop(loop_time) { if (state == 0) { if (vif_loader.state == 1) { display.Fill(50, 50, 50); loadVoxel(vif_loader.raw_data); // We're done with the vif_loader, remove it vif_loader = null; // create our voxels as CBDL.Box(es) for (var i=0;i= 0; i--) { palette_size = (palette_size * 256) + buffer[offset+i]; } palette_size += 1; // TODO: palette size in test.vif should be changed to 00 00 00 01, NOT absolutely 0 offset += 4; // move past pallete byte range console.log("pallete size: "+palette_size); palettes = []; for (var i=0;i= 0; j--) { voxels[i][3] = (voxels[i][3] * 256) + buffer[offset+j]; // pallete reference } offset += 4; // move past pallete byte range console.log("voxel("+i+"): "+voxels[i]); i++; } }; }; CBDL.extend(CBDL.App, JVIV); /* VIF Library */ var VL = VL || {}; /** int loadVif(url, &byte_array) Attempts to load the first parameter using XMLHttpRequest() as binary data into byte_array. Returns 1 on failure, 0 on success **/ VL.Loader = function(vif_file) { this.state = 0; this.raw_data = []; var iframe = document.createElement('iframe'); iframe.content = 'text\/plain; charset=x-user-defined' iframe.style.display = 'none'; document.body.appendChild(iframe); CBDL.addEvent(iframe, 'load', (function(iframe, scope) { return function() { var doc = (iframe.contentDocument || iframe.contentWindow.document || window[iframe.id].document); var pre = doc.body.getElementsByTagName("pre"); if (typeof pre[0] === 'undefined') { data = doc.body.innerHTML; } else { data = pre[0].innerHTML; } for(var i=0;i