Code Documentation 3.3
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 namespace SOCNETV_NAMESPACE {
25# define SOCNETV_END_NAMESPACE }
26# define SOCNETV_USE_NAMESPACE using namespace SOCNETV_NAMESPACE;
27#else
28# define SOCNETV_BEGIN_NAMESPACE
29# define SOCNETV_END_NAMESPACE
30# define SOCNETV_USE_NAMESPACE
31#endif
32
34
35// ============================================================================
36// Version
37// ============================================================================
38
39static const QString VERSION = "3.3";
40
41// ============================================================================
42// Math constants (define only if not already provided by <cmath>)
43// ============================================================================
44
45#ifndef M_PI
46static constexpr double M_PI = 3.14159265358979323846;
47#endif
48
49#ifndef M_PI_3
50static constexpr double M_PI_3 = 1.04719755119659774615;
51#endif
52
53#ifndef M_PI_X_2
54static constexpr double M_PI_X_2 = 6.28318530717958647692;
55#endif
56
57// ============================================================================
58// Enumerations
59// ============================================================================
60
79
97
107
113 DC = 1,
114 CC = 2,
115 IRCC = 3,
116 BC = 4,
117 SC = 5,
118 EC = 6,
119 PC = 7,
120 IC = 8,
121 EVC = 9,
122 DP = 10,
123 PRP = 11,
124 PP = 12
125};
126
132 None = -1,
134 Area = 1,
136};
137
147
148// ============================================================================
149// User-message severity constants
150// ============================================================================
151
152static const int USER_MSG_INFO = 0;
153static const int USER_MSG_CRITICAL = 1;
154static const int USER_MSG_CRITICAL_NO_NETWORK = 2;
155static const int USER_MSG_CRITICAL_NO_EDGES = 3;
156static const int USER_MSG_QUESTION = 4;
157static const int USER_MSG_QUESTION_CUSTOM = 5;
158
159// ============================================================================
160// Subgraph type constants
161// ============================================================================
162
163static const int SUBGRAPH_CLIQUE = 1;
164static const int SUBGRAPH_STAR = 2;
165static const int SUBGRAPH_CYCLE = 3;
166static const int SUBGRAPH_LINE = 4;
167
168// ============================================================================
169// Matrix type constants
170// ============================================================================
171
172static const int MATRIX_ADJACENCY = 1;
173static const int MATRIX_DISTANCES = 2;
174static const int MATRIX_DEGREE = 3;
175static const int MATRIX_LAPLACIAN = 4;
176static const int MATRIX_ADJACENCY_INVERSE = 5;
177static const int MATRIX_GEODESICS = 6;
178static const int MATRIX_REACHABILITY = 7;
179static const int MATRIX_ADJACENCY_TRANSPOSE = 8;
180static const int MATRIX_COCITATION = 9;
181static const int MATRIX_DISTANCES_EUCLIDEAN = 12;
182static const int MATRIX_DISTANCES_MANHATTAN = 13;
183static const int MATRIX_DISTANCES_JACCARD = 14;
184static const int MATRIX_DISTANCES_HAMMING = 15;
185static const int MATRIX_DISTANCES_CHEBYSHEV = 16;
186
187// ============================================================================
188// Structs and value types
189// ============================================================================
190
196 int v1 = 0;
197 int v2 = 0;
198 int type = 0;
199};
200
208typedef QPair<int, int> SelectedEdge;
209
214class MyEdge {
215public:
216 int source = 0;
217 int target = 0;
218 double weight = 0.0;
219 int type = 0;
220 double rWeight = 0.0;
221
222 MyEdge() = default;
223
224 MyEdge(const int &from, const int &to,
225 const double &w = 0.0,
226 const int &t = 0,
227 const double &rw = 0.0)
228 : source(from), target(to), weight(w), type(t), rWeight(rw) {}
229};
230
236public:
239
240 GraphDistance(int t, int dist)
241 : target(t), distance(dist) {}
242};
243
249public:
250 bool operator()(const GraphDistance &t1, const GraphDistance &t2) const {
251 if (t1.distance == t2.distance)
252 return t1.target > t2.target;
253 return t1.distance > t2.distance;
254 }
255};
256
261class PairVF {
262public:
263 qreal value;
265
266 PairVF(qreal v, qreal f)
267 : value(v), frequency(f) {}
268};
269
275public:
276 bool operator()(const PairVF &v1, const PairVF &v2) const {
277 return v1.value > v2.value;
278 }
279};
280
282
283// ============================================================================
284// Qt metatype registrations
285// Must live outside the SocNetV namespace.
286// ============================================================================
287
288Q_DECLARE_METATYPE(SOCNETV_NAMESPACE::MyEdge)
289Q_DECLARE_METATYPE(SOCNETV_NAMESPACE::NetworkRequestType)
290Q_DECLARE_METATYPE(SOCNETV_NAMESPACE::SelectedEdge)
291
292#endif // GLOBAL_H
Holds a (target, distance) pair for use in Dijkstra's priority queue.
Definition global.h:235
int distance
Definition global.h:238
int target
Definition global.h:237
GraphDistance(int t, int dist)
Definition global.h:240
Min-priority comparator for GraphDistance (used in std::priority_queue).
Definition global.h:248
bool operator()(const GraphDistance &t1, const GraphDistance &t2) const
Definition global.h:250
double weight
Definition global.h:218
MyEdge(const int &from, const int &to, const double &w=0.0, const int &t=0, const double &rw=0.0)
Definition global.h:224
double rWeight
Reverse / reciprocal weight.
Definition global.h:220
int source
Definition global.h:216
int target
Definition global.h:217
int type
Definition global.h:219
MyEdge()=default
Min-priority comparator for PairVF (used in std::priority_queue).
Definition global.h:274
bool operator()(const PairVF &v1, const PairVF &v2) const
Definition global.h:276
(value, frequency) pair, used in distribution charts.
Definition global.h:261
qreal frequency
Definition global.h:264
PairVF(qreal v, qreal f)
Definition global.h:266
qreal value
Definition global.h:263
static const int MATRIX_DISTANCES_JACCARD
Definition global.h:183
static SOCNETV_BEGIN_NAMESPACE const QString VERSION
Definition global.h:39
NetworkRequestType
Identifies the purpose of an outgoing network request.
Definition global.h:142
@ Crawler
Definition global.h:144
@ CheckUpdate
Definition global.h:145
@ Generic
Definition global.h:143
static const int SUBGRAPH_STAR
Definition global.h:164
IndexType
Centrality / prestige index identifiers.
Definition global.h:112
@ BC
Betweenness Centrality.
Definition global.h:116
@ CC
Closeness Centrality.
Definition global.h:114
@ IRCC
Influence Range Closeness Centrality.
Definition global.h:115
@ PP
Proximity Prestige.
Definition global.h:124
@ IC
Information Centrality.
Definition global.h:120
@ DC
Degree Centrality.
Definition global.h:113
@ SC
Stress Centrality.
Definition global.h:117
@ PC
Power Centrality.
Definition global.h:119
@ EC
Eccentricity Centrality.
Definition global.h:118
@ DP
Degree Prestige.
Definition global.h:122
@ PRP
PageRank Prestige.
Definition global.h:123
@ EVC
Eigenvector Centrality.
Definition global.h:121
FileType
Supported network file formats.
Definition global.h:84
@ GML
.gml
Definition global.h:91
@ ADJACENCY
.csv / .adj / .sm
Definition global.h:88
@ GRAPHML
.graphml / .xml
Definition global.h:86
@ EDGELIST_SIMPLE
.csv / .txt / .list / .lst
Definition global.h:93
@ PAJEK
.paj / .net
Definition global.h:87
@ NOT_SAVED
New or unsaved/modified network.
Definition global.h:85
@ EDGELIST_WEIGHTED
.csv / .txt / .list / .lst / .wlst
Definition global.h:92
@ UCINET
.dl / .dat
Definition global.h:90
@ GRAPHVIZ
.dot
Definition global.h:89
@ TWOMODE
.2sm / .aff
Definition global.h:94
@ UNRECOGNIZED
Unrecognised format.
Definition global.h:95
static const int SUBGRAPH_CLIQUE
Definition global.h:163
static constexpr double M_PI_X_2
Definition global.h:54
NodeShape
Possible shapes for nodes in the network visualization.
Definition global.h:65
@ Dice
Definition global.h:76
@ Custom
Definition global.h:77
@ Box
Definition global.h:66
@ Bugs
Definition global.h:74
@ Person
Definition global.h:72
@ Diamond
Definition global.h:68
@ PersonB
Definition global.h:73
@ Triangle
Definition global.h:70
@ Ellipse
Definition global.h:69
@ Star
Definition global.h:71
@ Circle
Definition global.h:67
@ Heart
Definition global.h:75
static const int USER_MSG_CRITICAL_NO_NETWORK
Definition global.h:154
static const int MATRIX_ADJACENCY
Definition global.h:172
EdgeType
Possible edge types in the network.
Definition global.h:102
@ Reciprocated
Definition global.h:104
@ Undirected
Definition global.h:105
@ Directed
Definition global.h:103
static const int MATRIX_LAPLACIAN
Definition global.h:175
static const int SUBGRAPH_LINE
Definition global.h:166
static const int USER_MSG_QUESTION
Definition global.h:156
ChartType
Chart style for prominence distribution visualizations.
Definition global.h:131
@ Area
Definition global.h:134
@ Spline
Definition global.h:133
@ Bars
Definition global.h:135
@ None
Definition global.h:132
static const int USER_MSG_INFO
Definition global.h:152
static const int MATRIX_DEGREE
Definition global.h:174
static const int MATRIX_GEODESICS
Definition global.h:177
static constexpr double M_PI
Definition global.h:46
static const int MATRIX_DISTANCES_EUCLIDEAN
Definition global.h:181
static constexpr double M_PI_3
Definition global.h:50
#define SOCNETV_END_NAMESPACE
Definition global.h:25
static const int MATRIX_DISTANCES_CHEBYSHEV
Definition global.h:185
static const int MATRIX_REACHABILITY
Definition global.h:178
QPair< int, int > SelectedEdge
Identifies a selected edge by its two endpoint vertex numbers.
Definition global.h:208
static const int MATRIX_DISTANCES_MANHATTAN
Definition global.h:182
static const int USER_MSG_CRITICAL_NO_EDGES
Definition global.h:155
static const int USER_MSG_QUESTION_CUSTOM
Definition global.h:157
static const int MATRIX_DISTANCES
Definition global.h:173
#define SOCNETV_BEGIN_NAMESPACE
Definition global.h:24
static const int MATRIX_ADJACENCY_TRANSPOSE
Definition global.h:179
static const int SUBGRAPH_CYCLE
Definition global.h:165
static const int MATRIX_ADJACENCY_INVERSE
Definition global.h:176
static const int USER_MSG_CRITICAL
Definition global.h:153
static const int MATRIX_COCITATION
Definition global.h:180
static const int MATRIX_DISTANCES_HAMMING
Definition global.h:184
Carries the identity and type of a clicked edge.
Definition global.h:195
int v2
Second vertex.
Definition global.h:197
int v1
First vertex.
Definition global.h:196
int type
Edge type.
Definition global.h:198