mirror of
https://github.com/Ale32bit/Capy64.git
synced 2025-02-18 07:32:30 +00:00
Add term.blit
This commit is contained in:
parent
38ff61f614
commit
c278d997ff
1 changed files with 55 additions and 1 deletions
|
@ -139,6 +139,11 @@ internal class Term : IPlugin
|
|||
name = "setBlink",
|
||||
function = L_SetBlink,
|
||||
},
|
||||
new()
|
||||
{
|
||||
name = "blit",
|
||||
function = L_Blit,
|
||||
},
|
||||
new(),
|
||||
};
|
||||
|
||||
|
@ -561,4 +566,53 @@ internal class Term : IPlugin
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static int L_Blit(IntPtr state)
|
||||
{
|
||||
var L = Lua.FromIntPtr(state);
|
||||
|
||||
var text = L.CheckString(1);
|
||||
L.CheckType(2, LuaType.Table);
|
||||
L.CheckType(3, LuaType.Table);
|
||||
|
||||
var len = L.Length(1);
|
||||
L.ArgumentCheck(L.Length(2) == len, 2, "length does not match");
|
||||
L.ArgumentCheck(L.Length(3) == len, 3, "length does not match");
|
||||
|
||||
var fg = new Color[len];
|
||||
var bg = new Color[len];
|
||||
|
||||
L.PushCopy(2);
|
||||
for (int i = 1; i <= len; i++)
|
||||
{
|
||||
L.GetInteger(-1, i);
|
||||
var v = L.CheckInteger(-1);
|
||||
L.Pop(1);
|
||||
|
||||
UnpackRGB((uint)v, out var r, out var g, out var b);
|
||||
fg[i - 1] = new Color(r, g, b);
|
||||
}
|
||||
L.Pop(1);
|
||||
|
||||
L.PushCopy(3);
|
||||
for (int i = 1; i <= len; i++)
|
||||
{
|
||||
L.GetInteger(-1, i);
|
||||
var v = L.CheckInteger(-1);
|
||||
L.Pop(1);
|
||||
|
||||
UnpackRGB((uint)v, out var r, out var g, out var b);
|
||||
bg[i - 1] = new Color(r, g, b);
|
||||
}
|
||||
L.Pop(1);
|
||||
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
ForegroundColor = fg[i];
|
||||
BackgroundColor = bg[i];
|
||||
Write(text[i].ToString());
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue