KDStateMachineEditor API Documentation 2.1
Loading...
Searching...
No Matches
gvutils.cpp
Go to the documentation of this file.
1/*
2 This file is part of the KDAB State Machine Editor Library.
3
4 SPDX-FileCopyrightText: 2014 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
5 Author: Kevin Funk <kevin.funk@kdab.com>
6
7 SPDX-License-Identifier: LGPL-2.1-only OR LicenseRef-KDAB-KDStateMachineEditor
8
9 Licensees holding valid commercial KDAB State Machine Editor Library
10 licenses may use this file in accordance with the KDAB State Machine Editor
11 Library License Agreement provided with the Software.
12
13 Contact info@kdab.com if any conditions of this licensing are not clear to you.
14*/
15// krazy:excludeall=captruefalse as TRUE/FALSE are defined by graphviz
16
17#include "gvutils.h"
18
19#include <graphviz/gvc.h>
20#ifdef WITH_CGRAPH
21#include <graphviz/cgraph.h>
22#else
23#include <graphviz/graph.h>
24#endif
25
26using namespace KDSME;
27
28constexpr int MOVE_TO_FRONT = 1;
29
30#ifdef WITH_CGRAPH
31Agraph_t *GVUtils::_agopen(const QString &name, Agdesc_t kind, Agdisc_t *disc) // cppcheck-suppress passedByValue
32#else
33Agraph_t *GVUtils::_agopen(const QString &name, int kind)
34#endif
35{
36#ifdef WITH_CGRAPH
37 return agopen(name.toLocal8Bit().data(), kind, disc);
38#else
39 return agopen(name.toLocal8Bit().data(), kind);
40#endif
41}
42
43QString GVUtils::_agget(void *object, const QString &attr, const QString &alt)
44{
45 QString str = QString::fromUtf8(agget(object, attr.toUtf8().data()));
46 if (str.isEmpty()) {
47 return alt;
48 }
49 return str;
50}
51
52Agsym_t *GVUtils::_agnodeattr(Agraph_t *object, const QString &attr, const QString &alt)
53{
54#ifdef WITH_CGRAPH
55 return agattr(object, AGNODE,
56#else
57 return agnodeattr(object,
58#endif
59 attr.toLocal8Bit().data(),
60 alt.toLocal8Bit().data());
61}
62
63Agsym_t *GVUtils::_agedgeattr(Agraph_t *object, const QString &attr, const QString &alt)
64{
65#ifdef WITH_CGRAPH
66 return agattr(object, AGEDGE,
67#else
68 return agedgeattr(object,
69#endif
70 attr.toLocal8Bit().data(),
71 alt.toLocal8Bit().data());
72}
73
74#ifdef WITH_CGRAPH
75void *GVUtils::_agbindrec(void *obj, const char *name, unsigned int size, int move_to_front)
76{
77 return agbindrec(obj, const_cast<char *>(name), size, move_to_front);
78}
79#endif
80
81Agnode_t *GVUtils::_agnode(Agraph_t *graph, const QString &attr, bool create)
82{
83#ifdef WITH_CGRAPH
84 Agnode_t *n = agnode(graph, attr.toLocal8Bit().data(), create);
85 _agbindrec(n, "Agnodeinfo_t", sizeof(Agnodeinfo_t), MOVE_TO_FRONT);
86 return n;
87#else
88 Q_UNUSED(create);
89 return agnode(graph, attr)));
90#endif
91}
92
93Agedge_t *GVUtils::_agedge(Agraph_t *graph, Agnode_t *tail, Agnode_t *head,
94 const QString &name, bool create)
95{
96#ifdef WITH_CGRAPH
97 Agedge_t *e = agedge(graph, tail, head, name.toLocal8Bit().data(), create);
98 _agbindrec(e, "Agedgeinfo_t", sizeof(Agedgeinfo_t), MOVE_TO_FRONT);
99 return e;
100#else
101 Q_UNUSED(name);
102 Q_UNUSED(create);
103 return agedge(graph, tail, head);
104#endif
105}
106
107Agraph_t *GVUtils::_agsubg(Agraph_t *graph, const QString &attr, bool create)
108{
109#ifdef WITH_CGRAPH
110 Agraph_t *g = agsubg(graph, attr.toLocal8Bit().data(), create);
111 _agbindrec(g, "Agraphinfo_t", sizeof(Agraphinfo_t), MOVE_TO_FRONT);
112 return g;
113#else
114 Q_UNUSED(create);
115 return agsubg(graph, attr.toLocal8Bit().data());
116#endif
117}
118
119int GVUtils::_agset(void *object, const QString &attr, const QString &value)
120{
121 return agsafeset(object, attr.toLocal8Bit().data(),
122 value.toLocal8Bit().data(), const_cast<char *>(""));
123}
124
125int GVUtils::_gvLayout(GVC_t *gvc, graph_t *g, const char *engine)
126{
127 return gvLayout(gvc, g, engine);
128}
constexpr int MOVE_TO_FRONT
Definition gvutils.cpp:28
Agsym_t * _agedgeattr(Agraph_t *object, const QString &attr, const QString &alt=QString())
Definition gvutils.cpp:63
int _agset(void *object, const QString &attr, const QString &value)
Directly use agsafeset which always works, contrarily to agset.
Definition gvutils.cpp:119
int _gvLayout(GVC_t *gvc, graph_t *g, const char *engine)
Definition gvutils.cpp:125
Agraph_t * _agopen(const QString &name, int kind)
The agopen method for opening a graph.
Definition gvutils.cpp:33
QString _agget(void *object, const QString &attr, const QString &alt=QString())
Add an alternative value parameter to the method for getting an object's attribute.
Definition gvutils.cpp:43
Agnode_t * _agnode(Agraph_t *graph, const QString &attr, bool create=true)
Definition gvutils.cpp:81
Agsym_t * _agnodeattr(Agraph_t *object, const QString &attr, const QString &alt=QString())
Definition gvutils.cpp:52
Agraph_t * _agsubg(Agraph_t *graph, const QString &attr, bool create=true)
Definition gvutils.cpp:107
Agedge_t * _agedge(Agraph_t *graph, Agnode_t *tail, Agnode_t *head, const QString &name=QString(), bool create=true)
Definition gvutils.cpp:93

© Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
KDStateMachineEditor
Create Qt State Machine metacode using a graphical user interface
https://github.com/KDAB/KDStateMachineEditor
Generated on Tue Jul 15 2025 15:21:47 for KDStateMachineEditor API Documentation by doxygen 1.9.8