开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 421|回复: 0
打印 上一主题 下一主题
收起左侧

[易语言] RLE解码 返回指针长度

[复制链接]
结帖率:74% (20/27)
跳转到指定楼层
楼主
发表于 2024-7-21 16:51:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式   陕西省咸阳市
12精币
  
子程序名返回值类型公开备 注
RLE解码整数型 
参数名类 型参考可空数组备 注
读取位置整数型
行偏移整数型
宽度整数型
高度整数型
变量名类 型静态数组备 注
读地址整数型 
写地址整数型 
行长度整数型 
点阵长度整数型 
一字节整数型 
二比特整数型 
透明值整数型 
索引值整数型 
混合后整数型 
长度整数型 
a整数型 
行数整数型 
写地址 = 全局内存指针
写整数 (写地址, 131072)  ' 写tga文件头.....
写地址 = 写地址 + 4
写整数 (写地址, 0)
写地址 = 写地址 + 4
写整数 (写地址, 0)
写地址 = 写地址 + 4
写短整数 (写地址, 宽度)
写地址 = 写地址 + 2
写短整数 (写地址, 高度)
写地址 = 写地址 + 2
写短整数 (写地址, 2080)
写地址 = 写地址 + 2
' 点阵长度 = 18  ' tga头长度.....
读地址 = 行偏移 [高度] + 1
循环判断首 ()
一字节 = was数据 [读地址]
读地址 = 读地址 + 1
二比特 = 汇编右移 (一字节, 6)
' 调试输出 (二比特)
判断 (二比特 = 0)
如果 (位与 (一字节, 63) = 0)  ' 行结束,对齐4
判断 (行长度 > 宽度)
写地址 = 写地址 ��� (行长度 - 宽度) × 4
行长度 = 0
行数 = 行数 + 1
如果真 (高度 ≠ 行数)
读地址 = 行偏移 [高度 - 行数] + 1

判断 (行长度 > 0)
长度 = 宽度 - 行长度
计次循环首 (长度, )
写整数 (写地址, 0)
' 行长度 = 行长度 + 4
写地址 = 写地址 + 4
计次循环尾 ()
' 点阵长度 = 点阵长度 + 行长度
行长度 = 0
行数 = 行数 + 1
如果真 (高度 ≠ 行数)
读地址 = 行偏移 [高度 - 行数] + 1

判断 (行长度 = 0 was数据 [行偏移 [高度 - 行数] - 1] = 0)
计次循环首 (宽度, )
写整数 (写地址, 0)
写地址 = 写地址 + 4
计次循环尾 ()
行数 = 行数 + 1
如果真 (高度 ≠ 行数)
读地址 = 行偏移 [高度 - 行数] + 1




如果 (位与 (一字节, 32) = 32)  ' 带alpha像素,后一个字节为索引
透明值 = 位与 (一字节, 31)
索引值 = was数据 [读地址]
读地址 = 读地址 + 1
混合后 = 混合透明 (颜色表32 [索引值 + 1], 透明值 × 8)
写整数 (写地址, 混合后)
行长度 = 行长度 + 1
写地址 = 写地址 + 4

透明值 = was数据 [读地址]  ' 重复alpha
读地址 = 读地址 + 1
索引值 = was数据 [读地址]
读地址 = 读地址 + 1
混合后 = 混合透明 (颜色表32 [索引值 + 1], 透明值 × 8)
计次循环首 (位与 (一字节, 31), )
写整数 (写地址, 混合后)
写地址 = 写地址 + 4
行长度 = 行长度 + 1
计次循环尾 ()


判断 (二比特 = 1)  ' 后字节长度,后每个字节都为索引
计次循环首 (位与 (一字节, 63), )
索引值 = was数据 [读地址]
读地址 = 读地址 + 1
写整数 (写地址, 颜色表32 [索引值 + 1])
写地址 = 写地址 + 4
行长度 = 行长度 + 1
计次循环尾 ()
判断 (二比特 = 2)  ' 重复数,后一个字节为索引
索引值 = was数据 [读地址]
读地址 = 读地址 + 1
计次循环首 (位与 (一字节, 63), )
写整数 (写地址, 颜色表32 [索引值 + 1])
写地址 = 写地址 + 4
行长度 = 行长度 + 1
计次循环尾 ()
判断 (二比特 = 3)  ' 跳过数,用其它填充
长度 = 位与 (一字节, 63)
清零 (写地址, 长度)
写地址 = 写地址 + 长度 × 4
行长度 = 行长度 + 长度



调试输出 (行数, 高度)
循环判断尾 (行数 ≠ 高度)
返回 (宽度 × 高度 × 4 + 18)


i支持库列表   支持库注释   
spec特殊功能支持库




会异常停止 ,易语言也不报错。大神帮忙看下哪里的问题!


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表