Code Documentation 3.7
Social Network Visualizer
Loading...
Searching...
No Matches
global.h
Go to the documentation of this file.
1
9
10#ifndef GLOBAL_H
11#define GLOBAL_H
12
13#include <QPair>
14#include <QMetaType>
15#include <QString>
16
17// ============================================================================
18// Namespace macros
19// ============================================================================
20
21#define SOCNETV_NAMESPACE SocNetV
22
23#ifdef SOCNETV_NAMESPACE
24#define SOCNETV_BEGIN_NAMESPACE \
25 namespace SOCNETV_NAMESPACE \
26 {
27#define SOCNETV_END_NAMESPACE }
28#define SOCNETV_USE_NAMESPACE using namespace SOCNETV_NAMESPACE;
29#else
30#define SOCNETV_BEGIN_NAMESPACE
31#define SOCNETV_END_NAMESPACE
32#define SOCNETV_USE_NAMESPACE
33#endif
34
36
37// ============================================================================
38// Version
39// ============================================================================
40
41static const QString VERSION = "3.7";
42
43// ============================================================================
44// Math constants (define only if not already provided by <cmath>)
45// ============================================================================
46
47#ifndef M_PI
48static constexpr double M_PI = 3.14159265358979323846;
49#endif
50
51#ifndef M_PI_3
52static constexpr double M_PI_3 = 1.04719755119659774615;
53#endif
54
55#ifndef M_PI_X_2
56static constexpr double M_PI_X_2 = 6.28318530717958647692;
57#endif
58
59// ============================================================================
60// Enumerations
61// ============================================================================
62
82
101
112
118{
119 DC = 1,
120 CC = 2,
121 IRCC = 3,
122 BC = 4,
123 SC = 5,
124 EC = 6,
125 PC = 7,
126 IC = 8,
127 EVC = 9,
128 KATZ = 10,
129 BPC = 11,
130 DP = 12,
131 PRP = 13,
132 PP = 14,
133 CLC = 15
134};
135
141{
142 None = -1,
144 Area = 1,
146};
147
154{
155 Html = 0,
156 Csv = 1
157};
158
169
170// ============================================================================
171// User-message severity constants
172// ============================================================================
173
174static const int USER_MSG_INFO = 0;
175static const int USER_MSG_CRITICAL = 1;
176static const int USER_MSG_CRITICAL_NO_NETWORK = 2;
177static const int USER_MSG_CRITICAL_NO_EDGES = 3;
178static const int USER_MSG_QUESTION = 4;
179static const int USER_MSG_QUESTION_CUSTOM = 5;
180
181// ============================================================================
182// Subgraph type constants
183// ============================================================================
184
185static const int SUBGRAPH_CLIQUE = 1;
186static const int SUBGRAPH_STAR = 2;
187static const int SUBGRAPH_CYCLE = 3;
188static const int SUBGRAPH_LINE = 4;
189
190// ============================================================================
191// Matrix type constants
192// ============================================================================
193
194static const int MATRIX_ADJACENCY = 1;
195static const int MATRIX_DISTANCES = 2;
196static const int MATRIX_DEGREE = 3;
197static const int MATRIX_LAPLACIAN = 4;
198static const int MATRIX_ADJACENCY_INVERSE = 5;
199static const int MATRIX_GEODESICS = 6;
200static const int MATRIX_REACHABILITY = 7;
201static const int MATRIX_ADJACENCY_TRANSPOSE = 8;
202static const int MATRIX_COCITATION = 9;
203static const int MATRIX_DISTANCES_EUCLIDEAN = 12;
204static const int MATRIX_DISTANCES_MANHATTAN = 13;
205static const int MATRIX_DISTANCES_JACCARD = 14;
206static const int MATRIX_DISTANCES_HAMMING = 15;
207static const int MATRIX_DISTANCES_CHEBYSHEV = 16;
208
209// ============================================================================
210// Structs and value types
211// ============================================================================
212
218{
219 int v1 = 0;
220 int v2 = 0;
221 int type = 0;
222};
223
231typedef QPair<int, int> SelectedEdge;
232
238{
239public:
240 int source = 0;
241 int target = 0;
242 double weight = 0.0;
243 int type = 0;
244 double rWeight = 0.0;
245
246 MyEdge() = default;
247
248 MyEdge(const int &from, const int &to,
249 const double &w = 0.0,
250 const int &t = 0,
251 const double &rw = 0.0)
252 : source(from), target(to), weight(w), type(t), rWeight(rw) {}
253};
254
264{
265public:
266 int relation = 0;
267 int source = 0;
268 int target = 0;
269 bool visible = false;
271 int edgeWeight = 1;
273
275
276 EdgeVisibilityChange(const int &rel, const int &src, const int &tgt, const bool &vis,
277 const bool &preserveReverse = false,
278 const int &weight = 1, const int &reverseWeight = 1)
279 : relation(rel), source(src), target(tgt), visible(vis),
280 preserveReverseEdge(preserveReverse), edgeWeight(weight), reverseEdgeWeight(reverseWeight) {}
281};
282
288{
289public:
292
293 GraphDistance(int t, int dist)
294 : target(t), distance(dist) {}
295};
296
302{
303public:
304 bool operator()(const GraphDistance &t1, const GraphDistance &t2) const
305 {
306 if (t1.distance == t2.distance)
307 return t1.target > t2.target;
308 return t1.distance > t2.distance;
309 }
310};
311
317{
318public:
319 qreal value;
321
322 PairVF(qreal v, qreal f)
323 : value(v), frequency(f) {}
324};
325
331{
332public:
333 bool operator()(const PairVF &v1, const PairVF &v2) const
334 {
335 return v1.value > v2.value;
336 }
337};
338
340
341// ============================================================================
342// Qt metatype registrations
343// Must live outside the SocNetV namespace.
344// ============================================================================
345
346Q_DECLARE_METATYPE(SOCNETV_NAMESPACE::MyEdge)
347Q_DECLARE_METATYPE(SOCNETV_NAMESPACE::NetworkRequestType)
348Q_DECLARE_METATYPE(SOCNETV_NAMESPACE::SelectedEdge)
349
350#endif // GLOBAL_H
int edgeWeight
Definition global.h:271
int target
Definition global.h:268
int source
Definition global.h:267
bool visible
Definition global.h:269
EdgeVisibilityChange()=default
int reverseEdgeWeight
Definition global.h:272
int relation
Definition global.h:266
bool preserveReverseEdge
Definition global.h:270
EdgeVisibilityChange(const int &rel, const int &src, const int &tgt, const bool &vis, const bool &preserveReverse=false, const int &weight=1, const int &reverseWeight=1)
Definition global.h:276
Holds a (target, distance) pair for use in Dijkstra's priority queue.
Definition global.h:288
int distance
Definition global.h:291
int target
Definition global.h:290
GraphDistance(int t, int dist)
Definition global.h:293
Min-priority comparator for GraphDistance (used in std::priority_queue).
Definition global.h:302
bool operator()(const GraphDistance &t1, const GraphDistance &t2) const
Definition global.h:304
double weight
Definition global.h:242
MyEdge(const int &from, const int &to, const double &w=0.0, const int &t=0, const double &rw=0.0)
Definition global.h:248
double rWeight
Reverse / reciprocal weight.
Definition global.h:244
int source
Definition global.h:240
int target
Definition global.h:241
int type
Definition global.h:243
MyEdge()=default
Min-priority comparator for PairVF (used in std::priority_queue).
Definition global.h:331
bool operator()(const PairVF &v1, const PairVF &v2) const
Definition global.h:333
(value, frequency) pair, used in distribution charts.
Definition global.h:317
qreal frequency
Definition global.h:320
PairVF(qreal v, qreal f)
Definition global.h:322
qreal value
Definition global.h:319
static const int MATRIX_DISTANCES_JACCARD
Definition global.h:205
static SOCNETV_BEGIN_NAMESPACE const QString VERSION
Definition global.h:41
NetworkRequestType
Identifies the purpose of an outgoing network request.
Definition global.h:164
@ Crawler
Definition global.h:166
@ CheckUpdate
Definition global.h:167
@ Generic
Definition global.h:165
static const int SUBGRAPH_STAR
Definition global.h:186
IndexType
Centrality / prestige index identifiers.
Definition global.h:118
@ BC
Betweenness Centrality.
Definition global.h:122
@ CC
Closeness Centrality.
Definition global.h:120
@ IRCC
Influence Range Closeness Centrality.
Definition global.h:121
@ PP
Proximity Prestige.
Definition global.h:132
@ IC
Information Centrality.
Definition global.h:126
@ CLC
Clustering Coefficient (Watts-Strogatz).
Definition global.h:133
@ KATZ
Katz Centrality.
Definition global.h:128
@ DC
Degree Centrality.
Definition global.h:119
@ SC
Stress Centrality.
Definition global.h:123
@ PC
Power Centrality.
Definition global.h:125
@ EC
Eccentricity Centrality.
Definition global.h:124
@ BPC
Bonacich Power Centrality - distinct from PC (Gil-Schmidt Power Centrality).
Definition global.h:129
@ DP
Degree Prestige.
Definition global.h:130
@ PRP
PageRank Prestige.
Definition global.h:131
@ EVC
Eigenvector Centrality.
Definition global.h:127
FileType
Supported network file formats.
Definition global.h:88
@ GML
.gml
Definition global.h:95
@ ADJACENCY
.csv / .adj / .sm
Definition global.h:92
@ GRAPHML
.graphml / .xml
Definition global.h:90
@ EDGELIST_SIMPLE
.csv / .txt / .list / .lst
Definition global.h:97
@ PAJEK
.paj / .net
Definition global.h:91
@ NOT_SAVED
New or unsaved/modified network.
Definition global.h:89
@ EDGELIST_WEIGHTED
.csv / .txt / .list / .lst / .wlst
Definition global.h:96
@ UCINET
.dl / .dat
Definition global.h:94
@ GRAPHVIZ
.dot
Definition global.h:93
@ TWOMODE
.2sm / .aff
Definition global.h:98
@ UNRECOGNIZED
Unrecognised format.
Definition global.h:99
static const int SUBGRAPH_CLIQUE
Definition global.h:185
static constexpr double M_PI_X_2
Definition global.h:56
NodeShape
Possible shapes for nodes in the network visualization.
Definition global.h:68
@ Dice
Definition global.h:79
@ Custom
Definition global.h:80
@ Box
Definition global.h:69
@ Bugs
Definition global.h:77
@ Person
Definition global.h:75
@ Diamond
Definition global.h:71
@ PersonB
Definition global.h:76
@ Triangle
Definition global.h:73
@ Ellipse
Definition global.h:72
@ Star
Definition global.h:74
@ Circle
Definition global.h:70
@ Heart
Definition global.h:78
static const int USER_MSG_CRITICAL_NO_NETWORK
Definition global.h:176
static const int MATRIX_ADJACENCY
Definition global.h:194
ReportFormat
Output format for analysis reports: a full HTML document (default), or a lean, table-only CSV file (n...
Definition global.h:154
@ Html
Definition global.h:155
@ Csv
Definition global.h:156
EdgeType
Possible edge types in the network.
Definition global.h:107
@ Reciprocated
Definition global.h:109
@ Undirected
Definition global.h:110
@ Directed
Definition global.h:108
static const int MATRIX_LAPLACIAN
Definition global.h:197
static const int SUBGRAPH_LINE
Definition global.h:188
static const int USER_MSG_QUESTION
Definition global.h:178
ChartType
Chart style for prominence distribution visualizations.
Definition global.h:141
@ Area
Definition global.h:144
@ Spline
Definition global.h:143
@ Bars
Definition global.h:145
@ None
Definition global.h:142
static const int USER_MSG_INFO
Definition global.h:174
static const int MATRIX_DEGREE
Definition global.h:196
static const int MATRIX_GEODESICS
Definition global.h:199
static constexpr double M_PI
Definition global.h:48
static const int MATRIX_DISTANCES_EUCLIDEAN
Definition global.h:203
static constexpr double M_PI_3
Definition global.h:52
#define SOCNETV_END_NAMESPACE
Definition global.h:27
static const int MATRIX_DISTANCES_CHEBYSHEV
Definition global.h:207
static const int MATRIX_REACHABILITY
Definition global.h:200
QPair< int, int > SelectedEdge
Identifies a selected edge by its two endpoint vertex numbers.
Definition global.h:231
static const int MATRIX_DISTANCES_MANHATTAN
Definition global.h:204
static const int USER_MSG_CRITICAL_NO_EDGES
Definition global.h:177
static const int USER_MSG_QUESTION_CUSTOM
Definition global.h:179
static const int MATRIX_DISTANCES
Definition global.h:195
#define SOCNETV_BEGIN_NAMESPACE
Definition global.h:24
static const int MATRIX_ADJACENCY_TRANSPOSE
Definition global.h:201
static const int SUBGRAPH_CYCLE
Definition global.h:187
static const int MATRIX_ADJACENCY_INVERSE
Definition global.h:198
static const int USER_MSG_CRITICAL
Definition global.h:175
static const int MATRIX_COCITATION
Definition global.h:202
static const int MATRIX_DISTANCES_HAMMING
Definition global.h:206
Carries the identity and type of a clicked edge.
Definition global.h:218
int v2
Second vertex.
Definition global.h:220
int v1
First vertex.
Definition global.h:219
int type
Edge type.
Definition global.h:221