UNPKG

@kieler/klighd-core

Version:

Core KLighD diagram visualization with Sprotty

867 lines (504 loc) 30.1 kB
/* * KIELER - Kiel Integrated Environment for Layout Eclipse RichClient * * http://rtsys.informatik.uni-kiel.de/kieler * * Copyright 2022-2023 by * + Kiel University * + Department of Computer Science * + Real-Time and Embedded Systems Group * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * SPDX-License-Identifier: EPL-2.0 */ import { Range, RangeOption, RenderOption, TransformationOptionType } from '../options/option-models' /** The category containing proxy-view options. */ export class ProxyViewCategory implements RenderOption { static readonly ID: string = 'proxy-view-category' static readonly NAME: string = 'Proxy-View' static readonly INSTANCE: ProxyViewCategory = new ProxyViewCategory() readonly id: string = ProxyViewCategory.ID readonly name: string = ProxyViewCategory.NAME readonly type: TransformationOptionType = TransformationOptionType.CATEGORY readonly initialValue: any currentValue: any } /** Whether the proxy-view is enabled. */ export class ProxyViewEnabled implements RenderOption { static readonly ID: string = 'proxy-view-enabled' static readonly NAME: string = 'Proxy View' static readonly DESCRIPTION: string = 'Enables proxies for off-screen elements.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewEnabled.ID readonly name: string = ProxyViewEnabled.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewEnabled.DEFAULT readonly description: string = ProxyViewEnabled.DESCRIPTION readonly renderCategory: string = ProxyViewCategory.ID currentValue = ProxyViewEnabled.DEFAULT } /** Part of calculating the proxies' size. */ export class ProxyViewSize implements RangeOption { static readonly ID: string = 'proxy-view-size' static readonly NAME: string = 'Size of Proxies in %' static readonly DESCRIPTION: string = "Percentage to which the proxies are scaled regarding the minimum of the canvas' height and width." static readonly DEFAULT: number = 8 static readonly RANGE: Range = { first: 1, second: 25 } static readonly STEPSIZE: number = 1 readonly id: string = ProxyViewSize.ID readonly name: string = ProxyViewSize.NAME readonly type: TransformationOptionType = TransformationOptionType.RANGE readonly initialValue: number = ProxyViewSize.DEFAULT readonly description: string = ProxyViewSize.DESCRIPTION readonly renderCategory: string = ProxyViewCategory.ID readonly range: Range = ProxyViewSize.RANGE readonly stepSize: number = ProxyViewSize.STEPSIZE readonly values: any[] = [] currentValue = ProxyViewSize.DEFAULT debug = true } /** * What strategy to use to decrease proxy clutter. * Clustering clusters overlapping proxies into a single cluster. * Opacity by Distance increases transparency for distant proxies. */ export class ProxyViewDecreaseProxyClutter implements RenderOption { static readonly ID: string = 'proxy-view-decrease-proxy-clutter' static readonly NAME: string = 'Decrease Proxy Clutter' static readonly DESCRIPTION: string = 'What strategy to use to decrease proxy clutter. ' + 'Clustering clusters overlapping proxies into a single cluster. ' + 'Opacity by Distance increases transparency for distant proxies.' static readonly CHOICE_OFF: string = 'Off' static readonly CHOICE_CLUSTERING: string = 'Clustering' static readonly CHOICE_OPACITY: string = 'Opacity by Distance' static readonly DEFAULT: string = ProxyViewDecreaseProxyClutter.CHOICE_OFF static readonly CHOICES: string[] = [ ProxyViewDecreaseProxyClutter.CHOICE_OFF, ProxyViewDecreaseProxyClutter.CHOICE_CLUSTERING, ProxyViewDecreaseProxyClutter.CHOICE_OPACITY, ] readonly id: string = ProxyViewDecreaseProxyClutter.ID readonly name: string = ProxyViewDecreaseProxyClutter.NAME readonly type: TransformationOptionType = TransformationOptionType.CHOICE readonly initialValue: string = ProxyViewDecreaseProxyClutter.DEFAULT readonly description: string = ProxyViewDecreaseProxyClutter.DESCRIPTION readonly renderCategory: string = ProxyViewCategory.ID readonly values: string[] = ProxyViewDecreaseProxyClutter.CHOICES readonly debug: boolean = true currentValue = ProxyViewDecreaseProxyClutter.DEFAULT } /** * What strategy to use for routing edge proxies, if enabled. * Edge proxies connect on-screen nodes with proxies instead of their off-screen counterparts. * Straight-Edge-Routing draws a straight line between node and proxy. * Along-Border-Routing reuses most of the original edge's path and routes the remaining path to the proxy along the border. */ export class ProxyViewEnableEdgeProxies implements RenderOption { static readonly ID: string = 'proxy-view-enable-edge-proxies' static readonly NAME: string = 'Enable Edge Proxies' static readonly DESCRIPTION: string = 'What strategy to use for routing edge proxies, if enabled. ' + 'Edge proxies connect on-screen nodes with proxies instead of their off-screen counterparts. ' + 'Straight-Edge-Routing draws a straight line between node and proxy. ' + "Along-Border-Routing reuses most of the original edge's path and routes the remaining path to the proxy along the border." static readonly CHOICE_OFF: string = 'Off' static readonly CHOICE_STRAIGHT_EDGE_ROUTING: string = 'Straight-Edge-Routing' static readonly CHOICE_ALONG_BORDER_ROUTING: string = 'Along-Border-Routing' static readonly DEFAULT: string = ProxyViewEnableEdgeProxies.CHOICE_OFF static readonly CHOICES: string[] = [ ProxyViewEnableEdgeProxies.CHOICE_OFF, ProxyViewEnableEdgeProxies.CHOICE_STRAIGHT_EDGE_ROUTING, ProxyViewEnableEdgeProxies.CHOICE_ALONG_BORDER_ROUTING, ] readonly id: string = ProxyViewEnableEdgeProxies.ID readonly name: string = ProxyViewEnableEdgeProxies.NAME readonly type: TransformationOptionType = TransformationOptionType.CHOICE readonly initialValue: string = ProxyViewEnableEdgeProxies.DEFAULT readonly description: string = ProxyViewEnableEdgeProxies.DESCRIPTION readonly renderCategory: string = ProxyViewCategory.ID readonly values: string[] = ProxyViewEnableEdgeProxies.CHOICES readonly debug: boolean = true currentValue = ProxyViewEnableEdgeProxies.DEFAULT } /** * Whether segment proxies should be created. * Segment proxies connect off-screen segments of an edge. */ export class ProxyViewEnableSegmentProxies implements RenderOption { static readonly ID: string = 'proxy-view-enable-segment-proxies' static readonly NAME: string = 'Enable Segment Proxies' static readonly DESCRIPTION: string = 'Whether segment proxies should be created. Segment proxies connect off-screen segments of an edge.' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewEnableSegmentProxies.ID readonly name: string = ProxyViewEnableSegmentProxies.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewEnableSegmentProxies.DEFAULT readonly description: string = ProxyViewEnableSegmentProxies.DESCRIPTION readonly renderCategory: string = ProxyViewCategory.ID readonly debug: boolean = true currentValue = ProxyViewEnableSegmentProxies.DEFAULT } /** Whether to use title scaling if smart zoom is enabled. */ export class ProxyViewTitleScaling implements RenderOption { static readonly ID: string = 'proxy-view-title-scaling' static readonly NAME: string = 'Scale Proxy Titles' static readonly DESCRIPTION: string = "Whether a proxy's title should be scaled if smart zoom is enabled." static readonly DEFAULT: boolean = true readonly id: string = ProxyViewTitleScaling.ID readonly name: string = ProxyViewTitleScaling.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewTitleScaling.DEFAULT readonly description: string = ProxyViewTitleScaling.DESCRIPTION readonly renderCategory: string = ProxyViewCategory.ID readonly debug: boolean = true currentValue = ProxyViewTitleScaling.DEFAULT } /** Whether edge proxies should be drawn above node proxies. */ export class ProxyViewDrawEdgesAboveNodes implements RenderOption { static readonly ID: string = 'proxy-view-draw-edges-above-nodes' static readonly NAME: string = 'Draw Edges Over Nodes' static readonly DESCRIPTION: string = 'Whether edge proxies should be drawn above node proxies.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewDrawEdgesAboveNodes.ID readonly name: string = ProxyViewDrawEdgesAboveNodes.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewDrawEdgesAboveNodes.DEFAULT readonly description: string = ProxyViewDrawEdgesAboveNodes.DESCRIPTION readonly renderCategory: string = ProxyViewCategory.ID readonly debug: boolean = true currentValue = ProxyViewDrawEdgesAboveNodes.DEFAULT } /// ///// DEBUG //////// /** The category containing debug proxy-view options. */ export class ProxyViewDebugCategory implements RenderOption { static readonly ID: string = 'proxy-view-debug-category' static readonly NAME: string = 'Proxy-View Debug Options' static readonly INSTANCE: ProxyViewDebugCategory = new ProxyViewDebugCategory() readonly id: string = ProxyViewDebugCategory.ID readonly name: string = ProxyViewDebugCategory.NAME readonly type: TransformationOptionType = TransformationOptionType.CATEGORY readonly initialValue: any readonly debug: boolean = true currentValue: any } /** Whether proxies should be interactable. */ export class ProxyViewInteractiveProxies implements RenderOption { static readonly ID: string = 'proxy-view-interactive-proxies' static readonly NAME: string = 'Interactive Proxies' static readonly DESCRIPTION: string = 'Whether proxies should be interactable. Clicking on a proxy hops to its off-screen counterpart.' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewInteractiveProxies.ID readonly name: string = ProxyViewInteractiveProxies.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewInteractiveProxies.DEFAULT readonly description: string = ProxyViewInteractiveProxies.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewInteractiveProxies.DEFAULT } /** Whether to highlight proxies that are connected to the selected node. */ export class ProxyViewHighlightSelected implements RenderOption { static readonly ID: string = 'proxy-view-highlight-selected' static readonly NAME: string = 'Highlight Proxies by Selection' static readonly DESCRIPTION: string = 'Whether proxies that are connected to the selected node should be highlighted.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewHighlightSelected.ID readonly name: string = ProxyViewHighlightSelected.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewHighlightSelected.DEFAULT readonly description: string = ProxyViewHighlightSelected.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewHighlightSelected.DEFAULT } /** Whether to decrease opacity of proxies that are not connected to the selected node and increase otherwise. */ export class ProxyViewOpacityBySelected implements RenderOption { static readonly ID: string = 'proxy-view-opacity-by-selected' static readonly NAME: string = 'Transparent Proxies by Selection' static readonly DESCRIPTION: string = 'Whether proxies that are not connected to the selected node should be more transparent.' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewOpacityBySelected.ID readonly name: string = ProxyViewOpacityBySelected.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewOpacityBySelected.DEFAULT readonly description: string = ProxyViewOpacityBySelected.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewOpacityBySelected.DEFAULT } /** Whether to use the synthesis specified proxy-rendering. */ export class ProxyViewUseSynthesisProxyRendering implements RenderOption { static readonly ID: string = 'proxy-view-use-synthesis-proxy-rendering' static readonly NAME: string = 'Use Synthesis Proxy-Rendering' static readonly DESCRIPTION: string = 'Whether proxies should be rendered as specified by the synthesis (if specified).' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewUseSynthesisProxyRendering.ID readonly name: string = ProxyViewUseSynthesisProxyRendering.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewUseSynthesisProxyRendering.DEFAULT readonly description: string = ProxyViewUseSynthesisProxyRendering.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewUseSynthesisProxyRendering.DEFAULT } /** Whether to use a simple version of Along-Border-Routing. Can cause strange artifacts if an edge e.g. oscillates. */ export class ProxyViewSimpleAlongBorderRouting implements RenderOption { static readonly ID: string = 'proxy-view-simple-along-border-routing' static readonly NAME: string = 'Use Simple Along-Border-Routing' static readonly DESCRIPTION: string = 'Whether to use a simple version of Along-Border-Routing. Can cause strange artifacts if an edge e.g. oscillates.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewSimpleAlongBorderRouting.ID readonly name: string = ProxyViewSimpleAlongBorderRouting.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewSimpleAlongBorderRouting.DEFAULT readonly description: string = ProxyViewSimpleAlongBorderRouting.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewSimpleAlongBorderRouting.DEFAULT } /** Whether to cap proxies in their parent node. */ export class ProxyViewCapProxyToParent implements RenderOption { static readonly ID: string = 'proxy-view-cap-proxy-to-parent' static readonly NAME: string = 'Cap Proxy to Parent' static readonly DESCRIPTION: string = 'Whether proxies should be capped inside their parent node.' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewCapProxyToParent.ID readonly name: string = ProxyViewCapProxyToParent.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewCapProxyToParent.DEFAULT readonly description: string = ProxyViewCapProxyToParent.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewCapProxyToParent.DEFAULT } /** Whether to show proxies immediately, e.g. whether proxies should be created once a node is partially off-screen. */ export class ProxyViewShowProxiesImmediately implements RenderOption { static readonly ID: string = 'proxy-view-show-proxies-immediately' static readonly NAME: string = 'Show Proxies Immediately' static readonly DESCRIPTION: string = 'Whether proxies should be created once a node is partially off-screen.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewShowProxiesImmediately.ID readonly name: string = ProxyViewShowProxiesImmediately.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewShowProxiesImmediately.DEFAULT readonly description: string = ProxyViewShowProxiesImmediately.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewShowProxiesImmediately.DEFAULT } /** Whether to show proxies early, e.g. whether proxies should be created before a node is fully off-screen. */ export class ProxyViewShowProxiesEarly implements RenderOption { static readonly ID: string = 'proxy-view-show-proxies-early' static readonly NAME: string = 'Show Proxies Early' static readonly DESCRIPTION: string = 'Whether proxies should be created before a node is fully off-screen.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewShowProxiesEarly.ID readonly name: string = ProxyViewShowProxiesEarly.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewShowProxiesEarly.DEFAULT readonly description: string = ProxyViewShowProxiesEarly.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewShowProxiesEarly.DEFAULT } /** The amount by which to show proxies early if enabled. The number indicates a percentage of the minimum of the canvas' dimensions. */ export class ProxyViewShowProxiesEarlyNumber implements RangeOption { static readonly ID: string = 'proxy-view-decrease-canvas-size-number' static readonly NAME: string = 'Show Proxies Early Number' static readonly DESCRIPTION: string = "The amount by which to show proxies early if enabled. The number indicates a percentage of the minimum of the canvas' dimensions." static readonly DEFAULT: number = 5 static readonly RANGE: Range = { first: 1, second: 15 } static readonly STEPSIZE: number = 1 readonly id: string = ProxyViewShowProxiesEarlyNumber.ID readonly name: string = ProxyViewShowProxiesEarlyNumber.NAME readonly type: TransformationOptionType = TransformationOptionType.RANGE readonly initialValue: number = ProxyViewShowProxiesEarlyNumber.DEFAULT readonly description: string = ProxyViewShowProxiesEarlyNumber.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly range: Range = ProxyViewShowProxiesEarlyNumber.RANGE readonly stepSize: number = ProxyViewShowProxiesEarlyNumber.STEPSIZE readonly values: any[] = [] readonly debug: boolean = true currentValue = ProxyViewShowProxiesEarlyNumber.DEFAULT } /** Whether to change stacking order such that close proxies are stacked above distant ones. */ export class ProxyViewStackingOrderByDistance implements RenderOption { static readonly ID: string = 'proxy-view-stacking-order-by-distance' static readonly NAME: string = 'Render Close Nodes At Top' static readonly DESCRIPTION: string = 'Whether close proxies should be stacked above distant proxies.' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewStackingOrderByDistance.ID readonly name: string = ProxyViewStackingOrderByDistance.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewStackingOrderByDistance.DEFAULT readonly description: string = ProxyViewStackingOrderByDistance.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewStackingOrderByDistance.DEFAULT } /** Whether to change stacking order such that fully opaque proxies are stacked above transparent ones. */ export class ProxyViewStackingOrderByOpacity implements RenderOption { static readonly ID: string = 'proxy-view-stacking-order-by-opacity' static readonly NAME: string = 'Render Opaque Nodes At Top' static readonly DESCRIPTION: string = 'Whether fully opaque proxies should be stacked above transparent proxies.' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewStackingOrderByOpacity.ID readonly name: string = ProxyViewStackingOrderByOpacity.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewStackingOrderByOpacity.DEFAULT readonly description: string = ProxyViewStackingOrderByOpacity.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewStackingOrderByOpacity.DEFAULT } /** Whether to change stacking order such that selected proxies are stacked above others. */ export class ProxyViewStackingOrderBySelected implements RenderOption { static readonly ID: string = 'proxy-view-stacking-order-by-selected' static readonly NAME: string = 'Render Selected Nodes At Top' static readonly DESCRIPTION: string = 'Whether selected proxies should be stacked above other proxies.' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewStackingOrderBySelected.ID readonly name: string = ProxyViewStackingOrderBySelected.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewStackingOrderBySelected.DEFAULT readonly description: string = ProxyViewStackingOrderBySelected.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewStackingOrderBySelected.DEFAULT } /** Whether proxies should be shown for nodes that aren't rendered because of the parent's detail level. */ export class ProxyViewUseDetailLevel implements RenderOption { static readonly ID: string = 'proxy-view-use-detail-level' static readonly NAME: string = 'Use Detail Level' static readonly DESCRIPTION: string = "Whether proxies should be shown for nodes that aren't rendered because of the parent's detail level." static readonly DEFAULT: boolean = true readonly id: string = ProxyViewUseDetailLevel.ID readonly name: string = ProxyViewUseDetailLevel.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewUseDetailLevel.DEFAULT readonly description: string = ProxyViewUseDetailLevel.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewUseDetailLevel.DEFAULT } /** Whether edge proxies should be drawn when the source or target point is off-screen. */ export class ProxyViewEdgesToOffScreenPoint implements RenderOption { static readonly ID: string = 'proxy-view-draw-edges-to-off-screen-point' static readonly NAME: string = 'Draw Edges to Off-Screen Point' static readonly DESCRIPTION: string = 'Whether edge proxies should be drawn when the source or target point is off-screen.' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewEdgesToOffScreenPoint.ID readonly name: string = ProxyViewEdgesToOffScreenPoint.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewEdgesToOffScreenPoint.DEFAULT readonly description: string = ProxyViewEdgesToOffScreenPoint.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewEdgesToOffScreenPoint.DEFAULT } /** Whether edges should become transparent when the corresponding edge proxies are on-screen. This actually modifies the diagram. */ export class ProxyViewTransparentEdges implements RenderOption { static readonly ID: string = 'proxy-view-transparent-edges' static readonly NAME: string = 'Fade Out Edges' static readonly DESCRIPTION: string = 'Whether edges should become transparent when the corresponding edge proxies are on-screen. This actually modifies the diagram.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewTransparentEdges.ID readonly name: string = ProxyViewTransparentEdges.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewTransparentEdges.DEFAULT readonly description: string = ProxyViewTransparentEdges.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewTransparentEdges.DEFAULT } /** Whether proxies should be as big as their corresponding node. */ export class ProxyViewOriginalNodeScale implements RenderOption { static readonly ID: string = 'proxy-view-original-node-scale' static readonly NAME: string = 'Original Node Scale' static readonly DESCRIPTION: string = 'Whether proxies should be as big as their corresponding node.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewOriginalNodeScale.ID readonly name: string = ProxyViewOriginalNodeScale.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewOriginalNodeScale.DEFAULT readonly description: string = ProxyViewOriginalNodeScale.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewOriginalNodeScale.DEFAULT } /** Whether to cap scaling of proxies to 1. */ export class ProxyViewCapScaleToOne implements RenderOption { static readonly ID: string = 'proxy-view-cap-scale-to-one' static readonly NAME: string = 'Cap Scaling to 1' static readonly DESCRIPTION: string = 'Whether proxies should be upscaled more than their original size.' static readonly DEFAULT: boolean = true readonly id: string = ProxyViewCapScaleToOne.ID readonly name: string = ProxyViewCapScaleToOne.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewCapScaleToOne.DEFAULT readonly description: string = ProxyViewCapScaleToOne.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewCapScaleToOne.DEFAULT } /** Whether clusters should be transparent according to the average of their contained proxies' opacities. */ export class ProxyViewClusterTransparent implements RenderOption { static readonly ID: string = 'proxy-view-cluster-transparent' static readonly NAME: string = 'Allow Transparent Cluster' static readonly DESCRIPTION: string = "Whether clusters should be transparent according to the average of their contained proxies' opacities." static readonly DEFAULT: boolean = false readonly id: string = ProxyViewClusterTransparent.ID readonly name: string = ProxyViewClusterTransparent.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewClusterTransparent.DEFAULT readonly description: string = ProxyViewClusterTransparent.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewClusterTransparent.DEFAULT } /** Whether cascading clustering should be used, i.e. take transitive overlap into consideration. */ export class ProxyViewClusteringCascading implements RenderOption { static readonly ID: string = 'proxy-view-clustering-cascading' static readonly NAME: string = 'Cascading Clustering' static readonly DESCRIPTION: string = 'Whether clustering should be cascading.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewClusteringCascading.ID readonly name: string = ProxyViewClusteringCascading.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewClusteringCascading.DEFAULT readonly description: string = ProxyViewClusteringCascading.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewClusteringCascading.DEFAULT } /** Whether the sweep line algorithm should be used for clustering. Defaults to false since evaluated to be slower in the current implementation as-is. */ export class ProxyViewClusteringSweepLine implements RenderOption { static readonly ID: string = 'proxy-view-clustering-sweep-line' static readonly NAME: string = 'Sweep Line Clustering' static readonly DESCRIPTION: string = 'Whether clustering should be done via sweep line algorithm.' static readonly DEFAULT: boolean = false readonly id: string = ProxyViewClusteringSweepLine.ID readonly name: string = ProxyViewClusteringSweepLine.NAME readonly type: TransformationOptionType = TransformationOptionType.CHECK readonly initialValue: boolean = ProxyViewClusteringSweepLine.DEFAULT readonly description: string = ProxyViewClusteringSweepLine.DESCRIPTION readonly renderCategory: string = ProxyViewDebugCategory.ID readonly debug: boolean = true currentValue = ProxyViewClusteringSweepLine.DEFAULT }