2020-02-10 17:18:21 -05:00

60 lines
2.0 KiB
Plaintext

local multi,thread = require("multi"):init()
local GLOBAL,THREAD = require("multi.integration.loveManager"):init()
local func = THREAD:newFunction(function(path)
require("love.image")
return love.image.newImageData(path)
end)
local load = THREAD:newFunction(function(path)
require("love.image")
require("love.filesystem")
local http = require("socket.http")
local request = require("luajit-request")
function download(path)
if path:find("https") then
return request.send(path).body
elseif path:find("http") then
return http.request(path)
end
end
return love.image.newImageData(love.filesystem.newFileData((download(path)),"temp"..path:sub(-4,-1)))
end)
local cache = {}
function gui:SetImage(i,inthread)
if not i then return end
if type(i) == "userdata" and i:type() == "Image" then
self.Image=i
self.ImageHeigth=self.Image:getHeight()
self.ImageWidth=self.Image:getWidth()
self.Quad=love.graphics.newQuad(0,0,self.width,self.height,self.ImageWidth,self.ImageHeigth)
elseif type(i)=="string" then
if cache[i] then
self:SetImage(cache[i])
else
if i:match([[https?://]]) then
load(i).connect(function(img)
self.Image = love.graphics.newImage(img)
cache[i]=self.Image
self.ImageHeigth=self.Image:getHeight()
self.ImageWidth=self.Image:getWidth()
self.Quad=love.graphics.newQuad(0,0,self.width,self.height,self.ImageWidth,self.ImageHeigth)
end)
else
if inthread or self.threadable then
func(i).connect(function(img)
self.Image = love.graphics.newImage(img)
cache[i]=self.Image
self.ImageHeigth=self.Image:getHeight()
self.ImageWidth=self.Image:getWidth()
self.Quad=love.graphics.newQuad(0,0,self.width,self.height,self.ImageWidth,self.ImageHeigth)
end)
else
self.Image = love.graphics.newImage(i)
cache[i]=self.Image
self.ImageHeigth=self.Image:getHeight()
self.ImageWidth=self.Image:getWidth()
self.Quad=love.graphics.newQuad(0,0,self.width,self.height,self.ImageWidth,self.ImageHeigth)
end
end
end
end
end