y.布局.外部
类总线路由器
java.lang.Object(java.lang.对象)y.布局。抽象布局阶段
y.layout.router。总线路由器
- 所有实现的接口:
- 层外(Layour),布局阶段
公众阶级总线路由器
- 延伸抽象布局阶段
一种以正交总线方式路由图边缘的边缘路由算法。
仔细观察所得的总线表示,其中许多边段绘制在彼此的顶部,为合理解释边缘方向留下的空间很小。
请注意,类边缘路由器
提供更新、改进的总线式支持(另请参见总线描述符
)并且建议使用它来代替。
布局样式
边缘段绑定到总线。总线是由多条边共享的段连接到实际节点的较短线段将被附加。公交车和所有其他路段均已布线正交。
例如,可以在图的各个部分中创建总线,其中每个节点都连接到其他节点。不存在由同一总线的任何两个边缘路径引起的循环,也就是说,所有边缘路由的组合看起来像一棵正交树。
该算法尝试生成边尽可能多地共享其路径的路径。它产生了长线段(所谓的主干网段)理想情况下,除了所有边的第一段和最后一段之外,所有边都是路径被绘制在彼此的顶部(形成一个公共汽车),短连接分支到节点(总线连接)。这些短连接将节点入射边的第一段或最后一段捆绑在一起。
该算法不会以任何方式修改节点的位置或大小,但会对图形的边进行布线。
具有默认设置的总线式边缘布线
边缘布线示例,包括四条不同的总线
概念
该算法使用两阶段过程:
-
主干网选择:确定一组合适的初始主干段。
-
路由和重组:每个初始主干段连接到所有其他主干段,并且通过使用正交边路径到每个节点。然后,将生成的结构简化为主干段较长、节点连接较短的最佳结构。
特征
要确定哪些边属于公共总线,必须指定为每条边分配总线ID的映射使用总线描述符
s.答数据提供程序
举办总线描述符
实例应为使用描述符密钥
。如果边缘没有单独的总线ID,则将创建仅由单个边缘组成的总线。
此算法支持端口约束
s以及端口候选
s控制边应连接到节点的位置。
注意,如果同一总线的边缘连接到公共节点,但端口不一致或矛盾约束/候选,则这些约束/候选中的任何一个都可以确定实际位置公共端口。此外,这同样适用于属于同一边缘组的边缘。
此外,使用端口候选集
对象被解释为不同的总线ID(组ID),而不是边数。
该算法支持增量边缘布线,即扩展或更新现有的总线样式表示。这对于重新排列现有边或在中包含其他边很有用现有的公共汽车。
通过使用相应的BusDescriptor属性
。该算法计算未标记为固定边的路径。由固定边引起的结构必须正交且无循环。
-
-
从类java.lang.Object继承的方法 |
clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString,wait,wait |
范围_全部
公共静态最终字节范围_全部
- 一个范围说明符,定义输入图的所有边都将被路由。
- 另请参阅:
setScope(字节)
,常量字段值- 示例图表:
初始图形 | 所有边缘均已布线 |
范围_ UBSET
公共静态最终字节范围_ UBSET
- 一个范围说明符,定义只路由输入图的选定边。
边的选择状态由返回的布尔值确定由数据提供程序
用密钥注册获取选定边DpKey()
。
所有其他未选择的边缘将被视为具有固定路线。
- 另请参阅:
setScope(字节)
,setSelectedEdgesDpKey(对象)
,边缘_ UBSET_DPKEY
,常量字段值- 示例图表:
初始图形,标记三条边 | 仅选择标记的边作为子集,因此,对其进行布线 |
EDGE_DESCRIPTOR_DPKEY边缘描述符
公共静态最终java.lang.ObjectEDGE_DESCRIPTOR_DPKEY边缘描述符
- A类
数据提供程序
为每条边指定总线描述符对象的键这个总线描述符
对于边缘,提供边缘的总线ID、其可选组ID以及是否边缘是否固定。
-
- 需要边缘的总线ID来确定哪些边缘属于公共总线。在缺席的情况下对于边缘的单个总线ID,将创建仅由单个边缘组成的总线。
边缘_ UBSET_DPKEY
公共静态最终java.lang.Object边缘_ UBSET_DPKEY
- A类
数据提供程序
用于指定要布线的边子集的键如果没有使用定义用于指定子集的自定义键,则使用此键setSelectedEdgesDpKey(对象)
。
-
- 仅当范围设置为时才考虑指定的子集
范围子集
。
- 另请参阅:
setScope(字节)
,setSelectedEdgesDpKey(对象)
总线路由器
公众的总线路由器()
- 创建的新实例
总线路由器
使用默认设置。
创建正交边缘路由器
受保护的正交边缘路由器 创建正交边缘路由器()
- 创建的已配置实例
正交边缘路由器
其用于边缘的正交路由。初始化总线路由器
本身。可以重写它以创建自定义实现或内部路由算法的不同设置。
-
- 此路由算法的某些属性会立即映射到内部
正交边缘路由器
例如,设置交叉成本(双倍)
或setGridRoutingEnabled(布尔值)
。因此总线路由器
重写此方法并创建正交边缘路由器
具有不同的初始设置。
- 退货:
- 已配置的
正交边缘路由器
实例
can布局
公共布尔值can布局(LayoutGraph布局图图表)
- 接受可以由
核心布局算法
。如果没有核心布局算法
,接受所有图形。
- 参数:
图表
-输入图形- 退货:
真的
如果没有核心布局算法或核心布局算法接受图形,假
否则- 另请参阅:
Layouter.doLayout(布局图)
do布局
公共空虚do布局(LayoutGraph布局图图表)
- 计算给定输入图中边缘的总线状路由。
-
- 在边缘布线过程中不会复制给定的图形,结果将立即显示应用于输入图形。
- 参数:
图表
-输入图形- 另请参阅:
Layouter.canLayout(LayoutGraph)
设置网格间距
公共空虚设置网格间距(int间距)
- 指定水平网格线和垂直网格线之间的等距间距。
正值大于2
是允许的。正值小于2
被忽略,而负值映射到其绝对值。
-
- 只有在以下情况下,此选项才会生效
网格布线
已启用。
- 默认值:
- 默认值为10。
- 参数:
间距
-栅格间距- 另请参阅:
setGridRoutingEnabled(布尔值)
- 示例图表:
20 |
60 |
获取网格间距
公共int获取网格间距()
- 返回水平网格线和垂直网格线之间的等距间距。
正值大于2
是允许的。正值小于2
被忽略,而负值映射到其绝对值。
-
- 只有在以下情况下,此选项才会生效
网格布线
已启用。
- 退货:
- 网格间距
- 另请参阅:
setGridSpacing(int)
,setGridRoutingEnabled(布尔值)
已启用设置网格路由
公共空虚已启用设置网格路由(启用布尔值)
- 指定是否仅在网格线上布线边缘线段。
-
- 网格的间距可以通过以下方式控制
setGridSpacing(int)
。
- 默认值:
- 默认值为false。边缘可以自由布线。
- 参数:
启用
-真的
如果边缘段应在网格上布线,假
否则- 示例图表:
真的 -边段位于栅格上 |
假 -边缘线段未与栅格对齐 |
已启用网格路由
公共布尔值已启用网格路由()
- 指定是否仅在网格线上布线边缘线段。
-
- 网格的间距可以通过以下方式控制
setGridSpacing(int)
。
- 退货:
真的
如果边缘段在网格上布线,假
否则- 另请参阅:
setGridRoutingEnabled(布尔值)
设置到节点的最小距离
公共空虚设置到节点的最小距离(整数距离)
- 设置边线段和节点之间的最小距离。
正值大于2
是允许的。正值小于2
被忽略,而负值映射到其绝对值。
- 默认值:
- 默认值为10。
- 参数:
距离
-边与节点之间的最小距离- 示例图表:
10 -边放置在高亮显示的节点之间,不违反最小距离 |
30 -边不适合高亮显示的节点之间,因为这会违反最小距离 |
获取到节点的最小距离
公共int获取到节点的最小距离()
- 返回边线段和节点之间的最小距离。
正值大于2
是允许的。正值小于2
被忽略,而负值映射到其绝对值。
- 退货:
- 边与节点之间的最小距离
- 另请参阅:
将最小距离设置为节点(int)
设置到边缘的最小距离
公共空虚设置到边缘的最小距离(整数距离)
- 设置任意两条边线段之间的最小距离。
边缘布线算法尽可能遵循该值,但有选择地减小距离值,即,当没有足够的空间来找到具有适当值的路径时,仅适用于当前处理的边。
正值大于4
是允许的。正值小于4
被忽略,而负值映射到其绝对值。
- 默认值:
- 默认值为5。
- 参数:
距离
-边缘之间的最小距离- 示例图表:
最小边到边距离5 | 最小边到边距离20 |
获取到边缘的最小距离
公共int获取到边缘的最小距离()
- 返回任意两条边线段之间的最小距离。
如果可能的话,将边缘布线算法设置为该值,但有选择地减小距离值,即,当没有足够的空间来找到具有适当值的路径时,仅针对当前处理的边缘。
正值大于4
是允许的。正值小于4
被忽略,而负值映射到其绝对值。
- 退货:
- 边之间的最小距离
- 另请参阅:
设置到边缘的最小距离(int)
设置交叉成本
公共空虚设置交叉成本(双倍成本)
- 指定每个边交叉的成本。
成本价值为n个
意味着改变其方向n个
而不是穿越边缘。如果成本值设置为0
,不执行全局交叉优化。
成本定义为非负值。
-
- 在方向改变次数和边缘路径交叉次数之间的一个很好的权衡是通过选择以下值实现
1
和3
。
-
- 此设置仅在路由和重组阶段考虑,并且不会影响初始主干段的选择。
- 默认值:
- 默认值为1.0。一个方向的改变优先于边缘的交叉。
- 参数:
成本
-每个十字路口的非负成本值- 投掷次数:
java.lang.Illegal参数异常
-如果给定的成本值为负- 示例图表:
3 -中的个结果1 十字路口 |
0 -结果在5 十字路口 |
获取交叉成本
公共双人间获取交叉成本()
- 返回每个边交叉的成本。
成本价值为n个
意味着改变其方向n个
而不是穿越边缘。如果成本值设置为0
,不执行全局交叉优化。
成本定义为非负值。
-
- 在方向改变次数和边缘路径交叉次数之间的一个很好的权衡是通过选择以下值实现
1
和3
。
-
- 此设置仅在路由和重组阶段考虑,并且不会影响初始主干段的选择。
- 退货:
- 每个交叉口的非负成本值
- 另请参阅:
设置交叉成本(双倍)
设置重新路由已启用
公共空虚设置重新路由已启用(启用布尔值)
- 指定是否执行其他步骤以重新布线边,使减少了边缘交叉。
这一特点并不能保证交叉口的数量最少。
-
- 只有当值大于时,重新路由步骤才会生效
0
分配给交叉费用
。
- 默认值:
- 默认值为false。
- 参数:
启用
-真的
如果应启用重路由功能,假
否则- 另请参阅:
设置交叉成本(双倍)
重新路由已启用
公共布尔值重新路由已启用()
- 指定是否执行其他步骤以重新布线边,使减少了边缘交叉。
这一特点并不能保证交叉口的数量最少。
-
- 只有在路由和重组阶段才考虑重路由不影响初始主干段的选择。
-
- 只有当值大于时,重新路由步骤才会生效
0
分配给交叉费用
。
- 退货:
真的
如果启用了重路由功能,假
否则- 另请参阅:
setReroutingEnabled(布尔值)
获取首选主干段计数
公共int获取首选主干段计数()
- 返回具有相同方向的选定主干线段的最大数目。
此设置定义由主干计算的相同方向的主干段数选择阶段。由于路由和复合阶段。
数字必须是大于或等于的值1
。
-
- 初始主干段越多,运行时间越长。不建议指定此设置的大值。
- 退货:
- 具有相同方向的骨干候选的最大数量
- 另请参阅:
setPreferredBackboneSegmentCount(int)
设置首选BackboneSegmentCount
公共空虚设置首选BackboneSegmentCount(int preferredCount)
- 指定具有相同方向的选定主干线段的最大数量。
此设置定义由主干计算的相同方向的主干段的数量选择阶段。由于路由和复合阶段。
数字必须是大于或等于的值1
。
-
- 初始主干段越多,运行时间越长。不建议指定此设置的值较大。
- 默认值:
- 默认值为2。
- 参数:
首选计数
-具有相同方向的骨干候选的最大数量- 投掷次数:
java.lang.Illegal参数异常
-如果给定的首选数字小于1
- 示例图表:
1 -生成的主干将高亮显示 |
2 -生成的主干将高亮显示 |
获取最小主干段长度
公共双人间获取最小主干段长度()
- 返回主干段的首选最小长度。
该数字定义了由主干选择阶段计算的主干段的最小长度。由于路由和重组阶段的变化,一些最终主干段可能更短。
最小长度定义为大于或等于1
。
-
- 最小长度应至少与节点之间的典型距离一样大,以避免小型主干段。根据图表的
边界框
。
- 退货:
- 主干段的首选最小长度
- 另请参阅:
设置最小骨架分段长度(双)
设置最小主干段长度
公共空虚设置最小主干段长度(双倍最小长度)
- 指定主干线段的首选最小长度。
该数字定义了由主干选择阶段计算的主干段的最小长度。由于路由和重组阶段的变化,一些最终骨干段可能更短。
最小长度定义为大于或等于1
。
-
- 最小长度应至少与节点之间的典型距离一样大,以避免小型主干段。根据图表的
边界框
。
- 默认值:
- 默认值为100.0。
- 参数:
最小长度
-主干段的首选最小长度- 投掷次数:
java.lang.Illegal参数异常
-如果给定的最小长度小于1
- 示例图表:
100 |
300 |
获取最小总线连接计数
公共int获取最小总线连接计数()
- 返回主干段必须具有的最小总线连接数。
如果主干网段的连接较少,则将其删除,受影响的节点将连接到另一个主干段。
最小连接计数的值必须大于或等于1
。
-
- 最小计数为
三
或4
是小图形的好选择。对于较大的图形,较大的计数可能是合理的。
-
- 此设置仅在路由和重组阶段考虑不影响初始主干段的选择。
- 退货:
- 每个主干段必须具有的最小总线连接数
- 另请参阅:
setMinimumBusConnectionsCount(int)
设置最小总线连接计数
公共空虚设置最小总线连接计数(int minimumCount)
- 指定主干段必须具有的最小总线连接数。
如果主干网段的连接较少,则将其删除,受影响的节点将连接到另一个主干段。
最小连接计数的值必须大于或等于1
。
-
- 最小计数为
三
或4
对于小型图形来说是一个不错的选择。对于较大的图形,较大的计数可能是合理的。
-
- 此设置仅在路由和重组阶段考虑不影响初始主干段的选择。
- 默认值:
- 默认值为3。
- 参数:
最小计数
-每个主干段必须具有的最小总线连接数- 投掷次数:
java.lang.Illegal参数异常
-如果给定的最小计数小于1
- 示例图表:
2 -生成两个主干(在本例中) |
6 -导致所有节点都连接到一个主干网(在本例中) |
正在删除共线折弯
公共布尔值正在删除共线折弯()
- 指定是否从布局中删除共线折弯。
共线折弯是指与前一个折弯和后一个折弯位于公共线上的折弯。
如果一条边具有共线弯曲,则另一条边在此点具有实际弯曲,即弯道位置是公共汽车的交叉口。因此,它可能对某些应用程序有利保持这种弯曲。
- 退货:
真的
如果删除共线折弯,假
否则- 另请参阅:
setRemovingCollinerBends(布尔值)
设置删除共线折弯
公共空虚设置删除共线折弯(布尔删除共线折弯)
- 指定是否从布局中删除共线折弯。
共线折弯是位于与其前任折弯和后续折弯的公用线上的折弯。
如果一条边具有共线弯曲,则另一条边在此点具有实际弯曲,即弯道位置是公共汽车的交叉口。因此,它可能对某些应用程序有利保持这种弯曲。
- 默认值:
- 默认值为true。
- 参数:
拆除共线弯管
-真的
如果应拆除共线弯管,假
否则
获取选定边Dp键
公共java.lang.Object获取选定边Dp键()
- 返回注册密钥
数据提供程序
用于将边缘标记为挑选出来的。如果范围
设置为范围_ UBSET
,仅为注册的边数据提供程序
收益真的
将被路由。所有其他边缘将被视为具有固定路线。
- 退货:
- 这个
数据提供程序
边选择键 - 另请参阅:
setSelectedEdgesDpKey(对象)
设置所选边DpKey
公共空虚设置所选边DpKey(java.lang.Object键)
- 指定要注册的密钥
数据提供程序
用于将边缘标记为挑选出来的。如果范围
设置为范围_ UBSET
,仅注册的边缘数据提供程序
收益真的
将被路由。所有其他边缘将被视为具有固定路线。
- 默认值:
- 默认值为
边缘_ UBSET_DPKEY
- 参数:
钥匙
-的数据提供程序
边选择键- 投掷次数:
java.lang.Illegal参数异常
-如果指定的键是无效的
- 另请参阅:
获取选定边DpKey()
getScope(获取范围)
公共字节getScope(获取范围)()
- 返回此路由算法的范围,该算法确定路由哪些边。
- 退货:
- 预定义范围值之一
- 另请参阅:
setScope(字节)
setScope(设置范围)
公共空虚setScope(设置范围)(字节范围)
- 设置此布管算法的范围,该算法用于确定布管的边。
- 默认值:
- 默认值为
范围_全部
- 参数:
范围
-预定义范围值之一- 投掷次数:
java.lang.Illegal参数异常
-如果给定未知范围
设定属性
公共布尔值设定属性(java.lang.String键,java.lang.Object值)
- 提供对仅用于内部目的的特定于实现的属性的访问。
- 参数:
钥匙
-属性的键价值
-要与键关联的值