Code Documentation 3.8
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.8";
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,
140 PN = 17
145};
146
154enum class PNMode
155{
159};
160
166{
167 None = -1,
169 Area = 1,
171};
172
179{
180 Html = 0,
181 Csv = 1
182};
183
194
195// ============================================================================
196// User-message severity constants
197// ============================================================================
198
199static const int USER_MSG_INFO = 0;
200static const int USER_MSG_CRITICAL = 1;
201static const int USER_MSG_CRITICAL_NO_NETWORK = 2;
202static const int USER_MSG_CRITICAL_NO_EDGES = 3;
203static const int USER_MSG_QUESTION = 4;
204static const int USER_MSG_QUESTION_CUSTOM = 5;
205
206// ============================================================================
207// Subgraph type constants
208// ============================================================================
209
210static const int SUBGRAPH_CLIQUE = 1;
211static const int SUBGRAPH_STAR = 2;
212static const int SUBGRAPH_CYCLE = 3;
213static const int SUBGRAPH_LINE = 4;
214
215// ============================================================================
216// Matrix type constants
217// ============================================================================
218
219static const int MATRIX_ADJACENCY = 1;
220static const int MATRIX_DISTANCES = 2;
221static const int MATRIX_DEGREE = 3;
222static const int MATRIX_LAPLACIAN = 4;
223static const int MATRIX_ADJACENCY_INVERSE = 5;
224static const int MATRIX_GEODESICS = 6;
225static const int MATRIX_REACHABILITY = 7;
226static const int MATRIX_ADJACENCY_TRANSPOSE = 8;
227static const int MATRIX_COCITATION = 9;
228static const int MATRIX_DISTANCES_EUCLIDEAN = 12;
229static const int MATRIX_DISTANCES_MANHATTAN = 13;
230static const int MATRIX_DISTANCES_JACCARD = 14;
231static const int MATRIX_DISTANCES_HAMMING = 15;
232static const int MATRIX_DISTANCES_CHEBYSHEV = 16;
233
234// ============================================================================
235// Structs and value types
236// ============================================================================
237
243{
244 int v1 = 0;
245 int v2 = 0;
246 int type = 0;
247};
248
256typedef QPair<int, int> SelectedEdge;
257
263{
264public:
265 int source = 0;
266 int target = 0;
267 double weight = 0.0;
268 int type = 0;
269 double rWeight = 0.0;
270
271 MyEdge() = default;
272
273 MyEdge(const int &from, const int &to,
274 const double &w = 0.0,
275 const int &t = 0,
276 const double &rw = 0.0)
277 : source(from), target(to), weight(w), type(t), rWeight(rw) {}
278};
279
289{
290public:
291 int relation = 0;
292 int source = 0;
293 int target = 0;
294 bool visible = false;
296 int edgeWeight = 1;
298
300
301 EdgeVisibilityChange(const int &rel, const int &src, const int &tgt, const bool &vis,
302 const bool &preserveReverse = false,
303 const int &weight = 1, const int &reverseWeight = 1)
304 : relation(rel), source(src), target(tgt), visible(vis),
305 preserveReverseEdge(preserveReverse), edgeWeight(weight), reverseEdgeWeight(reverseWeight) {}
306};
307
317{
318public:
320 qreal distance;
321
322 GraphDistance(int t, qreal dist)
323 : target(t), distance(dist) {}
324};
325
331{
332public:
333 bool operator()(const GraphDistance &t1, const GraphDistance &t2) const
334 {
335 if (t1.distance == t2.distance)
336 return t1.target > t2.target;
337 return t1.distance > t2.distance;
338 }
339};
340
346{
347public:
348 qreal value;
350
351 PairVF(qreal v, qreal f)
352 : value(v), frequency(f) {}
353};
354
360{
361public:
362 bool operator()(const PairVF &v1, const PairVF &v2) const
363 {
364 return v1.value > v2.value;
365 }
366};
367
369
370// ============================================================================
371// Qt metatype registrations
372// Must live outside the SocNetV namespace.
373// ============================================================================
374
375Q_DECLARE_METATYPE(SOCNETV_NAMESPACE::MyEdge)
376Q_DECLARE_METATYPE(SOCNETV_NAMESPACE::NetworkRequestType)
377Q_DECLARE_METATYPE(SOCNETV_NAMESPACE::SelectedEdge)
378
379#endif // GLOBAL_H
int edgeWeight
Definition global.h:296
int target
Definition global.h:293
int source
Definition global.h:292
bool visible
Definition global.h:294
EdgeVisibilityChange()=default
int reverseEdgeWeight
Definition global.h:297
int relation
Definition global.h:291
bool preserveReverseEdge
Definition global.h:295
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:301
Holds a (target, distance) pair for use in Dijkstra's priority queue.
Definition global.h:317
int target
Definition global.h:319
GraphDistance(int t, qreal dist)
Definition global.h:322
qreal distance
Definition global.h:320
Min-priority comparator for GraphDistance (used in std::priority_queue).
Definition global.h:331
bool operator()(const GraphDistance &t1, const GraphDistance &t2) const
Definition global.h:333
double weight
Definition global.h:267
MyEdge(const int &from, const int &to, const double &w=0.0, const int &t=0, const double &rw=0.0)
Definition global.h:273
double rWeight
Reverse / reciprocal weight.
Definition global.h:269
int source
Definition global.h:265
int target
Definition global.h:266
int type
Definition global.h:268
MyEdge()=default
Min-priority comparator for PairVF (used in std::priority_queue).
Definition global.h:360
bool operator()(const PairVF &v1, const PairVF &v2) const
Definition global.h:362
(value, frequency) pair, used in distribution charts.
Definition global.h:346
qreal frequency
Definition global.h:349
PairVF(qreal v, qreal f)
Definition global.h:351
qreal value
Definition global.h:348
static const int MATRIX_DISTANCES_JACCARD
Definition global.h:230
static SOCNETV_BEGIN_NAMESPACE const QString VERSION
Definition global.h:41
NetworkRequestType
Identifies the purpose of an outgoing network request.
Definition global.h:189
@ Crawler
Definition global.h:191
@ CheckUpdate
Definition global.h:192
@ Generic
Definition global.h:190
static const int SUBGRAPH_STAR
Definition global.h:211
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
@ PN
Definition global.h:140
@ BPC
Bonacich Power Centrality - distinct from PC (Gil-Schmidt Power Centrality).
Definition global.h:129
@ DP
Degree Prestige.
Definition global.h:130
@ SIGNED_DEGREE
Definition global.h:134
@ 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:210
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:201
static const int MATRIX_ADJACENCY
Definition global.h:219
ReportFormat
Output format for analysis reports: a full HTML document (default), or a lean, table-only CSV file (n...
Definition global.h:179
@ Html
Definition global.h:180
@ Csv
Definition global.h:181
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
PNMode
Directedness mode for PN Centrality (WS18 P3, Everett & Borgatti 2014). An undirected graph is only e...
Definition global.h:155
@ Out
Directed graphs: PN based on outgoing ties.
Definition global.h:157
@ All
Undirected graphs only.
Definition global.h:156
@ In
Directed graphs: PN based on incoming ties.
Definition global.h:158
static const int MATRIX_LAPLACIAN
Definition global.h:222
static const int SUBGRAPH_LINE
Definition global.h:213
static const int USER_MSG_QUESTION
Definition global.h:203
ChartType
Chart style for prominence distribution visualizations.
Definition global.h:166
@ Area
Definition global.h:169
@ Spline
Definition global.h:168
@ Bars
Definition global.h:170
@ None
Definition global.h:167
static const int USER_MSG_INFO
Definition global.h:199
static const int MATRIX_DEGREE
Definition global.h:221
static const int MATRIX_GEODESICS
Definition global.h:224
static constexpr double M_PI
Definition global.h:48
static const int MATRIX_DISTANCES_EUCLIDEAN
Definition global.h:228
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:232
static const int MATRIX_REACHABILITY
Definition global.h:225
QPair< int, int > SelectedEdge
Identifies a selected edge by its two endpoint vertex numbers.
Definition global.h:256
static const int MATRIX_DISTANCES_MANHATTAN
Definition global.h:229
static const int USER_MSG_CRITICAL_NO_EDGES
Definition global.h:202
static const int USER_MSG_QUESTION_CUSTOM
Definition global.h:204
static const int MATRIX_DISTANCES
Definition global.h:220
#define SOCNETV_BEGIN_NAMESPACE
Definition global.h:24
static const int MATRIX_ADJACENCY_TRANSPOSE
Definition global.h:226
static const int SUBGRAPH_CYCLE
Definition global.h:212
static const int MATRIX_ADJACENCY_INVERSE
Definition global.h:223
static const int USER_MSG_CRITICAL
Definition global.h:200
static const int MATRIX_COCITATION
Definition global.h:227
static const int MATRIX_DISTANCES_HAMMING
Definition global.h:231
Carries the identity and type of a clicked edge.
Definition global.h:243
int v2
Second vertex.
Definition global.h:245
int v1
First vertex.
Definition global.h:244
int type
Edge type.
Definition global.h:246