CN1615507A - 用于作为图形布局/表示对象的宿主的*** - Google Patents
用于作为图形布局/表示对象的宿主的*** Download PDFInfo
- Publication number
- CN1615507A CN1615507A CNA038014815A CN03801481A CN1615507A CN 1615507 A CN1615507 A CN 1615507A CN A038014815 A CNA038014815 A CN A038014815A CN 03801481 A CN03801481 A CN 03801481A CN 1615507 A CN1615507 A CN 1615507A
- Authority
- CN
- China
- Prior art keywords
- announcer
- layout
- graphic element
- class
- view
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/22—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
- G09G5/30—Control of display attribute
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Processing Or Creating Images (AREA)
- User Interface Of Digital Computer (AREA)
- Digital Computer Display Output (AREA)
Abstract
描述表示器***框架和由这样的框架执行的方法,用于作为一组表示器的宿主,所述表示器促进了为指派一组图形元素的应用视图维护布局。所述表示器***提供一基表示器类和一组接口方法,由表示器引擎执行,用于创建和集成可扩展的表示器类组,用于在特定的视图内的布局操作期间处理各种图形元素数据类型。所述表示器***使应用用户界面开发者能够通过对表示器引擎的调用实现复杂的显示布局操作。这样的复杂显示布局操作的例子包括:分页,部分计算,增量计算,多次尝试,布局特征/操作的链接。
Description
技术领域
本发明一般涉及计算设备。更特别地,本发明涉及用于通过图形文档/用户界面安排显示的图形元素的计算组件
背景技术
为在计算***上执行的应用显示和/或再现图形输出包括许多任务。一个这样的任务是布局/表示管理。布局/表示管理涉及在一组显示元素被指派的显示空间(例如矩形)内安排和修饰它们。尽管在其它上下文中“布局(layout)”和“表示(presentation)”可能是可区别的,但是表示和布局,如在此使用的,应该将它们对待为可交换的和等价的术语。布局/表示***处理的显示元素提供图形输出数据至图形输出***和图形显示驱动器的再现组件。这样的再现组件驱动图形显示硬件,诸如监示器和打印机。
由计算***执行的布局/表示操作包括在图形显示元素上执行的多种多样功能的。这样一个操作的例子是在编辑器应用的图形显示用户界面的所指派范围内安排文本。布局操作在指定的矩形空间内确定文本行的内容和布置(placement)。另一个例子是用标准化的边界给元素(例如,对话框,工具条,控制条,等)装框子。这些操作在此也被称为“特征(feature)”。计算机***的再现组件基于显示元素的状态产生图形输出数据,这些显示元素有可能被先前执行的布局/表示操作/特征修改。
各种表示引擎是已知的。例如,MICROSOFT WINDOWS的“用户模块(usermodule)”在图形用户界面上执行与顶层窗口有关的布局操作。MICROSOFTWINDOWS的对话框管理器将对象放在预定义的位置并允许对象的分组。对象的定位以逻辑方式发生并且与物理设备无关。JAVA SWING允许在基于在对象上指定的属性的视图内与对象有关的基本布置操作。
已经以许多方式执行布局/表示操作。应用本身能完全完成其显示元素布局操作。在应用内封装布局(或“表示”)操作。应用为与应用的当前状态相关联的一个或多个视图修饰/安排显示元素。应用在指派给应用的显示区域内安排元素。应用其后再现相应于所安排的显示元素把显示输出至图形***/驱动器。
另一个布局处理排列,包含在MICROSOFT WINDOWS XP操作中,为可由应用调用的一组预定的布局特征提供支持。布局特征组包括专用于应用的用户界面显示元素的布局/表示操作。预定布局/表示特征组,诸如例如用于所提供的矩形的边界生成器,减少应用开发者与组织及表现图形显示的元素的特定方面有关的编程负载。预定特征组还促进与执行某个基本显示特征/函数诸如前述边界有关的一致性。应用为预定的布局功能提供嵌入在应用本身之内的附加布局操作。
已知的布局处理结构,包括可由应用调用的预定布局特征,简化化应用在再现图形数据和命令至计算机***的再现组件之前安排视图的过程中所遇到的编程布局任务。然而,已知的布局处理结构不容易支持与可由应用调用的预定布局特征组有关的增强或修改。因此,例如,直接将新的布局特征放在应用代码中,而不是将特征放在由表示/布局结构提供的预定布局特征中。之后,在执行期间,应用使用预定布局功能和内部执行的布局/表示操作的组合来计算布局。
概述
本发明包括一个表示器***用于包含在图形输出布局管理***内。这样的布局管理目标是将对象安排、定尺寸和安置在显示空间上的方法。这样的***代表提供包含表示可显示的程序内容(例如,需要安排在所显示或所打印页上的文本块)的图形元素的程序而处理布局。通过定义用于表示图形元素内容的显示状态表示器执行(规定数据的)图形元素的表达的角色。象这样,表示器保存一个布局说明用于相应的图形元素。
按照本发明,表示器***作为与图形元素相关联的表示器的宿主并且在视图内安排它们。表示器***,以其支持许多类型的表示器导出的角色,包括一个表示器基类,从它导出表示器类。之后,从导出的表示器类实例化表示器。
表示器***还包括表示器主机接口。主机接口包括一个方法,用于按照与图形元素相关联的表示器在视图中布置图形元素。象这样,在视图内图形元素的布局是由相关联的表示器指定的。
附图说明
尽管所附的权利要求书精确地阐述本发明的特征,但从下面结合下列附图的详细说明,可最佳地理解本发明及其优点:
图1是方框图,示出一示例性***用于实现本发明的实施例;
图2是高层示意图,示出包括用于在具体化本发明的计算环境中完成图形布局维护的表示器***的布局管理结构的主要组件;
图3是示意图,示出图形元素与在具体化本发明的***中定义图形文档/用户界面的表示器之间的关系;
图4a和4b概述表示器基类的结构,可从表示器基类导出定制的表示器对象类以在具体化本发明的***中完成特定的布局/再现任务;
图5概述子代理类的结构;
图6概述通知处理器类接口的结构;
图7概述通知处理器位置类的结构;
图8概述视图类的结构;
图9概述BoxSizeInfo结构的部分;
图10概述页描述符结构的部分;
图11概述表示引擎类的结构;
图12是流程图,概述基于通知处理器的处理
图13是流程图,概述用于按照本发明的实施例重新计算和再现包括一组表示器的视图的示例性步骤;
图14是流程图,例示用于在响应对有关图形元素的修改时在表示器(以及相关联的受影响的子表示器)上执行更新的步骤。
详细说明
在此揭示用户界面和文档布局/表示结构。所揭示的布局/表示结构包括图形布局处理/再现组件(表示器),用于完成与用于文档/用户界面的相关基本数据(图形元素)的视图方面。表示器***作为表示器的宿主。在其宿主角色中,表示器***协调和调整在响应相应于图形元素的修改时更新包括一组表示器的视图。因此,表示器***提供一种机制将图形元素的状态(例如数据状态)与由相应的表示器对象更新、高速缓存和再现的视图状态联系起来。
具体化本发明的基于表示器***的布局/表示结构的一个方面,是与它作为其宿主的表示器的类型有关的它的高度可扩展性。由表示器***提供的表示器基类便于扩展可用于布置和再现由相应的图形元素提供的信息的表示器类型(对象类)组。从表示器基类导出的各种表示器类型包括特定的布局/再现方法,作为由基类表示器类指定的默认方法的覆盖(override)。从表示器对象类组实例化的表示器对象,按照相应图形元素的数据状态实现布局/表示特征。
表示器***作为从表示器对象类实例化的表示器对象的宿主。表示器***执行表示器对象的生存期管理(即创建、删除等)。表示器***处理脏跟踪(dirty tracking)以选择性地只更新未修改的表示器。表示器***支持将表示器链接在一起以提供对主表示器的修饰。表示器还协调更新与再现表示器。
在本发明的实施例中,通过通知处理器,方便了潜在影响视图状态的对图形元素修改的通知。通知处理器使修改通知处理能够与由表示器执行的修改处理分开。每个表示器元素类型与通知处理器类型相关联。每个通知处理器处理对相应图形元素的修改。如果需要更新,通知处理器启动在相关表示器对象上设置脏属性(dirtiness property)。在响应对相应图形元素的修改时,设置的脏属性引起表示器对象的重新计算。
作为例子在此所述的用户界面布局/表示结构,被包括在操作***中,所述操作***作为具有图形用户/文档界面的应用的宿主。应用、表示器和操作***的设备专用再现组件以及设备专用驱动器,再现界面/文档图形输出设备控制命令/数据至显示设备硬件(例如,监视器,打印机等)。再现输出的布局特征至少部分地基于由表示器***作为其宿主的表示器执行的布局/表示处理和再现。
表示结构允许将所显示元素的数据状态与其视图状态不相关联。这样的不相关联提供可扩展的和高可定制的平台,用于为基本的图形元素创建新的和丰富的显示个性。在本发明的实施例中,显示元素是由图形元素对象(代表元素的数据状态)和至少一个用于在特定视图中布置元素的相关表示器对象(代表视图状态)代表的。表示器完成用于有关元素的布局的定制更新。表示器还在更新布局之后再现元素的视图。
利用表示器对象将所显示元素的数据状态与其在视图中的显示不相关联。因而,每个图形元素(显示数据源)潜在地能够具有多个提供图形元素的不同视图(例如,照片元素的全尺寸和缩略视图)的表示器。将多个表示器与单个图形元素相关联的能力还允许将单个元素与一个字段内的多个位置(例如,在多个列之间***单个图形元素)相关联。而且,表示器***将不同的类型的多个不同表示器链接至单个元素,从而支持将各种各样定制的修饰附加到一个元素的基本视图。在下文参考附图描述这些以及示例性显示布局/再现结构。
图1例示适合于完成具体化本发明的基于表示器***的显示布局/再现结构的操作环境100的例子。操作环境100只是适合操作环境的一个例子,并且不是想要建议关于本发明的用途或功能范围的任何限制。可能的适合于本发明使用的其它已知的计算***和/或配置包括,但不限于,个人计算机、服务器计算机、膝上型/便携式计算设备、手持计算设备、多处理器***、基于微处理器的***、网络PC、小型计、大型计算机、包括任何上述***或设备的分布式计算环境等等。所揭示的包括表示器***的布局管理结构服务许多不同的兴趣,包括与计算***的显示功能有关的可扩展性、集成和一致性,诸如在图1中所示的一个。
在由计算机可执行指令诸如由计算机执行的程序模块完成的步骤与过程的组的一般环境中描述本发明。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。尽管参考在单个计算机***上本地执行的过程描述示例性实施例,但本发明可能被包括在分布式计算环境中运行的网络节点内,在所述分布式计算环境中由通过通信网络连接的远程处理设备执行任务。在分布式计算环境中,程序模块通常位于包括存储器设备在内的本地和远程两者的计算机存储介质中。
继续参考图1,用于实现本发明的示例性***包括计算机110形式的通用计算设备。计算机110的组件包括,但不限于,处理单元120,***存储器130,以及将包括***存储器在内的各种***组件连接至处理单元120的***总线121。***总线121可能是任何几种类型总线结构包括存储器总线或存储控制器,外设总线,使用任何各种各样总线结构的局部总线。作为例子,但不限于,这样的结构包括工业标准结构(ISA)总线,微通道结构(MCA),增强ISA(EISA)总线,视频电子标准协会(VESA)局部总线,以及外部部件互连(PCI)总线,也被称为夹层(Mezzanine)总线。
计算机110一般包括各种条样的计算机可读介质。计算机可读介质可以是能由计算机110访问的任何介质,并且包括易失性介质和非易失性介质两者,可移动和不可移动的介质。作为例子,但不限于,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于信息,诸如计算机可读指令、数据结构、程序模块或其它数据的存储的任何方法或技术实现的易失性和非易失性两者,可移动和不可移动的介质。计算机存储介质包括,但不限于,RAM,ROM,EEPROM,闪存或者其它存储技术,CD-ROM,数据通用盘(DVD)或其它光盘存储器,磁带盒,磁带,磁盘存储器或者其它磁存储设备,或者能用于存储想要的信息以及能由计算机110访问的任何其它介质。通信介质一般包括在调制的数据信号诸如载波或者其它传输机制中的计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。术语“调制的数据信号”指以对在信号中的信息编码的方式使信号的一个或多个特征被设置或改变的信号。作为例子,不是限制,通信介质包括有线的介质诸如有线网络或者直接连线的连接,以及无线介质诸如声音、RF、红外线和其它无线介质。任何上述各项的组合也应该包括在计算机可读介质的范围内。
***存储器130包括易失性/或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出***133(BIOS),包含帮助在计算机110内的部件之间传送信息,诸如在启动时,有时存储在ROM 131中的基本的例行程序。RAM 132一般包括数据和/或程序模块,可由处理单元120立即访问和/或当即操作。
计算机110还可包括其它可移动的/不可移动的、易失性的/非易失性的计算机存储介质。只作为例子,图1例示了读写不可移动的、非易失性的磁介质的硬盘驱动器140,读写可移动的、非易失性磁盘152的磁盘驱动器151,以及读写可移动的、非易失性光盘156诸如CD ROM或者其它光介质的光盘驱动器155。能在示例性操作环境中使用的其它可移动的/不可移动的、易失性的/非易失性的计算机存储介质包括,但不限于,磁带盒、闪存卡、数字通用盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器142一般通过不可移动的存储器接口诸如接口140连接至***总线121,以及磁盘驱动器151和光盘驱动器155一般通过可移动的存储器接口诸如接口150连接至***总线121。
上面讨论的并且在图1中所示的驱动器及其相关的计算机存储介质,为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被例示为存储操作***144、应用程序145、其它程序模块146以及程序数据147。注意,这些组件能够与操作***134、应用程序135、其它程序模块136和程序数据137或者相同或者不同。在这里为操作***144,应用程序145,其它程序模块146和程序数据147给出不同的数字用以说明,至少它们是不同的拷贝。用户可通过输入设备诸如键盘162和通常被称为鼠标的指点设备161、轨迹球或者触摸板,将命令和信息输入到计算机20中。其它输入设备(未示出)可包括话筒、操纵杆、游戏板、卫星天线等等。这些和其它输入设备常常通过连接到***总线的用户输入接口160连接到处理单元120,但可通过其它接口和总线结构连接,诸如并行口、游戏口或者通用串行总线(USB)。监视器191或者其它类型的显示设备也可通过接口诸如视频接口190连接到***总线121。除监视器外,计算机还可包括其它输出设备诸如扬声器197和打印机196,它们可通过输出外设接口195连接。
计算机110可能在使用逻辑连接至一个或多个远程计算机诸如远程计算机180的网络化环境中操作。远程计算机180可能是个人计算机、服务器、路由器、网络PC、对等设备或者其它公共网络节点,并且一般包括许多或者所有上面相对于计算机110所述的部件,尽管在图1中只示出了存储器设备181。在图1中所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可包括其它网络。这样网络环境在办公室、企业级计算机网络、企业内部互联网和因特网中是很普通的。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110一般包括调制解调器172或者用于在WAN 173诸如因特网上建立通信的其它装置。可能是内置或外置的调制解调器172,可通过用户输入接口160或者其它适当的机制连接至***总线121。在网络化环境中,相对于计算机110所述的程序模块或者其部分,可存储在远程存储器设备中。作为例子,不是限制,图1例示远程应用程序185为驻留在存储器设备181上。将意识到,所示的网络连接是示例性的,并且可使用在计算机之间建立通信连接的其它方法。
图2是高层示意图,标识了软件模块和程序以及具体化本发明的布局/表示管理***结构的实例化对象和数据组件。在图2中代表的示例性布局/表示管理***结构包括表示器***200,它支持可显示对象的布局/表示,基于一组分层地安排的与视图202相关联的表示器对象,所述视图202是从视图对象类(见在下文所述的图8)在操作***205上执行的应用204的请求时创建的。
在本发明的实施例中,每个视图(例如视图202)具有相应的表示器***(例如表示器***200),它负责维护在视图内的可显示对象。在本发明的实施例中,视图202是视件(visual)根用于由表示器***200创建的所有视件。在视图202内所显示的内容基于在后备存储器(backing store)208内的图形元素206。应用204是后备存储器208内的图形元素206的源。在下文中描述的图3中描述示出视图、表示器***、用于视图的表示器树以及与应用相关联的图形元素树的说明性例子。
将在图2中所示的布局/表示管理***结构被分成一组功能组件。在所示的组件之间线代表组件之间的交互路径。本发明不限于在图2中所示的例示实施例中组件的特定安排及其表示的示例***互。而是按照本发明的替换实施例将在下文所述的组件的功能以不同方式分组。
在本发明的实施例中,应用204在视图对象类应用程序接口(见在下文所述的图8中的视图类结构)上调用构造方法,为视图202对象实例创建根对象。创建视图202的方法调用将传递引用给包含在后备存储器208中的图形元素206的根图形元素。在创建视图202之后,在视图202上对DoLayout方法的调用,为视图202用相应于最初被传递给创建视图202的构造方法的根图形元素的根表示器对象创建表示器树。视图202的表示器树(在图2中未示出)包括一组表示器,负责组织和再现视件输出用于视图202。
在本发明的实施例中,每个视图(例如视图202)拥有一个表示器***(例如表示器***200)。因此,在响应DoLayout方法时,视图202开始创建新的表示器树并且将它返回至调用程序(例如应用204)。最初,视图202调用表示器引擎对象类的构造方法,以创建包括表示器宿主应用程序接口(表示器宿主API)的表示器引擎212。表示器引擎212包括可执行的代码,用于在支持图形输出的计算***中调整和协调布局/表示操作的执行。由表示器引擎212执行/调整的功能包括:创建表示器对象(根和子版本两者),协调重新计算表示器的显示状态,再现,表示器的生存期管理,脏跟踪,将多个表示器链接至单个元素,以及执行增加的布局。下面参考图12描述可调用表示器引擎212’的表示器宿主API的方法的例子。这些方法是高层请求,创建和维护视图202的表示器对象树。由表示器引擎212执行的所标识的任务是示例性的,以及在本领域中那些熟练技术人员将意识到,在本发明的替换实施例中能由表示器引擎212完成附加/替换的任务。
表示器引擎212建立表示器***200以处理与视图202相关联的表示器对象。在本发明的实施例中,表示器***200包括表示器基类216。表示器基类216是完全特征的基类,用于创建能够使用在此所述的***的布局管理功能的表示器子类和表示器对象。表示器基类216包括一个模板,包括虚拟(可覆盖的)程序代码和数据结构,从它们导出一组表示器类214。表示器类214包括一组相应于特定的显示属性/行为的视图的专用表示器类型。从表示器基类216导出的定制表示器类214,作为例子,布置内容,安排子类,为所附的元素创建视件,为印刷文档分页,以及增量地更新包括图形元素206的视图。在表示器类214的组内每个表示器类的专用功能,是通过覆盖和补充由表示器基类216定义的视件方法来建立的。从表示器类214的组实例化的表示器对象代表和处理图形元素206的显示方面。
在本发明的实施例中,表示器对象类214的组,包括预定的表示器类218和外部表示器类220两者,是可扩展的。预定的表示器类218的组装备有表示器***200。通常独立于表示器***200而安装外部表示器对象类220。然而,由为表示器基类216(下面参考图4a和4b描述的)公布的接口规范(publishedinterface specification)促进了适当地将外部表示器对象类210与表示器***200的集成。外部表示器类220的开发者覆盖/修改与表示器基类216的可定制的布局/再现方法相关联的程序代码和数据结构,以实现定制尺寸、子定位(child positioning)和再现功能。之后,在外部表示器对象类220的组中安装新的表示器类,例如通过在计算机的文件***内指定的目录中安装包含新对象类的文件。
在本发明的实施例中,表示器类214包括表示器类,用于完成布局特征包括,作为例子:内容布局,子对象管理,视图创建,文档内容分页,以及视图的增加更新(例如,跨越多个显示屏幕的HTML页)。特定表示器类型的例子包括:测量和显示以各种方法(例如,粗体,斜体等)格式化的文本的文本表示器,测量和显示特定的图象的图象表示器,以及在多个子表示器之间划分空间的停放表示器。
在创建表示器***200和表示器类214之后,为视图实例化一组与视图202和表示器***200相关联的表示器对象--从根表示器对象开始。注意,用于创建表示器引擎212、对表示器引擎对象类的构造方法调用识别视图202的根图形元素。在实例化后,表示器引擎2 12调用图形元素206确定与视图202的根图形元素相关联的表示器对象类型。在确定图形元素的表示器类型之后,表示器引擎212调用相应于由图形元素206标识的表示器对象类型的表示器对象类214之一。
如由在表示器类214与后备存储器之间的路径所表示的,表示器对象包括根表示器访问后备存储器208的图形元素206以确定特定图形元素的属性。作为例子,用于特定图形元素的表示器对象能够识别任何特定的图形元素的子图形元素和用于每个子图形元素的表示器类型。之后,表示器对象为每个识别的子图形元素调用其本身的方法(例如,GetChildProxyForElement 486),以从表示器***200的子代理(child proxy)类222实例化子代理对象。子定位对象是用于(从表示器对象类214实例化的)嵌套在分配给父表示器对象的显示空间内的表示器对象的包装对象(wrapper object)。子代理类222满足封装和安全需求(例如,子表示器对象限制由父表示器对象或应用204对包含在子表示器内的表示器的内容的访问)。可供选择地,绕过由子代理提供的封装层并且父表示器直接访问其子表示器。
在本发明的实施例中,表示器对象用于为元素创建子代理对象的方法,调用子代理类222的构造方法并传递图形元素的身份(identity)以实例化新的子代理对象和表示器对象用于子图形元素。一旦实例化,通过相应于在识别的图形元素上指定的表示器类型的表示器构造程序,新子代理对象为子图形元素创建表示器对象。子代理对象接着返回其自己的引用给父表示器对象。父表示器对象在对子代理对象的引用的数组中保存所返回的子代理对象引用。象这样,用于表示器对象的子代理对象数组项就对应于与父表示器相关联的父图形元素的子图形元素。
在图2中所示的图形元素安排/布局结构的另一个方面是修改通知。在本发明的实施例中,为从表示器类214实例化的表示器对象提供一组通知处理器类224。按照通知处理器基类225定义通知处理器类224。通知处理器基类225是一个抽象类,为通知处理器类224定义一个接口。通知处理器基类225两个虚拟方法(见图6)的接口定义,按照它们相应的表示器类214在通知处理器类224中提供方法的实现。通知处理器类224帮助布局更新--只重新计算受对一组相应图形元素的修改影响的表示器对象。在本发明的实施例中,为图形元素和视图组合指定一个通知处理器。在为单个图形元素/视图的组合创建多个表示器的情况下,单个通知处理器作为用于跟踪对元素的修改的单个源而操作,目的是更新在一个视图中元素的多个表示器。每个表示器类型指定相应的通知处理器类型。当实例化要求通知处理器的用于元素的表示器对象时,表示器***创建指定类型的相应的通知处理器,并且将通知处理器与表示器对象联接起来。
通知处理器类224的实例确定表示器对象的哪些部分是脏的并且因此要求更新。最初,在图形元素与为在视图(例如应用204的视图202)中的表示器创建的通知处理器之间建立通知关系。通知处理器通过表示器***200和表示器引擎212接收与在后备存储器208中图形元素相关联的修改通知。如果有的话,通知处理器确定已经受对元素的修改影响的表示器的部分。通知处理器返回受影响的部分信息至表示器***200。表示器是由表示器引擎212标记为“脏(dirty)”。表示器***200为所有表示器在为视图(例如视图202)保持的数据结构中累计“脏”的表示器信息。在以后,在响应重新计算视图的布局的调用时,表示器***200的表示器引擎212只在脏的表示器上调用更新方法/操作。因此,通知处理器类224允许将布局更新限制于从表示器类214创建的表示器对象中受影响的一些表示器对象。
具体化本发明的布局管理***结构独立于任何特定的输出硬件设备操作,所布置的元素依照其定义的视图最终基于所述输出硬件设备而被显示。在图2中所示的布局/表示管理***结构执行与图形显示输出有关的处理步骤。在本发明的实施例中,与布局/表示管理***结构相关联的所安排的输出是设备独立的。之后,在再现阶段,表示器对象再现重新计算的视图至计算***的图形输出组件。不过,在本发明的其它实施例中,布局/表示***的输出是由或者表示器对象214或者表示器***200返回的,以调用应用204,并且应用204执行再现任务。在本发明的实施例中,再现命令,无论是否由从表示器类214、视图202还是应用204导出的表示器对象发出的,都被传递至用户计算机上的图形子***和图形设备驱动器234。图形子***和图形设备驱动器234将再现指令和数据转换至特定选择的输出设备诸如监视器236或者打印机238。
在上述布局/表示管理***结构的概要中,表示器***200为应用,诸如应用204提供设备独立的布局处理平台。布局处理是由表示器对象执行的,表示器对象是从以表示器***200为宿主的一组表示器类214实例化的。表示器***200是由视图202拥有的。表示器对象对应于图形元素206的特定视图状态/再现。将视图状态(表示器对象)与元素状态(图形元素206)分开使多个视图状态/表示器能够被独立地指定用于单个元素状态。布局被分成视图,诸如视图202,其中每个视图对应于一个显示区域,诸如在分配给应用204的输出屏幕上的特定矩形或者在图形打印机输出中的文档页。数据和视图状态的分开使单个文档能够驱动那个图形元素的多个视图,并且因此使单个图形元素能够以多种多样的视图/方法显示。
所揭示的布局管理***结构的另一个方面是其它高度的可扩展性。通过由表示器***200提供的表示器基类216和表示器引擎212的表示器宿主API促进了扩展表示器类214的组。
上述布局管理***结构支持多种多样先进的布局处理特征,用于应用再现图形输出至图形用户界面和打印机。将单个元素(图形元素)分成多个视图状态(表示器)的能力帮助在应用中分页和将元素分成多个列(分页的一种形式),当在显示屏幕上再现文档的打印机输出和打印机输出视图时。这样的应用包括Web浏览器和字处理程序。
多个表示器的另一个好处是应用执行多次尝试以将其内容适配在给定的显示空间内的能力。应用能够为单个元素,用不同的输入参数,实例化多次尝试于不同表示器对象,并且接着允许用户选择一个最佳图形元素的显示视图。
由上述布局管理结构引起的另外一个好处,是在包括用于一组相应元素的一组表示器的视图上执行增量更新的能力。在后备存储器(见例如在图3中的后备存储器308)中一个元素一个元素的基础上实现修改。通知处理器和表示器***200提供一个基础结构用于将对相应视图的更新限制于已经受对后备存储器中相应元素的修改影响的表示器。
示例性布局管理结构的另外一个好处,是修饰在先前创建的表示器中具体化的元素的视图状态。这是通过将附加的表示器链接到为特定的元素类型指定的一种类型的表示器来完成的。链接使开发者通过添加边界、背景等至由为元素的特定表示器类型指定的视图状态,增强用户界面和文档输出。
已经描述了具体化本发明的布局管理***的一般结构,将注意力集中到图3,它示出视图、表示器引擎、视图内的表示器对象、图形元素以及用于特定示例性视图的通知处理器之间的关系。
概念上,视图定义了一种方法,用于按照指定的表示器布置在后备存储器208中代表的一组图形元素。在本发明的实施例中,由在输出字段中的矩形(例如显示屏幕)定义视图。除矩形及其位置外,视图还指定图形元素和包含在视图中相关联的表示器。此外,注意,在本发明的实施例中,每个视图与其自己的表示器***实例(例如,用于视图202a的表示器***200a和用于视图202b的表示器***200b)相关联。
继续参考图3,后备存储器308包括与视图202a和202b相关联的图形元素(Ex)的有组织的集合。图形元素(Ex)是有组织的用户内容的实体。元素的例子包括:图形用户界面(GUI)按钮或文本面板,文本编辑窗口,位图等。在本发明的实施例中,以树的形式安排后备存储器208中的图形元素(Ex)。保存在后备存储器208中的图形元素206的组中每个元素(Ex),与属性/占位符(可以是明显的或者隐含的来自其它明显的属性/占位符)相关联。在图形元素上一个或多个这样的属性/占位符指定用于与计算***的其它组件合作布置和再现图形元素的内容的表示器类型。在本发明的实施例中,明显地定义所链接的表示器,或者可供选择地,是由在元素(例如,两个象素的“边界”属性隐含边界链接的表示器)上指定的其它属性隐含的。为图形元素指定的属性类型取决于特定的图形元素并且包括:色彩,字体,名称,高度,宽度等。
后备存储器208与可能的多个视图(例如视图202a和202b)相关联。可能的多个视图的每一个排他地拥有一组相应于后备存储器208内的一组图形元素的表示器对象实例。因此,在多个视图中表示图形元素的情况下,为每个视图创建表示器对象(例如,用于元素E2的表示器P2和表示器P2’)。与表示器相关联的图形元素是在元素拥有者字段中指定的,并且相应于从表示器至其相应图形元素的虚线。这只是在图2和3中代表的表示结构的一个例子,它支持在由单个图形元素提供的信息上操作的多个表示器。
具体化上述将多个视图(和表示器)附加到后备存储器208中图形元素的同一集合的表示结构的结果,图形用户界面能够显示同一组由图形元素提供的信息的多个视图。例如,在诸如MICROSOFT的POWERPOINT这样的应用中,支持幻灯片的两个同时的视图,主视图和预览(或者缩略图)视图,用于同一幻灯片图形元素。
为单个图形元素创建多个表示器对象实例的能力,还促进单个图形元素(例如文档文本)的分页跨过多个页/列(即,其中将一个图形元素分开跨过两页,为元素创建两个表示器对象--每页一个)。参考图3,父表示器对象(例如P5)从图形元素(例如E5)接收一个通过的(passed)属性,表示元素(例如文本元素E8)内的内容可在两列上表示。两个子表示器对象P8a和P8b,相应于在文档上两个独立和不同的列/页矩形,在表示器P5下被实例化,用于显示由图形元素E8提供的显示文本。
为单个图形元素实例化多个表示器的另外一种情况,在被指派给图形元素的修饰(例如,边界,背景,框架等)的情况下产生。链接的表示器的一个例子是由用于元素E4的链接的表示器Q4提供的,表示器Q4提供围绕由表示器P4定义的矩形的边界,以保持由元素E4内的一个数据字段提供的文本。表示器Q4和表示器P4两者通过在其元素自己的字段中指定图形元素E4,与图形元素E4链接/相关联起来。在本发明的实施例中,父表示器从相应于需要链接的表示器(例如,在元素上指定两个象素的边界)的其子表示器之一的元素中检测。在链接的表示器Q4的情况下,当表示器P1调用其自己的方法为子元素E4创建子(代理)表示器时,它从E4上的属性中确认需要链接的表示器(Q4)。首先创建子代理/表示器Q4,并且将它标识为表示器P1的子表示器。Q4接着创建子代理/表示器P4。因此P4是表示器Q4的子表示器。在用于标识链接中下一个表示器(P4)的链接的表示器Q4的子代理内存储信息。
已描述包括将多个表示器与同一个图形元素联系起来和为后备存储器208中的一组图形元素创建多个视图(以及表示器***)的特定示例性情况,现在描述在图3中所示的实体之间的关系。如上所述,视图202a和202b分别拥有表示器***200a和200b。通过包括将表示器类写到的API在内的代码和基类,表示器200a创建并支持一组表示器302用于视图202a。表示器***200b创建并支持一组表示器303用于视图202b。
如由表示器(Px)和后备存储器208中图形元素(Ex)之间的线所表示的,表示器(Px)与相应图形元素(Ex)相关联。表示器(Px)代表相应图形元素(Ex)的视图状态。在后备存储器304中把图形元素(Ex)保存在,作为例子,由应用以许多可能方法之一建立的树结构中。这样的方法的例子包括通过解析器使用代码实例化图形元素等运行文本标记文件。由表示器***200a在响应调用由其表示器引擎提供的接口(例如DoLayout)的特定方法时,建立表示器302树结构的组。如前面在上文参考图2说明的,表示器对象树的节点是由与特定视图相关联的图形元素树的节点确定的。在视图内的图形元素是由为视图、其子视图、孙视图等指定的图形元素确定的。
分层地安排视图1中的表示器302的组。根表示器P1具有两个子表示器P2和P4(Q4是在表示器P4上的修饰表示器)。表示器P2不具有子表示器。然而表示器P4具有两个子表示器P5和P7。表示器P5接着具有两个与单个图形元素E8相关联的子表示器P8a和P8b。在两个表示器对象之间对单个图形表示器的这样的共享/划分产生,作为例子,是在具有类型TextPresenter的表示器(P5)的父文本图形元素E5的两个列之间划分文本图形元素E8时引起的。当表示器P5注意到E5上的属性请求要跨过两列划分E5的内容(E8)时,表示器P5开始一个列划分过程。表示器P8a和P8b对应于在两列中图形元素E8的各部分的图形存在。
先前已经注意到,单个图形元素能具有多个相关联的表示器对象。已经识别三种示例性情况。在第一种情况下,由在图3中的多个视图202a与202b和相应的表示器***200a和200b所示的,分别具有与视图202a和202b相关联的相应的表示器P2和P2’。这样的视图,作为例子,相应于在由照片图象处理应用产生的用户界面的不同区域显示的照片图象(E2)的缩略图视图和全尺寸视图。在这个情况下,为元素E2在包含该元素的每个视图202a和202b中创建表示器P2和P2’。在包括多个表示器用于单个元素(例如文本元素E8)的第二个情况下,表示器元素P8a和P8b相应于在由单个表示器元素P5定义的矩阵内的两个列。可供选择地,在一个视图中多个表示器引用同一图形元素时出现这种情况,例如,当父表示器执行多个尝试布置一个视图并且保存尝试时。在第三种情况下,依赖于另一个表示器(例如P4)的表示器(例如Q4)--与图形元素(例如E4)的数据状态相反--被链接至其它表示器,因此丰富了由原来的表示器提供的显示特征。表示器链接的例子是为主表示器提供边界修饰的边界表示器。
在上面先前已经注意到,参考图2,从子代理类222实例化子代理对象是用于父表示器对象的每个子表示器对象的包装。在用于视图202a的表示器树结构的图形描述中,子代理对象是由连接父表示器至其子表示器对象的线中的箭头代表的。子代理对象限制父表示器对象对其它子表示器对象的访问。
通知处理器(Nx)负责将对其图形元素(Ex)的数据状态修改通知相应的表示器(Px)。通知处理器Nx对于表示/布局管理***的操作不是必需的。而是当在视图内的元素中发生修改时,它们方便了对少于所有表示器的增量更新。
参考图4a和4b,表示器基类包括一组方法、属性和字段。在本发明的实施例中,通过在对象上调用取得/设置操作,在特定引用的表示器对象上访问这些属性。背景属性(background property)400规定表示器背景的上色值(paint value)。背景不透明性属性(background opacity property)402存储了为背景规定不透明性的值。边界属性(border property)404存储规定围绕表示器的布局空间的边缘所画的边界的宽度的值。边界属性404存储,例如,表示指派给表示器的矩形的上、下、右和左边的边界宽度的四个值。边界色彩属性(border color property)406规定指定围绕表示器的边界的色彩的值。边界风格属性(border style property)408存储表示一组边界表示风格的的值。边界风格的例子包括:实心(solid),凹线(groove),凸纹(ridge),嵌内镶边(inset)和外镶边(outset)。
有界框属性(bounding box property)410规定在其中绘制表示器图象(或子表示器图象)的区域(例如矩形)。有界框属性410的默认尺寸与由布局尺寸字段(layout size field)460规定的尺寸相同。然而,有界框尺寸能超过布局,因此使表示器能够在布局尺寸之外绘制。
在另一方面,如果修剪属性(clip property)414设置为真,那么不能在由布局尺寸字段460规定的矩形之外绘制表示器(及其子表示器)。如果修剪属性414设置为真,那么有界框410不比布局尺寸大。这确保所绘制的表示器不在其被指派的布局空间之外再现。
子属性(children property)412是数组,或者任何其它适当的多元素数据结构,存储对嵌套在父表示器内的子表示器的引用及其在父表示器的布局空间内被转换的位置。子属性412是初次使用时在表示器的OnUpdate方法调用(在下文讨论)的上下文中填充的。“初次使用时(on first use)”指当父表示器顺序地请求用图形元素的子图形元素填充子集合(child collection)和多个子集合(children collection),所述图形元素相应于来自后备存储器(例如后备存储器208)中图形元素树的父表示器。子属性412有利于建立/维护反映与视图中的表示器有关的嵌套关系的层次。在本发明的实施例中,数组项引用子代理对象。子代理对象是包装对象,用于在被分配给父表示器对象的显示空间内嵌套的子表示器对象。子代理对象包装满足封装和安全需求(例如,子表示器限制父表示器对其内容的访问)。
修剪属性414,如上面说明的,控制是否将通过修剪将表示器的内容限制于如由布局尺寸字段460规定的表示器的布局尺寸。
一组属性指定在表示器的空间内分配给内容的空间。除边界属性404之外,填充属性(padding property)416规定在留下未由内容占据的边界内的空间量。内容高度属性(content height property)418规定在表示器内表示内容高度的值--在说明在边界属性404和填充属性416中规定的值之后表示器的部分的高度保持。内容宽度属性(content width property)420规定表示在说明边界属性404和填充属性416尺寸之后在表示器内分配给内容的宽度。内容高度属性418和内容宽度属性420,结合起来规定有可能在表示器中由内容占据的表示器的区域。
高度属性(height property)422和宽度属性(width property)424规定表示器的实际高度和宽度,并且这两个值包括内容、填充和边界尺寸。默认高度属性(default height property)422和默认宽度属性(default widthproperty)424规定可指派给表示器的默认值,当没有为特定的表示器对象提供高度属性422和宽度属性424的时候。最大宽度属性(maximum widthproperty)430和最小宽度属性(minimum width property)432规定被指派给宽度属性424的值的范围。
用于表示器的另外一个尺寸属性是边缘属性(margin property)434.边缘属性434规定表示器的边界之外的缓冲空间。边缘属性434是由子表示器规定的,并且是由其父表示器在安排包括嵌套表示器的层次的布局时访问的。
可见性属性(visibility property)436规定表示器的可见性状态。参考可见性属性436确定图形图象如何(或者是否)再现相应于表示器及其子图形图象。在本发明的实施例中,可能的可视性状态包括:可见的,折迭的和隐藏的。
利用多个表示器属性将表示器与布局/表示管理***中其它实体链接起来。表示器属性(presenter property)438规定用于布置和再现图形元素的表示器类型。表示器类型最初设置在图形元素上,以及表示器***200从图形元素读表示器属性438并且实例化相应于由表示器属性438标识的表示器类型的表示器对象。表示器属性438被传递给实例化器(instantiator),它接着创建所标识的表示器类型的实例。IsMainPresenter(是主表示器)属性规定表示器是否是唯一的表示器或者在一组与图形元素对象相关联的链接的表示器中的主要(例如最后的)表示器。参考图3,表示器P4是用于包括B4和P4的链接的主表示器。在本发明的实施例中,IsMainPresenter属性440是一个布尔类型属性。
元素拥有者属性(element owner property)442标识为其实例化表示器的图形元素。再参考图3,连接表示器(Px)至相应图形元素(Ex)的虚线代表由元素拥有者属性442的内容指定的关联。布局上下文属性(layout contextproperty)444规定全局上下文,在布局处理期间促进表示器之间通讯。存储在布局上下文属性444中的值使表示器能够独立于表示器***200传递消息。通知处理器属性(notification handler)446规定对表示器的通知处理器的引用。通知处理器类型属性(notification handler type property)448规定由通知处理器属性446引用的通知处理器的类型。
脏属性(dirtiness property)450规定特定的表示器是否已经被修改并且因此要求更新处理。布局管理结构的表示器***200及相关的组件支持布局的增量处理。由每个表示器维护的脏属性450在一个表示器一个表示器基础上表示是否需要更新表示器。
继续参考图4a,概括了表示器基类的字段的示例性组。在本发明的实施例中,这些字段是公共语言运行时间(Common Language Runtime)(CLR)字段(与在C++类中众知的成员变量相似)。在本发明的实施例中,上述属性与字段相似。不过,在图形元素(例如图形元素206)上的属性是由后备存储器(例如后备存储器208)拥有和管理的。当属性改变时,后备存储器将改变通知表示器引擎。表示器引擎(例如用于表示器***200的表示器引擎212)接着通知适当的通知处理器224。因此,在属性的情况下,通过上述通知处理器之一接收的修改通知。在另一方面,字段不是由后备存储器208管理的(以及代之以是由例如CLR管理的)。因此,当字段改变时不启动修改通知至表示器引擎。
布局尺寸字段460保存分配给表示器的布局空间的尺寸。利用布局尺寸字段460安排页/用户界面布局中安排相邻的表示器。影响布局字段(affectslayout field)462是表示器属性(例如,边界,填充等)的集合,当被修改时,影响表示器的布局。影响父布局字段(affects parent layout field)464是表示的属性(例如,边缘,可见性等)的集合,当被修改用于元素(元素A)时,使(即有可能影响)具有规定的表示器的元素(元素A)的第一父元素的布局变脏。效果再现字段(effects render field)466是通知机制,它触发表示器的失效和重新再现。
现在参考在图4b中列出的表示器基类206的方法,OnUpdate(在更新时)方法470在用于元素的表示器上执行测量和定位任务。表示器作者覆写OnUpdate方法470的基类版本,以创建/提供定制的布局定尺寸/定位行为用于元素的相应视图。
OnUpdate方法470的第一默认动作是为表示器定尺寸。OnUpdate方法470在所传递的BoxSizeInfo(框尺寸信息)参数中接收表示器尺寸大小。OnUpdate方法按照所规定的BoxSizeInfo和默认的宽度属性428和默认的高度属性426值,设置在布局尺寸字段460中规定的尺寸。用于表示器的定尺寸/定位信息的附加来源包括在所揭示的基于表示器的布局/表示处理结构中,并且在本发明的替换实施例中利用这样的来源。
OnUpdate方法470的第二个默认任务是在表示器的局部尺寸空间内定位子表示器。OnUpdate方法470的基类版本迭代地调用在子属性412中标识的子表示器以发现其尺寸和子表示器。一当发现和测量子表示器后,通过调用各个子表示器的转换方法(在下文讨论),在父表示器内定位子表示器。当在表示器上不再有指定的子表示器时,在子表示器上的OnUpdate方法470的迭代调用结束。除在布局尺寸字段460中登记其尺寸以及迭代地调用/定位属性之外,OnUpdate470返回一个值至调用程序,表示由于对OnUpdate方法470的调用是否想要再现。
登记原子方法(register atom method)471登记布局上下文444的表示器的串名称(string name)以及任何其它适当的包括通过扩展至表示器维护的那些在内的表示器列表。调用登记原子方法471,例如,以非标准方式与其它表示器对象通信(例如,表示器应用程序接口现在不支持的方式)。表示器登记一个原子,以及然后设置它们想要使用原子通信的对象。例如,子表示器希望将文本descent(下降)通信至父表示器。子表示器登记标注/标签“Descent(下降)”的原子并且接收用于原子的标识符。子表示器计算descent并且使用标识符在原子中设置值。父表示器接着使用标识符(也是通过登记“Descent”接收的)以检索所存储的信息。
OnUpdateBoundingBox(更新有界框时)方法472为表示器产生更新的有界框属性410。如果OnUpdate方法470返回一个值(例如“真”)表示要求重新再现,则调用OnUpdateBoundingBox方法472。在表示器基类中提供的OnUpdateBoundingBox方法472的默认实现,扫描在表示器的子属性412中标识的子表示器,并且将所转换的子表示器的有界框属性与存储在布局尺寸字段460内表示器的尺寸结合起来(即,为它们执行矩形的数学并运算)。OnUpdateBoundingBox方法472的基类实现还访问修剪属性414,并且如果为“真”,忽略子表示器的有界框。代之以将子表示器修剪成其父表示器的布局尺寸字段460大小。在它们布局尺寸字段460大小之外绘制的表示器覆写这个方法。这样定制的表示器类调用基表示器类并且在它们覆写代码中添加附加的“墨水区域(ink area)”。在本发明的实施例中,允许表示器估算“墨水区域”比实际要求的更大。如果有界框属性410区域比绘制表示器所需要的区域更小,那么基于为表示器规定的有界框属性410大小修剪绘画。
在请求/要求重新再现的表示器上调用OnRender(再现时)方法474。OnRender方法474是对表示器的基本调用以重新再现表示器和其任何子表示器。最好是在对布局(例如情景)中的所有“脏”表示器调用OnUpdate方法470之后,调用OnRender方法474。在本发明的实施例中,基于对表示器对象的OnUpdate方法470调用是否返回表示器请求重新再现的指示,对表示器对象调用OnRender方法474。在本发明的实施例中,基类OnRender方法474对表示器执行设备独立的表示/布局安排操作。其它组件,包括图形子***和图形设备驱动器234,以设备专用的格式再现表示器的视图。OnRender方法474的定制导出包括调用计算机***的图形产生组件以再现图形文档/用户界面输出。
在本发明的实施例中,OnRender方法474的基类版本以三个布局处理阶段再现包括任何子表示器的表示器的内容。在OnRenderBeforeChildren阶段,表示器对象调用指定在处理任何其子表示器之前处理的操作。在本发明的实施例中,OnRender方法474的基类实现为定制提供一个钩子,并且在OnRenderBeforeChildren阶段不规定任何预处理操作。然而,对于这个默认行为的示例性替代是为表示器的显示区域建立/绘制定制背景。
OnRender方法474的基类版本,在子表示器再现阶段,访问在子属性412中标识的表示器的子表示器。依次对每个子表示器调用OnRender方法474(至在执行OnUpdate方法470时由子表示器请求的程度)。因此,对OnRender方法474的顶层调用向下级联至子表示器,以及它们的子表示器,直至达到树底(即表示器没有子表示器)。当顶层调用完成时,已经重新再现在树中所有请求重新再现的子表示器。
在OnRenderAfterChildren阶段,表示器对象调用在对在子属性412中标识的子表示器调用OnRender方法474之后要执行的操作。OnRender方法474的基类版本为定制提供一个钩子,并且不在OnRenderAfterChildren阶段规定任何后处理操作。不过,定制例子包括批注、修饰等。
如果表示器不再现除其子表示器之外的任何内容,那么不必覆写OnRender方法474的基类版本。然而,如果要由表示器自己绘制任何内容,那么覆写基类的OnRender方法474以在指派给表示器的空间内再现图形数据。替代代码包括,作为例子,调用应用230和/或图形子***和图形设备驱动器。链接的表示器是在特定视图的表示器树中。如果链接的表示器要求重新再现,那么其OnRender方法将由表示器***以与主表示器的OnRender相似的方式调用。
在本申请的上下文中,“命中试验(hit-test)”指一个过程,用于识别哪个表示器落在图形用户界面网格空间的特定网格点下。例如,当用户选择一个鼠标按钮时,使用命中试验确定鼠标指针位于何处(例如通过它位于哪个表示器)。OnHitTestDetail方法476返回存储在用于表示器的HitTestDetail结构的数据。定制表示器类覆写OnHitTestDetail方法476的基类实现以填充HitTestDetail结构,使表示器能够返回除元素之外的数据,并且命中的表示器因此提供,例如,有关表示器诸如实际命中的表示器的部分更详细的信息(例如,用于文本的字符位置)。
OnCreateViewResult方法478暴露描述视图结果对象中表示器的所计算的状态的参数。用户请求用于一指定的视图的上下文中任何元素的视图结果对象。OnCreateViewResult方法478的基类版本,通过视图结果对象提供表示器的高度、宽度和左上角位置。如果与表示器的状态有关的附加/替换的信息是想要的,诸如在表示器中包含多少行文本,那么覆盖OnCreateViewResult方法478的基类版本,以通过视图结果对象提供想要的信息。
命中试验方法480开始在根位于特定表示器的子树上的命中试验。将点的坐标(在表示器的局部坐标中)传递至命中试验方法480,基于它执行命中试验。命中试验方法480返回包含用于指定点和表示器的命中试验结果的命中试验数据。结果包含由该点命中的所有视件。视件是一个基对象(例如线),一个表示器从该基对象导出一显示图象。视件是图形对象,具有实际在图形显示输出上绘制图象的能力。在表示器的OnRender调用中,发出几个调用至视件的API以再现例如,文本、图象、视频等。
OnGetBypassList方法482提供先前为所标识的表示器计算的子表示器的列表。子表示器的列表促进在布局计算期间绕过子表示器(例如,将新的布局子表示器与先前计算的布局子表示器比较,以及如果在列表中有一个匹配则重新利用先前计算的一个)。如果表示器通过引用子属性412集合发现其子表示器,则它不必覆盖这个方法。不过,如果表示器使用GetChildProxyForElement方法486(下面描述),则一般覆盖OnGetBypassList方法482。
在具体化本发明的布局***的应用中,在调用GetChildProxyForElement方法486的情况下,在OnUpdate方法470之前调用OnGetBypassList方法,以及表示器对象创建并用子代理对象(在下文参考图5描述)填充一个数组列表,该子代理对象是从先前布局计算被高速缓存的。如果表示器对象没有用于存储重新计算的子代理对象的高速缓存,在每次调用表示器的OnUpdate方法470时,重新计算表示器对象的所有子表示器。
计算范围方法(calculate bounds method)484计算和返回根位于所标识的视件的子图的范围。
子代理对象,如上面所说明的,是一个包装对象,用作特定图形元素的父表示器和子表示器之间的中介。用于特定表示器对象的子表示器的子代理对象被引用为在表示器对象的子属性412内的一个集合。GetChildProxyForElement方法486是在父表示器对象上的一个方法,它创建子代理对象和表示器对象用于指定的元素。如果指定的元素没有表示器,则该方法返回“null(无)”。
当表示器***200想要“绕过”特定的表示器时(即,跳过对表示器的OnUpdate方法的调用)时,调用OnBeforeBypass方法488。这样的绕过产生在,例如,表示器不是脏的并且OnUpdate方法470调用输入表示器尺寸参数(BoxSizeInfo)自上次对表示器的OnUpdate方法470的调用以来没有改变过的时候。OnBeforeBypass方法488是性能增强机制,使具有其自己的子代理对象的定制集合(使用GetChildProxyForElement方法486)的表示器,能够当在布局上执行更新时重新使用其子表示器的子代理对象(例如,当只有布局的一小部分受到修改的影响)。
OnDisconnectChildren方法490从在用于指定表示器的子属性412中引用的一组子表示器,删除所有子表示器对象。如果默认的子属性412被覆盖用于从表示器基类216导出的表示器类,那么也覆盖OnDisconnectChildren方法490以确保子表示器的正确处置。
最小/最大遍数(Min/Max pass)是一个专用的定尺寸遍数,当为子表示器对内容定尺寸时由划分表示器(例如DockPresenter)使用。知道子表示器的最小和最大宽度允许父表示器智能地在共享特定宽度尺寸的多个子表示器之间分配空间。在没有由MinMaxPass函数的提供的最小/最大信息的情况下,划分表示器将要求多遍以智能地对内容定尺寸。在最小/最大遍数之后调用OnMinWidth方法492。OnMinWidth方法492收集MinWidth值,这是MaxWidth计算的副产品。OnMinWidth方法492的基类版本发出“I don’t care”消息,它调用具有ProposedSize(建议尺寸)=(0,无穷)和两个方向“不固定的(NotFixed)”的一个计算遍数。
表示器(presenter)方法494是一个构造程序方法用于表示器实例化。表示器方法494没有参数。当由表示器***200实例化表示器时调用表示器方法494。表示器方法494设置表示器实例直至能够在表示器上调用其它方法(例如OnUpdate)。
QueueLayoutTask方法496将一个要相关于表示器对象执行的指定的布局任务,增加到要由表示器***200执行的布局任务的队列。当指定的布局任务到达队列的前面,表示器***200在用于表示器的通知处理器上调用OnLayoutTask方法604(在下文描述)。
OnQueryValue方法498返回用于表示器的对应的指定的计算值的值。
已经描述了表示器基类216,将注意力集中到图5,它提供子代理类222的示例性实施例的属性和方法的概括。如前面所说明的,在本发明的实施例中,子代理对象是用于一个父表示器对象的子表示器的各种表示器对象的包装,并且支持限制父表示器对象对子表示器对象的资源的访问。在父表示器对象与子表示器对象之间的所有通信(请求/应答)是通过用于子表示器的子代理传送的。子代理对象保持对子表示器的引用,并且将父表示器的调用/请求传送至子表示器。
在表示器***200的实施例中,子代理类222包括元素拥有者属性(element owner property)500,它规定在与引用子代理的表示器相关联的图形元素206中的元素。
转换属性(transform property)502在其父表示器对象中定位子表示器对象(及其相关的视件)。转换是在视件对象基类上的标准图形3x3转换矩阵。当建立转换矩阵时,与表示器的图形元素相关联的视件对象,在由转换矩阵指定的位移处放置其子视件对象。
有界框属性(bouding box property)504规定子表示器的再现范围。子表示器的再现范围因此能与子表示器的布局尺寸不同。
脏属性(dirtiness property)506规定子代理的表示器的脏状态。在表示器***200的实施例中,脏状态是下面任意一个:干净,脏旁观者(dirtybystander),或脏。脏状态表示自从视图的上次更新以来已经发生对子表示器的修改。脏旁观者状态表示子表示器自己的子表示器的至少一个是脏的,但子表示器本身不是脏的。这样的状态使父表示器能够优化更新操作。
QueryDefaultSizeInfo方法根据由子表示器的父表示器提供的默认值初始化子表示器的尺寸。
Update方法520请求子代理在子表示器对象上调用OnUpdate方法470。当父表示器寻找子表示器的布局的计算时,父表示器在子代理上调用Update方法520。Update方法520调用包括两个传递参数。框尺寸信息规定框的尺寸,在框内子表示器要计算布局,以及如果启动分页,则父表示器在页描述符参数(见在下文描述的图10)中传递页信息。Update方法520因此提供调用程序与子表示器对象之间的层,它能够筛选/过滤这样的请求至子表示器对象。Update方法520提供一种方法绕过正常传送的对子表示器的OnUpdate方法的调用。例如,在子表示器没有改变以及输入参数(框尺寸信息和页描述)没有改变的情况下,调用Update方法520调用。
附属(Attach)方法530,由父表示器发给子代理,调用与子代理相关联的子表示器的OnRender命令。
查询值(Query Value)方法540提供相应于在方法调用中标识的计算值类型(属性)的表示器值。查询值方法540调用代表子表示器对象的相应的OnQueryValue方法498。
查询布局尺寸(query layout size)方法550提供计算的布局尺寸参数。查询布局尺寸方法550调用代表子表示器对象的相应的OnQueryValue方法496。计算MinMax(compute MinMax)方法560提供子表示器的最小和最大宽度。
参考图6,与表示器***200相关联的基类组包括通知处理器基类。如先前在上面所说明的,通知处理器对象接收与有可能影响与特定视图相关联的表示器的修改有关的所有通知,累计脏信息,以及便于确定相关联的表示器对象是否要求更新。。在通知处理器基类上的两个方法作为参数接收一个对象,该对象包括一个从与通知处理器相关联的图形元素(例如图形元素206)中的元素提供有关信息的方法。
通知处理器基类包括OnNotify方法600,它提供特定相关联的表示器对象的脏的通知。OnNotify方法600可能包括附加的、定制的导出通知任务(通过覆盖提供脏属性值的默认行为),在响应接收通知时执行。OnNotify方法600接收作为与导致通知的修改有关的输入参数信息。OnNotify方法返回一个布尔值,表示通知处理器是否能够由其自身处理修改(或者是否必要通知通知处理器用于在视图的表示器树中的祖先表示器的通知处理器)。该方法还返回一个脏值,表示表示器是否“干净”、“脏”或者“脏旁观者”。
OnLayOutTask方法602执行先前由相关联的表示器通过QueueLayoutTask496排队的任何任务。
参考图7,与表示器***200相关联的基类组还包括一个通知处理器位置类(notification handler site class)。通知处理器位置类是传递给通知处理器对象的位置对象,它使通知处理器能够调用由表示器***200支持的通知服务。
通知处理器位置类包括一元素拥有者属性(element owner property)700,规定与通知处理器位置对象相关联的图形元素对象。
登记原子方法(register atom method)702登记用于通知处理器的布局上下文内所提供的一个串名称。登记原子方法702的功能与在上文参考表示器基类所述的登记原子方法471相似。登记原子方法702因此是一种手段,用于将由通知处理器的请求通信至其它对象(例如表示器对象)。
创建通知方法(create notification method)704创建新的表示器通知对象并且基于所传递的参数初始化其字段。所传递的参数包括原子类型的标识符(指示表示器通知对象类型)和通知数据。
通知后代方法(notify descendents method)706调用与一表示器的后代相关联的通知处理器的OnNotify方法600,所述表示器与通知处理器位置相关联,以传递指定的表示器通知。通知后代方法706执行将对父表示器的任何修改(例如,重新定尺寸)通知后代表示器的功能。同样,通知祖先方法(notifyancestors method)708调用与一表示器的祖先相关联的通知处理器的OnNotify方法600,所述表示器与通知处理器位置相关联,以传递指定的表示器通知。通过遍历后备存储器208中的图形元素树(见图3)确定祖先。在后备存储器中代表的图形元素包括一个属性,规定图形元素的父图形元素(直接祖先)。通知所有方法710调用用于由视图拥有的表示器树中所有表示器的通知处理器对象的OnNotify方法600。最后,通知自己方法(notify self method)712为表示器提供一种手段,以调用OnNotify方法600来标记自己脏。
转到图8,描述示例性视图对象类,从该视图对象类实例化视图202。视图对象拥有表示器***(例如表示器***200)的一个实例,并且是在所创建的表示器***实例内创建的所有视件的视件根。视图对象开始有关在视图内表示器的所有计算。视图方法(view method)800是一个构造程序方法,用于创建新的视图对象。视图接收对是视图的根图形元素的元素的引用作为所传递的参数。RootElement属性802返回视图的根图形元素的引用(这是通过上述视图方法800建立的)。
DoLayout方法804为视图创建新的表示器树,并且返回对新树的引用。DoLayout方法804接收下列内容作为输入参数:建议的视图矩形的高度和宽度,以及两个布尔值(固定宽度和固定高度),以确定所建议的尺寸在DoLayout方法804执行期间能否改变。
ViewSize属性806设置视图的尺寸。ViewSize属性806,一个只写属性,在窗口内作为视图对象的宿主时使用该属性,并且ViewSize属性806代表一个初始尺寸,根据该尺寸执行布局操作。
GetViewResult方法808接收图形元素引用作为输入,并且GetViewResult方法808返回用于图形元素的结果的视图。如果图形元素不在用于视图的图形元素的组内,则返回null(无)的值。
HitTest方法810在视图的坐标***内的一个传递点(passed point)处执行命中试验。HitTest方法810返回第一不透明命中试验目标。如果没有图形元素命中,那么该方法返回“假”。
CreatePage方法812接收BoxSizeInfo(见在下文描述的图9)和PageDescriptor(见在下文描述的图10)作为输入参数。CreatePage方法812基于输入参数创建新页,并且返回相应于用于该页的根图形元素的子代理对象。
转到图9,描述示例性BoxSizeInfo结构。BoxSizeInfo结构规定用于视图内表示器及其子表示器的一组尺寸,并且接收者应该如何对待那些尺寸。建议的尺寸属性(proposed size property)900阐述用于在视图内子表示器的建议尺寸。最初,建议尺寸属性900的值来自后备存储器中子图形元素的属性。在传递至子表示器之前能由父表示器修改。父尺寸属性(parent sizeproperty)902是用于父表示器的建议尺寸。使用父尺寸属性902,作为例子,根据父表示器的百分比值计算为子表示器计算尺寸。BoxSizeInfo结构还包括两个布尔值属性,FixedWidth 904和FixedHeight 906指示接收者表示器是否将所提供的尺寸作为强制(固定)值,或者尺寸值只是建议的高度或宽度。
转到图10,描述示例性页描述符结构的部分。页描述符包括PageSize属性1000。PageSize属性1000是规定页尺寸的只读属性。当创建页描述符时初始化它。断开记录属性(break record property)1002是一个结构,包括:字符位置起始(character position start),标识在下一页上的当前表示器的第一个字符(相对于正在被分页的是视图的根的图形元素);多个字符(从字符位置起始起回数),能使先前的页无效;以及IsDirty布尔值,表示断开记录(覆盖分页的图形元素内特定的字符范围的)是否因对后备存储器的修改而无效。
页描述符结构还包括AvailableSize属性1004。完整的页可能不可用于一个表示器,在开始该表示器的OnUpdate方法时。AvailablSize属性1004表示在页上为表示器保留的空间。将AvailableSize属性1004初始化为页尺寸的值。
转到图11,标识一组由视图202创建的表示器***200的表示器引擎212(见图2)执行的方法。表示器引擎212的构造程序方法1100访问视图202,它包含对用于该视图的根图形元素的引用(由图形元素206树提供的)。DoLayout方法1102接收代表视图202的尺寸的宽度和高度作为传递的参数,并且在响应时,开始执行与图形元素206的内容有关的布局过程。在至少执行一次DoLayout之后执行的UpdateLayout方法1104,开始将增量修改应用于先前为视图202计算的布局。CreatePage方法1106接收框尺寸信息(BoxSizeInfo)和页描述符作为输入参数,框尺寸信息包含要布置的页的尺寸,页描述符包含有关如何开始特定页的信息。而不是在用于视图202的图形元素206的根下布置所有内容,CreatePage方法1106只布置感兴趣的单个页。
参考图1-11已经描述示例性布局处理结构。示例性结构包括与元素数据状态(图形元素对象)联系的独立的视图状态(表示器对象)。示例性结构包括表示器***200,它促进通过表示器基类216扩展视图布局/表示能力,从表示器基类216导出具体化新的布局/表示功能的新表示器对象类。在此揭示的***和结构还包括一个将元素与其相应的表示器对象的通知机制,以选择性地在响应修改时调用视图的重新计算部分。例示性对象基类是例示完成具体化本发明的可扩展结构的许多可能的替换方法的,并且不应该被视为限制本发明的范围。
已经描述构成具体化本发明的示例性表示/布局处理结构的一组组件,将注意力集中于描述处理对以图形方式显示的元素修改的一般过程。最初,在1200后备存储器208改变。例如,应用204执行对一个或多个用于应用的图形用户界面的显示组件的产生状态和/或内容修改的操作。在响应时,在步骤1202因对后备存储器中图形元素的修改引起的修改通知,是由表示器***200的表示器引擎212接收的。
作为背景,与步骤1204有关,表示器***200维护在元素至表示器信息(element-to-presenter information)(EPI)中元素和表示器之间的关联。当为图形元素创建表示器时,在元素上创建对那个表示器的引用并将它存储在由表示器***维护的EPI中。如果图形元素具有多于一个表示器,那么在图形元素的EPI中将有多个引用(每表示器一个)。当在图形元素上的一个属性改变,下列步骤发生:
(a)后备存储器208通知在图形元素上的修改,
(b)后备存储器208将修改与对图形元素的引用一起通知表示器引擎212,所述图形元素已经经历对其属性之一的修改,
(c)表示器引擎212巡视修改的图形元素的EPI,并且确定已经为图形元素创建的表示器,以及
(d)一旦确定表示器,表示器引擎212获得相应于通知处理器的表示器的引用(通过在表示器上的通知处理器属性446)。
因此,由于上述原因,在步骤1204,表示器***200的表示器引擎212确定修改通知所应用的表示器的身份。如上面所解释的,表示器***维护在其EPI中为元素实例化的表示器的列表。在确定修改通知所应用的表示器(对于此例假设对于该元素只有单个表示器存在),表示器***的表示器引擎212通过在所标识的表示器上的通知处理器属性446获得用于表示器的通知处理器的引用。
之后,在步骤1206期间,表示器***200的表示器引擎212使用在步骤1204期间获得的引用将修改通知传送给通知处理器。在本发明的实施例中,通过调用特定通知处理器对象的OnNotify方法602。
在从表示器***接收修改通知后,在步骤1208期间(例如,在OnNotify方法602的执行期间),如果有的话,通知处理器在响应在步骤1200期间对后备存储器208中的图形元素的修改时确定由表示器要求的动作。在本发明的实施例中,如果有的话,通知处理器确定相应表示器的什么部分由于所接收的修改通知而要求更新。这样的部分包括,作为例子,表示器的子表示器和表示器本身。
之后,在步骤1210期间,通知处理器(例如,OnNotify方法602)返回一个结果,它使相应表示器能够确定和执行由于在步骤1202期间由表示器***200接收的通知修改的动作。在本发明的实施例中,返回结果的形式是通知处理器/表示器专用的。在有些情况下,返回结果只将表示器标注为“脏”--因此调用相应表示器的全部重新计算。在其它情况下,提供信息以选择性地只调用表示器的视图重新计算能力的部分。
在本发明的实施例中,表示器***200的表示器引擎212在步骤1210期间从用于表示器的通知处理器接收返回结果。之后,在步骤1212,如果对后备存储器的修改不引起重新计算表示器的需求,那么控制传递至判断框1216。不过,如果在步骤1212返回结果表示表示器需要重新计算,那么控制传递至步骤1214,其中表示器***200将表示器添加至要求重新计算的“脏”表示器组。在本发明的示例性实施例中,表示器***在相应表示器上设置脏属性450(表示对重新计算表示器的需求)并且将表示器添加至需要重新计算的表示器组。表示器还指定描述导致脏属性450的设置的修改的程度的信息。控制然后传递至步骤1216。
在步骤1216,如果对于与当前感兴趣的通知处理器相关联的表示器,父表示器不存在,那么控制传递至结束1218。如果父表示器确实存在,那么控制从步骤1216传递至步骤1220,其中为(传递给)父表示器的通知处理器(导致用于父表示器的通知处理器处理通知)创建通知,如由返回至步骤1208的虚线所表示的。
因此,在图12中所示的步骤组使表示器***200能够累计已经“被弄脏”的表示器的列表,作为自从上次为文档/用户界面计算布局以来对后备存储器220的修改的结果。
转到图13,一流程图描述一个示例性过程,用于按照对特定视图的表示器的修改(见在上文描述的图12)重新计算/重新再现文档/用户界面。在本发明的实施例中,应用204控制对其视图202的更新并且调用视图更新过程,诸如在图13中概括的过程,在响应诸如以下的事件时:时间期满(period expiring),文档打印请求,或者在图形用户界面的状态中的改变。
最初,在步骤1300期间,表示器***200,以及特别是表示器引擎212接收对DoLayout方法1102(在上文参考表示器引擎212API说明描述的)的调用。在响应由应用204接收DoLayout方法1102调用时,表示器***200重新计算包含在视图204内的表示器对象,以容纳自从最后一次DoLayout方法1102调用以来对后备存储器208中元素的修改。
在本发明的实施例中,其中分层地安排视图的表示器(见图3),在步骤1302中表示器***200首先确定用于视图的根表示器。在本发明的实施例中,根表示器是由递交给视图(例如视图204a)并因此至表示器***(例如表示器***200a)的根元素上的表示器属性标识的。在确定根表示器之后,控制传递至步骤1304,其中表示器***200开始遍历视图的表示器树和重新计算每个脏的表示器。
在步骤1304期间,表示器***200调用在视图中每个脏的表示器上的OnUpdate方法470。将在其中为表示器重新计算其布局的矩形的高度和宽度传递给调用的OnUpdate方法470。在重新计算其布局之后,表示器高速缓存其结果。因此,在完成步骤1304时,已经重新计算先前脏的表示器,以及高速缓存其结果用于在后续重新再现期间容易访问。在每个被调用的表示器上清除脏位。在下面参考图14描述在示例性OnUpdate方法470调用期间执行的步骤组。
在步骤1304期间存在多个方法清除脏的表示器。然而,在本发明的实施例中,表示器***200并且尤其是表示器引擎212UpdateLayout方法1104,以在完成步骤1304中简化其角色方面看对在视图中的表示器之间的层次关系起了杠杆作用。特别地,在OnUpdate方法470的执行期间,每个被调用的表示器迭代地调用(或者可供选择地请求表示器***调用)所调用的表示器的所有子表示器的OnUpdate方法470。因此,表示器***200在根表示器的OnUpdate方法470(例如,图3的表示器P1)处开始表示器树的遍历,并且支持对子表示器的后续调用,因为OnUpdate方法470调用遍历分层的表示器树的分支以重新计算脏的表示器。对子表示器的OnUpdate方法470的迭代调用确保在视图中的所有表示器被遍历,并且如果表示器是脏的则重新计算它们。
在完成时,在步骤1304期间每个被调用的OnUpdate方法470复位其脏属性450表示它已经被重新计算或者“被净化”。每个OnUpdate方法470还返回一个值至调用程序,表示表示器是否要求重新再现(即重新绘制)。在本发明的实施例中,返回值是布尔值。如果“真”,那么要求重新再现。如果返回的是“假”,那么重新再现是不必要的。在步骤1304期间为视图处理每个脏表示器之后,控制传递至再现步骤1306,其中,处理在要求重新再现的表示器的列表中标识的表示器。
在步骤1306期间,表示器***200调用在请求重新再现的表示器列表中标识的每个表示器的OnRender方法474。参考图14描述OnRender方法474的示例性实施例的操作。在OnRender方法474的基类实现中,表示器不绘制任何内容,并且代之以迭代地调用其子和/或链接的表示器的OnRender方法474,以填充其被分配的空间(例如矩形)。OnRender方法474的定制方法通过对应用204和/或图形子***和图形设备驱动器234的API的调用来再现位图。在步骤1306期间处理所有请求重新再现的表示器之后,控制传递至结束1308,并且控制返回至在用于特定视图的表示器引擎上的DoLayout方法调用1102的调用程序。
转到图14,一流程图概括为重新计算视图的表示器执行的OnUpdate方法470的步骤。OnUpdate方法470为表示器包括任何子表示器计算新布局,并且高速缓存结果用于在重新再现阶段的访问。在下文提供的例子中,对每个表示器的OnUpdate方法470调用传递一组规定对能由表示器的布局占据的视图空间(例如矩形)的限制的尺寸。尺寸组规定,例如,高度和宽度以及在OnUpdate方法470调用的执行期间能否修改这些值。不过,本发明预期基于任何一个或多个各种各样传递的参数重新计算表示器,包括影响布局的视图空间尺寸。
在步骤1400期间,表示器执行任何由传递参数引起的必需的定尺寸操作,在调用任何子表示器(通过子代理对象)执行其更新之前。这类工作的内容取决于特定表示器类型的设计。之后,表示器调用表示器***200以查找和更新当前表示器的任何子表示器。在预处理阶段,表示器可能检测创建新页/列的需求并且创建新子代理/表示器的需求,以处理视图的新页/列。
接着,在步骤1402期间,当前父表示器的OnUpdate方法470确定要调用以更新其布局的下一个表示器。注意,这个步骤至少在第一实例中要求父表示器确定子元素的存在并且创建相应的子代理/表示器。在以后的迭代中,父表示器能使用在其子字段412中标识的高速缓存的子代理,以标识下一个剩余的(未处理的)子代理/表示器--即,在当前父表示器的OnUpdate方法的当前迭代期间还没有被调用的子表示器。
父表示器从后备存储器接收应答或者自己根据其子表示器412确定是否剩余要处理的子表示器,并且在步骤1404,如果没有未处理的子表示器剩余要被更新,那么控制传递至步骤1420(在下文描述)。否则,如果表示器确有未处理的子表示器,那么控制传递至1406。
在步骤1406,表示器调用返回的子代理的Update方法520,所述子代理是***在父表示器与当前感兴趣的子表示器之间,以获得与其相关联的子代理的高度和宽度。子表示器与特定的图形元素(在其元素拥有者字段442中规定的)相关联。
在步骤1410,子代理调用与子代理相关联的子表示器的OnUpdate方法470。OnUpdate方法470计算子表示器的更新高度和宽度(以及是否要求重新再现)。注意,在步骤1410期间,OnUpdate方法470是由子表示器递归地调用的,直到所调用的子表示器在步骤1402确定,它没有任何子表示器并且返回其调用的父表示器(通过其子代理)。在调用子代理的OnUpdate方法470之后,控制传递至步骤1414。
因此,在步骤1414,调用的父表示器(从步骤1406)接收对标识的子代理的Update方法调用520的应答。应答包括子表示器的高度和宽度作为返回参数。应答还表示所调用的子表示器是否要求重新再现。接着,在步骤1416,父表示器在父表示器被分配的布局空间内基于布置算法/策略定位所调用的子表示器。在本发明的实施例中,在步骤1416期间,父表示器基于在步骤1414期间由表示器接收的子表示器的高度和宽度参数,将子表示器放在其布局内。
控制然后返回至步骤1402,其中父表示器的OnUpdate470继续更新任何剩余的子表示器(通过它们的子代理包装对象)。
如果在步骤1404,没有剩余的子(元素或代理/表示器)要被处理/更新,那么控制传递至步骤1420。在步骤1420,所调用的表示器的OnUpdate方法执行定制的布局功能,包括有可能进一步调用子表示器的OnUpdate方法470,以调整表示器的布局。
在步骤1422,或者有可能由OnUpdate方法470导出新信息的任何点,高速缓存布局处理的结果,用于以后在图形视图处理的重新再现阶段使用。
在为表示器包括所调用的表示器的所有子表示器完成更新处理之后,在步骤1424,表示器返回其尺寸至调用程序(表示器***200)以及表示这个表示器是否需要重新再现的值。
本领域那些熟练技术人员将意识到,已经描述新的示例性平台和示例性方法,用于在包括图形输出设备诸如图形用户界面或打印机的计算环境中,管理图形文档/用户界面输出的布局/表示处理。由于许多可能的环境可应用本发明的原理,以及设计和执行软件效用和工具的灵活性,应该认识到在此所述的实施例是指例示性的并且不应该认为是对本发明范围的限制。本发明所应用的领域中那些熟练技术人员将意识到,例示的实施例能在布置和细节中被修改,在不脱离本发明精神的情况下。因此,在此所述的本发明预期所有这样的实施例是在下述权利要求书及其等价方案的范围内的。
Claims (51)
1.一图形输出布局管理***,用于安排和维护在计算***上程序的执行以图形方式显示的输出,所述图形输出布局管理***包括:
图形元素,包含代表程序的可显示内容的数据;
表示器,定义用于所述图形元素的显示状态,其特征在于,一个特定类型的表示器维护用于一个相应的图形元素的布局说明;以及
一表示器***,包括一表示器宿主接口,所述表示器宿主接口包括一个方法,用于按照一组与包含在所述视图内的图形元素相关联的表示器,准备用于视图的布局。
2.如权利要求1所述的图形输出布局管理***,其特征在于,所述表示器***还包括一表示器基类,以及其特征在于,所述表示器组是从由所述表示器基类导出的表示器类被实例化的。
3.如权利要求2所述的图形输出布局管理***,其特征在于,所述表示器包括一更新方法,用于计算用于所述表示器的布局属性。
4.如权利要求3所述的图形输出布局管理***,其特征在于,所述表示器包括一再现方法,用于产生发给所述计算***的图形输出子***的指令。
5.如权利要求2所述的图形输出布局管理***,其特征在于,所述表示器类包括预定的表示器类和外部表示器类。
6.如权利要求1所述的图形输出布局管理***,其特征在于,每个所述表示器基于在所述表示器上规定的布局参数值,计算用于相应图形元素的布局状态。
7.如权利要求1所述的图形输出布局管理***,还包括一组通知处理器,每个通知处理器与所述视图中表示器组的特定一个表示器相关联,以及其特征在于,通知处理器处理对图形元素的修改以确定是否更新相应的表示器。
8.如权利要求7所述的图形输出布局管理***,其特征在于,每个表示器规定一种类型的通知处理器,所述通知处理器提供修改通知至与相关图形元素有关的特定表示器。
9.如权利要求8所述的图形输出布局管理***,其特征在于,通知处理器确定相应表示器的一个部分,所述部分由于对相关图形元素的修改而要求更新。
10.如权利要求7所述的图形输出布局管理***,其特征在于,所述表示器***通过所述通知处理器登记基于对相应图形元素的修改而要求更新的表示器。
11.如权利要求1所述的图形输出布局管理***,其特征在于,所述图形元素的一个图形元素实例与多个表示器相关联。
12.如权利要求11所述的图形输出布局管理***,其特征在于,所述与图形元素实例相关联的多个表示器是具有同一类型的。
13.如权利要求12所述的图形输出布局管理***,其特征在于,所述多个表示器相应于同一视图内的不同列。
14.如权利要求12所述的图形输出布局管理***,其特征在于,所述多个表示器对应于单个图形元素的文档视图中的不同页。
15.如权利要求11所述的图形输出布局管理***,其特征在于,所述与图形元素实例相关联的多个表示器的第一表示器和第二表示器,与相应的第一和第二不同视图相关联。
16.如权利要求15所述的图形输出布局管理***,其特征在于,所述第一和第二不同视图是由相应的第一和第二表示器***作为宿主的。
17.如权利要求1所述的图形输出布局管理***,其特征在于,所述视图对应于在图形显示空间内的矩形区域。
18.如权利要求11所述的图形输出布局管理***,其特征在于,所述与图形元素实例相关联的多个表示器是具有不同类型的。
19.如权利要求18所述的图形输出布局管理***,其特征在于,所述多个表示器之一包括对于一个主表示器的一个修饰表示器。
20.如权利要求1所述的图形输出布局管理***,其特征在于,分层地安排在一个视图内的表示器,使得子表示器包含在由相应父表示器规定的区域内。
21.结合在的图形输出布局管理***中的一表示器***,代表一个程序提供包含所述程序的可显示内容的数据的图形元素,通过定义用于所述图形元素的显示状态的表示器用于处理布局,以及其特征在于,表示器维护用于相应图形元素的布局说明,以及其特征在于,所述表示器***作为所述与在视图内的图形元素相关联的表示器的宿主并且安排它们,所述表示器***包括:
一表示器基类,从所述表示器基类可导出表示器类,以及其特征在于,所述表示器是从所述表示器类被实例化的;以及
一包括一组方法的表示器宿主接口,所述方法组包括至少一个方法,用于准备在所述与视图内图形元素相关联的表示器组中被具体化的布局。
22.如权利要求21所述的表示器***,其特征在于,所述表示器基类规定一由导出的表示器类覆盖的、可定制的更新方法,用于为表示器计算布局属性。
23.如权利要求22所述的表示器***,其特征在于,所述表示器基类规定一由导出的表示器类覆盖的、可定制的更新方法,用于产生发给所述计算***的图形输出子***的指令。
24.如权利要求21所述的表示器***,其特征在于,所述表示器类支持一组包括预定的表示器类和外部表示器类的表示器。
25.如权利要求21所述的表示器***,其特征在于,所述表示器基类基于在所述表示器上规定的布局参数值,计算用于图形元素的布局状态。
26.如权利要求21所述的表示器***,还包括通知处理器基类,从所述通知处理器基类导出通知处理器类,以及其特征在于,从通知处理器类实例化的每个通知处理器与视图中一特定表示器相关联,以及其特征在于,通知处理器处理对图形元素的修改以确定是否更新相应的表示器。
27.如权利要求26所述的表示器***,其特征在于,所述基表示器类包括用于表示器的占位符以规定一种类型的通知处理器,所述通知处理器提供修改通知至与关联的图形元素有关的特定表示器。
28.如权利要求26所述的表示器***,其特征在于,所述表示器***通过通知处理器,登记基于对相应图形元素的修改而要求更新的表示器。
29.如权利要求21的表示器***,其特征在于,所述表示器***与由根图形元素和被指派区域表征的视图相关联,在所述被指派区域内显示所述根图形元素及其子图形元素。
30.如权利要求29所述的表示器***,其特征在于,所述视图相应于在图形显示空间内的矩形区域。
31.如权利要求21所述的表示器***,其特征在于,所述表示器宿主接口包括一个用于实例化所述表示器***的构造器,所述表示器***用于为包括一组图形元素的视图布置显示。
32.如权利要求31所述的表示器***,其特征在于,所述视图至少部分地是由传递给所述构造器的根图形元素规定的。
33.如权利要求21所述的表示器***,其特征在于,所述表示器***支持链接多个表示器,使得第一表示器为与图形元素相关联的第二表示器提供一种修饰。
34.如权利要求21所述的表示器***,其特征在于,所述表示器基类包括用于规定子表示器的占位符,因而支持在视图内表示器的分层树结构的创建,使得子表示器包含在由相应父表示器规定的区域内。
35.用于处理布局的一方法,代表了一个程序,通过定义用于所述图形元素的显示状态的表示器提供包含所述程序的可显示内容的数据的图形元素,以及其特征在于,表示器维护用于相应图形元素的布局说明,以及其特征在于,所述表示器***作为所述与在视图内的图形元素相关联的表示器的宿主并且安排它们,所述方法包括:
提供一包括表示器基类和表示器宿主接口的表示器***,所述表示器宿主接口包括一方法,用于创建在一组与视图内图形元素相关联的表示器中被具体化的布局;
通过所述表示器宿主接口接收一请求,为一组视图内的图形元素产生布局;以及
为所述图形元素组,从一组由所述表示器基类导出的表示器类实例化相应的表示器,并且对每个实例化的表示器调用一方法,为相应于所述表示器的图形元素计算布局状态。
36.如权利要求35所述的方法,还包括下面的步骤:
提供一通知处理器基类,为一组通知处理器规定一个接口,所述通知处理器促进了基于对相应图形元素的修改而对布局的增量更新。
37.如权利要求35所述的方法,还包括,以层次树的形式组织用于视图的表示器。
38.如权利要求35所述的方法,其特征在于,所述表示器***的一个实例是在响应为视图创建布局的调用时创建的,因而为每个视图创建一个不同的表示器***,以及相应的表示器。
39.如权利要求35所述的方法,其特征在于,所述表示器基类规定一个更新方法,用于为与特定图形元素相关联的表示器实例计算布局属性。
40.如权利要求35所述的方法,其特征在于,所述表示器基类规定一再现方法,用于产生发给图形输出子***的指令。
41.如权利要求35所述的方法,其特征在于,所述表示器***支持预定表示器类和外部表示器类的导出。
42.如权利要求35所述的方法,其特征在于,所述表示器类对应于布置不同类型图形元素内容的不同类型表示器。
43.如权利要求35所述的方法,其特征在于,分层地安排所述在视图内的表示器,使得子表示器包含在由相应父表示器规定的区域内。
44.一计算机可读介质,包括用于促进处理布局的计算机可执行指令,代表了一个程序通过定义用于所述图形元素的显示状态的表示器,提供包含所述程序的可显示内容的数据的图形元素,以及其特征在于,表示器维护用于相应图形元素的布局说明,以及其特征在于,所述表示器***作为所述与在视图内的图形元素相关联的表示器的宿主并且安排它们,所述计算机可执行指令促进了执行一方法包括:
提供一包括表示器基类和表示器宿主接口的表示器***,所述表示器宿主接口包括一方法,用于创建在一组与视图内图形元素相关联的表示器中被具体化的布局;
通过由所述表示器宿主接口接收一请求,为一组视图内的图形元素产生布局;以及
为所述图形元素组,从一组由所述表示器基类导出的表示器类实例化相应的表示器,并且在每个实例化的表示器上调用一方法,为相应于所述表示器的图形元素计算布局状态。
45.如权利要求44所述的计算机可读介质,还包括计算机可执行指令用于:
以层次树的形式组织用于视图的表示器。
46.如权利要求44所述的计算机可读介质,其特征在于,计算机可执行指令促进,在响应为视图创建布局的调用时,创建所述表示器***的一个实例,因而为每个视图创建一个不同的表示器***,以及相应的表示器。
47.如权利要求44所述的计算机可读介质,其特征在于,所述表示器基类规定一个更新方法,用于为与特定图形元素相关联的表示器实例计算布局属性。
48.如权利要求44所述的计算机可读介质,其特征在于,表示器基类和表示器指定一种用于产生发送到某一图形输出子***的指令的执行方法。
49.如权利要求44所述的计算机可读介质,其特征在于,所述表示器***支持预定表示器类和外表示器类的产生。
50.如权利要求44所述的计算机可读介质,其特征在于,所述表示器类对应于布局不同类型的图形元件内容的不同类型的表示器。
51.如权利要求44所述的计算机可读介质,其特征在于,所述表示器基类指定子表示器的占位符,从而有利于在某一视野中便于分层放置表示器,使得子表示器包含在由相应的父表示器所指定的区域内。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/434,850 US20040225960A1 (en) | 2003-05-09 | 2003-05-09 | System for hosting graphical layout/presentation objects |
US10/434,850 | 2003-05-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1615507A true CN1615507A (zh) | 2005-05-11 |
CN100442265C CN100442265C (zh) | 2008-12-10 |
Family
ID=33416813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038014815A Expired - Fee Related CN100442265C (zh) | 2003-05-09 | 2003-05-15 | 用于作为图形布局/表示对象的宿主的*** |
Country Status (14)
Country | Link |
---|---|
US (1) | US20040225960A1 (zh) |
EP (1) | EP1627376A4 (zh) |
JP (1) | JP4277002B2 (zh) |
KR (1) | KR100969720B1 (zh) |
CN (1) | CN100442265C (zh) |
AU (1) | AU2003237867B8 (zh) |
BR (1) | BR0306159A (zh) |
CA (1) | CA2462172A1 (zh) |
IL (1) | IL161285A (zh) |
MX (1) | MXPA04004405A (zh) |
NO (1) | NO20041880L (zh) |
RU (1) | RU2305860C2 (zh) |
WO (1) | WO2004107308A1 (zh) |
ZA (1) | ZA200403495B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395751C (zh) * | 2005-10-14 | 2008-06-18 | 华为技术有限公司 | 实现页面灵活布局的装置和方法 |
CN101978347B (zh) * | 2008-01-28 | 2014-08-13 | 高通股份有限公司 | 对应用程序的多个用户界面视图进行描绘的方法和设备 |
CN108388462A (zh) * | 2018-02-28 | 2018-08-10 | 武汉斗鱼网络科技有限公司 | 元素变更通知方法、装置及终端设备 |
CN112463272A (zh) * | 2020-11-13 | 2021-03-09 | 广州市百果园网络科技有限公司 | 一种界面布局加载显示方法、***、电子设备及存储介质 |
CN112764729A (zh) * | 2021-01-08 | 2021-05-07 | 深圳依时货拉拉科技有限公司 | 应用软件开发方法、装置、计算机设备及可读存储介质 |
CN114090172A (zh) * | 2021-11-10 | 2022-02-25 | 北京鲸鲮信息***技术有限公司 | 跨***的小部件复用方法及装置 |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4411922B2 (ja) * | 2003-10-06 | 2010-02-10 | セイコーエプソン株式会社 | 構造化文書表示処理装置、構造化文書表示処理方法、構造化文書表示処理プログラム |
JP4413629B2 (ja) * | 2004-01-09 | 2010-02-10 | パイオニア株式会社 | 情報表示方法、情報表示装置および情報配信表示システム |
US8661332B2 (en) | 2004-04-30 | 2014-02-25 | Microsoft Corporation | Method and apparatus for document processing |
US7359902B2 (en) | 2004-04-30 | 2008-04-15 | Microsoft Corporation | Method and apparatus for maintaining relationships between parts in a package |
US7383500B2 (en) | 2004-04-30 | 2008-06-03 | Microsoft Corporation | Methods and systems for building packages that contain pre-paginated documents |
US8243317B2 (en) | 2004-05-03 | 2012-08-14 | Microsoft Corporation | Hierarchical arrangement for spooling job data |
US7580948B2 (en) * | 2004-05-03 | 2009-08-25 | Microsoft Corporation | Spooling strategies using structured job information |
US8363232B2 (en) | 2004-05-03 | 2013-01-29 | Microsoft Corporation | Strategies for simultaneous peripheral operations on-line using hierarchically structured job information |
US7519899B2 (en) * | 2004-05-03 | 2009-04-14 | Microsoft Corporation | Planar mapping of graphical elements |
US7755786B2 (en) | 2004-05-03 | 2010-07-13 | Microsoft Corporation | Systems and methods for support of various processing capabilities |
US7565619B2 (en) * | 2004-08-26 | 2009-07-21 | Microsoft Corporation | System and method for automatic item relocating in a user interface layout |
US20070006095A1 (en) * | 2005-07-01 | 2007-01-04 | Liangkui Feng | Auto layout of user interface elements in a window |
US20070113189A1 (en) * | 2005-11-15 | 2007-05-17 | Microsoft Corporation | Specifying per theme styles for custom graphical elements |
US7941749B2 (en) * | 2007-05-15 | 2011-05-10 | Microsoft Corporation | Composition of electronic document layout |
US20080295019A1 (en) * | 2007-05-21 | 2008-11-27 | Microsoft Corporation | Document with Sidebars |
US8095865B2 (en) * | 2007-11-21 | 2012-01-10 | Microsoft Corporation | Layout manager |
US8010886B2 (en) * | 2008-01-04 | 2011-08-30 | Microsoft Corporation | Intelligently representing files in a view |
US20090193067A1 (en) * | 2008-01-30 | 2009-07-30 | Microsoft Corporation | Server-based recalculation of vector graphics |
US20100073160A1 (en) * | 2008-09-25 | 2010-03-25 | Microsoft Corporation | Alerting users using a multiple state status icon |
JP2012510118A (ja) | 2008-11-26 | 2012-04-26 | カルガリー・サイエンティフィック・インコーポレイテッド | アプリケーションプログラムの状態への遠隔アクセスを提供するための方法およびシステム |
US8091016B2 (en) * | 2008-12-18 | 2012-01-03 | Microsoft Corporation | Visually manipulating instance collections |
US8230357B2 (en) * | 2008-12-18 | 2012-07-24 | Microsoft Corporation | Visually processing instance data |
SG2014007801A (en) * | 2009-02-03 | 2014-04-28 | Calgary Scient Inc | Method and system for enabling interaction with a plurality of applications using a single user interface |
US10055105B2 (en) | 2009-02-03 | 2018-08-21 | Calgary Scientific Inc. | Method and system for enabling interaction with a plurality of applications using a single user interface |
US8402379B2 (en) * | 2009-09-30 | 2013-03-19 | SAP Portals Israel Limited | Dynamic content layout for a user interface display |
KR101452713B1 (ko) | 2009-10-30 | 2014-10-21 | 삼성전자주식회사 | 픽처 경계의 부호화 단위를 부호화, 복호화 하는 방법 및 장치 |
US20110271184A1 (en) * | 2010-04-28 | 2011-11-03 | Microsoft Corporation | Client application and web page integration |
US9741084B2 (en) | 2011-01-04 | 2017-08-22 | Calgary Scientific Inc. | Method and system for providing remote access to data for display on a mobile device |
CA2734860A1 (en) | 2011-03-21 | 2012-09-21 | Calgary Scientific Inc. | Method and system for providing a state model of an application program |
EP2745467A4 (en) | 2011-08-15 | 2015-10-14 | Calgary Scient Inc | METHOD FOR FLOW CONTROL AND RELIABLE COMMUNICATION IN A COMMUNITY ENVIRONMENT |
WO2013024343A1 (en) | 2011-08-15 | 2013-02-21 | Calgary Scientific Inc. | Non-invasive remote access to an application program |
JP6322140B2 (ja) | 2011-09-30 | 2018-05-09 | カルガリー サイエンティフィック インコーポレイテッド | 協働遠隔アプリケーションの共用および注釈のための双方向デジタル表層を含む非連結アプリケーション拡張 |
EP2783483B1 (en) | 2011-11-23 | 2019-08-07 | Calgary Scientific Inc. | Methods and systems for collaborative remote application sharing and conferencing |
US8959431B2 (en) * | 2012-01-16 | 2015-02-17 | Microsoft Corporation | Low resolution placeholder content for document navigation |
US9602581B2 (en) | 2012-03-02 | 2017-03-21 | Calgary Scientific Inc. | Remote control of an application using dynamic-linked library (DLL) injection |
US9293008B2 (en) * | 2012-03-16 | 2016-03-22 | Bally Gaming, Inc. | Layout elements as rendering placeholders for native wagering game applications |
US9729673B2 (en) | 2012-06-21 | 2017-08-08 | Calgary Scientific Inc. | Method and system for providing synchronized views of multiple applications for display on a remote computing device |
US20140026039A1 (en) * | 2012-07-19 | 2014-01-23 | Jostens, Inc. | Foundational tool for template creation |
US20140258003A1 (en) * | 2013-03-07 | 2014-09-11 | Microsoft Corporation | Online advertising with integrated interfaces |
US20150113507A1 (en) * | 2013-10-18 | 2015-04-23 | Distech Controls Inc. | Method for automatic grouping of interlinked graphical configuration elements and computer program product |
CN105765923B (zh) | 2013-11-29 | 2019-11-12 | 卡尔加里科技股份有限公司 | 客户端-服务器远程访问***中提供客户端到非托管服务的连接的方法 |
US10015264B2 (en) | 2015-01-30 | 2018-07-03 | Calgary Scientific Inc. | Generalized proxy architecture to provide remote access to an application framework |
JP2018512084A (ja) | 2015-01-30 | 2018-05-10 | カルガリー サイエンティフィック インコーポレイテッド | 高度にスケーラブルでフォールトトレラントなリモートアクセスアーキテクチャと、当該リモートアクセスアーキテクチャに接続する方法 |
US10445391B2 (en) | 2015-03-27 | 2019-10-15 | Jostens, Inc. | Yearbook publishing system |
CN107239268A (zh) | 2016-03-29 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 一种业务处理方法、装置和智能终端 |
DE102017000569A1 (de) * | 2017-01-23 | 2018-07-26 | e.solutions GmbH | Verfahren, Computerprogrammprodukt und Vorrichtung zum Ermitteln von Eingabebereichen an einer grafischen Benutzeroberfläche |
WO2019081574A1 (en) * | 2017-10-26 | 2019-05-02 | Siemens Aktiengesellschaft | CONSTRUCTION AND FOLLOW-UP OF AN AUTOMATION TECHNOLOGY ENVIRONMENT |
US20230169138A1 (en) * | 2021-12-01 | 2023-06-01 | Salesforce.Com, Inc. | Rendering primitive child elements corresponding to child components of a user interface without instantiating the child components |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6259446B1 (en) * | 1992-12-23 | 2001-07-10 | Object Technology Licensing Corporation | Menu state system |
US6243102B1 (en) * | 1994-05-16 | 2001-06-05 | Apple Computer, Inc. | Data-driven layout engine |
US5838317A (en) * | 1995-06-30 | 1998-11-17 | Microsoft Corporation | Method and apparatus for arranging displayed graphical representations on a computer interface |
US5873106A (en) * | 1995-09-18 | 1999-02-16 | Oracle Corporation | Geometry management for displaying objects on a computer |
US5815415A (en) * | 1996-01-19 | 1998-09-29 | Bentley Systems, Incorporated | Computer system for portable persistent modeling |
US6038573A (en) | 1997-04-04 | 2000-03-14 | Avid Technology, Inc. | News story markup language and system and process for editing and processing documents |
US6141007A (en) | 1997-04-04 | 2000-10-31 | Avid Technology, Inc. | Newsroom user interface including multiple panel workspaces |
US6496202B1 (en) | 1997-06-30 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for generating a graphical user interface |
US5886694A (en) * | 1997-07-14 | 1999-03-23 | Microsoft Corporation | Method for automatically laying out controls in a dialog window |
US6769124B1 (en) * | 1998-07-22 | 2004-07-27 | Cisco Technology, Inc. | Persistent storage of information objects |
CA2256931A1 (en) * | 1998-12-23 | 2000-06-23 | Robert Weisz | Source editing in a graphical hierarchical environment |
US6636242B2 (en) * | 1999-08-31 | 2003-10-21 | Accenture Llp | View configurer in a presentation services patterns environment |
US6721950B1 (en) * | 2000-04-06 | 2004-04-13 | Microsoft Corporation | Input redirection |
US7051276B1 (en) * | 2000-09-27 | 2006-05-23 | Microsoft Corporation | View templates for HTML source documents |
AUPR464601A0 (en) * | 2001-04-30 | 2001-05-24 | Commonwealth Of Australia, The | Shapes vector |
US20040006765A1 (en) * | 2002-04-16 | 2004-01-08 | Goldman Kenneth J. | Live software construction with dynamic classes |
US7299409B2 (en) * | 2003-03-07 | 2007-11-20 | International Business Machines Corporation | Dynamically updating rendered content |
-
2003
- 2003-05-09 US US10/434,850 patent/US20040225960A1/en not_active Abandoned
- 2003-05-15 EP EP03736623A patent/EP1627376A4/en not_active Withdrawn
- 2003-05-15 KR KR1020047007057A patent/KR100969720B1/ko not_active IP Right Cessation
- 2003-05-15 WO PCT/US2003/015379 patent/WO2004107308A1/en active Application Filing
- 2003-05-15 CN CNB038014815A patent/CN100442265C/zh not_active Expired - Fee Related
- 2003-05-15 JP JP2004566468A patent/JP4277002B2/ja not_active Expired - Lifetime
- 2003-05-15 ZA ZA200403495A patent/ZA200403495B/en unknown
- 2003-05-15 MX MXPA04004405A patent/MXPA04004405A/es not_active Application Discontinuation
- 2003-05-15 CA CA002462172A patent/CA2462172A1/en not_active Abandoned
- 2003-05-15 RU RU2004114219/09A patent/RU2305860C2/ru not_active IP Right Cessation
- 2003-05-15 BR BR0306159-0A patent/BR0306159A/pt not_active IP Right Cessation
- 2003-05-15 AU AU2003237867A patent/AU2003237867B8/en not_active Ceased
-
2004
- 2004-04-04 IL IL161285A patent/IL161285A/en not_active IP Right Cessation
- 2004-05-07 NO NO20041880A patent/NO20041880L/no unknown
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395751C (zh) * | 2005-10-14 | 2008-06-18 | 华为技术有限公司 | 实现页面灵活布局的装置和方法 |
CN101978347B (zh) * | 2008-01-28 | 2014-08-13 | 高通股份有限公司 | 对应用程序的多个用户界面视图进行描绘的方法和设备 |
CN108388462A (zh) * | 2018-02-28 | 2018-08-10 | 武汉斗鱼网络科技有限公司 | 元素变更通知方法、装置及终端设备 |
CN112463272A (zh) * | 2020-11-13 | 2021-03-09 | 广州市百果园网络科技有限公司 | 一种界面布局加载显示方法、***、电子设备及存储介质 |
CN112764729A (zh) * | 2021-01-08 | 2021-05-07 | 深圳依时货拉拉科技有限公司 | 应用软件开发方法、装置、计算机设备及可读存储介质 |
CN112764729B (zh) * | 2021-01-08 | 2024-02-06 | 深圳依时货拉拉科技有限公司 | 应用软件开发方法、装置、计算机设备及可读存储介质 |
CN114090172A (zh) * | 2021-11-10 | 2022-02-25 | 北京鲸鲮信息***技术有限公司 | 跨***的小部件复用方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
MXPA04004405A (es) | 2005-02-17 |
JP2006526179A (ja) | 2006-11-16 |
NO20041880L (no) | 2004-06-28 |
CA2462172A1 (en) | 2004-11-09 |
RU2004114219A (ru) | 2005-09-20 |
EP1627376A1 (en) | 2006-02-22 |
AU2003237867B2 (en) | 2009-09-17 |
JP4277002B2 (ja) | 2009-06-10 |
BR0306159A (pt) | 2005-02-09 |
US20040225960A1 (en) | 2004-11-11 |
NO20041880D0 (no) | 2004-05-07 |
KR20060006989A (ko) | 2006-01-23 |
CN100442265C (zh) | 2008-12-10 |
IL161285A (en) | 2009-02-11 |
EP1627376A4 (en) | 2010-05-12 |
AU2003237867A1 (en) | 2005-01-21 |
AU2003237867B8 (en) | 2009-10-15 |
RU2305860C2 (ru) | 2007-09-10 |
ZA200403495B (en) | 2006-05-31 |
KR100969720B1 (ko) | 2010-07-12 |
WO2004107308A1 (en) | 2004-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1615507A (zh) | 用于作为图形布局/表示对象的宿主的*** | |
US11657220B2 (en) | System and method for dialog customization | |
CN1292372C (zh) | 多媒体客户机终端 | |
CN1249577C (zh) | 用于遗留软件与屏幕朗读器程序之间的互操作的方法和装置 | |
CN100351822C (zh) | 用简化视图定义、处理和表示用户界面组件的方法和工具 | |
CN1280705C (zh) | 打印控制***、信息处理装置、功能提供装置 | |
CN1495609A (zh) | 在计算机生成文档中提供语境感测工具和帮助内容 | |
CN1969272A (zh) | 自动生成内容的导入 | |
CN1534476A (zh) | 矢量图形的标记语言和对象模型 | |
CN1815439A (zh) | 用于目标设备显示模拟的方法和*** | |
CN1443325A (zh) | 在网络上自动社区生成***和方法 | |
CN1811702A (zh) | 开发门户应用和自动部署门户应用的***和方法 | |
CN1918589A (zh) | 通过虚拟文档架构来促进协同编辑和承担责任的自动出版*** | |
CN1731340A (zh) | 打印***和打印处理方法 | |
CN1855039A (zh) | 用于创建、储存、管理和消费文化专用数据的方法和*** | |
CN1607501A (zh) | 标记构架 | |
US20130117656A1 (en) | Conversion of web template designs | |
CN1932803A (zh) | 文档编辑方法和装置 | |
CN101036110A (zh) | 使用组、堆栈、和版本集显示数字图像 | |
US20100023547A1 (en) | Automatic user interface generation for entity interaction | |
CN1564976A (zh) | 设计用户界面样式的方法以及具有自适应用户界面的设备 | |
CN1509442A (zh) | 因特网和/或网站内容的自动管理 | |
CN1841362A (zh) | 用于处理电子表格的方法和*** | |
CN101038550A (zh) | 信息处理装置和方法 | |
CN101043574A (zh) | 图像形成装置及方法、图像处理装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081210 Termination date: 20130515 |