TWAIN规范的第四章(9)
注:JPEG互联网草案标准的K部分推荐为量子映射和量子矩阵提供默认值。TWAIN使用10918-1版本作为QuantTable、HuffmanDC和HuffmanAC和默认表。默认值通过将NULL选入TW_JPEGCOMPRESSION.QuantTable[]来指定。 4.5.1.3 哈夫曼编码
经过DCT和量子化的结果最后通过一个称为哈夫曼编码的无损压缩算法进行进一步压缩。应用程序开发者可提供哈夫曼表,不过一般都使用默认的表(将NULL选入
TW_JPEGCOMPRESSION.HuffmanDC[]和TW_JPEGCOMPRESSION.HuffmanAC[])。 此算法选择支持使用重启标记代码,以允许随机读取JPEG数据流进行解压。更多描述请参考JPEG规范。
4.6 可选用户界面
是否使用源管理器提供的源选择对话框是可选的。
TWAIN包装了源管理器代码以作为应用程序和源的通信中介。源管理器提供的服务之一是找出匹配用户要求的可用源并将它们显示给用户进行选择。
我们推荐应用程序使用此接口,但没有强制要求,存在两种可选的替代方式:
1. 程序可开发并显示自定义的选择界面,这在响应用户从菜单中选择“Select Source...”时显示。
2. 如果程序专注于控制某个特定源,程序可直接选择此源。在这种情况下,从功能上说程序并不需要菜单项“Select Source..”,不过为保持与其它TWAIN兼容程序的一致性,应显示一个灰色的不可用菜单项。 显示自定义选择界面:
1. 使用DG_CONTROL / DAT_IDENTITY / MSG_GETFIRST操作使源管理器查找第一个可用源。源的名称包含在TW_IDENTITY.ProductName域中。保存此TW_IDENTITY结构。 2. 使用DG_CONTROL / DAT_IDENTITY / MSG_GETNEXT操作使源管理器获取下一个,重复此操作直到它返回一个表示没有其它可用源的TWRC_ENDOFLIST。同样应保存此TW_IDENTITY结构。
3. 将ProductName信息展示给用户进行选择。作出选择后,使用相关的TW_IDENTITY结构和DG_CONTROL / DAT_IDENTITY / MSG_OPENDS操作来使源管理器打开指定的源。
注:使用这种方式时,与MSG_USERSELECT 操作相对地,源管理器不会更新系统默认源信息以反映用户的选择。 直接选择源:
若程序想打开系统默认源,可使用DG_CONTROL / DAT_IDENTITY / MSG_GETDEFAULT操作来使源管理器查找默认源并用其信息填充TW_IDENTITY。
另外,如果想要使用的源不是默认源但知道其名称,可以使用DG_CONTROL /
DAT_IDENTITY / MSG_GETFIRST和G_CONTROL / DAT_IDENTITY / MSG_GETNEXT操作来遍历所有源直至找到与指定名称匹配的源,然后使用相应的TW_IDENTITY结构来打开源。
注:使用这种方式时,源管理器同样不会更新系统默认源信息以反映用户的选择。
4.6.1 可选源用户界面
与源管理器的源选择对话框一样,程序可能要求不使用源的用户界面。例如某些文本识别插件只希望协商少数性能(如像素类型、分辨率、页面尺寸等)然后就直接获取和传输数据。 为了在不显示用户界面的情况下启用源:
? 使用 DG_CONTROL / DAT_USERINTERFACE / MSG_ENABLEDS。 ? 将TW_USERINTERFACE.ShowUI域设置为FALSE。
? 收到并接受命令后,源将不显示用户界面但将开始采集数据。例如对于平板扫描仪,光标光将发光并开始移动;对于手持式扫描仪,将准备在“GO”按钮被按下时开始采集数据。其它设备可能有不同的响应,但都将立即开始采集或准备在用户触发后立即采集数据。 不显示源用户界面时性能协商非常重要:
? 因为源用户界面不显示,源无法向用户提供选择要采集信息的机会等。除非默认值是可接受的,否则所有有关图像采集的当前值和控制参数都必须在源启用前协商好(状态4)。 若TW_USERINTERFACE.ShowUI 被设置为FALSE:
? 源启用时,程序仍然要将所有事件传递给源(通过DG_CONTROL / DAT_EVENT / MSG_PROCESSEVENT)。
? 源应显示仅包含使设备在上下文中可用所必须的控制项的尽可能小的用户界面。通常这意味着不显示用户界面,但有些设备还是要求一个触发器来启动扫描。
? 在采集过程中源仍然显示进度条、错误和其它一些与设备操作有关消息。若源指定
CAP_UICONTROLLABLE为TRUE,则程序可通过设置CAP_INDICATORS为FALSE来禁用它。
? 数据准备好被传输时,源仍然将向程序发送MSG_XFERREADY通知。
? 由于通常由用户触发,源也许会,也许不会向程序发送MSG_CLOSEDSREQ消息以要求关闭。因此,在源回到状态5后(紧随DG_CONTROL / DAT_PENDINGXFERS /
MSG_ENDXFER操作并且TW_PENDINGXFERS.Count为0),程序可发送DG_CONTROL / DAT_USERINTERFACE / MSG_DISABLEDS操作。
总结:在ShowUI被设为FALSE后,一些源仍可能显示UI。程序可通过
CAP_UICONTROLLABLE性能来查询ShowUI能否被设置。如果CAP_UICONTROLLABLE 为FALSE而 ShowUI也被设为FALSE,则启用源的操作将返回TWRC_CHECKSTATUS,但会显示UI。因此,想要禁用UI的程序应先查询CAP_UICONTROLLABLE。
4.6.2 模态和非模态用户界面
源管理器的用户界面是是模态的,但源可能提供模态或非模态的界面,下面是两者间的差别: 非模态:
当源使用非模态界面时,虽然源界面是显示的,但用户仍然可以通过单击程序窗口并激活它以操作程序。
用户被期望在想停止显示源用户界面时单击其关闭按钮。程序不应在任何传输动作后自动关闭一个非模态源,即使程序只想要单次传输。如果程序在用户请求前关闭了源,则用户很可能会迷惑于窗体为什么消失了。请等到用户表示希望关闭后再关闭源的界面,并在程序关闭源之前等待源发送MSG_CLOSEDSREQ请求。 模态:
使用模态用户界面的源不允许用户操作其它窗口。对Windows来说,如果界面是程序模态,则用户不能操作其它应用程序但仍然可能操作系统程序。如果界面是系统模态(这很少见),则用户无法在应用程序和系统级操作任何东西。系统模态对话框可能被用于显示高级错误消息,例如UAE。
若使用模态界面,则在一次会话期间源只能进行一次采集,不过每次采集可能包含多个框架。数据传输完毕后源将向程序发送关闭请求,相对地,源等待该请求。
源将在程序通过DG_CONTROL / DAT_USERINTERFACE / MSG_ENABLEDS启用它之后表明它将使用模态或非模态界面。此操作中使用的TW_USERINTERFACE结构包含一个ShowUI域,由程序设置用于声明源是否应显示用户界面。如果程序要求显示用户界面,则它也将通过此域来声明希望源采用模态(TRUE)还是非模态(FALSE)界面。 …… 此处隐藏:1395字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




