发明概述
通常来讲,本发明的特征是在由节点分级结构定义的空间里识别
级位置。这个空间的维数至少为2。每个节点根据在各自的维中数值
唯一标识,这些数值包括确定节点级的节点级值以及在同一级中唯一
确定节点的级中节点值。级次位置是由在相同维之中的位置值确定的。
这个位置值并不需要与实际的节点级值和级中节点值相对应。
本发明的实现应该包括下列一个或多个特性。
位置值包括深度值和级内位置(position-within-level)值,这些
数值都可以是非整数形式的。级内位置值可包括标识一个节点的值中
节点(node-in-value)值加上一个表示与该节点的位置偏移值的浮点
数。这个分级结构位置可以用来标识该分级结构的用户视图的焦点。
概括来说,在其它方面,本发明的特征是在显示设备的空间中显
示分级结构的节点的表示(representation),每个节点的表示完全
占据空间中的子空间,并将空间完全分配给子空间。
本发明的实现应该包括下列一个或多个特性。这些节点按分级结
构中的级组织,所有空间都被分配给这些级,使得一个级在与变动的
级对应的显示的一维中完全表示出来。而分级结构中该级之上或者之
下的级应该被至少部分表示。每一个级都被表示为空间中的一个带
(band)。在一个带中表示的节点都有一个位于临近带之中的节点有
父子关系。在一个带中,空间被划分成使得父的子空间沿该带拥有与
它的孩子沿邻近的带的维数之和相同的维数。
概括来说,在其它方面,本发明的特征是渲染与节点相关的容器,
以及与节点相关信息的表示。容器的维数随着基于分级结构中可变焦
点而动态分配的空间数量而改变,而表示有不变的维。在显示器上绘
制容器和表示,当焦点发生变化时,用更新维重新渲染容器并在显示
器上绘制容器,和在不进行重新描述的情况下,把渲染的表示拷贝到
新的位置上。
在本发明的具体实施方案中,绘制的容器指示分级结构中节点的
位置和它与相邻节点的关系,以及表示包括图像、文本或者它们两者。
概括来说,在其它方面,接收二维引用帧中用户输入设备位移的
信息;把至少一维的位移转换成用于确定分级结构用户视图焦点的分
级结构位置变化率。
概括来说,在其它方面,本发明的特征是向用户显示节点分级结
构一部分的表示;把各个节点与由应用程序执行的动作相结合,该动
作不同于分级结构的操作,使用户通过第一类动作操作分级结构一部
分中显示的表示;和通过使用第二类动作激发节点,使用户能够启动
与分级结构的显示节点相关的动作。
在本发明的具体实施方案中,第一类的动作可以是拖拽,而第二
类的动作可以是点击。
概括来说,在本发明的其它方面,一个返回至中心(reture-to-
center)输入设备的模拟可以使用户操作分级结构。用户可以通过操
纵非返回至中心输入设备来指示操作分级结构目的的对模拟所期望的
操作。用户的操作被作为返回至中心输入设备的处理。
本发明的具体实施方案应包括下面的一个或多个特性。非返回至
中心输入设备是计算机鼠标、轨迹球以或手写板(pad)。而返回至中
心设备就是操纵杆。而模拟包括在显示设备上渲染设备。对用户操作
的响应就是更改在分级结构之中的焦点位置。焦点位置是由周期性地
向焦点位置添加焦点增加向量而改变,焦点增加向量是模拟控制器离
开它的中心或静止位置的位移的向量的函数。用户以单一的拖拽动作
操纵非返回至中心控制器来查看一个任意大型分级结构的节点。函数
是非线性的,以允许用户在很大的二维空间里改变操作速度。
在其它方面,本发明的特征是在客户端设备中,显示多个节点分
级结构的部分的信息,多个节点包括在分级结构中子分级结构顶端的
节点;当用户的操作导致子分级结构接近所显示信息的视图,从服务
器中获取关于接近视图的子分级结构的信息。
在其它方面,在服务器上接收来自于客户端上关于分级结构的定
义的请求;响应请求,为客户端提供分级结构定义的一部分但不是全
部,该部分引用该分级结构中的其他部分。
在本发明的具体实施方案中,基于优化服务器和客户端之间的通
信的参数,确定将要提供给客户端的那部分的尺寸大小。服务器自动
建立与给定的最小部分尺寸尽可能接近的分级结构定义部分。服务器
生成对子分级结构的引用,并将其包含在所提供的节点定义部分内。
在其它方面,一个万维网页包括提供允许对节点的分级结构进行
连续操作的操作界面,比如说,到其它万维网页的链接。
在其它方面,用户界面包括允许在分级结构之中进行选择的连续
操作的设备。
在本发明的具体实施方案,分级结构包括一个功能菜单,一个文
件系统,一个XML文档,一个文档、列表、或者表单建立的索引,一
个编码分级结构,杜威十进制分类法系统,目录化产品,邮政地址或
地理化区域的其他位置,一个被选择而进行文本输入的属于一个字符
集的字符,或者原本形式并非分级结构主体,而是使用相似性查询技
术而使其成为分级结构。
本发明拥有如下诸多优势。
一个不确定的大型分级结构是可以操纵的。其界面允许对分级结
构进行快速操纵。
该界面以下列方式之中的至少一种减少了认知的负担。
这里给用户提出了一个简单的比喻,把分级结构比喻成连续的平
面,它的视图可以随着用户的操作而平滑地变化。由于允许直接对焦
点的变化率加以控制,避免了用户可会对视图之中突然的、不调和的
(对于新手来说是非常令人胆战心惊的)变化的忧虑,这样一来,分
级结构会随着时间的变化而平稳变化。随着时间的变化,在视图中的
这些必然的不连续被分成若干小的分区,从而是这些不连续所造成的
后果最小化。在级中的节点并不会立刻完全彻底地出现,而是首先出
现小的略图,而在不同时间里,不同的节点会详尽地显示出来。
用户并不会为上下移动,旋转,或者缩放而分别加以控制担心—
—所有的这些操作可以通过简单的物理的比喻而直观地完成。例如,
简单的控制功能可以变为四个滚动按钮,两个滚动条,以及Windows
的“树状视图”中众多标以“+”和“-”按钮。界面通过这些途径减
少了重复多余的手和眼睛的动作以及认知的需求。
介于父亲和孩子节点之间的联系是通过将父亲节点叙述为包含孩
子节点,而不是通过绘制不明确的连接线来向第一用户明示的。
关于当今已知的计算机显示设备的实际情况的界面是不俗的。空
间是被充分有效地分配的,这样可以使大多数典型计算机解放出来,
显示其它的任务。
这个界面只需要一个很小的实现大小。对于的内存的情况和通过
网络快速传输的情况,可以用紧缩码来理解分级结构的算法。
关于分级结构加载的带宽界面是朴素的。分级结构信息——可以
是不确定大小的——可以在用户处理它们时根据要求转化成小的部
分。用户可以操纵大型分级结构的所有级,任意改变其大小,这些只
能影响到被加载的分级结构信息的一小部分。
这个界面在“万维网”的应用中是非常有用的。根据广告而到来
的初学用户对新的比喻而感到陌生,而对视图的变换而感到无所适从。
通过左边的“操纵框”影响操纵,界面会符合用户的希望值。实现用
户界面的程序代码是简洁的,可以使用一个页(或者小应用程序)下
载以适应用户安装插件的要求。网上冲浪者大可不必为通过缓慢的网
络加载描述庞大的分级结构的信息而苦苦等待。
每个节点都可以有一个不同的文本和/或者图形表示。当节点被选
择的时候,为了执行一个与操纵相分离的独特动作,联合每个节点是
非常好的途径。
分级结构帧,每个节点的文本和/或者图形表示,以及与每个节点
相联系的动作是以用户可阅读的形式定义的。这个分级结构的定义根
据需求被逐渐增加地请求和传输。传输是数据流的一种特殊情况,它
被在二维上分散,而数据所要求的顺序并不能很有把握地进行预报。
上述这些优势和特性将在下面的权利要求中被相加描述。
优先实施方案详述
图1说明了存在于由分级结构18组成的节点之间的关系并介绍了
一些命名方法。每个节点都有零个或者多个“孩子”节点,并且除了
“根”节点20没有“父亲”节点之外,每个节点只有一个“父亲”节
点。例如,节点26是节点24的孩子节点,而它又是节点26和27的
父亲节点。在后面,从左到右对孩子节点进行计数是非常有用的;这
样,节点26就有一个0的“子索引”而节点27的子索引为1。而没
有子节点的节点,像节点22,被称为“叶子”节点。
节点可以根据其分级结构的“级”归类,我们将“级”定义为从
根节点到达它们所需要的步数。在图1的分级结构中,有四个级30。
根据本发明的具体实施方案,在有限的显示区域中,分级结构的
视图可以在用户的控制下更改。视图在任何时候都是“聚焦”或者集
中于一个节点或者多个节点之间,它将所有的节点包含在这个焦点或
者“焦点”周围。用户可以看到这些包围节点之一,并操纵焦点移到
该节点处,以便于所有节点在当前都围绕该节点。通过继续这种操作
可以发现这个道理,即分级结构之中的任何节点都通过一系列的步骤
从其它节点通过一些中间节点而达到,用户可以查看位于分级结构之
中的任何节点。下面所讨论的方法可以让操作过程变得更加“平滑”
——焦点是逐渐变化的,而在视图之中所导致的变化被“激活”或者
表现为许多小的步骤。
图2和3显示了两个有限显示区域的实例。图2显示了一个级排
列的显示区域31,它被分配给节点24附近的焦点。而焦点是在分级
结构之中假想的点,它与恰好位于显示区域的中心点相关。在这个“级”
设计中,级30的每一个节点都是按级组织的。由于这是一个小型的分
级结构实例,所以显示区域(33,阴影部分)对于这个精确焦点来说
是不确定的。
图3显示了一个垂直排列的有限显示区域,它可能在万维网应用
之中具有特殊的作用。在级中的这每一个节点都是垂直排列的,而分
级结构的顶部位于显示区域的左端。
为了方便,下面的描述将只参照图2所示的水平布局。
参考图4,在基于驻留在计算机59的软件的一些具体实施方案之
中,软件程序50对模拟返回中心式控制器,例如“操纵杆”,的屏幕
显示表示52以及模拟控制器从中心变换到其它位置的数据表示进行更
新。这个更新是与例如鼠标的物理计算机定点设备66相关的。焦点更
新程序54会导致表示用户在分级结构中焦点的内部数据的持续更新。
当焦点被更新的时候,分级结构绘制程序56被调用,从而提出关于围
绕焦点分级结构的带的屏幕显示表示58。(下面将讨论更为具体的模
拟控制视图和提出分级结构。)尽管用户的眼睛60以及用户的大脑62
持续不断地监控着展开的分级结构表示58以及当前的“操纵杆”52
的位置,用户通过它们进行直接控制,但是大脑指示手64在移动物理
定点设备66并按下按钮来指示焦点的变化以及从而导致的分级结构对
用户可视的那一部分的变化。如此一来:
用户通过不断的反馈信息来了解如何操纵提出表现的分级结构查
看当前显示的任何节点,而通过迭代以及所有节点都是相连的原理来
查看整个分级结构。
透视图之中不会发生突然的变化,因此用户的手和眼睛位置也不
会突然变化,这是非常必要的。
在网络环境中,本发明的软件组件70能够从远程分级结构服务器
72通过计算机74的网络在计算机59上加载分级结构的信息,它可以
表示为分级结构服务器的客户机。通常情况下,服务器同时为多个客
户机服务。分级结构信息加载器70将在下面关于图14中加以详细描
述。
参考图5,从步骤100开始,软件实施方案执行一些配置参数的
收集102,这些信息包括显示区域大小和分级结构信息的网络资源。
下一步是其它变量的初始化104。在步骤104之中,创建了一个伪根
节点,并把分级结构信息资源分配给它。步骤104还在伪根节点旁边
的点上初始化了用户“焦点”——也就是绘制在屏幕上的分级结构部
分的中心——这些就是现有的本地分级结构数据。接着,启动分级结
构加载器70来使用标准网络协议从配置资源中异步加载分级结构信
息。在关于图14的描述中将具体解释分级结构加载的流程。现在我们
注意到:资源有可能存在于远程服务器72上;信息到达目的地可能会
伴随着用户可察觉的时间延迟;随着节点信息的到达,它被添加到本
地分级结构的数据里。
软件接下来会对操纵杆及其在屏幕上的表示方式进行初始化
108。下面的程序120到126可以异步监控物理定点设备,而主循环将
在平行路径上被启动。这个循环从在屏幕上绘制分级结构140开始。
步骤120监控用户输入设备,它可以探测到物理的用户输入设备
“状态”的改变——位置以及按键状态。有的改变可能需要模拟操纵
杆位置130的更新122。如果探测124到在模拟操纵杆位置中有变化,
模拟操纵杆会在126被重新渲染。这些将在图15中加以详细说明。
返回到主循环(图形的右边)之中,模拟操纵杆步骤124探测到
在其中心位置有所变化。当在任何维上变化值都非零,这个变化会由
步骤144映射为分级结构焦点的增量。“焦点”表示在分级结构中用
户当前视图的中心。焦点被定义为一个二元的向量,{深度,级内位置}。
分级结构“深度”类似于分级结构的级,但是它被允许采用限定级的
整数之间的浮点数。“级内位置”在级中节点之间的相互位置,最左
边的节点的级内位置为0.0,这类似于一个索引,但是它允许采用浮
点数和整数。例如,在图1中的分级结构实例中的焦点{1.1,1.5}表
示用户视图的焦点是介于级1和级2之间,并且更接近于级1,并且
在节点24和28之间的水平中点。
如在图8中所示,在级中确定位置的任意方法可以分为两部分:
“FocalNode”,对在级<深度的整数部分>中索引为<级内位置的
整数部分>的引用;
“horiFract”,出现在用户视图中心左边的小数。
因此,“FocalNode”与级中节点的整数部分相关,而“horiFract”
是它的小数部分。这就是我们将在下面描述中使用的在级中确定位置
的方法。
根据具体实施方案的配置情况,模拟操纵杆变化可以精确映射144
其在焦点{dDepth,dFract},但是对于分级结构级按照级排列以及分
级结构上升/下降的配置情况来说,如果k1和k2在操作过程中是固定
的数,这种映射就简化成
dDepth=k1*表示模拟操纵杆的垂直位移
dFract(horiFract的变化)=k2*模拟操纵杆的水平位移。
其中k1和k2是操作期间固定的数字。对于分级结构级按照垂直
排列的配置情况,dDepth将跟随操纵杆的水平位移,而dFract将跟
随其垂直位移。其它有用的映射调节包括:
大于线性的(greater-than-linear)映射允许进行有限的移动的返
回中心式控制器进行微调控制和高速操纵。例如,一个具体实施方案
使用dDepth与模拟控制器在某个方向上位移的平方成比例。这允许操
作指定的“动态范围”——最快与最慢速度的比率——12×12表示模
拟控制器在某一维介于-12到12象素中变化的情况。
减少对角线操作,特别是沿着分级结构上升的方向。在分级结构
上升过程中,用户通常不会打算同时进行任何横向操作。在分级结构
下降的过程中经常会希望使用对角线操作,但是这是应该被避免的,
这样可以减少用户感到失控的机会。
限制模拟控制器每次在一维中进行操作。这里建议选择控制器的
透视图。图15显示了“操纵杆”的外观以及一些任选的式样。一个具
体实施方案允许用户在诸多“外观和感觉”的控制器中进行选择。
将位移映射到dFact,dFract不仅是位移的函数,而且对深度的
小数部分的灵敏度是在渲染的节点位置的第二阶中断。(无论何种状
态,我们描述的具体实施方案禁止节点位置或大小的第一阶中断;这
种改进进一步消除了二阶中断。)
在146中将增量变化dDepth添加到Depth之后,步骤148使用如
图7所示的逻辑步骤更新“垂直”参数,这些具体将在下面讨论。“垂
直”在这里表示“沿着分级结构上升或者下降的方向”,而这些可以
依靠配置情况实际表示成级或者垂直方向。
在150中将增量变化dFract添加到horiFract之后,“水平”(沿
着一个节点到其同族的方向)参数是在步骤152中使用如图9所示的
逻辑步骤被更新的,具体如下讨论。
步骤154会根据预定义的阈值测试自从绘制分级结构最后使用阈
值之后Depth或者horiFract是否发生变化。如果发生变化,就会使
用图10和11中的逻辑步骤在步骤140中重新绘制分级结构。阈值的
目的就是通过禁止代价昂贵的重新渲染动作来减少对计算机能力的要
求。
在这些情况里,主操作循环将会持续对模拟控制器位置进行监视
142。这个循环在固定时间间隔里执行。当144的逻辑把给定的二维模
拟控制器位移映射到二维的每循环重复焦点改变(上时,定期重复更
进一步把它映射到一个二维焦点速率上。
图6显示了显示区域402是如何由图7的逻辑分配多个分级结构
级。406显示了一种可行的分配方法,它把显示区域分配给三个相邻
的级,我们称之为“hiLevel”,“loLevel”以及“beloLevel”,其
中loLevel节点的父节点位于hiLevel并且如果存在子节点的话它们
位于beloLevel之中。分配的带可以是部分在实际显示区域402之外
的(如hiLevel)或者完全在外(如hiLevel-1)。分配带的厚度会随
着级的增加而沿几何级数减小。例如,在实例中显示,如果厚度Rth的
比率为2.0的话,每个级被分配了分配给其父节点的空间一半。应该
注意的是,随着用户降低分级结构,节点的级数会变得非常小并且会
随着接近焦点而获得可视权重;这近似于每个节点的渐进的外观允许
进行实际平滑的操作过程。
带厚度之间的几何关系通过“指数关系”排列分隔带的线段而获
得的。更精确地讲,可以定义一个“虚拟显示区域”404,实际显示区
域4 02是其分数HADA/HVDA的值介于0.5到1之间。于是,从虚拟显示
区域的底部到级N顶部线段的距离是:
虚拟显示区域高度*Rth(Depth-N)
(记住“Depth”是焦点的一部分),或者对于我们的例子来说,
虚拟显示区域高度*2.0(Depth-N)
如果N远远小于Depth,这些划分级的线段会落在显示区域之外
(或上面),对于N增加,线段接近虚拟显示区域的底部,在虚拟显
示区域之下。具体实施方案说明了应该选择HADA/HVDA=3/4,以便于能够
恰好显示两个完整的级。如果Depth是1.0的倍数的话,hiLevel和
loLevel将会分配上面1/2以及接下来的1/4的虚拟显示区域,总和
为全部实际显示区。在示出的情况下,所有的LoLevel和部分hiLevel
和beloLevel落在了实际显示区域之外。对于HADA/HVDA<=3/4的任意选
择来说,只有划分loLevel的两条线段408和410需要为了绘制而被
计算,与所有其它的位于虚拟显示区域之外的线段一样。由于大多数
3级节点是相关的,所以绘制过程可以被加速。对于能够访问大量资
源的具体实施方案来说,HADA/HVDA可以选择为近于1.0,这样可以使大
多数划分线段412位于虚拟显示区域之内,这样可以表示更多的级和
更多的节点。
从图7上我们可以看到,在图6中Rth=2.0,HADA/HVDA<=3/4的情况
变成了获得垂直分配的逻辑148。当Depth由于1或者-1的小数部分
而改变的时候,这个逻辑就会被从图5的主操作中调用,服务器会预
先计算一些绘制参数。在步骤418中,Focus Depth首先被强制大于
那些可配置但是通常在1.0附近的最小值,然后被指定小于任何节点
加载的最高级的最大值。步骤420接着决定那个级将要在显示区域之
中表示出来,或者换句话说,与“hiLevel”,“loLevel”,和“beloLevel”
相关的是什么整数。舍入操作的余数“vertFract”将被保存以决定在
步骤428以及随后的绘制计算中划分线段的位置。检查422可以用来
了解hiLevel是否有所变化;也就是Depth是否跨过整数界线。在大
多数情况下并没有发生。如果hiLevel降低了,那么在步骤424中将
会改变级参数:FocalNode的父节点变成了FocalNode,horiFract随
着构成FocalNode的子节点索引的分数被加载,由前面的horiFract
增加,属于父节点的子节点。如果hiLevel增加,级参数在步骤426
中有所变化:FocalNode子节点随着horiFract子节点索引乘以和子
节点的数目,从而变成了FocalNode,而舍入操作的余数变成了
horiFract。
步骤428现在计算划分线段的位置。这可以描述为距虚拟显示区
域底部
虚拟显示区域的高度*2.0(Depth-N)
428之中的计算公式计算了从虚拟显示区域顶部的最有用的距
离,因此是“1-”这些距离“hiLevelBot”和“loLevelBot”在图6
上被显示为408和410。对于HADA/HVDA=3/4来说,只需针对两个整数级
N的Depth-N介于0和B2之间的情况进行计算。
图8说明了“水平”分配必须做什么。显示区域520已经被“垂
直”分配为分级结构级hiLevel522、loLevel524、以及beloLevel526
的多个带,每个带必须更进一步分配节点。“Focus”可以是分级结构
之中假想的点,它与显示区域532的中心相联系。“FocalNode”就是
将要被绘制的包括这个中心的节点;阴影框534是它的配置。
“horiFract”就是出现在中心左边的FocalNode的比率,
0.0<=horiFract<=1.0。也就是说,horiFract是黑色实线536于
FocalNode的配置534的宽度之间的比率。
“水平”配置通常发生在使用图10到13中说明的逻辑进行绘制
的时候。图9显示了一些在增加horiFract之后进行的预计算:如果
在552处horiFract已经溢出而不再大于0,除非没有左节点,步骤556
使用在分级结构之中位于其左边的节点替代FocalNode,而horiFract
被加1,而对于没有左节点的情况而言,步骤558将horiFract减为
0.0。如果horiFract在步骤562处已经溢出并且不再小于1的话,步
骤566将FocalNode替换为分级结构中位于其右边的节点,并且从
horiFract减1,除非它没有右节点,这样的话步骤568将把horiFract
减到1.0。
水平配置是由确定在绘制级loLevel节点宽度而驱动。首先对于
FocalNode,然后向左边节点重复进行该动作,直到显示区域被占用为
止,然后再向右边重复进行。节点要求的显示区域的宽度取决于表现
它所需要的宽度以及其子节点透视图宽度的总和。对这两个向量给定
的几何分量随着Depth的小数部分变化而变化。如前面所说,loLevel
节点比其它拥有更多子节点(在beloLevel之中)的节点更为狭窄,
但是它的子节点比其它节点更宽。从loLevel宽度配置来说:
子节点宽度配置分配起来相当简单。对于同时能够显示多于3级
节点的具体实施方案(HADA/HVDA>3/4)来说,可以在beloLevel基础上
进行持续分配。例如,如果loLevel节点的宽度为W并且拥有3个子
节点,每个子节点的宽度就是w/3。并且每个孙子节点的宽度配置为
w/9。
父节点(在hiLevel中)宽度就是它的子节点宽度之和。在图8
中,四个loLevel节点拥有一个父节点540,而最后一个的父节点实
542。
在完成绘制逻辑状态的图10和11之中绘制逻辑图之前,注意水
平参数术语应该使用“左”和“右”来表示节点的显示配置的左边界
和右边界,这些在图8对FocalNode的544和546加以标注。
图10和11的绘制逻辑图可以被大致分为若干区域:绘制
FocalNode,绘制其左边的节点,然后绘制其右边的节点。可以对每个
loLevel节点(步骤612,618,652)调用软件程序loDraw(节点,
级位置,左边部分),这样不仅可以绘制节点并且可以计算并返回其
“左”和“右”界线的位置以及画出其子节点,该程序将在图12的索
引中加以描述。在画出所有loLevel节点之后,其宽度值被加给父节
点“hiNode”,包括新的节点(步骤614,630,660)以及现有节点
(步骤622,656)。根据检验620和654,当绘制出loLevel节点的
父节点不是“hiNode”的时候,需要有一个新的“hiNode”节点。在
这时以及在程序末尾,现有的hiNode节点被使用软件程序“HiDraw
(node)”绘制出来(步骤626,642,658,662)。
图12说明了软件程序“loDraw(节点,级位置,左边部分)”的
逻辑图。步骤714表现了节点的轮廓,而步骤71 8绘制了确定节点的
同中心表示。对于每个子节点来说,步骤720绘制了节点的轮廓而724
对它进行详述,这是在轮廓区域的大小足够放置透视图的情况下的。
有多少节点是被完全表现出来依赖于根据显示区域大小提出的空间要
求以及分级结构散开的速度。然而对于通常的应用程序来说,三级上
的节点都会被粗略显示而有一半可以详细显示。而其它时候,对于两
级节点来说都是完全表示的。
在绘制和粗略表示之前,loDraw()必须首先(步骤710)计算节
点对Depth“verFract”给定的的配置显示宽度“Wide”,子节点的
数目,以及一个目标透视图宽度,它使用如下公式:
target render width*childCountveriFrare
接着它必须(步骤712)转换“宽度”并把参数“horizLoc”和
“fractionLeft”上传给“left”和“rite”,其左边与右边的边界。
“horizLoc”是一个级位置;一旦“fractionLeft”为0,它就确定
了左边界,一旦“fractionLeft”为1,它就确定了右边界,在
FractionLeft介于0和1之间的时候,能够确定一些点。
为了“绘制节点特定渲染(draw node-specific rendering)”
可以调用简单的代码来表现文本和/或者图形。然而在某些具体实施方
案中出于性能考虑,这个方法可以把预先提出的图像复制到轮廓中心,
以便于花费在提出每个节点上的时间变为单一的时间。
图13说明了许多绘制hiLevel节点的近似逻辑图:绘制节点的轮
廓,然后绘制节点特定渲染。
如果要用划分级的线段的计算与节点宽度替代位于虚拟显示区域
之外的节点,节点轮廓将被设置为与实际显示区域的边界相关。在这
个减小的区域里中心化指定节点透视图使得指定节点透视图在实际显
示区域中移出的可能性大大减小。通过在步骤710和716中选择“目
标渲染宽度”和“最小渲染宽度”可以完全消除或者允许这种情况发
生。
图13中的步骤802和图12中的步骤714和720并不是绘制过程
的一部分,但是它们与节点轮廓的绘制相联系,节点被检查是否有非
阅读的输入资源。如果它有,启动软件程序“hierarchyLoad”可以根
据从字元读取的信息在这个节点之下异步产生分级结构。第一个启动
hierarchyLoad的时候可以加载分级结构的信息,它可以在伪根节点
之下产生分级结构,而对于这个应用来说可能并不是一个完整的分级
结构。分级结构服务器也许只能发出分级结构信息的一部分。这可以
允许用户处理来自服务器而发送到客户机上的分级结构信息的一部
分,从而很大程度上地操纵一个广大的分级结构。这个部分被加载到
命令上,但是在实际需要提出调用它们之前,它们的父节点必须首先
被绘制轮廓。
通过手工或者自动从分级结构服务器中的独立文件中取出信息,
可以将整个分级结构划分成若干小区域。另外,分级结构服务器可以
自动将分级结构分成若干区域,其中每个区域都有适当的网络宽度,
服务器还可以产生信息“文件”的索引来描述整个分级结构的子分级
结构。也就是说,通过网络传输的“文件”也许从来没有以文件的形
式存在过。
我们把分部分和随选地(on demand)发送的分级结构称为“分级
结构流”,不论分成部分操作是服务器的优先操作还是部分操作。“分
级结构流”可以与通常应用在网络中同时由客户机使用(已经接收的)
数据的数据传输术语相比较,而当语音信息被客户计算机作为附加声
音信息播放的时候它同时正在网络上传输。然而,分级结构流不同于
后者,它的数据传输是在多维空间中进行的,并且很有可能客户机并
不需要所有的信息。因此双向通信在分级结构流中是非常有用的。不
仅是服务器必需传输信息,客户机也必需按照自身要求请求分级结构
之中的不同部分。一个分级结构流的性能提高就是在客户机与服务器
之间维持两个连接(向各个方向),而不是为每个部分打开和关闭一
个连接。
流部分的最小大小是服务器的固定参数。为了性能提高,分级结
构服务器应该根据客户机与服务器之间网络性能的变化调整最小部分
的大小。例如,服务器接收到来自于一个客户机的急速请求,这会产
生一个高带宽的连接并将非常大的部分传输给该客户机,当然这也会
导致较高的出错率,以及来自于其它客户机的对相同部分的重复请求
以及向该客户机传送小型的部分。
这里说明了分级结构服务器如何对一个分级结构信息请求并考虑
最小部分的大小。
从请求中,确定发出请求分级结构或者是子分级结构的父节点。
把该节点的信息从整个分级结构数据中拷贝-这些信息可能在数
据库中,一个或者是多个文件中,或者是在内存中的数据结构-到新
的分级结构数据结构中,作为根节点信息。
在为各个节点拷贝的信息可作为节点是根节点的分级结构部分的
引用。对部分的“引用”是关于向被创建的服务器发出部分请求的信
息。对第一个拷贝来说,引用只是简单地表示出分级结构信息请求。
在所有已经添加到新分级结构数据结构,并仍然保存着的引用,
将会被首先添加并从数据结构中删除出去,把所有子节点的信息从整
个分级结构数据拷贝到新的分级结构数据结构中。拷贝过的信息可能
还是包括引用。
当引用保存的时候,以及新分级结构数据结构比最小的部分尺寸
还小的时候,重复前面所述的步骤。
图14表示了从视图的客户端点的分级结构加载进程。软件路线“分
级结构加载”通过有相关“未读输入资源”的节点。这就是把对如网
络或文件名的访问的URL命名到分级结构定义文件。分级结构源代码
也可能是数据库,数据结构,或者是其他程序,但是这里我们讨论的
是在网络上传输文件。步骤832“打开了”源,也可能是让它变成可
读的。在客户端-服务器环境中,这种“打开”就构成了对服务器的
请求,从而可提供分级结构信息。在循环中,步骤836应用于读取各
个行,直至在838步骤的读取失败终止步骤840的路线。各行都描述
了一个节点,详细地讲,就是:
节点级与文件顶端节点级相关,这个也就是相对的表示,这样分
级结构定义文件就可以借由从“父”分级结构文件中的节点表示上引
用分级结构定义文件将其结合起来。“子”分级结构定义文件的顶端
不仅仅是引用的节点级。借由这种方式分级结构模板就可由用户使用
编辑器随意分解和重组。在某些实施方案中,分级结构定义文件是用
户可读可编辑的;格式可通过使用行缩格来指定相应级。从前行的缩
格形式增加表示更高的一级级;而前行缩格形式的减少则表示缩格缩
表示的前行级。类似于
节点1
节点2
节点3
节点4
这样的文件汇导致节点1和4放置在级N上,级2放置在级N+1
上,级3在N+2上,而级N比引用该文件的节点级要高些。
(可选)用于节点“标签”的文本用来描述节点
(可选)到图形化“图像”的路径,用于描述节点。如果标签
和图形都被指定,并且就会被描述到图形的顶端。当前的实施方案使
用“<image=URL>”格式来表示这条信息。
(可选)如果用户选择节点的话,那么借由使用定点设备来“点
击”,就会执行该动作的表示。各个“动作”是由通过依赖于应用程
序的方式传输的软件来编译的。格式<action=URL>可以用于该信息。
某一些实施方案描述那些与push按钮类形状有关的动作的节点,向点
击屏幕外观的用户暗示会生效。
(可选)“hief”引用指定将要在该节点下被接在的分级结构源
代码。当前实施方案使用格式<hier=URL>来表示该信息。
(可选)<key=value>表示中的任一数字把一个短字符分配来表
示长字符,这样“动作”“图像”以及其他一些表示都可使用这种速
记式。这些指定对所有节点的子节点的表示都有效。
步骤842表示节点级的解析。其他表示的解析在步骤844和846
中有显示。
在步骤848中,新节点被放置在分级结构数据中,作为前面级上
新近添加的子节点(通过分级结构加载的扩展名),同时该节点会被
最新记录在该级中。这样当受影响的父节点当前显示出的时候,就会
重新渲染分级结构。
图15显示模拟返回中心式的控制器首选屏幕格式(当类似于操纵
杆这样的定点设备被发出的时候,会返回到停留位置中)以及一些替
换的方案。
与“控制杆”视图有关的是,当用户能使用非返回中心式定点设
备,和鼠标之类的按钮的时候,我们讨论返回中心式的控制器被模拟。
当用户使用鼠标“拖拽”显示对象922的时候,从对象可能经过的区
域926的中心(阴影部分),在它的停留位置924的任何方向,操作
动作启动。
“拖拽”就意味着用户点击对象,并按下按钮来移动鼠标。当按
钮被按下,模拟就会移动到显示目标922,跟随由传输区域所限制的
指示器。特别值得一提的是,如果游标928-用户鼠标位置,或者是
其他由操作系统提供的定点设备的屏幕表示-这就是当按钮被按下的
时候,在视图920中的位置,随后用户就会使用仍然按下的按钮,让
它移动到视图930上:
步骤120图5的“监视器用户输入设备”监测这些事件。
步骤122“更新模拟操纵杆的位置”,然后再借由游标所移动的
各个维的同等数量,来显示对象922,并会记录该当前位移,向量932。
接着,模拟控制器的位移会用于本发明的其他部分,就好像它是
物理返回中心式的控制器的位移。
步骤120还监测鼠标按钮的发出,在这时步骤122把显示对象922
移回在924上的停留位置,并把模拟控制器位移更新到{0,0}。
接下来对象从停留位置拖拽,模拟控制器位移越大,通过图5的
144映射,Focus改变的越迅速。
通过使用在传输区域底端,和显示对象922中心附近的另一终端
来描述控制杆的“杆”部分,图像概括出从上但由并非直接从上看的
控制杆的外观形状,这样在视图930上,操纵杆就会透视省略出现。
接下来的各种替换格式也会在允许传输的阴影部分中,它们的停
留位置显示出圆形可拖拽对象。替换格式940是分级结构根在左边的
垂直显示分级结构的。它显示可被拖拽到分级结构的上级,或者是对
应和垂直方向的任何结合的圆形对象。与分级结构上级结合在一起的
侧面操作是禁止使用的。格式950显示了把传输完全同时限制在一维
中。格式960把这个分成两个独立的滚动条,其中每个都是“返回中
心式”。
图16显示出呈现在用户面前的序列范例,它通过轻推控制杆992
使其偏离中心位置,来操纵分级结构。具体实施方案是级排列的,其
中分级结构的顶部位于视图的顶部。这里的视图显示的是用户看到的
模拟序列实例。当查看视图884的时候,用户向下轻推控制杆992来
降低分级结构,然后再看视图995,用户向左移动控制杆992来转向
标为“Computers and Internet”的节点的子节点。在视图996中,
用户从左边向中心“Build Your Visual Studio 6.0 Library”移动。
接着如下面的视图997所示,控制杆992再次被向下轻推,从而将子
节点带到视图997之中。此时用户松开控制杆992使它返回到其本来
位置,具体如图所示。
图17显示了一个从972到977的六个视图的序列,它向用户显示
了操纵索引数据(在这个例子里是字典)的过程,其中具体实施方案
是垂直排列的,并且分级结构的根节点位于视图的左边。这一次显示
的视图仍然是用户看到的视图模拟序列的实例。在这个序列里,用户
通过向右轻推控制杆来直接向右移动分级结构。由于用户对操作之中
毫无帮助的非叶子节点并不感兴趣,所以它们是不活动的。只有视图
977之中出现的叶子节点是活动的,它出现在视图底部。
图18说明了一个单独万维网站点分级结构具体实施方案,该站点
允许在浏览器窗口中进行快速的连续操作。从外观上看,站点的页面
是由主帧986和操纵帧984组成。操纵帧里面有分级结构980垂直方
向的视图和一个模拟控制杆992。实例中的分级结构就是万维网站点
的分级结构。每个节点都与能够加载到主帧中的站点分级结构中的页
相对应,而节点的相关动作可以把相应的页面加载到主帧中。按下标
为“Museum Review 1998”的按钮可以把相应的内容加载到主帧中,
我们就可以看到站点了。
其它的具体实施方案都是在下列权利要求范围之内。
本发明可以轻易应用到广大的领域中,这是因为:
分级结构是无处不在的。
分级结构的几何状态是作为分级结构信息的一部分输入的,而不
是作为实施方案中的硬编码(hard-coded)。
指定节点的外观是作为分级结构信息的一部分输入的,而不是实
施方案中的硬编码。
指定节点的动作是作为分级结构信息的一部分输入的,它是由应
用确定方式中的周围环境解释的,而不是被本发明解释。
本发明可以应用于操纵文件系统。为了达到目的,节点确定的动
作对于文件来说可以以文件类型确定的方式打开文件,而对于字典并
不需要进行指定节点的动作,这是因为操作本身可以“打开”字典。
本发明可以被应用到假设包含大型文件系统的网络中的文件系统中。
本发明可以应用于允许用户在大型万维网站点上操纵分级结构中
页面的集合。具体如图18所示。本发明中可以操纵任何大小的分级结
构的小型显示区域可以在“操纵帧”中替换为浏览器窗口,这允许用
户浏览站点并且同时控制窗口的巨大“主帧”的内容。在通常情况下,
本发明可以被同样地应用于允许用户轻松存操纵存在于大量不同站点
中的分级结构组织的页面集合。基于这种目的,把由指定节点的动作
宣传的网页放置在主帧中。本发明可以通过多种方式应用于这种情况,
其中包括“java小程序”、“插件”,或者是浏览器本身的一部分。
本发明可以被应用于操纵带有轮廓的文档。“有轮廓的文档”包
括教科书,圣经的章节段落以及其他一些参考指导用书之类的提纲挈
领的书。
本发明可以通过“索引”列表或文件,用于操作统一规定。换而
言之,分级结构可以创建在末行由与操作目标相关的叶节点构成的元
素列表中(把字典作为示例,所谓的借节点就与单词相关)。所有其
他节点都被合成并做上标记,以便提供可靠的路标,获取正确的叶节
点。非叶节点没有非节点指定动作。字典上叶节点的动作可能是指令
计算机打印或说出某一个单词的定义或译义。接触列表叶节点的动作
可能是打印出地址,启动邮件信息,抑或是拨打电话。图17表明出单
词列表的这些字母操作。
本发明还可以应用于XML文件的操作,它既可以对文件进行编辑,
叶可以创建由XML文件驱动的灵活应用程序。
本发明还可应用于诸如Deway十进制系统之类的编码分级结构的
用户操作中。在这种情况之下,指定节点动作可能会引导出关于本书
的信息。
本发明还可应用于允许邮政地址和其他通过浏览结构化安排的地
理区域方位的简单用户登录。举例来说,标记维“New England”的节
点的子节点可能会被标记上州名。
本发明还可应用于允许诸如邮政编码的快捷用户登录,在这种编
码里,标记为“347”的节点的子节点可能是“3470”、“3471”、“3472”、
“3473”、“3474”、“3475”、“3476”、“3477”、“3478”、
“3479”,邮政编码分级结构就可这样被合成。
本发明还可应用于允许目录化产品的简单用户选择。举例来说,
一首录下的歌可被首先目录化为“music”,然后是“rock/pop”,接
着是“hip-hop”,然后在目录化为录音师,接着是曲目名称。
本发明还可应用于任何字符集的文本登录。对于“hanzi”这种中
文使用的大字符集来说,字符可被目录化为使用惯例索引方法(中文
字典通常目录化为笔划)的分级结构,或者是通过其他方法,比如使
用视觉效果上的简单性进行目录化。该项发明还可应用于不能使用键
盘的情况下。
本发明还可应用于允许文本内容源模式非分级结构的(例如大型
无组织化站点,文学主体以及整个站点)简单用户操作中,但在这里,
可使用“自我组织图”或其他相似性查询技术分级结构,将分级结构
强加于其上。