教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

TWAIN规范的第四章(9)

来源:网络收集 时间:2026-08-17
导读: 注:JPEG互联网草案标准的K部分推荐为量子映射和量子矩阵提供默认值。TWAIN使用10918-1版本作为QuantTable、HuffmanDC和HuffmanAC和默认表。默认值通过将NULL选入TW_JPEGCOMPRESSION.QuantTable[]来指定。 4.5.1.3

注: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字,全部文档内容请下载后查看。喜欢就下载吧 ……

TWAIN规范的第四章(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/563790.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)