From 2fb0f1c8ce4d42ddca09cedc9c723de87523a95e Mon Sep 17 00:00:00 2001 From: Robert Jelic <36573031+NoryiE@users.noreply.github.com> Date: Sun, 7 May 2023 23:09:21 +0200 Subject: [PATCH] Small fix - Added default autosize for images - removed unnecessary Graphic object - removed unnecessary module file --- Basalt/libraries/bimg.lua | 21 ++-- Basalt/libraries/images.lua | 1 + Basalt/libraries/module.lua | 4 - Basalt/objects/Graphic.lua | 214 ------------------------------------ Basalt/objects/Image.lua | 25 ++++- 5 files changed, 36 insertions(+), 229 deletions(-) delete mode 100644 Basalt/libraries/module.lua delete mode 100644 Basalt/objects/Graphic.lua diff --git a/Basalt/libraries/bimg.lua b/Basalt/libraries/bimg.lua index f07cc77..6ca28bf 100644 --- a/Basalt/libraries/bimg.lua +++ b/Basalt/libraries/bimg.lua @@ -187,6 +187,12 @@ return function(img) local metadata = {creator="Bimg Library by NyoriE", date=os.date("!%Y-%m-%dT%TZ")} local width,height = 0, 0 + if(img~=nil)then + if(img[1][1][1]~=nil)then + width,height = metadata.width or #img[1][1][1], metadata.height or #img[1] + end + end + local manager = {} local function addFrame(id, data) @@ -363,18 +369,19 @@ return function(img) for k,v in pairs(img)do if(type(k)=="string")then metadata[k] = v - else - addFrame(k, v) end end if(metadata.width==nil)or(metadata.height==nil)then - for k,v in pairs(frames)do - local w, h = v.getSize() - if(w>width)then w = width end - if(h>height)then h = height end - end + width = metadata.width or #img[1][1][1] + height = metadata.height or #img[1] manager.updateSize(width, height, true) end + + for k,v in pairs(img)do + if(type(k)=="number")then + addFrame(k, v) + end + end else addFrame(1) end diff --git a/Basalt/libraries/images.lua b/Basalt/libraries/images.lua index ffa58c7..ce6ac00 100644 --- a/Basalt/libraries/images.lua +++ b/Basalt/libraries/images.lua @@ -12,6 +12,7 @@ local function loadBIMG(path, binaryMode) local f = fs.open(path, binaryMode and "rb" or "r") if(f==nil)then error("Path - "..path.." doesn't exist!") end local content = textutils.unserialize(f.readAll()) + f.close() if(content~=nil)then return content, "bimg" diff --git a/Basalt/libraries/module.lua b/Basalt/libraries/module.lua deleted file mode 100644 index 75f39cf..0000000 --- a/Basalt/libraries/module.lua +++ /dev/null @@ -1,4 +0,0 @@ -return function(path) - local exists, content = pcall(require, path) - return exists and content or nil -end \ No newline at end of file diff --git a/Basalt/objects/Graphic.lua b/Basalt/objects/Graphic.lua deleted file mode 100644 index f8f18e5..0000000 --- a/Basalt/objects/Graphic.lua +++ /dev/null @@ -1,214 +0,0 @@ -local Object = require("Object") -local tHex = require("tHex") -local xmlValue = require("utils").getValueFromXML -local bimgLib = require("bimg") -local images = require("images") - -local sub,len,max,min = string.sub,string.len,math.max,math.min - -return function(name) - -- Graphic - local base = Object(name) - local objectType = "Graphic" - local imgData = bimgLib() - local bimgFrame = imgData.getFrameObject(1) - local bimg - local selectedFrame = 1 - base:setZIndex(5) - - local xOffset, yOffset = 0, 0 - - local object = { - getType = function(self) - return objectType - end; - - setOffset = function(self, _x, _y, rel) - if(rel)then - xOffset = xOffset + _x or 0 - yOffset = yOffset + _y or 0 - else - xOffset = _x or xOffset - yOffset = _y or yOffset - end - self:updateDraw() - return self - end, - - getOffset = function(self) - return xOffset,yOffset - end, - - setValuesByXMLData = function(self, data) - base.setValuesByXMLData(self, data) - - return self - end, - - selectFrame = function(self, id) - if(imgData.getFrameObject(id)==nil)then - imgData.addFrame(id) - end - bimgFrame = imgData.getFrameObject(id) - bimg = bimgFrame.getImage(id) - selectedFrame = id - self:updateDraw() - end, - - addFrame = function(self, id) - imgData.addFrame(id) - return self - end, - - getFrameMetadata = function(self, id, key) - return imgData.getFrameData(id, key) - end, - - setFrameMetadata = function(self, id, key, val) - imgData.setFrameData(id, key, val) - return self - end, - - getMetadata = function(self, key) - return imgData.getMetadata(key) - end, - - setMetadata = function(self, key, value) - return imgData.setMetadata(key, value) - end, - - getFrame = function(self, id) - return imgData.getFrame(id) - end, - - getFrameObject = function(self, id) - return imgData.getFrameObject(id) - end, - - removeFrame = function(self, id) - imgData.removeFrame(id) - return self - end, - - moveFrame = function(self, id, dir) - imgData.moveFrame(id, dir) - return self - end, - - getFrames = function(self) - return imgData.getFrames() - end, - - getFrameCount = function(self) - return #imgData.getFrames() - end, - - getSelectedFrame = function(self) - return selectedFrame - end, - - blit = function(self, text, fg, bg, _x, _y) - x = _x or x - y = _y or y - bimgFrame.blit(text, fg, bg, x, y) - bimg = bimgFrame.getImage() - self:updateDraw() - return self - end, - - setText = function(self, text, _x, _y) - x = _x or x - y = _y or y - bimgFrame.text(text, x, y) - bimg = bimgFrame.getImage() - self:updateDraw() - return self - end, - - setBg = function(self, bg, _x, _y) - x = _x or x - y = _y or y - bimgFrame.bg(bg, x, y) - bimg = bimgFrame.getImage() - self:updateDraw() - return self - end, - - setFg = function(self, fg, _x, _y) - x = _x or x - y = _y or y - bimgFrame.fg(fg, x, y) - bimg = bimgFrame.getImage() - self:updateDraw() - return self - end, - - getImageSize = function(self) - return imgData.getSize() - end, - - setImageSize = function(self, w, h) - imgData.setSize(w, h) - bimg = bimgFrame.getImage() - self:updateDraw() - return self - end, - - resizeImage = function(self, w, h) - local newBimg = images.resizeBIMG(imgData.createBimg(), w, h) - imgData = bimgLib(newBimg) - selectedFrame = 1 - bimgFrame = imgData.getFrameObject(1) - bimg = bimgFrame.getImage() - self:updateDraw() - return self - end, - - loadImage = function(self, path) - if(fs.exists(path))then - local newBimg = images.loadBIMG(path) - imgData = bimgLib(newBimg) - selectedFrame = 1 - bimgFrame = imgData.getFrameObject(1) - bimg = bimgFrame.getImage() - self:updateDraw() - end - return self - end, - - clear = function(self) - imgData = bimgLib() - bimg = nil - self:updateDraw() - return self - end, - - getImage = function(self) - return imgData.createBimg() - end, - - draw = function(self) - if (base.draw(self)) then - if (self.parent ~= nil) then - local obx, oby = self:getAnchorPosition() - local w,h = self:getSize() - if(bimg~=nil)then - for k,v in pairs(bimg)do - if(k<=h-yOffset)and(k+yOffset>=1)then - self.parent:blit(obx+xOffset, oby+k-1+yOffset, v[1], v[2], v[3]) - end - end - end - end - end - end, - - init = function(self) - if(base.init(self))then - self.bgColor = self.parent:getTheme("GraphicBG") - end - end, - } - - return setmetatable(object, base) -end \ No newline at end of file diff --git a/Basalt/objects/Image.lua b/Basalt/objects/Image.lua index f80a760..5e6d7fb 100644 --- a/Basalt/objects/Image.lua +++ b/Basalt/objects/Image.lua @@ -15,6 +15,7 @@ return function(name, basalt) local infinitePlay = false local animTimer local usePalette = false + local autoSize = true local xOffset, yOffset = 0, 0 @@ -44,6 +45,14 @@ return function(name, basalt) return p end + local function checkAutoSize() + if(autoSize)then + if(bimgLibrary~=nil)then + base:setSize(bimgLibrary.getSize()) + end + end + end + local object = { getType = function(self) return objectType @@ -64,6 +73,12 @@ return function(name, basalt) return self end, + setSize = function(self, _x, _y) + base:setSize(_x, _y) + autoSize = false + return self + end, + getOffset = function(self) return xOffset, yOffset end, @@ -74,7 +89,7 @@ return function(name, basalt) end bimgFrame = bimgLibrary.getFrameObject(id) image = bimgFrame.getImage(id) - selectedFrame = id + activeFrame = id self:updateDraw() end, @@ -117,10 +132,11 @@ return function(name, basalt) if(fs.exists(path))then local newBimg = images.loadBIMG(path) bimgLibrary = bimg(newBimg) - selectedFrame = 1 + activeFrame = 1 bimgFrame = bimgLibrary.getFrameObject(1) originalImage = bimgLibrary.createBimg() image = bimgFrame.getImage() + checkAutoSize() self:updateDraw() end return self @@ -129,10 +145,11 @@ return function(name, basalt) setImage = function(self, t) if(type(t)=="table")then bimgLibrary = bimg(t) - selectedFrame = 1 + activeFrame = 1 bimgFrame = bimgLibrary.getFrameObject(1) originalImage = bimgLibrary.createBimg() image = bimgFrame.getImage() + checkAutoSize() self:updateDraw() end return self @@ -266,7 +283,7 @@ return function(name, basalt) resizeImage = function(self, w, h) local newBimg = images.resizeBIMG(originalImage, w, h) bimgLibrary = bimg(newBimg) - selectedFrame = 1 + activeFrame = 1 bimgFrame = bimgLibrary.getFrameObject(1) image = bimgFrame.getImage() self:updateDraw()