Graphviz 13.0.0~dev.20241220.2304
Loading...
Searching...
No Matches
overlap.h
Go to the documentation of this file.
1/*************************************************************************
2 * Copyright (c) 2011 AT&T Intellectual Property
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * https://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors: Details at https://graphviz.org
9 *************************************************************************/
10
11#pragma once
12
14#include <stdbool.h>
15
17
18#define OverlapSmoother_struct StressMajorizationSmoother_struct
19
21
23 double *width, bool neighborhood_only,
24 double *max_overlap, double *min_overlap,
25 int edge_labeling_scheme,
26 int n_constr_nodes, int *constr_nodes,
27 SparseMatrix A_constr, int shrink);
28
30
32 double constr_penalty; /* penalty parameter used in making edge labels as much on the line as possible */
33 int edge_labeling_scheme;/* specifying whether to treat node of the form |edgelabel|* as a special node representing an edge label.
34 0 (no action, default), 1 (penalty based method to make that kind of node close to the center of its neighbor),
35 2 (penalty based method to make that kind of node close to the "old" center of its neighbor),
36 3 (two step process of overlap removal and straightening) */
37 int n_constr_nodes;/*n_constr_nodes: number of nodes that has constraints, these are nodes that is
38 constrained to be close to the average of its neighbors.*/
39 int *constr_nodes;/*constr_nodes: a list of nodes that need to be constrained. If NULL, unused.*/
40 int *irn;/* working arrays to hold the Laplacian of the constrain graph */
41 int *jcn;
42 double *val;
43 SparseMatrix A_constr; /*A_constr: neighbors of node i are in the row i of this matrix. i needs to sit
44 in between these neighbors as much as possible. this must not be NULL
45 if constr_nodes != NULL.*/
46
47};
48
50
51double OverlapSmoother_smooth(OverlapSmoother sm, int dim, double *x);
52
53void remove_overlap(int dim, SparseMatrix A, double *x, double *label_sizes,
54 int ntry, double initial_scaling, int edge_labeling_scheme,
56 SparseMatrix A_constr, bool doShrink);
#define A(n, t)
Definition expr.h:76
static const int dim
OverlapSmoother OverlapSmoother_new(SparseMatrix A, int m, int dim, double *x, double *width, bool neighborhood_only, double *max_overlap, double *min_overlap, int edge_labeling_scheme, int n_constr_nodes, int *constr_nodes, SparseMatrix A_constr, int shrink)
@ ELSCHEME_NONE
Definition overlap.h:29
@ ELSCHEME_PENALTY2
Definition overlap.h:29
@ ELSCHEME_STRAIGHTLINE_PENALTY2
Definition overlap.h:29
@ ELSCHEME_STRAIGHTLINE_PENALTY
Definition overlap.h:29
@ ELSCHEME_PENALTY
Definition overlap.h:29
void OverlapSmoother_delete(OverlapSmoother sm)
struct relative_position_constraints_struct * relative_position_constraints
Definition overlap.h:49
double OverlapSmoother_smooth(OverlapSmoother sm, int dim, double *x)
void remove_overlap(int dim, SparseMatrix A, double *x, double *label_sizes, int ntry, double initial_scaling, int edge_labeling_scheme, int n_constr_nodes, int *constr_nodes, SparseMatrix A_constr, bool doShrink)
Definition overlap.c:584
StressMajorizationSmoother OverlapSmoother
Definition overlap.h:16