本申请声明对申请号为10/705,132于2003年11月10日提交的题为“ColorManagement System That Supports Legacy and Advanced Color ManagementApplications”(律师案号为003797.00700)的专利申请的优先权,在此将其引入作为参考。
具体实施方式
在本发明以下说明书中要参照附图,这些附图形成本说明书的一部分,且其中作为说明示出了本发明可实践的特定示例。要理解可利用其它实施例,且可作出结构变化而不背离本发明的范围。
包括了以下术语的定义以便于对详细描述的理解。
·通道—图像包含一个或多个信息“通道”。通常色彩由累加的元色(红绿蓝)表示。这三种色彩的每一种的色彩信息被编码到其自己的通道中。通道并不限于RGB—它们可分解成照度(亮度)和色度(色彩)通道,或者用其它更奇特的方法。还可使用通道来编码不同于色彩的东西—例如透明度。图像色彩质量的度量是每个通道用以编码的比特数(bpch)。
·剪切-任何时候在源数据中两个不同值被映射到目标数据中同一值,这些值称为被剪切。这是重要的,因为被剪切数据不能恢复到其原始状态—信息已被丢失。诸如改变亮度或对比度的操作可剪切数据。
·色彩管理—色彩管理是确保由一装置记录的色彩在一不同装置上尽可能忠实地呈现给用户优选的过程,这常与一装置上对另一装置的感知相匹配。与人类的眼睛相比,成像装置的传感器具有较有限的捕捉人类眼睛可捕捉的所有色彩和动态范围的能力。同一问题也出现在显示装置和输出装置上。问题是尽管所有这三类装置都具有这些色彩和动态范围限制,但它们中没有一类具有完全相同的限制。因此,转换‘规则’被设置为当其在工作流中移动时保留尽可能多的有限色彩和动态范围信息,并确保信息对人类眼睛而言显现得尽可能地逼真。
·色彩空间—传感器可检测和记录色彩,但没有参考基准的原始电压值完全没有意义。参考基准比例可以是传感器本身的度量能力—如果传感器被测量为具有特定的频率响应频谱,则所产生的数字将具有含义。然而更有用的会是呈现人类眼睛所有可见色彩的一通用基准。有了这样的基准(称为CIELAB的色彩空间),色彩可明确地呈现,且其它装置可使用该信息并尽力复制它。有各种各样众所周知的色彩空间,包括为成像世界中特定目的而开发的sRGB、scRGB、AdobeRGB。
·色彩环境—所述色彩空间中色域的一般化形式。尽管某些文件格式使用了由特定色彩管理标准所述的色域信息,色彩环境实际上是同一概念但包括了不支持ICC色域信息的那些文件(编码)格式。
·动态范围—在数学上是系统能够编码的最大值信号除以同一系统能够编码的最小值信号。该值给出了系统可编码的信息范围的表示。
·色域—在诸如打印机或监视器的输出装置中可复制的色彩和强度值范围。
·色调—人们由其感知主要波长的色彩属性。
·HSV色彩模型—将色度呈现为角度而将饱和度呈现为离中心的距离的色度示图。
·ICC—国际色彩协会
·强度—来自一表面或光源的光线的纯量,无论观察者是如何感知光线的。
·精度—呈现一色彩的准确度。通过增加每个通道编码的比特数通常准确率可增加,假设源数据具有充分的色彩分辨率。
·轮廓文件—包含足够信息以使色彩管理系统将色彩转换到特定色彩空间或从中转换出来的文件。这可以是装置的色彩空间—其中我们称其为装置轮廓文件,其分类为输入轮廓文件、输出轮廓文件、以及显示轮廓文件(分别对输入、输出和显示装置);或一抽象色彩空间。
·呈现目的—告诉色彩管理系统在从较大色域到较小色域时如何处理在色彩空间之间转换色彩的问题的设定。
·饱和度—色彩的纯度。
·sRGB—因特网上拟为图像使用的“标准”RGB色彩空间,IEC61966-2-1。
·scRGB—“标准计算的”RGB色彩空间,IEC61966-2-2。
·工作流—一过程,定义文档中数字所表示的是哪些色彩,并通过编辑将那些色彩从捕捉到输出时都保留或控制为工作流。
图1示出了可在其上实现本发明的适当计算系统环境100的一个示例。特别地,图1示出例如光学无线鼠标的无线指针装置161在计算系统环境100中的操作。该计算系统环境100仅是适当计算环境的一个示例,并非旨在提出对本发明使用或功能性范围作任何限制。计算环境100也不应被解释为对示例性操作环境100中所示的任一组件或其组合有任何依赖性或任何需求。
本发明也可在很多其它通用或专用计算系统环境或配置中操作。适于本发明使用的众所周知的计算系统、环境、和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持式或膝上型装置、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电器、网络PC、小型计算机、大型计算机、包括任一种以上系统或装置的分布式计算环境等等。
本发明可在计算机可执行指令的一般环境中进行说明,诸如由计算机执行的程序模块。一般而言,程序模块包括执行具体任务或实现具体抽象数据类型的例程、程序、对象、组件、数据结构等等。本发明还可在任务由经通信网络连接的远程处理装置执行的分布式计算环境中实践。在分布式计算环境中,程序模块可置于包括存储器存储设备的本地和远程计算机存储介质中。
参照图1,实现本发明的示例性系统包括以计算机110形式的通用计算装置。计算机110的组件可包括,但不限于,处理单元120、系统存储器130以及把包括系统存储器在内的各种系统组件耦合到处理单元120的系统总线121。系统总线121可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线架构的任一种的本地总线。作为示例,而非限制,这些架构包括工业标准架构(ISA)总线、微信道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和也称为Mezzanine总线的外围部件互连(PCI)总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能被计算机110访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性介质、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化多功能光盘(DVD)或其它光学存储装置、磁盒、磁带、磁盘存储器或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机110访问的介质。通信介质通常在诸如载波或其它传输机制的已调制数据信号中体现计算机可读指令、数据结构、程序模块、或其它数据,且包括任何信息输送介质。术语“已调制数据信号”意指在信号中用对信息编码方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接的有线介质,和诸如声学、射频(RF)、红外线和其它无线介质的无线介质。以上任何介质的组合也应包括在计算机可读介质的范围中。
系统存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132的易失性和/或非易失性存储器形式的计算机可读介质。包含有助于计算机110如起动时在元件间传送信息的基本例程的基本输入/输出系统(BIOS)133通常存储在ROM 131中。RAM 132通常包含可被处理单元120立即访问和/或当时正被操作的数据和/或程序模块。作为示例,而非限制,图1示出了操作系统134、应用程序135、其它程序模块136、和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1图示了读取和写入不可移动、非易失性磁性介质的硬盘驱动器141,读取和写入可移动、非易失性磁盘152的磁盘驱动器151,读取和写入可移动、非易失性光盘156,诸如CD-ROM或其它光学介质的光盘驱动器155。其它也用在示例性计算环境中的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,如磁带、闪存卡、数字多功能盘、数字化录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过诸如接口140的不可移动存储器接口与系统总线121连接,而磁盘驱动器151和光盘驱动器155通常通过诸如接口150的可移动存储器接口与系统总线121连接。
如上所述并如图1所示的驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块、和其它数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146、和程序数据147。注意这些组件可以与操作系统134、应用程序135、其它程序模块136、和程序数据137相同或不同。在此给予操作系统144、应用程序145、其它程序模块146、和程序数据147的数字不同至少说明他们是不同的副本。用户可通过诸如数码相机163、键盘162和常指为鼠标、跟踪球或触摸板的定点装置161的输入装置向计算机110输入命令和信息。在本发明一实施例中,无线定位装置161可实现为带光传感器的鼠标来检测鼠标的运动。其它输入装置(未示出)可包括话筒、操纵杆、游戏垫、卫星接收器、扫描仪等等。这些和其它输入设备常常通过与系统总线耦合的用户输入接口160与处理单元120相连,但也可通过例如并行端口、游戏端口或通用串行总线(USB)的其它接口连接。在图1中,无线指针装置161与用户输入接口160经无线信道199与用户输入接口160通信。无线信道199利用电磁信号,例如视频(RF)信号、红外信号、或可视光线信号。监视器191或其它类型的显示设备也可通过诸如视频接口190的接口与系统总线121相连。除显示器以外,计算机还可包括诸如扬声器197和打印机196的其它输出设备,它们通过输出外围接口195相连。
计算机110可以在使用与一台或多台远程计算机,诸如远程计算机180的逻辑连接的网络化环境中运行。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等装置或其它公共网络节点,而且通常包括上述与个人计算机110相关的许多或全部组件,尽管在图1中仅图示了存储器存储设备181。图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这样的网络化环境在办公室、企业范围计算机网络、内联网和因特网上是常见的。
当用于LAN网络化环境中时,计算机110通过网络接口或适配器170与LAN171连接。当用于WAN网络化环境中时,计算机110通常包括调制解调器172或其它用于在广域网173,诸如因特网中建立通信的装置。可以是内置式或外置式的调制解调器172与系统总线121通过用户输入接口160或其它适当机制连接。在网络化环境中,与计算机110相关的程序模块或其一部分可存储在远程存储器存储装置中。作为示例,而非限制,图1示出了驻留于存储器装置181中的远程应用程序185。应当理解,所示网络连接是示例性的,且其它用于在计算机间建立通信连接的技术也可以使用。
外围接口195可与诸如扫描仪(未示出)或数码相机194的视频输入装置通过接口相连,其中输出外围接口可支持包括通用串行总线(USB)接口的标准化接口。由操作系统134或应用程序135支持的色彩管理,有助于用户获取计算机装置之间所需的色彩转换。计算机装置通常可分类为例如数码相机194的输入装置、例如监视器191的显示装置、以及例如打印机196的输出装置。色彩管理的操作在以下讨论中进行更详细解释。
图2示出本发明一实施例支持的国际色彩协会(ICC)轮廓文件200。ICC轮廓文件200包含度量装置模型分段201、色彩显现模型分段203、以及色域映射算法分段205。在该实施例中,轮廓文件遵从可从ICC网站(http://www.color.org)得到的ICC规范版本3.0~4.0。度量装置模型分段201用多个色彩度量值以及有关照度的信息来表征装置。色彩显现模型分段203用来基于输入照度和查看环境将该色彩度量值转换到轮廓文件连接空间(PCS)。相应的色彩显现模型常常是专用的。色域映射算法分段205说明参考介质和特定输出装置之间色域的差异。对于ICC轮廓文件200,色域映射算法分段205假设源轮廓文件连接空间等同于目标轮廓文件连接空间。ICC轮廓文件200将轮廓文件的传统格式例示为如随后讨论中所引用的。
ICC轮廓文件200通常以采取“黑匣子”方法的二进制格式来表示。因此,用户可得出结论,ICC轮廓文件200具有其它轮廓格式可解决的重大缺点。
图3示出本发明一实施例所支持的虚拟装置模型轮廓文件300。虚拟装置模型轮廓文件300解决了与ICC轮廓文件200相关联的某些缺点。虚拟装置模型轮廓文件300包含度量装置模型分段301、色彩显现模型分段303、色域映射算法分段305、逆色彩显现模型分段307、以及目标度量模型分段309。
虚拟装置模型轮廓文件300具有对用户有利的若干特征。例如,轮廓文件300没有假设源轮廓文件连接空间等同于目标轮廓文件连接空间。色彩显现模型(对应于色彩显现模型分段303和逆色彩显现模型分段307)无需是专用的,并可利用基于CIE的色彩显现模型。还有,通过使用文本格式(例如可扩展标记语言XML)而不是ICC轮廓文件200所使用的二进制格式,使得轮廓文件300更容易被访问。虚拟装置模型轮廓文件300将先进轮廓文件的格式例示为如随后讨论中所引用的。
图4根据本发明一实施例示出了色彩管理系统的体系结构400。色彩管理系统包括API层模块401、API适应层模块407、传统处理模块417、以及先进处理模块419。在该实施例中,API层模块401和API适应层模块407支持一传统API集,例如图像色彩管理2(ICM2)。
ICM2内嵌于Windows
98及以上。ICM2支持具有不同API类别的传统应用程序接口(API)组,包括:
·OPEN/CLOSE(打开/关闭)轮廓文件
·GET/SET轮廓文件元素
·CREATE TRANSFORM(创建变换)
·TRANSFORM COLORS(变换色彩)
一API调用通常包含至少一个参数。参数可以是标识例如轮廓文件对象或转换对象的对象的指针。API集的OPEN类别可使指定轮廓文件由应用程序访问。一旦指定类别打开,可使用API集的GET/SET类别由应用程序读取或写入轮廓文件元素。为了使色彩管理系统将源图像转换成目标图像,转换查询表格(通常是多维的)从例如源轮廓文件和目标轮廓文件的指定轮廓文件集中构建。应用程序可通过利用CREATE TRANSFORM类别来调用查询表格的构建。一旦构建了查询表格,可由应用程序通过利用API集的TRANSFORM COLORS类别来指示色彩管理系统以将源图像逐象素地转换成目标图像。
参看图4,传统应用程序403和先进应用程序405与API层模块401交互以确定哪个处理模块应处理API请求。应用程序403和405都向XPI层模块401发送API请求。尽管API调用409、API返回结果411、API调用413、以及API返回结果415的结构和格式与传统格式相兼容,先进应用程序405仍然可利用先进处理模块419所提供的能力和增强。然而,传统应用程序403无需任何更改就可继续利用传统API集。例如,先进应用程序405可利用虚拟装置模型轮廓文件300来表示API调用中的一个或多个指定轮廓文件。API适应层模块407分析在API调用中标识的对象,以判断该对象是否具有传统格式(例如ICC轮廓文件200)或者是否具有先进格式(例如虚拟装置模型轮廓文件300)。(先进格式可定义为非传统格式。)如果对象具有传统格式,则传统处理模块417处理API调用。如果对象具有先进格式,则先进处理模块419处理API调用。
如果由API调用标识的对象集的对象具有混合格式,即对象之一具有传统格式而另一对象具有先进格式,则某些对象的格式被转换从而使所有对象的格式一致。作为示例,如果目标轮廓文件和源轮廓文件具有不同格式(其中一轮廓文件具有传统格式而另一格式文件具有先进格式),则具有传统格式的对象格式被转换成先进格式。在该实施例中,API适应层模块407利用表1所示逻辑来确定格式转换。(在本发明其它实施例中,格式转换可由色彩管理系统的其它模块执行。)
在表1所示实施例中,如果对象集中任一对象与先进格式相关联,则该集具有传统格式的任意剩余对象被转换成先进格式,从而该集的所有对象在格式转换后具有先进格式。随后调用先进模块419以处理API调用。
在该实施例中,如表1所示,如果对象集中所有对象与传统格式相关联,则没有一个对象被转换成先进格式。随后调用传统模块417以处理API调用。然而,在另一实施例中,可通过一策略配置格式替换指示符(对应于“优选先进格式”)从而所有具有传统格式的对象被转换成先进格式,而不管该对象集中是否有对象与先进格式相关联。此外,策略可支持多个用于配置格式替换指示符(对应于“唯先进格式”)的模式选择从而所有传统对象不是无条件地被转换成先进格式,即如上所述仅当至少一个对象具有先进格式时传统对象才被转换成先进格式。该实施例可支持其它模式选择,例如“唯传统格式”和“优选传统格式”。表格2根据这些模式选择示出操作。
尽管该实施例将对象从传统格式转换成先进格式,其它实施例可将对象从先进格式转换成传统格式。然而,当更新被结合到非传统软件中时,传统软件通常被冻结。此时,如表1所示将传统格式转换成先进格式可能是有利的,以便避免对传统软件的更改。
图5根据本发明一实施例示出把API调用507通过中间组件503调用到色彩管理系统501的请求组件505。在图5所示配置中,中间组件503将API调用507传递给色彩管理系统501并将来自色彩管理系统501的API返回结果509传递给请求组件505。在该实施例中,中间组件503可以是一应用程序或实用程序。
图6根据本发明一实施例示出将色彩信息从源图像文档601或605转换到目标图像文档603或607的色彩管理系统600的体系结构。色彩管理系统600包括传统模块417、先进处理模块419、以及支持与其它色彩管理操作相关联的不同对象的多个结构。在该实施例中,结构609、611、613和615分别与传统格式(传统源轮廓文件609、传统目标轮廓文件611和传统转换表格617)和先进格式(先进源轮廓文件613、先进目标轮廓文件615和先进转换表格619)相关联。如果必要,如上所述,传统源轮廓文件609通过格式转换651被转换成先进源轮廓文件613,而传统目标轮廓文件611通过格式转换653被转换成先进目标轮廓文件615。
图7根据本发明一实施例示出利用用于处理图像文档的通用结构的色彩管理系统701的体系结构700。传统处理模块707、先进处理模块709、API层模块703和API适应模块705分别对应于如图4所示的传统处理模块417、先进处理模块419、API层模块401和API适应模块407。组件717用API调用请求一色彩操作。体系结构700支持具有传统格式或先进格式的对象的通用结构。例如,源轮廓文件结构711、目标轮廓文件结构713和转换结构715分别支持源轮廓文件、目标轮廓文件和转换查找表格。在该实施例中,结构711、713和715利用句柄来标识对象元素,其中一空指针指示对应于与该对象格式不同的格式的元素。(句柄是指针的指针。)然而,本发明另一实施例可利用例如指针的另一标识机制。
图8根据本发明实施例示出用于处理GET/SET API类别的流程图800。如前所述,GET/SET类别使应用程序能检索或设置一轮廓文件元素。在流程图800中,一指定轮廓文件可具有传统格式或先进格式。在步骤801,色彩管理系统接收一API调用以检索或设置该轮廓文件的一元素。在步骤803,色彩管理系统判断被请求元素是否与轮廓文件格式相一致。一元素被传统格式支持但不被先进格式支持,或反之。例如一“优选CMM”元素可由ICC 200格式支持但不由虚拟装置模型轮廓文件300支持。如果步骤803确定该轮廓文件元素与轮廓文件格式一致,则在步骤809返回该元素。如果步骤803确定该轮廓文件元素与轮廓文件格式不一致,则返回错误指示。在另一实施例中,与色彩管理系统返回错误指示相反,色彩管理系统确定最匹配被请求轮廓文件元素的轮廓文件元素(与轮廓文件格式相对应),并在步骤807返回有关匹配轮廓文件的信息。
尽管如图4-7所示的各实施例支持组件和色彩管理系统之间的应用程序接口,本发明可支持其它类型系统的带有传统API集的系统增强。因此,传统API可支持系统的增强和新能力同时无需更改传统应用程序就使传统应用程序能继续与系统交互。
编程接口(或更简称为接口)可被视为使一个或多个代码分段能与一个或多个其它代码分段通信,或能访问其所提供的功能性的任意机制、进程、和协议。或者,编程接口可被视为系统组件的能够与其它组件的一个或多个机制、方法、函数调用、模块等通信耦合的一个或多个机制、方法、函数调用、模块、对象等。前面句子中的术语“代码分段”旨在包括一个或多个指令或代码行,并包括例如代码模块、对象、子程序、函数等等,无论所应用的是何种术语,或者是否单独编译代码分段,或者代码分段是否被提供为源、中间体、或对象代码,或者是否在运行时系统或进程中利用代码分段,或者它们是否位于同一机器或不同机器或分布在多个机器上,或者代码分段所表示的功能是否整个地在软件中、硬件中、还是硬件和软件的合成中实现。
在概念上,编程接口一般可如图9或10所示。图9示出接口1为第一代码分段和第二代码分段通信的通道。图10示出包括接口对象I1和I2(可以是或不是第一和第二代码分段一部分)的一接口,使得系统的第一和第二代码分段能通过媒体M通信。在图10的视图中,可将接口对象I1和I2视为同一系统的独立接口,也可视为对象I1和I2加上媒体M组成了接口。尽管图9和10示出了双向流和该流每一侧上的接口,某些实现可仅具有单向的信息流(或如以下所述的无信息流),或者可仅在一侧具有接口对象。作为示例,而非限制,诸如应用程序编程接口(API)、进入点、方法、函数、子程序、远程过程调用、以及组件对象模型(COM)接口的术语,都被包括在编程接口的定义中。
这种编程接口的各个方面可包括:第一代码分段向第二代码分段传送信息(其中“信息”在最广泛意义上使用,并包括数据、命令、请求等)的方法;第二代码分段接收信息的方法;以及信息的结构、序列、语法、组织、模式定时、和内容。这样,不管媒体是有线、无线、或两者合成,只要信息以接口定义的方式传输,基层的传输媒体本身对接口的操作就不重要了。在某些情况中,信息不在常规意义上的一个方向或两个方向上传递,因为当一代码分段仅访问由第二代码分段执行的功能时,信息传递可通过另一机制(例如信息置于与代码分段之间与信息流分开的缓存器、文件等)进行或者不存在。任意一些或所有这些方面在给定情况中可能是重要的,例如,取决于代码分段是否是松散耦合或紧密耦合配置中系统的一部分,因此该列表应被视为是说明性且非限制的。
该编程接口的概念对本领域资深技术人员是众所周知的,且在本发明以上详细描述中显而易见。然而,可有实现编程接口的其它方法,并且除非被确切排除,它们也将被包括在本说明书结束处陈述的权利要求书中。这些其它方法会显得比图9和10的简化视图更深奥或更复杂,但即便如此它们仍执行完成相同总体结果的相似功能。我们将简要描述编程接口的部分说明性任选实施例。
通过将一通信分成多个离散通信可间接地完成从一个代码分段到另一代码分段的通信。这在图11和12中进行示意描述。如图所示,可根据可划分功能组来描述某些接口。因而,可分解图9和10的接口功能以获取同样的结果,正如数学上可提供24,或者为2 x 2 x 3 x 2。相应地,如图11所示,可划分由接口1提供的功能以将该接口的通信转换到多个接口:接口1A、接口1B、接口1C等而获取同样的结果。如图12所示,可将接口I1提供的功能划分成多个接口:I1a、I1b、I1c等而获取同样的结果。类似地,从第一代码分段接收信息的第二代码分段的接口I2也可被分解成多个接口:I2a、I2b、I2c等。在分解时,包括在第一代码分段中的接口数量不需要匹配包括在第二代码分段中的接口数量。在图11和12的任一情形中,接口1和I1的功能实质分别与图9和10的一样。接口的分解也可遵从结合、交换、以及其它数学属性使得分解难以识别。例如,操作的顺序并不重要,且因而由一接口实现的功能可在到达接口之前由另一代码或接口很好地实现,或者由系统的独立组件执行。此外,编程领域技术人员可理解,有各种各样获取同样结果而作不同函数调用的方法。
在某些情形中,略去、添加、或重新定义编程接口的某些方面(例如参数)而仍完成所要结果是可能的。这如图13和14所示。例如,假设图9的接口1包括一函数调用Square(input,precision,output),它包括三个参数input(输入),precision(精度)和output(输出),并从第一代码分段发往第二代码分段。如果中间参数precision在给定情形中无关紧要,如图13所示,则可略去它甚至用meaningless(无意义)参数替换它(在此情形中)。也可添加不重要的additional(附加)参数。在任一情形中,只要在输入由第二代码分段进行square(平方)之后返回输出,就可获得square的功能。对计算机系统某些下游部分或其它部分precision可以是非常好的有意义的参数;然而,一旦认为precision对于计算square的有限目的而言是不必要的,则替换或略去它。例如,替代传送有效的precision值,可传送诸如生日等无意义值而不会不利地影响结果。类似地,如图14所示,由接口I1’替换接口I1,它进行了对接口略去或添加参数的重新定义。接口I2可类似地被替换为接口I2’,它进行了略去不必要参数或在其它地方进行处理的参数的重新定义。此处的要点是,在某些情形中,编程接口可包括某些目的所不需要的一些方面,诸如参数,因此可略去或重新定义它们,或者在其它地方进行处理用于其它目的。
合并两个独立代码模块的部分或所有功能从而使它们之间的“接口”改变形式也是可行的。例如,可将图9和10的功能分别转换成图15和16的功能。在图15中,先前图9的第一代码分段和第二代码分段被合并成一包含它们的模块。在此情形中,代码分段仍然可互相通信,但接口则被调整为更适于单个模块的形式。因而,例如,正式的调用和返回语句不再必要,但是依照接口1的类似处理或响应仍然有效。类似地,如图16所示,图10的接口I2的一部分(或全部)可被写入I1内以形成接口I1”。如图所示,接口I2被划分成I2a和I2b,而接口部分I2a被编码在接口I1内以形成接口I1”。作为具体示例,考虑图10的接口I1执行函数调用square(input,output),它在由第二代码分段处理用input传送的值(以平方之)之后由接口I2接收,并用output传送回平方后的值。在此情形中,由第二代码分段(平方input)执行的处理无需调用接口就可由第一代码分段执行。
通过将一通信分成多个离散通信可间接地完成从一个代码分段到另一代码分段的通信。这在图17和18中进行示意描述。如图17所示,提供一个或多个中间件(分离接口,因为它们从原始接口中分离功能和/或接口功能)以转换第一接口接口1上的通信以使它们遵从一不同接口(在此情形中为接口2A、接口2B和接口2C)。可这样完成:例如,有已安装的应用程序基础根据接口1协议被设计为与操作系统通信,但是随后操作系统被更改成使用一不同接口(在此情形中为接口2A、接口2B和接口2C)。要点是,由第二代码分段使用的原始接口被更改,从而它不再与第一代码分段使用的接口兼容,且因而使用一中间体使得新旧接口兼容。类似地,如图18所示,可将分离接口DI1引入第三代码分段以接收来自接口I1的通信,并引入分离接口DI2以将接口功能传送给例如经重新设计与DI2一起工作的接口I2a和I2b,而仍提供同样的功能结果。类似地,DI1和DI2可一起工作以将图10接口I1和I2的功能翻译成一新操作系统,而仍提供同样的或相似的功能结果。
另一可能变体是动态地重写代码以用其它东西替换接口功能而仍提供同样的总体结果。例如,可有一系统,其中以中间语言(例如微软IL、JavaByteCode等)呈现的代码分段被提供给执行环境中的运行时(JIT)编译程序或解释程序(诸如由.Net框架、Java运行时环境、或其它类似运行时类型环境所提供的)。可编写JIT编译程序以动态转换从第一代码分段到第二代码分段的通信,即让它们遵从第二代码分段(原始或不同的第二代码分段)所需的一不同接口。这在图19和20中描述。如图19所示,该方法类似于上述分离情形。可这样完成:例如,其中已安装的应用程序基础根据接口1协议被设计为与操作系统通信,但是随后操作系统被更改成使用一不同接口。可使用JIT编译器以遵从已安装了基础的应用程序到操作系统新接口在运行中的通信。如图20所示,动态地重写接口的方法可被应用于动态分解,或改变接口。
还要注意,用于通过任选实施例获取与接口相同或相似结果的上述情形也可以各种方法合成,串行地和/或并行地,或者用其它介入代码。因而,以上呈现的任选实施例并非互相排斥,而是可以加以复合、匹配和合成以产生与图9和10所示一般情形相同或等效的情形。还要注意,由于使用大多数编程结构,有许多未在此描述的可获取接口相同或相似功能的其它类似方法,但虽然如此仍可由本发明的精神和范围来表示,即,要注意,在接口值之下的接口至少代表部分功能,并使能有利结果。
尽管参照包括实现本发明的现有优选模式的特定示例描述了本发明,本领域技术人员将理解,有上述系统和技术的落于本发明精神和范围内的许多变化和排列,如所附权利要求所述。