一笔苍穹 发表于 2006-12-6 15:40

NEO内测包请NEO用户帮忙测试

上传一个NEO的内测包,NEO的使用文档也在同步更新中<a href="http://www.szny.com.cn/neo" target="_blank" >http://www.szny.com.cn/neo</A>。请大家帮忙测试一下,比如将以前的程序重新用新库编译运行一下,看看有什么问题没。今年年底应该会出一个新版本。谢谢支持!<br>[attach]14548[/attach]<br><br>更新报告:<br>改动:<br>    修改了XMS中会导致重定义警告的问题<br>    将8位色深下光、图标文件的显示算法改为实时抖动,并为此调整鼠标显示模块<br>    修正了编译开关NEO_dbl_click_unused的作用域<br>    改善了加载时钟模块之后鼠标双击的判断精度<br>    完善了对鼠标各种按键状态的识别判断<br>    改进了8位色下实时抖动匹配颜色的精确度<br>    修正了显示确奇数宽16位位图时会发生斜切的BUG<br>    修正了16位图形模式下屏幕截图用看图工具打开会出现偏色的问题<br>新增:<br>    增加正多边形顶点坐标生成函数polygon()<br>    增加了鼠标按键只识别函数get_click_only()<br>
[align=right][color=#000066][此贴子已经被作者于2006-12-9 16:35:05编辑过][/color][/align]

ba_wang_mao 发表于 2006-12-6 19:43

已下载,谢谢

RockCarry 发表于 2006-12-6 20:58

<P>看了代码,给点建议:<br>    1.代码的可读性和可维护性有下降的趋势,导致该问题的主要原因是早期在架构设计上的考虑不足,而后期又在不断的加入新的功能。建议以后的工作主要以调整架构为主,在架构调整完成之前避免加入新的功能。<br>    2.建议采用一个.c文件对应一个.h文件的形式组织源代码,对每个.c文件都将其编译为.obj文件,然后将所有的.obj文件打包为.lib文件,这样做的好处在于linker在链接的时候会只链接被引用到的.obj模块,没有被引用到的模块不会被链接到.exe文件中,这样可以避免使用预编译开关来控制编译体积的大小。并且以二进制库形式提供的话,将更加安全和易于使用。<br>    3.架构的调整工作量是巨大的,几乎会修改所有的代码,这是一个长期的过程,但是希望作者不要放弃。我现在做VGA13H也是在工作之余,想做的时候做做,基本上有空都是出去玩,或者和同事一起打游戏,但是我从来不放弃对VGA13H的维护,哪怕每周只看看代码。把它当做业余爱好,以及追求完美,是我的VGA13H的设计理念。这个和工作不一样,工作的时候很难做到完美,工作有开发周期的限制,还有功利性。<br>    4.建议作者考虑采用更加高效的编译方式,我目前都是采用make工具进行代码编译的管理,做个推荐。<br></P>    5.建议将屏幕也抽象为一个位图对象,而所有的位图都抽象为内存中的一个二维数组,所有对位图的操作都抽象为对内存的操作,这样的好处是可以保证这部分代码与硬件和平台的无关性,从而增强了代码的可移植性。而将内存抽象为以下的两种类型,1.线性内存, 2.页式内存,定义相关的接口 ,在接口的上层实现线性内存与页式内存的相互操作,而在下层则可以SVGA的页实显存和EMS内存等等方式来实现这个接口,页式内存是一个抽象的概念,它的实现方式是多样的,甚至可以使用磁盘文件的方式去实现这样的接口,就类似于虚拟内存。在上层的BMP对象只需要关心它的w, h, 位深度, 调色板(如果有),  以及使用的内存类型和内存的驱动(提供一个函数指针),即可完成对位图的全部操作。<br><br><br><br>
[align=right][color=#000066][此贴子已经被作者于2006-12-7 9:47:10编辑过][/color][/align]

卧龙孔明 发表于 2006-12-6 21:00

我也下了,使用报告日后提交

一笔苍穹 发表于 2006-12-6 22:55

<DIV class=quote><B>以下是引用<U>RockCarry</U>在2006-12-6 20:58:12的发言:</B><BR>
<P>看了代码,给点建议:<BR>    1.代码的可读性和可维护性有下降的趋势,导致该问题的主要原因是早期在架构设计上的考虑不足,而后期又在不断的加入新的功能。建议以后的工作主要以调整架构为主,在架构调整完成之前避免加入新的功能。<BR>    2.建议采用一个.c文件对应一个.h文件的形式组织源代码,对每个.c文件都将其编译为.obj文件,然后将所有的.obj文件打包为.lib文件,这样做的好处在于linker在链接的时候会只链接被引用到的.obj模块,没有被引用到的模块不会被链接到.exe文件中,这样可以避免使用预编译开关来控制编译体积的大小。并且以二进制库形式提供的话,将更加安全和易于使用。<BR>    3.架构的调整工作量是巨大的,几乎会修改所有的代码,这是一个长期的过程,但是希望作者不要放弃。我现在做VGA13H也是在工作之余,想做的时候做做,基本上有空都是出去玩,或者和同事一起打游戏,但是我从来不放弃对VGA13H的维护,哪怕每周只看看代码。把它当做业余爱好,以及追求完美,是我的VGA13H的设计理念。这个和工作不一样,工作的时候很难做到完美,工作有开发周期的限制,还有功利性。<BR>    4.建议作者考虑采用更加高效的编译方式,我目前都是采用make工具进行代码编译的管理,做个推荐。<BR></P></DIV>
<p>1、的确如老陈所说,当初做架构设计时没想到要做这么大,所以没留下较好的扩展性,加上开发中期大量的新功能迅速的加入,导致代码可读性降低,我打算在年底发一个新版本,从这个内测版可以看到,这个版本的任务更倾向于修正,而不是增加功能,我计划后续几个版本都重点做好架构的调整优化;<BR><BR>2、呵呵,同意你的建议,当初刚做的时候只是考虑方便的调试和更新代码,结果把所有的代码一股脑都放在头文件中了,然后又引入编译开关,从刚开始的几个编译开关,到目前的几十个,我也觉得不能再这样下去了,等这个版本和下个版本一发布,应该不会再加什么新功能了,出一个LIB文件是有非常必要的;<BR><BR>3、感谢老陈,我本来的想法是最多再出三个版本(两个测试一个正式)之后就要宣布停止对NEO的支持和维护了,现在我觉得有必要反思一下了;<BR><BR>4、make用的不是很熟,到时有不懂的地方还要多请教你哈,呵呵~~

一笔苍穹 发表于 2006-12-7 10:35

to 5:<BR>类似于allegro的BITMAP是吧,我已经留了扩展接口,并想做EMS\虚拟内存两种底层以获得最大兼容性,只是没时间大刀阔斧的改,也怕效率会打折扣,也只能在工作之余一点点的做着来了。

lyood 发表于 2006-12-11 12:48

谢谢!!<BR>很好!

卧龙孔明 发表于 2006-12-12 20:30

再提一个建议:neo_printf最好对打印字符的部分进行完全覆盖或设置参数选择,否则<BR>例如 <BR>for(a=0;a&lt;10;a++)<BR>neo_printf(0,0,"%d",a);<BR>就会出现字符重叠现象

一笔苍穹 发表于 2006-12-13 09:47

这个情况可以善用text_mode()函数,给文字输出加上背景色,这在背景不复杂的情况下是够用的。

卧龙孔明 发表于 2006-12-28 21:29

<DIV class=quote><B>以下是引用<U>一笔苍穹</U>在2006-12-13 9:47:24的发言:</B><BR>这个情况可以善用text_mode()函数,给文字输出加上背景色,这在背景不复杂的情况下是够用的。</DIV>
<P>注意:如果输出中有汉字加半角标点符号覆盖输出恐怕就不行了吧,我就遇到这个,最后不得不画矩形来做背景</P>

一笔苍穹 发表于 2006-12-29 10:10

哦,我看看哈。

一笔苍穹 发表于 2006-12-29 12:11

<P>汉字加半角符号或半角字母仍然可以,只是汉字和半角字符高度不同,有时不太好看。</P>

卧龙孔明 发表于 2006-12-29 16:41

只能覆盖一个8X8的区域,而其他地方没有覆盖,所以有原来的字符残留

一笔苍穹 发表于 2006-12-29 17:30

恩,因为汉字和半角字母的尺寸不同,暂时只能全用半角字符或全角字符,混用会出现你说的问题。我试着解决它吧。

卧龙孔明 发表于 2007-1-1 17:25

谢谢你对我的建议的重视,希望你早日完善她,写出一个强大的NEO

页: [1]

编程论坛