Files
cell/tests/qr_drag.js
John Alanbrook 589bb365bd
Some checks failed
Build and Deploy / build-macos (push) Failing after 4s
Build and Deploy / build-windows (CLANG64) (push) Has been cancelled
Build and Deploy / package-dist (push) Has been cancelled
Build and Deploy / deploy-itch (push) Has been cancelled
Build and Deploy / deploy-gitea (push) Has been cancelled
Build and Deploy / build-linux (push) Has been cancelled
http now returns byte array and content type
2025-05-06 22:50:24 -05:00

131 lines
2.7 KiB
JavaScript

// bunnymark
var render = use('render')
var os = use('os')
var dim = [500,500]
render.initialize({
width:dim.x,
height:dim.y,
resolution_x:dim.x,
resolution_y:dim.y,
mode:"letterboxed",
refresh: 60,
})
var camera = {
size: [500,500],
transform: os.make_transform(),
fov:50,
near_z: 0,
far_z: 1000,
surface: undefined,
viewport: {x:0,y:0,width:1,height:1},
ortho:true,
anchor:[0,0],
}
var draw = use('draw2d')
var sprite = use('lcdsprite')
var graphics = use('graphics')
var dt = 0
var img = undefined
var ioguy = {
__ACTORDATA__: { id: os.ioactor() }
}
var io = use('io')
io.mount('/')
var qr = use('qr')
var myimg = qr.encode("HELLO WORLD")
var mybytes = qr.rgba(myimg)
graphics.save_png("qr_hello.png", mybytes.width, mybytes.height, mybytes.buffer, mybytes.pitch);
// test saving a zipped json
var miniz = use('miniz')
var lvl = io.slurp('tests/level.json')
var lvl_cmp = miniz.compress(lvl)
var qr_lvl = qr.encode(lvl_cmp)
var lvl_bytes = qr.rgba(qr_lvl)
graphics.save_png("qr_level.png", lvl_bytes.width, lvl_bytes.height, lvl_bytes.buffer, lvl_bytes.pitch)
console.log(`saved compressed level as qr; size was ${lvl_cmp.byteLength}`)
$_.send(ioguy, {
type: "subscribe",
actor: $_
})
function strToArrayBuffer(binStr) {
const view = new Uint8Array(binStr.length);
for (let i = 0; i < binStr.length; i++)
view[i] = binStr.codePointAt(i) & 0xff; // mask keeps it 0-255
return view.buffer;
}
var http = use('http')
function is_url(str)
{
return /^https?:\/\/[^\s/$.?#].[^\s]*$/i.test(str)
}
function parse_data(res)
{
var data = res.data
console.log("DOWNLOAD DONE! size was " + data.byteLength)
console.log(res.type)
}
$_.receiver(e => {
if (e.type === 'quit')
os.exit()
switch(e.type) {
case "drop_file":
console.log(`got ${e.data} dropped`)
break
img = e.data
var image = graphics.texture(e.data)
var data = qr.decode(image.surface.pixels(), image.surface.width(), image.surface.height(), image.surface.pitch())
console.log(`found ${data.length} qr`)
data = data[0]
console.log(data.byteLength)
var ddata = miniz.decompress(data, true)
console.log(ddata)
case "drop_text":
console.log(`text ${e.data} dropped`)
// if e.data is a url, fetch it
if (is_url(e.data)) {
console.log('fetching!')
http.fetch(e.data, parse_data)
}
break
}
})
function loop()
{
http.poll();
var now = os.now()
render.clear([22/255,120/255,194/255,255/255])
render.camera(camera)
if (img)
draw.image(img, {x:0,y:0,width:300,height:300})
render.present()
dt = os.now() - now
var delay = (1/60) - dt
$_.delay(loop, delay)
}
loop()