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:
@@ -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.
@@ -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",
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user