1
0
mirror of https://github.com/AR2000AR/openComputers_codes.git synced 2025-09-07 22:21:14 +02:00

[yaowbgl] can handle both pre 1.8 and 1.8 gpu.bitblt

This commit is contained in:
2023-05-10 15:36:02 +02:00
parent 49a4169933
commit c983fb8027
4 changed files with 30 additions and 4 deletions

View File

@@ -363,7 +363,7 @@
["yaowbgl"] = {
["manifestVersion"] = "1.0",
["package"] = "yaowbgl",
["version"] = "1.1.0",
["version"] = "1.1.1",
["name"] = "Yet A Other Widget Based Graphical Library",
["repo"] = "tree/master/yaowbgl",
["description"] = "New version of libgui, but using libclass2 and cleaner code and interface.",

Binary file not shown.

View File

@@ -374,7 +374,7 @@
dependencies = {
["libclass2"] = "/"
}
version = "1.1.0",
version = "1.1.1",
name = "Yet A Other Widget Based Graphical Library",
description = "New version of libgui, but using libclass2 and cleaner code and interface.";
authors = "AR2000AR",

View File

@@ -2,6 +2,24 @@ local gpu = require("component").gpu
local Widget = require("yaowbgl.widget.Widget")
local event = require("event")
--=============================================================================
--test bitblt bug
local bitBltFix = false
local testBuffer1 = gpu.allocateBuffer(2, 2)
local testBuffer2 = gpu.allocateBuffer(2, 2)
gpu.setActiveBuffer(testBuffer1)
gpu.set(1, 2, 'X')
gpu.bitblt(testBuffer2, 1, 2, 1, 1, testBuffer1, 1, 2)
gpu.setActiveBuffer(testBuffer2)
if (gpu.get(1, 2) == 'X') then
bitBltFix = false
else
bitBltFix = true
end
gpu.setActiveBuffer(0)
gpu.freeBuffer(testBuffer1)
gpu.freeBuffer(testBuffer2)
--=============================================================================
---@class Frame:Widget
@@ -112,7 +130,11 @@ function Frame:draw()
if (newBuffer and newBuffer ~= defaultBuffer) then
--copy the old buffer in the new buffer for transparancy effect
gpu.bitblt(newBuffer, self:absX(), self:absY(), self:width(), self:height(), defaultBuffer, self:absY(), self:absX())
if (bitBltFix) then
gpu.bitblt(newBuffer, self:absX(), self:absY(), self:width(), self:height(), defaultBuffer, self:absY(), self:absX())
else
gpu.bitblt(newBuffer, self:absX(), self:absY(), self:width(), self:height(), defaultBuffer, self:absX(), self:absY())
end
end
--clean background
@@ -141,7 +163,11 @@ function Frame:draw()
end
--restore buffer
if (newBuffer and newBuffer ~= defaultBuffer) then
gpu.bitblt(defaultBuffer, self:absX(), self:absY(), self:width(), self:height(), newBuffer, self:absY(), self:absX())
if (bitBltFix) then
gpu.bitblt(defaultBuffer, self:absX(), self:absY(), self:width(), self:height(), newBuffer, self:absY(), self:absX())
else
gpu.bitblt(defaultBuffer, self:absX(), self:absY(), self:width(), self:height(), newBuffer, self:absX(), self:absY())
end
gpu.setActiveBuffer(defaultBuffer)
gpu.freeBuffer(newBuffer)
end