搜索
bottom↓
回复: 19

今天终于把djygui的描点函数写完了

[复制链接]

出0入0汤圆

发表于 2010-4-27 10:06:57 | 显示全部楼层 |阅读模式
半年时间,写了一个函数:put_pixel,刚写完,还没有调试,调试要到下个月才行。
下月把djyos移植到2416上,在该平台上调试。

透透气,接下来写画细直线(单像素宽)的函数。

函数代码如下,这是预览版,没贴出其他支持代码,待djygui完成后,将完整开源。

//----画点---------------------------------------------------------------------
//功能: 在窗口内画一个像素点。
//参数: gkwin,目标窗口指针
//      x,y,画图坐标
//      color,颜色,
//      r2_mode,二元光栅操作码
//返回: 无
//-----------------------------------------------------------------------------
void gk_put_pixel(struct gkwin_rsc *gkwin,s32 x,s32 y,u32 color,u32 r2_code)
{
    struct st_rect limit;
    struct clip_rect *clip;
    struct gkwin_rsc *fbwin;
    struct st_rect_bitmap *bitmap;
    u32 pf_color;
    s32 offsetx,offsety;
    if((r2_code == cn_r2_nop) || (r2_code > cn_r2_last))    //不执行任何操作
        return;
    if(gkwin->area.bm_bits != NULL)     //说明有win buffer
    {   //处理方法:在win buffer中绘图,标志change_msk,
        bitmap = gkwin->area;
        if(bitmap->pf_type == cn_private_pf)
        {
            gkwin->draw->pixel(bitmap,x,y,color,r2_code);
        }else
        {
            pf_color = __gk_convert_color_to_pf(bitmap->pf_type,color);
            __gk_put_pixel_bm(bitmap,x,y,pf_color,r2_code);
        }
    }else
    {
        clip = gkwin->visible_clip;
        if(clip == NULL)
            return ;
        fbwin = gkwin->disp->root_gkwin;
        if(fbwin->area.bm_bits != NULL)         //有frame buffer
        {   //处理方法:在root_gkwin中绘图,但只绘gkwin中的可视区域
            offsetx = gkwin->absx0 +x;
            offsety = gkwin->absy0 +y;
            bitmap = gkwin->area;
            do{
                if(!((offsetx<clip->rect.left) || (offsetx>=clip->rect.right)
                    || (offsety<clip->rect.top) ||(offsety>=clip->rect.bottom)))
                {
                    if(bitmap->pf_type == cn_private_pf)
                    {
                        fbwin->draw->pixel(bitmap,offsetx,offsety,color,r2_code);
                    }else
                    {
                        pf_color = __gk_convert_color_to_pf(bitmap->pf_type,color);
                        __gk_put_pixel_bm(bitmap,offsetx,offsety,pf_color,r2_code);
                    }
                    __gk_Shading_pixel(fbwin,offsetx,offsety);
                    break;      //像素已经绘制,退出循环
                }else
                    clip = clip->next;
            }while(clip != gkwin->visible_clip);
        }else       //无win buffer,也无frame buffer,直接画在screen上
        {
            offsetx = gkwin->absx0 - fbwin->absx0 +x;
            offsety = gkwin->absy0 - fbwin->absy0 +y;
            do{
                if(!((offsetx<clip->rect.left) || (offsetx>=clip->rect.right)
                    || (offsety<clip->rect.top) ||(offsety>=clip->rect.bottom)))
                {
                    gkwin->disp->direct_draw->pixel(offsetx,offsety,color,r2_code);
                    break;      //像素已经绘制,退出循环
                }else
                    clip = clip->next;
            }while(clip != gkwin->visible_clip);
        }
    }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入168汤圆

发表于 2010-4-27 10:11:23 | 显示全部楼层

出0入168汤圆

发表于 2010-4-27 10:11:51 | 显示全部楼层
辛苦了。

出0入0汤圆

发表于 2010-4-27 17:12:08 | 显示全部楼层
看来看去,冒似没有成熟OS的架势

出0入0汤圆

发表于 2010-4-27 17:18:36 | 显示全部楼层
楼主加油...

出0入0汤圆

发表于 2010-4-30 00:23:17 | 显示全部楼层
加油...

出0入0汤圆

发表于 2010-4-30 00:23:39 | 显示全部楼层
恭喜。

出0入0汤圆

发表于 2010-5-8 23:23:00 | 显示全部楼层
看来djy gui要严重跳票,原定3,4月完成的嘛

出0入0汤圆

 楼主| 发表于 2010-5-10 15:21:19 | 显示全部楼层
没办法啊,因为健康原因,今年以来,老婆严令:1、周末每天只能干半天,2、工作日晚上9:30关电脑。
谁让我怕老婆呢。

出0入0汤圆

发表于 2010-5-16 12:37:33 | 显示全部楼层
以下的文字转自http://www.limodev.cn/blog/archives/1517

经过大家一个月的努力,在FTK诞生6个月之际,FTK-0.4如期发布,其主要修改有:
1. 修改了一些BUG。
2. 完整的支持LUA绑定。
3. 完善交叉编译脚本。
4. 增加FTK配置文件。
5. 优化显示速度。
6. 增加缩放动画效果。
7. UCOSII支持(Windows模拟环境)。
特别感谢minpengli,Riwen Huang,zhangalion,tao yu,yapo su, phil song, ZhiHua Huang, hua song, Richard Sharpe和其他参与FTK开发和讨论的朋友们。欢迎大家加入邮件列表讨论。
有兴趣的朋友请到FTK下载源代码。

不多说了,希望楼主有所觉悟.

出0入0汤圆

 楼主| 发表于 2010-5-16 22:47:42 | 显示全部楼层
不知楼上要我觉悟什么。
    是要我回归linux的康庄大道吗?确实有很多人质疑我为什么不用linux,这些人上来就问djyos是基于哪一个版本的linux开发的,当听说不是基于linux的时候,就显得很不屑,或者根本不信,甚至断言是抄袭linux的。
    是要我学他的邮件列表工作方式吗?这确实是一个很好的方式,但论坛讨论不是也很好吗?就这里也是一个不错的讨论平台,只是似乎大家比较偏爱直接Q我,不太爱通过论坛讨论。

出0入0汤圆

 楼主| 发表于 2010-5-17 11:52:46 | 显示全部楼层
在QQ上,还有不少人,一上来时热情高涨,对djyos赞许有加,表示要加入团队,只要能跟我学习,给我打打下手都行,说得连我都肉麻不已。接下来就问我是基于哪个linux的,一听说跟linux没关系后,马上就泄气,再无声息。

都不知道国内到底怎么了,难道开源软件项目,非得沾点linux的仙气才行?
难道脱离linux另起炉灶的,都应该以“异端”剿灭之?
这些人眼里,好像世界上只要有了linux,就天下太平了,就能满足一切需求了,好像其他项目都是多余的垃圾。
其实这些人,我敢说没几个能摆脱windows的,真正能够在日常生活中用linux完全替代windows的高手,是不会这样说话的。
这就是开源精神吗?其实,论开源程度,我还没见哪个linux项目,比djyos开源更彻底的。
只公开代码没有注释的,只能算伪开源。
注释不充分的,只能算半开源。
只有充分注释,并有文档说明的,才算真正意义的开源,就像djyos。
按这个标准,其实国内没几个linux项目是合格的开源。

出0入0汤圆

发表于 2010-5-17 12:26:39 | 显示全部楼层
ftk是很有新意的,估计djyos是会错意了

转自 李先静(ftk的作者) 的原话:
>>FTK的设计高手们:你们好。

   现在小弟有一点不明,在FTK的源码里面有一篇PDF文档,介绍FTK结构的。传统的GUI是C/S模式,每个应用一个进程,GUI一个进程,
每个应用都和GUI通信来完成画图。而FTK是 browser based GUI application model ,所有应用在一个进程内运
行。

问题 1:多个应用程序是怎么在一个进程内运行的呢?
问题 2:XML是不是只是用来描述界面的?LUA又用来做什的呢?

希望高手赐教,特别是李大侠。  ^_^

李先静 发送至 funnytoolkit
我的想法是这样的:

应用程序是逻辑上的概念,而不是运行时的概念吧。拿浏览器来说,google map是一个应用程序,google docs是一个应用程序,这些应用程序都在浏览器的进程里运行。浏览器本身虽然也是一个应用程序,但在此时应该看作一个平台了。

基于浏览的应用程序主要用HTML+Javascript开发,加上CSS和图片。FTK里XML对应于HTML,LUA对应Javascript,主题对应CSS和图片。

----
看了先静的说法,很有一种耳目一新的感觉。估计ftk会继国内minigui之后成为国内又一明星GUI开源项目,很期待他们那边webkit能够移植完成。

出0入0汤圆

 楼主| 发表于 2010-5-17 14:44:56 | 显示全部楼层
ftk确实很不错,这个不可否认。
按你的理解,9楼要我觉悟的,岂非“有一个这么优秀的ftk摆在那里,你还搞djygui干什么?”。这句话如果套在rttgui上,你怎么看?
注意他用的是“觉悟”两字,有大是大非之意,不太容易理解成技术上的互相参考取长补短。
“不多说了”难道不是“懒得跟我多说”之意吗?
帖的也只是一个版本发布公告,不是什么具体的技术说明。

出0入0汤圆

发表于 2010-5-17 17:39:21 | 显示全部楼层
>> 这句话如果套在rttgui上,你怎么看?

如果用户都觉得需要,可以考虑。说实话,做RT-Thread/GUI做得很累。答应了先静,ftk 0.5版会包含一个RT-Thread的移植,在排日程中。

等到移植出ftk 0.5以后,具体选择哪种GUI就交给用户去决策。

出0入0汤圆

发表于 2010-5-17 23:33:14 | 显示全部楼层
回复【13楼】djyos 都江堰操作系统
ftk确实很不错,这个不可否认。
按你的理解,9楼要我觉悟的,岂非“有一个这么优秀的ftk摆在那里,你还搞djygui干什么?”。这句话如果套在rttgui上,你怎么看?
注意他用的是“觉悟”两字,有大是大非之意,不太容易理解成技术上的互相参考取长补短。
“不多说了”难道不是“懒得跟我多说”之意吗?
帖的也只是一个版本发布公告,不是什么具体的技术说明。
-----------------------------------------------------------------------

djyos你理解错我的意思了,我只是觉得你的开发模式很有问题而已:

“半年时间,写了一个函数:put_pixel,刚写完,还没有调试,调试要到下个月才行。
下月把djyos移植到2416上,在该平台上调试。 ”

这样的开发速度,实在。。。

李先静和一群爱好者用了半年时间做出了外观、功能、代码质量都相当不错的ftk,
其实很多移植、测试、demos都是爱好者做出来的。

我更相信团队的力量和集思广益。

出0入0汤圆

 楼主| 发表于 2010-5-18 09:35:54 | 显示全部楼层
回复【15楼】wyoujtg
-----------------------------------------------------------------------

呵呵,那我们互相都会错意了。
put_pixel(现在改名为set_pixel了)是地面上的第一块砖而已,写set_pixel之前,要完成大量的打地基的工作。
难道你真的相信一个几十行的函数,需要半年时间吗?
上周给djyos爱好者们讲解djygui的底层架构时,整整花了一个下午,还没讲完呢,下周还要继续。

关于djyos的团队问题,我有自己的组建步骤,上周听讲的爱好者,就是团队成员。

出0入0汤圆

发表于 2010-5-22 09:36:39 | 显示全部楼层
当我第一次看到9楼的“觉悟”两个字的时候,作为一个旁观者理解为,djyos应该加快速度完成目标,不能自己定的目标,自己掩埋了自己的承诺。
而并非有其他的意思。
望djyos加油,继续完成自己的梦想

出0入17汤圆

发表于 2012-9-11 15:45:29 | 显示全部楼层
几大高手汇聚与此贴讨论,真有点观看华山论剑的味道~~~~~~~~

出0入0汤圆

发表于 2012-9-12 19:24:22 | 显示全部楼层
大家做事情的目标不一样,甚至有时候没有目标,玩玩而已,有时候有目标,失之于坚持,目标不同,想怎么干就怎么干呗,没有统一的标准。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 07:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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