Graphviz 15.1.1~dev.20260630.1303
Loading...
Searching...
No Matches
quad_prog_vpsc.h
Go to the documentation of this file.
1
16/**********************************************************
17* Written by Tim Dwyer for the graphviz package *
18* https://graphviz.org *
19* *
20**********************************************************/
21
22#pragma once
23
24#include <util/api.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30#ifdef DIGCOLA
31
32#include <neatogen/defs.h>
33#include <neatogen/digcola.h>
34#include <stdbool.h>
35#include <stddef.h>
36
37typedef struct CMajEnvVPSC {
38 float **A;
39 size_t nv;
40 size_t nldv;
41 size_t ndv;
42 Variable **vs;
43 size_t m;
44 size_t gm;
45 Constraint **cs;
46 /* global constraints are persistent throughout optimisation process */
47 Constraint **gcs;
48 VPSC *vpsc;
49 float *fArray1; /* utility arrays - reusable memory */
50 float *fArray2;
51 float *fArray3;
52} CMajEnvVPSC;
53
54PRIVATE CMajEnvVPSC* initCMajVPSC(int n, float *packedMat, vtx_data* graph, ipsep_options *opt, int diredges);
55
56PRIVATE int constrained_majorization_vpsc(CMajEnvVPSC*, float*, float*, int);
57
58PRIVATE void deleteCMajEnvVPSC(CMajEnvVPSC *e);
59PRIVATE void generateNonoverlapConstraints(
60 CMajEnvVPSC* e,
61 float nsizeScale,
62 float** coords,
63 int k,
64 bool transitiveClosure,
65 ipsep_options* opt
66);
67
68PRIVATE void removeoverlaps(int,float**,ipsep_options*);
69
70typedef struct {
71 int *nodes;
72 int num_nodes;
73} DigColaLevel;
74
75PRIVATE int get_num_digcola_constraints(DigColaLevel *levels,
76 size_t num_levels);
77
78#endif
79
80#ifdef __cplusplus
81}
82#endif
macro for API hiding/exposing
#define PRIVATE
Definition api.h:16
#define A(n, t)
Definition expr.h:76
Agraph_t * graph(char *name)
Definition gv.cpp:34
A constraint determines a minimum or exact spacing required between two variables.
Definition constraint.h:25