TWAIN规范的第四章(2)

2019-09-01 23:14

步骤一

源支持某些性能不代表源支持设置此性能。应用程序必须检查MSG_GET的返回值以确定发生了什么:

返回TWRC_SUCCESS表示源按要求设置了性能。

返回TWRC_CHECKSTATUS表示源无法使用一个或多个您限定的值。例如,你要求值310但它只能接受100、200、300或400。您的请求不在它的有效范围内,因此它选择一个最接近的有效值。

此时使用DG_CONTROL / DAT_CAPABILITY / MSG_GET操作来获取当前值和可用值是判断源的选择对应用程序是否可接受的唯一途径。 返回TWRC_FAILURE或TWCC_BADVALUE表示: ? 源不允许您设置或限定值的请求。或

? 请求的值不在有效值范围内,源可能尝试设置为一个最接近的可用值。

此时应同样使用DG_CONTROL/DAT_CAPABILITY/MSG_GET来确定应用程序是否能继续工作。

4.1.3 常用的性能

TWAIN定义了超过150种的性能。虽然数量看起来很大,但如果认识到只有一部分是常用的,你就会觉得轻松点。以下是其中一些: 4.1.3.1 基础性能 Units(单位)

ICAP_UNITS性能用于确定源所使用的计量单位。默认为英寸,其它允许的值为厘米、像素等。此性能的值用于衡量其它一些性能或结构的值,包括: ICAP_PHYSICALHEIGHT, ICAP_PHYSICALWIDTH, ICAP_XNATIVERESOLUTION, ICAP_YNATIVERESOLUTION, ICAP_XRESOLUTION, ICAP_YRESOLUTION,

TW_FRAME,TW_IMAGEINFO.XResolution, TW_IMAGE.YResolution Sense of the Pixel(像素涵义)

ICAP_PIXELFLAVOR描述从源传送到应用程序后位数据应如何解释。默认值为

TWPF_CHOCOLATE,它表示0为黑色(最深的颜色);另一个值为TWPF_VANILLA,它表示0为白色(最浅的颜色)。 3Resolution(分辨率)

图像分辨率在TW_IMAGEINFO结构中提供。若要查询或设置源的分辨率,请使用ICAP_XRESOLUTION,ICAP_YRESOLUTION。

同样还有CAP_XNATIVERESOLUTION,ICAP_YNATIVERESOLUTION。 4.1.3.2 图像类型性能 Types of Pixel(像素类型)

应用程序应协商ICAP_PIXELTYPE和ICAP_BITDEPTH,除非它能在所有位深度上处理所有像素类型。允许的像素类型包括TWPT_BW,TWPT_GRAY,TWPT_RGB、TWPT_PALETTE,TWPT_CMY,TWPT_CMYK,TWPT_YUV,TWPT_YUVK,TWPT-CIEXYZ和TWPT_INFRARED。

Depth of the Pixels(in bits) 像素位深度

对于TWPT_BW这样的像素类型,一个像素仅占一位。其它像素类型允许每个像素占多个位(4位或8位灰度图像或24位彩色图像)。请确保先设置ICAP_PIXELTYPE,然后再设置ICAP_BITDEPTH。 4.1.3.3 图形采集参数 Exposure(曝光)

许多性能对此有影响,包括ICAP_BRIGHTNESS,ICAP_CONTRAST,ICAP_SHADOW,ICAP_HIGHLIGHT,ICAP_GAMMA和ICAP_AUTOBRIGHT。 Scaling(缩放)

若要通知源在传输前缩放图像,请参考ICAP_XSCALING和ICAP_YSCALING。 Rotation(旋转)

若要通知源在传输前旋转图像,请参考ICAP_ROTATION和ICAP_ORIENTATION。

4.1.4 限制性能以及消息响应

在应用程序给性能支持的值施行了限制后,数据源在响应性能的相关查询时会存在不确定性。以下指南有助于厘清这种状况。 MSG_RESET

我们已经知道这将使性能的值重置为默认值,但还必须声明一点:这也会重置任何应用程序施加在性能上的限制。

MSG_GETCURRENT和MSG_GETDEFAULT

显然没有当前或默认值的性能将不会支持这些消息。但第10章描述了另一种可能性,在这种情况下,简单地采用与MSG_GET相同的方式响应这些消息是有意义的。

同样直观的是数据源将在所有允许的情况下使用TW_ONEVALUE来响应对性能的请求。 MSG_GET

如果应用程序对当前性能施加了限制,那么数据源将根据这些限制来响应此消息。否则将以将所有源支持的值作为响应。当然,响应中能够包含的值的数量要受到容器的限制。 MSG_SET

第7章有关此三联码的描述:

“当容器为TW_ONEVALUE或TW_ARRAY时设置当前值,当容器为TW_ENUMERATION或TW_RANGE时设置可用值以及当前值”

为进一步说明此操作,必须先声明一点:当应用程序施加一个限制时,源必须考虑所支持的值以及要求的限制。结果应为即支持又被限定使用的值的集合。

施加限制后会产生一种情况,即默认值不再在支持的值集合当中时。使用TW_ENUMERATION时,报告的的默认值索引应被数据源设置为限制集合中的某个值。这是一个确保索引有效的预防措施。在这种情况下,TW_ENUMERATION中的默认值不再有意义,应用程序可将其忽略,直至限制被MSG_RESET操作取消。

4.1.5 代码中的性能容器

性能信息在应用程序和源之间通过一种称为容器的结构进行传递:TW_ARRAY,

TW_ENUMERATION,TW_ONEVALUE以及TW_RANGE。创建和读取容器所需的操作用下

列代码段说明。容器可灵活地定义用于包含许多种数据之一。请参考工具包以了解容器可用的所有封装和拆包功能。

4.1.6 延迟协商-在状态4之后进行性能协商

应用程序可能在会话期间的任何时刻向源询问性能数据。但是,一个原则是应用程序只能在状态4下请求设置性能。此限制背后的基本原因与源启用时源用户界面的显示有关。许多源需要更改其用户界面的内容以响应应用程序的设置请求。这些更改可预防用户选择与应用程序要求不一致的选项。源用户界面不会在状态4下显示因而可以在用户不查觉的情况下改变。而用户界面在状态5至7时则会显示。

一些性能对用户界面没有影响并且应用程序可能希望在状态4之后进行设置。为了允许延迟协商,应用程序必须在状态4下请求特定的性能能够在稍后进行设置(状态5至6),源可以同意或拒绝此请求。此请求通过在CAP_EXTENDEDCAPS上使用DG_CONTROL/DAT_CAPABILITY操作来协商。

在CAP_EXTENDEDCAPS性能上的DG_CONTROL / DAT_CAPABILITY操作: MSG_GET

指示源希望在状态5至6下进行协商的所有性能。 MSG_SET

指定应用程序希望在状态5至6下协商哪些性能。 MSG_GETCURRENT

指示源和应用程序均同意在状态5至6下协商的所有性能。

与其它性能一样,若源不支持CAP_EXTENDEDCAPS,它将返回返回码TWRC_FAILURE和状态码TWCC_CAPUNSUPPORTED。

若应用程序尝试在状态5或6下设置性能但源没有事先同意此安排,此操作将失败,其返回码为TWRC_FAILURE,状态码为TWCC_SEQERROR。

若应用程序不使用源用户界面,则应用程序将控制源的状态。若应用程序想设置性能的值,它可以使源返回状态4再进行此操作。因此使用自己的用户界面的应用程序无需使用CAP_EXTENDEDCAPS。

4.2 数据传送选项

之前已经讨论过,TWAIN为数据传送定义了三种模式:本地、文件和缓存模式。 源被要求支持本地和缓存传送模式。

4.2.1 本地传输模式

此模式的使用在第3章中已介绍。本地模式的一个潜在的局限是可能没有足够大的RAM块可用于保存图像。这种情况直到应用程序发送DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET操作尝试进行传输时才会被发现。 当出现内存不足的情况下,源可能的响应方式有多种: ? 简单地使操作失败。

? 裁剪图像使其能够置入可用的内存。源应通知用户由于内存限制而进行了此操作。裁剪应保持图像和外观比例和起点(左上角)。

? 和用户进行沟通以允许变更图像尺寸或取消操作。

DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET返回的返回码/状态码可指示发生了哪种动作:

TWRC_XFERDONE:

表示传输已完成并且会话状态为7。但这不能保证源没有裁剪图像。即使应用程序在传输前使用DG_IMAGE/DAT_IMAGEINFO/MSG_GET来确定图像尺寸,也不能认为返回的

ImageWidth和ImageHeight适用于最终传输过来的图像。如果图像尺寸对应用程序很重要,则应在传输完成后却检查最终的图像尺寸,如下:

? 调用DG_CONTROL / DAT_PENDINGXFERS / MSG_ENDXFER操作使会话状态从7变更为6(或5)。

? 判断传输的真实的图像的尺寸: Windows —— 读取DIB头信息;Macintosh—— 检查图像的PicFrame。 TWRC_CANCEL:

获取操作被用户取消,会话状态为7。执行DG_CONTROL / DAT_PENDINGXFERS / MSG_ENDXFER操作以使会话状态从7变更为6(或5)。 TWRC_FAILURE:


TWAIN规范的第四章(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:思潮

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: