Class xwlib.bmp
XWLUA模块:位图
位的序号从0开始。
MetaMethods
bmp:metatable.__copy (bmp, vm) | 元方法:__copy |
bmp:metatable.__tostring (bmp) | 元方法:__tostring |
bmp:metatable.__band (opd1, opd2) | 元方法:__band |
bmp:metatable.__bor (opd1, opd2) | 元方法:__bor |
bmp:metatable.__bxor (opd1, opd2) | 元方法:__bxor |
bmp:metatable.__bnot (opd1) | 元方法:__bnot |
bmp:metatable.__len (opd1) | 元方法:__len |
bmp:metatable.__eq (opd1, opd2) | 元方法:__eq |
StaticMethods
xwlib.bmp.new (bits) | 新建位图 |
Methods
xwlib.bmp:fill (bmp) | 将位图全部填 1 |
xwlib.bmp:zero (bmp) | 将位图全部清 0 |
xwlib.bmp:assign (bmp, opd) | 赋值 |
xwlib.bmp:weight (bmp) | 计算位图中 1 的个数 |
xwlib.bmp:ffs (bmp) | 从位图的最低位开始,查找第一个被置 1 的位的序号 |
xwlib.bmp:ffz (bmp) | 从位图的最低位开始,查找第一个被清 0 的位的序号 |
xwlib.bmp:fls (bmp) | 从位图的最高位开始,查找第一个被置 1 的位的序号 |
xwlib.bmp:flz (bmp) | 从位图的最高位开始,查找第一个被清 0 的位的序号 |
xwlib.bmp:s1i (bmp, pos1, pos2, ...) | 依次将位图中的位置 1 |
xwlib.bmp:s1m (bmp, msk) | 将位图中的掩码部分全部置 1 |
xwlib.bmp:c0i (bmp, pos1, pos2, ...) | 依次将位图中的位清 0 |
xwlib.bmp:c0m (bmp, msk) | 将位图中的掩码部分全部清 0 |
xwlib.bmp:x1i (bmp, pos1, pos2, ...) | 依次将位图中的位翻转 |
xwlib.bmp:x1m (bmp, msk) | 将位图中的掩码部分全部翻转 |
xwlib.bmp:t1i (bmp, pos) | 测试位图中的某个位 |
xwlib.bmp:t1ma (bmp, msk) | 测试位图中的掩码部分的位是否全部置 1 |
xwlib.bmp:t1mo (bmp, msk) | 测试位图中的掩码部分的位是否至少有一位置 1 |
xwlib.bmp:t0ma (bmp, msk) | 测试位图中的掩码部分的位是否全部清 0 |
xwlib.bmp:t0mo (bmp, msk) | 测试位图中的掩码部分的位是否至少有一位清 0 |
MetaMethods
- bmp:metatable.__copy (bmp, vm)
-
元方法:__copy
将位图导出到全局导出表 xwxt 中,此方法会逐位拷贝。
Parameters:
- bmp userdata (in) 位图对象
- vm userdata (in) 目标虚拟机
Usage:
mybmp = ... -- 创建(省略) xwxt.somebmp = mybmp -- 复制到全局导出表
- bmp:metatable.__tostring (bmp)
-
元方法:__tostring
将位图格式化成字符串,可用于终端打印调试。
Parameters:
- bmp userdata (in) 位图对象
Usage:
mybmp = ... -- 创建(省略) print(mybmp)
- bmp:metatable.__band (opd1, opd2)
-
元方法:__band
运算符:位与 & ,此运算符要求两个操作数的位数一致, 会将两个位图对象按位进行与运算,并产生一个新的位图对象返回结果。
Parameters:
- opd1 userdata (in) 位图对象1
- opd2 userdata (in) 位图对象2
Returns:
-
userdata
结果
Usage:
mybmp1 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图1 mybmp1:fill() -- 全部填充1 mybmp2 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图2 mybmp2:zero() mybmp2:s1i(0, 1, 2, 3, 4, 5, 6, 7) -- 0xFF mybmp3 = mybmp1 & mybmp2 print(mybmp3)
终端输出
00000000000000FF
- bmp:metatable.__bor (opd1, opd2)
-
元方法:__bor
运算符:位或 | ,此运算符要求两个操作数的位数一致, 会将两个位图对象按位进行或运算,并产生一个新的位图对象返回结果。
Parameters:
- opd1 userdata (in) 位图对象1
- opd2 userdata (in) 位图对象2
Returns:
-
userdata
结果
Usage:
mybmp1 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图1 mybmp1:zero() -- 全部填清0 mybmp2 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图2 mybmp2:zero() mybmp2:s1i(0, 1, 2, 3, 4, 5, 6, 7) -- 0xFF mybmp3 = mybmp1 | mybmp2 print(mybmp3)
终端输出
00000000000000FF
- bmp:metatable.__bxor (opd1, opd2)
-
元方法:__bxor
运算符:位异或 ~ ,此运算符要求两个操作数的位数一致, 会将两个位图对象按位进行异或运算,并产生一个新的位图对象返回结果。
Parameters:
- opd1 userdata (in) 位图对象1
- opd2 userdata (in) 位图对象2
Returns:
-
userdata
结果
Usage:
mybmp1 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图1 mybmp1:fill() -- 全部填充1 mybmp2 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图2 mybmp2:zero() mybmp2:s1i(0, 1, 2, 3, 4, 5, 6, 7) -- 0xFF mybmp3 = mybmp1 ~ mybmp2 print(mybmp3)
终端输出
FFFFFFFFFFFFFF00
- bmp:metatable.__bnot (opd1)
-
元方法:__bnot
运算符:位取反 ~,此运算符会将位图对象按位进行取反运算,并产生一个新的位图对象返回结果。
Parameters:
- opd1 userdata (in) 位图对象1
Returns:
-
userdata
结果
Usage:
mybmp1 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图1 mybmp1:fill() -- 全部填充1 mybmp2 = ~mybmp1 print(mybmp1) print(mybmp2)
终端输出
FFFFFFFFFFFFFFFF
0000000000000000
- bmp:metatable.__len (opd1)
-
元方法:__len
运算符:计算长度 #,此运算符会返回位图中位数。
Parameters:
- opd1 userdata (in) 位图对象1
Returns:
-
userdata
结果
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图1 print(#mybmp)
终端输出
64
- bmp:metatable.__eq (opd1, opd2)
-
元方法:__eq
运算符:比较相等 ==,此运算符会返回位图中位数。
Parameters:
- opd1 userdata (in) 位图对象1
- opd2 userdata (in) 位图对象2
Returns:
-
boolean
是否相等
Usage:
mybmp1 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图1 mybmp1:fill() -- 全部填充1 mybmp2 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图2 mybmp2:fill() -- 全部填充1 if (mybmp1 == mybmp2) then print("equal") end
终端输出
equal
StaticMethods
- xwlib.bmp.new (bits)
-
新建位图
Parameters:
- bits number (in) 位图中位的数量
Returns:
-
userdata
新的位图
Usage:
mybmp = xwlib.bmp.new(64) -- 创建包含64个位的位图
Methods
- xwlib.bmp:fill (bmp)
-
将位图全部填 1
Parameters:
- bmp userdata (in) 位图对象
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:fill() -- 全部填充1 print(mybmp)
终端输出
FFFFFFFFFFFFFFFF
- xwlib.bmp:zero (bmp)
-
将位图全部清 0
Parameters:
- bmp userdata (in) 位图对象
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:zero() -- 全部填充0 print(mybmp)
终端输出
0000000000000000
- xwlib.bmp:assign (bmp, opd)
-
赋值
此函数与
bmp = opd
不同,bmp = opd
只是将引用bmp指向opd, bmp原来的对象如果没有被别的引用持有,将会被虚拟机回收掉,属于 浅拷贝 。Parameters:
- bmp userdata (in) 目的位图对象
- opd userdata (in) 源位图对象
Usage:
mybmp1 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图1 mybmp1:fill() -- 全部填充1 mybmp2 = xwlib.bmp.new(64) -- 创建一个包含64个位的位图2 mybmp2:assign(mybmp1) print(mybmp1) print(mybmp2)
终端输出
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
- xwlib.bmp:weight (bmp)
-
计算位图中 1 的个数
Parameters:
- bmp userdata (in) 目的位图对象
Returns:
-
number
位图中1的个数
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:zero() -- 清0 mybmp:s1i(1, 10) -- 第1, 10位填充1 print(mybmp:weight())
终端输出
2
- xwlib.bmp:ffs (bmp)
-
从位图的最低位开始,查找第一个被置 1 的位的序号
Parameters:
- bmp userdata (in) 目的位图对象
Returns:
-
number
序号
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:zero() -- 清0 mybmp:s1i(10) -- 第10位填充1 mybmp:s1i(11) -- 第11位填充1 print(mybmp:ffs())
终端输出
10
- xwlib.bmp:ffz (bmp)
-
从位图的最低位开始,查找第一个被清 0 的位的序号
Parameters:
- bmp userdata (in) 目的位图对象
Returns:
-
number
序号
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:zero() -- 清0 mybmp:s1i(10) -- 第10位填充1 mybmp:s1i(11) -- 第11位填充1 print(mybmp:ffz())
终端输出
0
- xwlib.bmp:fls (bmp)
-
从位图的最高位开始,查找第一个被置 1 的位的序号
Parameters:
- bmp userdata (in) 目的位图对象
Returns:
-
number
序号
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:zero() -- 清0 mybmp:s1i(10) -- 第10位填充1 mybmp:s1i(11) -- 第11位填充1 print(mybmp:fls())
终端输出
11
- xwlib.bmp:flz (bmp)
-
从位图的最高位开始,查找第一个被清 0 的位的序号
Parameters:
- bmp userdata (in) 目的位图对象
Returns:
-
number
序号
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:zero() -- 清0 mybmp:s1i(10) -- 第10位填充1 mybmp:s1i(11) -- 第11位填充1 print(mybmp:flz())
终端输出
63
- xwlib.bmp:s1i (bmp, pos1, pos2, ...)
-
依次将位图中的位置 1
Parameters:
- bmp userdata (in) 目的位图对象
- pos1 userdata (in) 位的序号1
- pos2 userdata (in , optional) 位的序号2
- ... userdata (in , optional) 位的序号n
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:zero() -- 清0 mybmp:s1i(0, 1, 3, 9) -- 第0, 1, 3, 9位填充1 print(mybmp)
终端输出
000000000000020B
- xwlib.bmp:s1m (bmp, msk)
-
将位图中的掩码部分全部置 1
Parameters:
- bmp userdata (in) 目的位图对象
- msk userdata (in) 掩码位图
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mymsk = xwlib.bmp.new(64) -- 创建一个包含64个位的位图掩码 mymsk:zero() mymsk:s1i(0, 1, 3, 9) -- 第0, 1, 3, 9位填1 mybmp:zero() mybmp:s1m(mymsk) print(mybmp)
终端输出
000000000000020B
- xwlib.bmp:c0i (bmp, pos1, pos2, ...)
-
依次将位图中的位清 0
Parameters:
- bmp userdata (in) 目的位图对象
- pos1 userdata (in) 位的序号1
- pos2 userdata (in , optional) 位的序号2
- ... userdata (in , optional) 位的序号n
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:fill() mybmp:c0i(0, 1, 3, 9) -- 第0, 1, 3, 9位清0 print(mybmp)
终端输出
FFFFFFFFFFFFFDF4
- xwlib.bmp:c0m (bmp, msk)
-
将位图中的掩码部分全部清 0
Parameters:
- bmp userdata (in) 目的位图对象
- msk userdata (in) 掩码位图
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mymsk = xwlib.bmp.new(64) -- 创建一个包含64个位的位图掩码 mymsk:zero() mymsk:s1i(0, 1, 3, 9) -- 第0, 1, 3, 9位填1 mybmp:fill() mybmp:c0m(mymsk) print(mybmp)
终端输出
FFFFFFFFFFFFFDF4
- xwlib.bmp:x1i (bmp, pos1, pos2, ...)
-
依次将位图中的位翻转
Parameters:
- bmp userdata (in) 目的位图对象
- pos1 userdata (in) 位的序号1
- pos2 userdata (in , optional) 位的序号2
- ... userdata (in , optional) 位的序号n
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:zero() mybmp:x1i(0, 1, 3, 9) -- 第0, 1, 3, 9位翻转 print(mybmp)
终端输出
000000000000020B
- xwlib.bmp:x1m (bmp, msk)
-
将位图中的掩码部分全部翻转
Parameters:
- bmp userdata (in) 目的位图对象
- msk userdata (in) 掩码位图
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mymsk = xwlib.bmp.new(64) -- 创建一个包含64个位的位图掩码 mymsk:zero() mymsk:s1i(0, 1, 3, 9) -- 第0, 1, 3, 9位填1 mybmp:zero() mybmp:x1m(mymsk) print(mybmp)
终端输出
000000000000020B
- xwlib.bmp:t1i (bmp, pos)
-
测试位图中的某个位
Parameters:
- bmp userdata (in) 目的位图对象
- pos number (in) 位的序号
Returns:
-
boolean
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mybmp:fill() mybmp:c0i(0, 1, 3, 9) print(mybmp:t1i(1)) print(mybmp:t1i(11))
终端输出
false
true
- xwlib.bmp:t1ma (bmp, msk)
-
测试位图中的掩码部分的位是否全部置 1
Parameters:
- bmp userdata (in) 目的位图对象
- msk userdata (in) 掩码位图
Returns:
-
boolean
Usage:
mybmp = xwlib.bmp.new(64) mymsk = xwlib.bmp.new(64) mymsk:zero() mymsk:s1i(0, 1, 3, 9) mybmp:zero() mybmp:s1i(0, 1) print(mybmp:t1ma(mymsk)) mybmp:s1i(3, 9) print(mybmp:t1ma(mymsk))
终端输出
false
true
- xwlib.bmp:t1mo (bmp, msk)
-
测试位图中的掩码部分的位是否至少有一位置 1
Parameters:
- bmp userdata (in) 目的位图对象
- msk userdata (in) 掩码位图
Returns:
-
boolean
Usage:
mybmp = xwlib.bmp.new(64) -- 创建一个包含64个位的位图 mymsk = xwlib.bmp.new(64) -- 创建一个包含64个位的位图掩码 mymsk:zero() mymsk:s1i(0, 1, 3, 9) mybmp:zero() mybmp:s1i(0, 1) print(mybmp:t1mo(mymsk)) mybmp:s1i(3, 9) print(mybmp:t1mo(mymsk))
终端输出
true
true
- xwlib.bmp:t0ma (bmp, msk)
-
测试位图中的掩码部分的位是否全部清 0
Parameters:
- bmp userdata (in) 目的位图对象
- msk userdata (in) 掩码位图
Returns:
-
boolean
Usage:
mybmp = xwlib.bmp.new(64) mymsk = xwlib.bmp.new(64) mymsk:zero() mymsk:s1i(0, 1, 3, 9) mybmp:fill() mybmp:c0i(0, 1) print(mybmp:t0ma(mymsk)) mybmp:c0i(3, 9) print(mybmp:t0ma(mymsk))
终端输出
false
true
- xwlib.bmp:t0mo (bmp, msk)
-
测试位图中的掩码部分的位是否至少有一位清 0
Parameters:
- bmp userdata (in) 目的位图对象
- msk userdata (in) 掩码位图
Returns:
-
boolean
Usage:
mybmp = xwlib.bmp.new(64) mymsk = xwlib.bmp.new(64) mymsk:zero() mymsk:s1i(0, 1, 3, 9) mybmp:fill() mybmp:c0i(0, 1) print(mybmp:t0mo(mymsk)) mybmp:c0i(3, 9) print(mybmp:t0mo(mymsk))
终端输出
true
true