找回密码
 注册
搜索
查看: 1053|回复: 9

[讨论] 关于ADD_APPLICATION_IMAGE_TYPE(ImageId, filename, display, isMB, type) 的疑惑

[复制链接]
发表于 2010-5-18 22:14:55 | 显示全部楼层 |阅读模式
各个参数是什么意思,如
ADD_APPLICATION_IMAGE_TYPE(IMG_SI_EARPHONE_INDICATOR,CUST_IMG_PATH"\\\\MainLCD\\\\IdleScreen\\\\StatusIcons"STATUS_ICON_IMAGE_FILE_PATH"\\\\SI_EAR.png","Status Icon: EarPhone", FALSE, FORCE_ABM);
我在目录下并没有SI_EAR.png,只有SI_EAR.bmp,但资源还是加载进去了,请问如何解释?另:如果目录下同时存在SI_EAR.png和SI_EAR.bmp,还是用上面的方式加载,生成的资源会是SI_EAR.png。此种添加图片的方式和 ADD_APPLICATION_IMAGE(ImageId, ImgFileName)有何不同?
谢谢!
发表于 2010-5-19 09:09:57 | 显示全部楼层
是否mtk的图片转换工具自动将png转换成了bmp?[em01]
点评回复

使用道具 举报

 楼主| 发表于 2010-5-19 12:35:20 | 显示全部楼层
以下是引用setagllib在2010-5-19 9:09:57的发言:
是否mtk的图片转换工具自动将png转换成了bmp?[em01]

是这个样子吗?
自顶一下。
点评回复

使用道具 举报

发表于 2010-5-19 12:59:59 | 显示全部楼层
1。ADD_APPLICATION_IMAGE_TYPE,ADD_APPLICATION_IMAGE的区别
ADD_APPLICATION_IMAGE_TYPE
ADD_APPLICATION_IMAGE
本质上是一样的都调用了SetImageWithBuffer,区别在于ADD_APPLICATION_IMAGE_TYPE 时设置了g_force_type全局变量,改变量作用于Write_Processed_Data函数里,对IMAGE_TYPE_ABM的encode方式有些影响
2。SI_EAR.png没有的时候为甚么会用SI_EAR.bmp呢?那是由writeres.c->Iload函数来决定的,在其无法打开png图片文件的情况下,改函数还会尝试bmp类型的图片文件来处理。
点评回复

使用道具 举报

 楼主| 发表于 2010-5-19 14:09:00 | 显示全部楼层
非常感谢yuyipj!
我看了一下iload函数,好像是在下面这个地方判断的,不知是不是?
  if (file_exist(filename_buffer) == MMI_FALSE)
    {
        ext_type = ExtractExtension(filename_buffer, RES_IMAGE);
        if (ext_type == IMAGE_TYPE_PNG)
        {
            S32 i, count;

            count = sizeof(image_resource_info)/sizeof(RESOURCE_INFO);
            for (i = 0; i < count; i++)
            {
                ChangeExtension(filename_buffer, RES_IMAGE, image_resource_info.file_type);
                if (file_exist(filename_buffer) == MMI_TRUE)
                {
                    g_real_filename = filename_buffer;
                    break;
                }
            }
            if (i == count)
            {
                ChangeExtension(filename_buffer, RES_IMAGE, IMAGE_TYPE_PNG);
                printf("[ABM] %s\tcannot open file for all supported formats!!!\n", filename_buffer);
            }
        }
MTK为何只判断png呢?我尝试
    ADD_APPLICATION_IMAGE_TYPE(IMG_SI_EARPHONE_INDICATOR,CUST_IMG_PATH"\\\\MainLCD\\\\IdleScreen\\\\StatusIcons"STATUS_ICON_IMAGE_FILE_PATH"\\\\SI_EAR.bmp","Status Icon: EarPhone", FALSE, FORCE_ABM);而只在目录下放SI_EAR.png,结果是红叉。

yuyipj对这部分应该是很了解的,再请教个问题,如何跟踪资源的生成过程,我是想能否在VC设断点跟踪呢?
点评回复

使用道具 举报

发表于 2010-5-20 11:22:08 | 显示全部楼层
1.只在目录下放SI_EAR.png,结果是红叉
这可能是png转换成bmp失败导致的。(我没有traces过)

2。我是想能否在VC设断点跟踪呢?
我想到的是你有两个方法来做调试
a.可以将代码独立出来单独建个exe小程序,MTK就是这么做的,他的MTK_resgen就是个单独程序,并且是先成成mtk_resgen**.exe才做resgen操作的
b.在iload里放trace语句,把调试信息直接打印到控制台,从控制台重定向到文件
点评回复

使用道具 举报

 楼主| 发表于 2010-5-20 20:38:55 | 显示全部楼层
多谢yuyipj!
[em15]
点评回复

使用道具 举报

 楼主| 发表于 2010-5-25 16:55:47 | 显示全部楼层
搞过信号强度和充电icon的朋友,在SI_BAT目录下有5张图,通过下面的加载方式加进去的,参数只指明了目录,好像此目录下的所有图片被转化成了一张图?是这样吗?还有这个FORCE_ABM_SEQUENCE参数是具体作用是什么?
代码如下:

  1.     ADD_APPLICATION_IMAGE_TYPE(IMG_SI_SLAVE_SIGNAL_STRENGTH,
  2.                            CUST_IMG_PATH "\\\\MainLCD\\\\IdleScreen\\\\StatusIcons"STATUS_ICON_IMAGE_FILE_PATH"\\\\DualSIM\\\\Slave\\\\SI_SIG2",
  3.                            "Slave Status Icon: Signal strength", FALSE, FORCE_ABM_SEQUENCE);  
  4.   ADD_APPLICATION_IMAGE_TYPE(IMG_SI_BATTERY_STRENGTH,CUST_IMG_PATH"\\\\MainLCD\\\\IdleScreen\\\\StatusIcons"STATUS_ICON_IMAGE_FILE_PATH"\\\\battery\\\\SI_BAT","Status Icon: Battery strength", FALSE, FORCE_ABM_SEQUENCE);
复制代码
点评回复

使用道具 举报

发表于 2010-5-25 21:58:17 | 显示全部楼层
学习中。。
[em01]
点评回复

使用道具 举报

 楼主| 发表于 2010-5-27 22:31:24 | 显示全部楼层
使用FORCE_ABM_SEQUENCE上面的方式加载,若在SI_BAT目录下只放png的,resgen后则每个图都有bmp 、amb的生成,而如果放bmp的则不会有此现象。
起作用的函数是Write_Sequential_Image(),会读取相应目录下interval.txt文件,获取帧间隔和帧数(是否此作用不确定),convert.exe将每个png转成bmp,再转成abm,最终已abm的方式加载。。。

疑惑1:不知mtk为何如此大费周折,这么做的意义何在?为何不用原始的格式?
疑惑2:经过上面的步骤最终是将同一目录下的文件生成了一个文件吗,在调用时只输出对应的某一帧?
请达人解惑……
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-2-26 07:20 , Processed in 0.046571 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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