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
generated by LDoc 1.5.0 Last updated 2024-12-17 12:17:46